draft-sandlund-rfc4996bis-01.txt   draft-sandlund-rfc4996bis-02.txt 
Network Working Group G. Pelletier Network Working Group G. Pelletier
Internet-Draft InterDigital Communications Internet-Draft InterDigital Communications
Obsoletes: 4996 (if approved) K. Sandlund Obsoletes: 4996 (if approved) K. Sandlund
Intended status: Standards Track Ericsson Intended status: Standards Track Ericsson
Expires: September 27, 2012 L-E. Jonsson Expires: November 17, 2012 L-E. Jonsson
M. West M. West
Siemens/Roke Manor Siemens/Roke Manor
March 26, 2012 May 16, 2012
RObust Header Compression (ROHC): A Profile for TCP/IP (ROHC-TCP) RObust Header Compression (ROHC): A Profile for TCP/IP (ROHC-TCP)
draft-sandlund-rfc4996bis-01 draft-sandlund-rfc4996bis-02
Abstract Abstract
This document specifies a ROHC (Robust Header Compression) profile This document specifies a ROHC (Robust Header Compression) profile
for compression of TCP/IP packets. The profile, called ROHC-TCP, for compression of TCP/IP packets. The profile, called ROHC-TCP,
provides efficient and robust compression of TCP headers, including provides efficient and robust compression of TCP headers, including
frequently used TCP options such as SACK (Selective Acknowledgments) frequently used TCP options such as SACK (Selective Acknowledgments)
and Timestamps. and Timestamps.
ROHC-TCP works well when used over links with significant error rates ROHC-TCP works well when used over links with significant error rates
skipping to change at page 1, line 47 skipping to change at page 1, line 47
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 27, 2012. This Internet-Draft will expire on November 17, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1. Existing TCP/IP Header Compression Schemes . . . . . . . . 7 3.1. Existing TCP/IP Header Compression Schemes . . . . . . . . 7
3.2. Classification of TCP/IP Header Fields . . . . . . . . . . 8 3.2. Classification of TCP/IP Header Fields . . . . . . . . . . 8
4. Overview of the TCP/IP Profile (Informative) . . . . . . . . . 10 4. Overview of the TCP/IP Profile (Informative) . . . . . . . . . 10
4.1. General Concepts . . . . . . . . . . . . . . . . . . . . . 10 4.1. General Concepts . . . . . . . . . . . . . . . . . . . . . 10
4.2. Compressor and Decompressor Interactions . . . . . . . . . 10 4.2. Compressor and Decompressor Interactions . . . . . . . . . 10
4.2.1. Compressor Operation . . . . . . . . . . . . . . . . . 10 4.2.1. Compressor Operation . . . . . . . . . . . . . . . . . 10
4.2.2. Decompressor Feedback . . . . . . . . . . . . . . . . 10 4.2.2. Decompressor Feedback . . . . . . . . . . . . . . . . 10
4.3. Packet Formats and Encoding Methods . . . . . . . . . . . 11 4.3. Packet Formats and Encoding Methods . . . . . . . . . . . 11
4.3.1. Compressing TCP Options . . . . . . . . . . . . . . . 11 4.3.1. Compressing TCP Options . . . . . . . . . . . . . . . 11
4.3.2. Compressing Extension Headers . . . . . . . . . . . . 11 4.3.2. Compressing Extension Headers . . . . . . . . . . . . 11
4.4. Expected Compression Ratios with ROHC-TCP . . . . . . . . 11 4.4. Expected Compression Ratios with ROHC-TCP . . . . . . . . 11
5. Compressor and Decompressor Logic (Normative) . . . . . . . . 12 5. Compressor and Decompressor Logic (Normative) . . . . . . . . 12
5.1. Context Initialization . . . . . . . . . . . . . . . . . . 12 5.1. Context Initialization . . . . . . . . . . . . . . . . . . 13
5.2. Compressor Operation . . . . . . . . . . . . . . . . . . . 13 5.2. Compressor Operation . . . . . . . . . . . . . . . . . . . 13
5.2.1. Compression Logic . . . . . . . . . . . . . . . . . . 13 5.2.1. Compression Logic . . . . . . . . . . . . . . . . . . 13
5.2.1.1. Optimistic Approach . . . . . . . . . . . . . . . 13 5.2.1.1. Optimistic Approach . . . . . . . . . . . . . . . 13
5.2.1.2. Periodic Context Refreshes . . . . . . . . . . . . 14 5.2.1.2. Periodic Context Refreshes . . . . . . . . . . . . 14
5.2.2. Feedback Logic . . . . . . . . . . . . . . . . . . . . 14 5.2.2. Feedback Logic . . . . . . . . . . . . . . . . . . . . 14
5.2.2.1. Optional Acknowledgments (ACKs) . . . . . . . . . 14 5.2.2.1. Optional Acknowledgments (ACKs) . . . . . . . . . 14
5.2.2.2. Negative Acknowledgments (NACKs) . . . . . . . . . 14 5.2.2.2. Negative Acknowledgments (NACKs) . . . . . . . . . 15
5.2.3. Context Replication . . . . . . . . . . . . . . . . . 15 5.2.3. Context Replication . . . . . . . . . . . . . . . . . 15
5.3. Decompressor Operation . . . . . . . . . . . . . . . . . . 15 5.3. Decompressor Operation . . . . . . . . . . . . . . . . . . 15
5.3.1. Decompressor States and Logic . . . . . . . . . . . . 15 5.3.1. Decompressor States and Logic . . . . . . . . . . . . 15
5.3.1.1. Reconstruction and Verification . . . . . . . . . 16 5.3.1.1. Reconstruction and Verification . . . . . . . . . 16
5.3.1.2. Detecting Context Damage . . . . . . . . . . . . . 17 5.3.1.2. Detecting Context Damage . . . . . . . . . . . . . 17
5.3.1.3. No Context (NC) State . . . . . . . . . . . . . . 18 5.3.1.3. No Context (NC) State . . . . . . . . . . . . . . 18
5.3.1.4. Static Context (SC) State . . . . . . . . . . . . 18 5.3.1.4. Static Context (SC) State . . . . . . . . . . . . 18
5.3.1.5. Full Context (FC) State . . . . . . . . . . . . . 19 5.3.1.5. Full Context (FC) State . . . . . . . . . . . . . 19
5.3.2. Feedback Logic . . . . . . . . . . . . . . . . . . . . 19 5.3.2. Feedback Logic . . . . . . . . . . . . . . . . . . . . 19
5.3.3. Context Replication . . . . . . . . . . . . . . . . . 19 5.3.3. Context Replication . . . . . . . . . . . . . . . . . 19
skipping to change at page 3, line 32 skipping to change at page 3, line 32
6.4.3. inferred_ip_v4_length . . . . . . . . . . . . . . . . 31 6.4.3. inferred_ip_v4_length . . . . . . . . . . . . . . . . 31
6.4.4. inferred_ip_v6_length . . . . . . . . . . . . . . . . 32 6.4.4. inferred_ip_v6_length . . . . . . . . . . . . . . . . 32
6.4.5. inferred_offset . . . . . . . . . . . . . . . . . . . 32 6.4.5. inferred_offset . . . . . . . . . . . . . . . . . . . 32
6.4.6. baseheader_extension_headers . . . . . . . . . . . . . 33 6.4.6. baseheader_extension_headers . . . . . . . . . . . . . 33
6.4.7. baseheader_outer_headers . . . . . . . . . . . . . . . 33 6.4.7. baseheader_outer_headers . . . . . . . . . . . . . . . 33
6.4.8. Scaled Encoding of Fields . . . . . . . . . . . . . . 33 6.4.8. Scaled Encoding of Fields . . . . . . . . . . . . . . 33
6.4.8.1. Scaled TCP Sequence Number Encoding . . . . . . . 34 6.4.8.1. Scaled TCP Sequence Number Encoding . . . . . . . 34
6.4.8.2. Scaled Acknowledgment Number Encoding . . . . . . 35 6.4.8.2. Scaled Acknowledgment Number Encoding . . . . . . 35
6.5. Encoding Methods With External Parameters . . . . . . . . 35 6.5. Encoding Methods With External Parameters . . . . . . . . 35
7. Packet Types (Normative) . . . . . . . . . . . . . . . . . . . 37 7. Packet Types (Normative) . . . . . . . . . . . . . . . . . . . 37
7.1. Initialization and Refresh (IR) Packets . . . . . . . . . 38 7.1. Initialization and Refresh (IR) Packets . . . . . . . . . 37
7.2. Context Replication (IR-CR) Packets . . . . . . . . . . . 40 7.2. Context Replication (IR-CR) Packets . . . . . . . . . . . 40
7.3. Compressed (CO) Packets . . . . . . . . . . . . . . . . . 42 7.3. Compressed (CO) Packets . . . . . . . . . . . . . . . . . 42
8. Header Formats (Normative) . . . . . . . . . . . . . . . . . . 43 8. Header Formats (Normative) . . . . . . . . . . . . . . . . . . 43
8.1. Design Rationale for Compressed Base Headers . . . . . . . 43 8.1. Design Rationale for Compressed Base Headers . . . . . . . 43
8.2. Formal Definition of Header Formats . . . . . . . . . . . 46 8.2. Formal Definition of Header Formats . . . . . . . . . . . 46
8.3. Feedback Formats and Options . . . . . . . . . . . . . . . 87 8.3. Feedback Formats and Options . . . . . . . . . . . . . . . 87
8.3.1. Feedback Formats . . . . . . . . . . . . . . . . . . . 87 8.3.1. Feedback Formats . . . . . . . . . . . . . . . . . . . 87
8.3.2. Feedback Options . . . . . . . . . . . . . . . . . . . 88 8.3.2. Feedback Options . . . . . . . . . . . . . . . . . . . 88
8.3.2.1. The REJECT Option . . . . . . . . . . . . . . . . 89 8.3.2.1. The REJECT Option . . . . . . . . . . . . . . . . 89
8.3.2.2. The MSN-NOT-VALID Option . . . . . . . . . . . . . 89 8.3.2.2. The MSN-NOT-VALID Option . . . . . . . . . . . . . 89
skipping to change at page 5, line 21 skipping to change at page 5, line 21
scheme are introduced in [RFC4163]. Finally, existing TCP/IP header scheme are introduced in [RFC4163]. Finally, existing TCP/IP header
compression schemes ([RFC1144], [RFC2507]) are limited in their compression schemes ([RFC1144], [RFC2507]) are limited in their
handling of the TCP options field and cannot compress the headers of handling of the TCP options field and cannot compress the headers of
handshaking packets (SYNs and FINs). handshaking packets (SYNs and FINs).
It is thus desirable for a header compression scheme to be able to It is thus desirable for a header compression scheme to be able to
handle loss on the link between the compression and decompression handle loss on the link between the compression and decompression
points as well as loss before the compression point. The header points as well as loss before the compression point. The header
compression scheme also needs to consider how to efficiently compress compression scheme also needs to consider how to efficiently compress
short-lived TCP transfers and TCP options, such as SACK ([RFC2018], short-lived TCP transfers and TCP options, such as SACK ([RFC2018],
[RFC2883]) and Timestamps ([RFC1323]). [RFC2883]) and Timestamps ([RFC1323]). TCP options that may be less
frequently used must be supported transparently by the compression
protocol, although their contents may not be compressed but their
presence should not reduce the overall compression efficiency of
other parts of the TCP header.
The ROHC WG has developed a header compression framework on top of The ROHC WG has developed a header compression framework on top of
which various profiles can be defined for different protocol sets, or which various profiles can be defined for different protocol sets, or
for different compression strategies. This document defines a TCP/IP for different compression strategies. This document defines a TCP/IP
compression profile for the ROHC framework [RFC5795], compliant with compression profile for the ROHC framework [RFC5795], compliant with
the requirements listed in [RFC4163]. the requirements listed in [RFC4163].
Specifically, it describes a header compression scheme for TCP/IP Specifically, it describes a header compression scheme for TCP/IP
header compression (ROHC-TCP) that is robust against packet loss and header compression (ROHC-TCP) that is robust against packet loss and
that offers enhanced capabilities, in particular for the compression that offers enhanced capabilities, in particular for the compression
skipping to change at page 9, line 41 skipping to change at page 9, line 50
between flows when initializing a new context. A mechanism to this between flows when initializing a new context. A mechanism to this
end, context replication [RFC4164], makes the context establishment end, context replication [RFC4164], makes the context establishment
step faster and more efficient, by replicating part of an existing step faster and more efficient, by replicating part of an existing
context to a new flow. The conclusion from [RFC4413] is that part of context to a new flow. The conclusion from [RFC4413] is that part of
the IP sub-context, some TCP fields, and some context values can be the IP sub-context, some TCP fields, and some context values can be
replicated since they seldom change or change with only a small jump. replicated since they seldom change or change with only a small jump.
ROHC-TCP also compresses the following headers: IPv6 Destination ROHC-TCP also compresses the following headers: IPv6 Destination
Options header [RFC2460], IPv6 Routing header [RFC2460], IPv6 Hop-by- Options header [RFC2460], IPv6 Routing header [RFC2460], IPv6 Hop-by-
Hop Options header [RFC2460], Authentication Header (AH) [RFC4302], Hop Options header [RFC2460], Authentication Header (AH) [RFC4302],
NULL-encrypted Encapsulating Security Payload (ESP) header [RFC4303],
Generic Routing Encapsulation (GRE) [RFC2784][RFC2890] and the Generic Routing Encapsulation (GRE) [RFC2784][RFC2890] and the
Minimal Encapsulation header (MINE) [RFC2004]. Minimal Encapsulation header (MINE) [RFC2004].
Headers specific to Mobile IP (for IPv4 or IPv6) do not receive any Headers specific to Mobile IP (for IPv4 or IPv6) do not receive any
special treatment in this document, for reasons similar to those special treatment in this document, for reasons similar to those
described in [RFC3095]. described in [RFC3095].
4. Overview of the TCP/IP Profile (Informative) 4. Overview of the TCP/IP Profile (Informative)
4.1. General Concepts 4.1. General Concepts
skipping to change at page 35, line 50 skipping to change at page 35, line 50
TCP Acknowledgment number for this flow. TCP Acknowledgment number for this flow.
6.5. Encoding Methods With External Parameters 6.5. Encoding Methods With External Parameters
A number of encoding methods in Section 8.2 have one or more A number of encoding methods in Section 8.2 have one or more
arguments for which the derivation of the parameter's value is arguments for which the derivation of the parameter's value is
outside the scope of the ROHC-FN specification of the header formats. outside the scope of the ROHC-FN specification of the header formats.
This section lists the encoding methods together with a definition of This section lists the encoding methods together with a definition of
each of their parameters. each of their parameters.
o esp_null(next_header_value):
next_header_value: Set to the value of the Next Header field
located in the ESP trailer, usually 12 octets from the end of
the packet. Compression of null-encrypted ESP headers should
only be performed when the compressor has prior knowledge of
the exact location of the Next Header field.
o ipv6(is_innermost, ttl_irregular_chain_flag, ip_inner_ecn): o ipv6(is_innermost, ttl_irregular_chain_flag, ip_inner_ecn):
is_innermost: This Boolean flag is set to true when processing is_innermost: This Boolean flag is set to true when processing
the innermost IP header; otherwise, it is set to false. the innermost IP header; otherwise, it is set to false.
ttl_irregular_chain_flag: This parameter must be set to the ttl_irregular_chain_flag: This parameter must be set to the
value that was used for the corresponding value that was used for the corresponding
"ttl_irregular_chain_flag" parameter of the "co_baseheader" "ttl_irregular_chain_flag" parameter of the "co_baseheader"
encoding method (as defined below) when extracting the encoding method (as defined below) when extracting the
irregular chain for a compressed header; otherwise, it is set irregular chain for a compressed header; otherwise, it is set
skipping to change at page 64, line 10 skipping to change at page 64, line 10
static_or_irreg(ttl_flag.UVALUE, 8) [ 0, 8 ]; static_or_irreg(ttl_flag.UVALUE, 8) [ 0, 8 ];
} }
COMPRESSED ipv4_outer_without_ttl_irregular { COMPRESSED ipv4_outer_without_ttl_irregular {
ENFORCE(is_innermost == 0); ENFORCE(is_innermost == 0);
ip_id =:= ip_id =:=
ip_id_enc_irreg(ip_id_behavior_outer.UVALUE) [ 0, 16 ]; ip_id_enc_irreg(ip_id_behavior_outer.UVALUE) [ 0, 16 ];
dscp =:= static_or_irreg(ecn_used.UVALUE, 6) [ 0, 6 ]; dscp =:= static_or_irreg(ecn_used.UVALUE, 6) [ 0, 6 ];
ip_ecn_flags =:= static_or_irreg(ecn_used.UVALUE, 2) [ 0, 2 ]; ip_ecn_flags =:= static_or_irreg(ecn_used.UVALUE, 2) [ 0, 2 ];
ENFORCE(ttl_irregular_chain_flag == 0); ENFORCE(ttl_irregular_chain_flag == 0);
ENFORCE(is_innermost == false);
} }
COMPRESSED ipv4_outer_with_ttl_irregular { COMPRESSED ipv4_outer_with_ttl_irregular {
ENFORCE(is_innermost == 0); ENFORCE(is_innermost == 0);
ip_id =:= ip_id =:=
ip_id_enc_irreg(ip_id_behavior_outer.UVALUE) [ 0, 16 ]; ip_id_enc_irreg(ip_id_behavior_outer.UVALUE) [ 0, 16 ];
dscp =:= static_or_irreg(ecn_used.UVALUE, 6) [ 0, 6 ]; dscp =:= static_or_irreg(ecn_used.UVALUE, 6) [ 0, 6 ];
ip_ecn_flags =:= static_or_irreg(ecn_used.UVALUE, 2) [ 0, 2 ]; ip_ecn_flags =:= static_or_irreg(ecn_used.UVALUE, 2) [ 0, 2 ];
ttl_hopl =:= irregular(8) [ 8 ]; ttl_hopl =:= irregular(8) [ 8 ];
ENFORCE(ttl_irregular_chain_flag == 1); ENFORCE(ttl_irregular_chain_flag == 1);
skipping to change at page 92, line 11 skipping to change at page 92, line 11
Denial-of-service attacks are possible if an intruder can introduce Denial-of-service attacks are possible if an intruder can introduce
(for example) bogus IR, CO, or FEEDBACK packets onto the link and (for example) bogus IR, CO, or FEEDBACK packets onto the link and
thereby cause compression efficiency to be reduced. However, an thereby cause compression efficiency to be reduced. However, an
intruder having the ability to inject arbitrary packets at the link intruder having the ability to inject arbitrary packets at the link
layer in this manner raises additional security issues that dwarf layer in this manner raises additional security issues that dwarf
those related to the use of header compression. those related to the use of header compression.
11. IANA Considerations 11. IANA Considerations
The ROHC profile identifier 0x0006 has been reserved by the IANA for This document requests that the reference for ROHC profile identifier
the profile defined in this document. 0x0006 is updated to point to this document instead of RFC4996.
A ROHC profile identifier has been reserved by the IANA for the A ROHC profile identifier has been reserved by the IANA for the
profile defined in this document. Profiles 0x0000-0x0005 have profile defined in this document. Profiles 0x0000-0x0005 have
previously been reserved; this profile is 0x0006. As for previous previously been reserved; this profile is 0x0006. As for previous
ROHC profiles, profile numbers 0xnn06 have been reserved for future ROHC profiles, profile numbers 0xnn06 have been reserved for future
updates of this profile. updates of this profile.
Profile Usage Document Profile Usage Document
identifier identifier
skipping to change at page 93, line 27 skipping to change at page 93, line 27
[RFC2890] Dommety, G., "Key and Sequence Number Extensions to GRE", [RFC2890] Dommety, G., "Key and Sequence Number Extensions to GRE",
RFC 2890, September 2000. RFC 2890, September 2000.
[RFC4164] Pelletier, G., "RObust Header Compression (ROHC): Context [RFC4164] Pelletier, G., "RObust Header Compression (ROHC): Context
Replication for ROHC Profiles", RFC 4164, August 2005. Replication for ROHC Profiles", RFC 4164, August 2005.
[RFC4302] Kent, S., "IP Authentication Header", RFC 4302, [RFC4302] Kent, S., "IP Authentication Header", RFC 4302,
December 2005. December 2005.
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)",
RFC 4303, December 2005.
[RFC4997] Finking, R. and G. Pelletier, "Formal Notation for RObust [RFC4997] Finking, R. and G. Pelletier, "Formal Notation for RObust
Header Compression (ROHC-FN)", RFC 4997, July 2007. Header Compression (ROHC-FN)", RFC 4997, July 2007.
[RFC5795] Sandlund, K., Pelletier, G., and L-E. Jonsson, "The RObust [RFC5795] Sandlund, K., Pelletier, G., and L-E. Jonsson, "The RObust
Header Compression (ROHC) Framework", RFC 5795, Header Compression (ROHC) Framework", RFC 5795,
March 2010. March 2010.
13.2. Informative References 13.2. Informative References
[RFC1144] Jacobson, V., "Compressing TCP/IP headers for low-speed [RFC1144] Jacobson, V., "Compressing TCP/IP headers for low-speed
 End of changes. 14 change blocks. 
24 lines changed or deleted 15 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/