summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc4413.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc4413.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc4413.txt')
-rw-r--r--doc/rfc/rfc4413.txt2467
1 files changed, 2467 insertions, 0 deletions
diff --git a/doc/rfc/rfc4413.txt b/doc/rfc/rfc4413.txt
new file mode 100644
index 0000000..33eb807
--- /dev/null
+++ b/doc/rfc/rfc4413.txt
@@ -0,0 +1,2467 @@
+
+
+
+
+
+
+Network Working Group M. West
+Request for Comments: 4413 S. McCann
+Category: Informational Siemens/Roke Manor Research
+ March 2006
+
+
+ TCP/IP Field Behavior
+
+Status of This Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard of any kind. Distribution of this
+ memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2006).
+
+Abstract
+
+ This memo describes TCP/IP field behavior in the context of header
+ compression. Header compression is possible because most header
+ fields do not vary randomly from packet to packet. Many of the
+ fields exhibit static behavior or change in a more or less
+ predictable way. When a header compression scheme is designed, it is
+ of fundamental importance to understand the behavior of the fields in
+ detail. An example of this analysis can be seen in RFC 3095. This
+ memo performs a similar role for the compression of TCP/IP headers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 1]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+Table of Contents
+
+ 1. Introduction ....................................................3
+ 2. General classification ..........................................4
+ 2.1. IP Header Fields ...........................................5
+ 2.1.1. IPv6 Header Fields ....................................5
+ 2.1.2. IPv4 Header Fields ....................................7
+ 2.2. TCP Header Fields .........................................10
+ 2.3. Summary for IP/TCP ........................................11
+ 3. Classification of Replicable Header Fields .....................11
+ 3.1. IPv4 Header (Inner and/or Outer) ..........................12
+ 3.2. IPv6 Header (inner and/or outer) ..........................14
+ 3.3. TCP Header ................................................14
+ 3.4. TCP Options ...............................................15
+ 3.5. Summary of Replication ....................................16
+ 4. Analysis of Change Patterns of Header Fields ...................16
+ 4.1. IP Header .................................................19
+ 4.1.1. IP Traffic-Class / Type-Of-Service (TOS) .............19
+ 4.1.2. ECN Flags ............................................19
+ 4.1.3. IP Identification ....................................20
+ 4.1.4. Don't Fragment (DF) flag .............................22
+ 4.1.5. IP Hop-Limit / Time-To-Live (TTL) ....................22
+ 4.2. TCP Header ................................................23
+ 4.2.1. Sequence Number ......................................23
+ 4.2.2. Acknowledgement Number ...............................24
+ 4.2.3. Reserved .............................................25
+ 4.2.4. Flags ................................................25
+ 4.2.5. Checksum .............................................26
+ 4.2.6. Window ...............................................26
+ 4.2.7. Urgent Pointer .......................................27
+ 4.3. Options ...................................................27
+ 4.3.1. Options Overview .....................................28
+ 4.3.2. Option Field Behavior ................................29
+ 5. Other Observations .............................................36
+ 5.1. Implicit Acknowledgements .................................36
+ 5.2. Shared Data ...............................................36
+ 5.3. TCP Header Overhead .......................................37
+ 5.4. Field Independence and Packet Behavior ....................37
+ 5.5. Short-Lived Flows .........................................37
+ 5.6. Master Sequence Number ....................................38
+ 5.7. Size Constraint for TCP Options ...........................38
+ 6. Security Considerations ........................................39
+ 7. Acknowledgements ...............................................39
+ 8. References .....................................................40
+ 8.1. Normative References ......................................40
+ 8.2. Informative References ....................................41
+
+
+
+
+
+West & McCann Informational [Page 2]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+1. Introduction
+
+ This document describes the format of the TCP/IP header and the
+ header field behavior, i.e., how fields vary within a TCP flow. The
+ description is presented in the context of header compression.
+
+ Since the IP header does exhibit slightly different behavior from
+ that previously presented in RFC 3095 [31] for UDP and RTP, it is
+ also included in this document.
+
+ This document borrows much of the classification text from RFC 3095
+ [31], rather than inserting many references to that document.
+
+ According to the format presented in RFC 3095 [31], TCP/IP header
+ fields are classified and analyzed in two steps. First, we have a
+ general classification in Section 2, where the fields are classified
+ on the basis of stable knowledge and assumptions. This general
+ classification does not take into account the change characteristics
+ of changing fields, as those will vary more or less depending on the
+ implementation and on the application used. Section 3 considers how
+ field values can be used to optimize short-lived flows. A more
+ detailed analysis of the change characteristics is then done in
+ Section 4. Finally, Section 5 summarizes with conclusions about how
+ the various header fields should be handled by the header compression
+ scheme to optimize compression.
+
+ A general question raised by this analysis is: what 'baseline'
+ definition of all possible TCP/IP implementations is to be
+ considered? This review is based on an analysis of currently
+ deployed TCP implementations supporting mechanisms standardised by
+ the IETF.
+
+ The general requirement for transparency is also interesting. A
+ number of recent proposals for extensions to TCP use some of the
+ previously 'reserved' bits in the TCP packet header. Therefore, a
+ 'reserved' bit cannot be taken to have a guaranteed zero value; it
+ may change. Ideally, this should be accommodated by the compression
+ profile.
+
+ A number of reserved bits are available for future expansion. A
+ treatment of field behavior cannot predict the future use of such
+ bits, but we expect that they will be used at some point. Given
+ this, a compression scheme can optimise for the current situation but
+ should be capable of supporting any arbitrary usage of the reserved
+ bits. However, it is impossible to optimise for usage patterns that
+ have yet to be defined.
+
+
+
+
+
+West & McCann Informational [Page 3]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+2. General classification
+
+ The following definitions (and some text) are copied from RFC 3095
+ [31], Appendix A. Differences of IP field behavior between RFC 3095
+ [31] (i.e., IP/UDP/RTP behavior for audio and video applications) and
+ this document have been identified.
+
+ For the following, we define "session" as a TCP packet stream, being
+ a series of packets with the same IP addresses and port numbers. A
+ packet flow is defined by certain fields (see STATIC-DEF, below) and
+ may be considered a subset of a session. See [31] for a fuller
+ discussion of separation of sessions into streams of packets for
+ header compression.
+
+ At a general level, the header fields are separated into 5 classes:
+
+ o INFERRED
+
+ These fields contain values that can be inferred from other
+ values (for example, the size of the frame carrying the packet)
+ and thus do not have to be handled at all by the compression
+ scheme.
+
+ o STATIC
+
+ These fields are expected to be constant throughout the
+ lifetime of the packet stream. Static information must in some
+ way be communicated once.
+
+ o STATIC-DEF
+
+ STATIC fields whose values define a packet stream. They are in
+ general handled as STATIC.
+
+ o STATIC-KNOWN
+
+ These STATIC fields are expected to have well-known values and
+ therefore do not need to be communicated at all.
+
+ o CHANGING
+
+ These fields are expected to vary randomly within a limited
+ value set or range or in some other manner.
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 4]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ In this section, each of the IP and TCP header fields is assigned to
+ one of these classes. For all fields except those classified as
+ CHANGING, the motives for the classification are also stated. In
+ section 4, CHANGING fields are further examined and classified on the
+ basis of their expected change behavior.
+
+2.1. IP Header Fields
+
+2.1.1. IPv6 Header Fields
+
+ +---------------------+-------------+----------------+
+ | Field | Size (bits) | Class |
+ +---------------------+-------------+----------------+
+ | Version | 4 | STATIC |
+ | DSCP* | 6 | ALTERNATING |
+ | ECT flag* | 1 | CHANGING |
+ | CE flag* | 1 | CHANGING |
+ | Flow Label | 20 | STATIC-DEF |
+ | Payload Length | 16 | INFERRED |
+ | Next Header | 8 | STATIC |
+ | Hop Limit | 8 | CHANGING |
+ | Source Address | 128 | STATIC-DEF |
+ | Destination Address | 128 | STATIC-DEF |
+ +---------------------+-------------+----------------+
+ * Differs from RFC 3095 [31]. (The DSCP, ECT,
+ and CE flags were amalgamated into the Traffic
+ Class octet in RFC 3095).
+
+ Figure 1. IPv6 Header Fields
+
+ o Version
+
+ The version field states which IP version is used. Packets
+ with different values in this field must be handled by
+ different IP stacks. All packets of a packet stream must
+ therefore be of the same IP version. Accordingly, the field is
+ classified as STATIC.
+
+ o Flow Label
+
+ This field may be used to identify packets belonging to a
+ specific packet stream. If the field is not used, its value
+ should be zero. Otherwise, all packets belonging to the same
+ stream must have the same value in this field, it being one of
+ the fields that define the stream. The field is therefore
+ classified as STATIC-DEF.
+
+
+
+
+
+West & McCann Informational [Page 5]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ o Payload Length
+
+ Information about packet length (and, consequently, payload
+ length) is expected to be provided by the link layer. The
+ field is therefore classified as INFERRED.
+
+ o Next Header
+
+ This field will usually have the same value in all packets of a
+ packet stream. It encodes the type of the subsequent header.
+ Only when extension headers are sometimes absent will the field
+ change its value during the lifetime of the stream. The field
+ is therefore classified as STATIC. The classification of
+ STATIC is inherited from RFC 3095 [31]. However, note that the
+ next header field is actually determined by the type of the
+ following header. Thus, it might be more appropriate to view
+ this as an inference, although this depends upon the specific
+ implementation of the compression scheme.
+
+ o Source and Destination Addresses
+
+ These fields are part of the definition of a stream and
+ therefore must be constant for all packets in the stream. The
+ fields are therefore classified as STATIC-DEF.
+
+ This might be considered as a slightly simplistic view. In
+ this document, the IP addresses are associated with the
+ transport layer connection and assumed to be part of the
+ definition of a flow. More complex flow-separation could, of
+ course, be considered (see also RFC 3095 [31] for more
+ discussion of this issue). Where tunneling is being performed,
+ the use of the IP addresses in outer tunnel headers is also
+ assumed to be STATIC-DEF.
+
+ The total size of the fields in each class is as follows:
+
+ +--------------+--------------+
+ | Class | Size (octets)|
+ +--------------+--------------+
+ | INFERRED | 2 |
+ | STATIC | 1.5 |
+ | STATIC-DEF | 34.5 |
+ | STATIC-KNOWN | 0 |
+ | CHANGING | 2 |
+ +--------------+--------------+
+
+ Figure 2: Field sizes
+
+
+
+
+West & McCann Informational [Page 6]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+2.1.2. IPv4 Header Fields
+
+ +---------------------+-------------+----------------+
+ | Field | Size (bits) | Class |
+ +---------------------+-------------+----------------+
+ | Version | 4 | STATIC |
+ | Header Length | 4 | STATIC-KNOWN |
+ | DSCP* | 6 | ALTERNATING |
+ | ECT flag* | 1 | CHANGING |
+ | CE flag* | 1 | CHANGING |
+ | Packet Length | 16 | INFERRED |
+ | Identification | 16 | CHANGING |
+ | Reserved flag* | 1 | CHANGING |
+ | Don't Fragment flag*| 1 | CHANGING |
+ | More Fragments flag | 1 | STATIC-KNOWN |
+ | Fragment Offset | 13 | STATIC-KNOWN |
+ | Time To Live | 8 | CHANGING |
+ | Protocol | 8 | STATIC |
+ | Header Checksum | 16 | INFERRED |
+ | Source Address | 32 | STATIC-DEF |
+ | Destination Address | 32 | STATIC-DEF |
+ +---------------------+-------------+----------------+
+ * Differs from RFC 3095 [31]. (The DSCP, ECT
+ and CE flags were amalgamated into the TOS
+ octet in RFC 3095; the DF flag behavior is
+ considered later; the reserved field is
+ discussed below).
+
+ Figure 3. IPv4 Header Fields
+
+ o Version
+
+ The version field states which IP version is used. Packets
+ with different values in this field must be handled by
+ different IP stacks. All packets of a packet stream must
+ therefore be of the same IP version. Accordingly, the field is
+ classified as STATIC.
+
+ o Header Length
+
+ As long as no options are present in the IP header, the header
+ length is constant and well known. If there are options, the
+ fields would be STATIC, but it is assumed here that there are
+ no options. The field is therefore classified as STATIC-KNOWN.
+
+
+
+
+
+
+
+West & McCann Informational [Page 7]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ o Packet Length
+
+ Information about packet length is expected to be provided by
+ the link layer. The field is therefore classified as INFERRED.
+
+ o Flags
+
+ The Reserved flag must be set to zero, as defined in RFC 791
+ [1]. In RFC 3095 [31] the field is therefore classified as
+ STATIC-KNOWN. However, it is expected that reserved fields may
+ be used at some future point. It is undesirable to select an
+ encoding that would preclude the use of a compression profile
+ for a future change in the use of reserved fields. For this
+ reason, the alternative encoding of CHANGING is used. (A
+ compression profile can, of course, still optimise for the
+ current situation, where the field value is known to be 0).
+
+ The More Fragments (MF) flag is expected to be zero because
+ fragmentation is, ideally, not expected. However, it is also
+ understood that some scenarios (for example, some tunnelling
+ architectures) do cause fragmentation. In general, though,
+ fragmentation is not expected to be common in the Internet due
+ to a combination of initial MSS negotiation and subsequent use
+ of path-MTU discovery. RFC 3095 [31] points out that, for RTP,
+ only the first fragment will contain the transport layer
+ protocol header; subsequent fragments would have to be
+ compressed with a different profile. This is also obviously
+ the case for TCP. If fragmentation were to occur, the first
+ fragment, by definition, would be relatively large, minimizing
+ the header overhead. Subsequent fragments would be compressed
+ with another profile. It is therefore considered undesirable
+ to optimise for fragmentation in performing header compression.
+ The More Fragments flag is therefore classified as STATIC-
+ KNOWN.
+
+ o Fragment Offset
+
+ Under the assumption that no fragmentation occurs, the fragment
+ offset is always zero. The field is therefore classified as
+ STATIC-KNOWN. Even if fragmentation were to be further
+ considered, only the first fragment would contain the TCP
+ header, and the fragment offset of this packet would still be
+ zero.
+
+ o Protocol
+
+ This field will usually have the same value in all packets of a
+ packet stream. It encodes the type of the subsequent header.
+
+
+
+West & McCann Informational [Page 8]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ Only where the sequence of headers changes (e.g., an extension
+ header is inserted or deleted or a tunnel header is added or
+ removed) will the field change its value. The field is
+ therefore classified as STATIC. Whether such a change would
+ cause the sequence of packets to be treated as a new flow (for
+ header compression) is an issue for profile design. ROHC
+ profiles must be able to cope with extension headers and
+ tunnelling, but the choice of strategy is outside the scope of
+ this document.
+
+ o Header Checksum
+
+ The header checksum protects individual hops from processing a
+ corrupted header. When almost all IP header information is
+ compressed away, there is no point in having this additional
+ checksum. Instead, it can be regenerated at the decompressor
+ side. The field is therefore classified as INFERRED.
+
+ Note that the TCP checksum does not protect the whole TCP/IP
+ header, but only the TCP pseudo-header (and the payload).
+ Compare this with ROHC [31], which uses a CRC to verify the
+ uncompressed header. Given the need to validate the complete
+ TCP/IP header, the cost of computing the TCP checksum over the
+ entire payload, and known weaknesses in the TCP checksum [37],
+ an additional check is necessary. Therefore, it is highly
+ desirable that some additional checksum (such as a CRC) will be
+ used to validate correct decompression.
+
+ o Source and Destination Addresses
+
+ These fields are part of the definition of a stream and must
+ thus be constant for all packets in the stream. The fields are
+ therefore classified as STATIC-DEF.
+
+ The total size of the fields in each class is as follows:
+
+ +--------------+--------------+
+ | Class | Size (octets)|
+ +--------------+--------------+
+ | INFERRED | 4 |
+ | STATIC* | 1.5 |
+ | STATIC-DEF | 8 |
+ | STATIC-KNOWN*| 2.25 |
+ | CHANGING* | 4.25 |
+ +--------------+--------------+
+ * Differs from RFC 3095 [31]
+
+ Figure 4. Field sizes
+
+
+
+West & McCann Informational [Page 9]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+2.2. TCP Header Fields
+
+ +---------------------+-------------+----------------+
+ | Field | Size (bits) | Class |
+ +---------------------+-------------+----------------+
+ | Source Port | 16 | STATIC-DEF |
+ | Destination Port | 16 | STATIC-DEF |
+ | Sequence Number | 32 | CHANGING |
+ | Acknowledgement Num | 32 | CHANGING |
+ | Data Offset | 4 | INFERRED |
+ | Reserved | 4 | CHANGING |
+ | CWR flag | 1 | CHANGING |
+ | ECE flag | 1 | CHANGING |
+ | URG flag | 1 | CHANGING |
+ | ACK flag | 1 | CHANGING |
+ | PSH flag | 1 | CHANGING |
+ | RST flag | 1 | CHANGING |
+ | SYN flag | 1 | CHANGING |
+ | FIN flag | 1 | CHANGING |
+ | Window | 16 | CHANGING |
+ | Checksum | 16 | CHANGING |
+ | Urgent Pointer | 16 | CHANGING |
+ | Options | 0(-352) | CHANGING |
+ +---------------------+-------------+----------------+
+
+ Figure 5: TCP header fields
+
+ o Source and Destination ports
+
+ These fields are part of the definition of a stream and must thus
+ be constant for all packets in the stream. The fields are
+ therefore classified as STATIC-DEF.
+
+ o Data Offset
+
+ The number of 4 octet words in the TCP header, indicating the
+ start of the data. It is always a multiple of 4 octets. It can
+ be re-constructed from the length of any options, and thus it is
+ not necessary to carry this explicitly. The field is therefore
+ classified as INFERRED.
+
+
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 10]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+2.3. Summary for IP/TCP
+
+ Summarizing this for IP/TCP, one obtains the following:
+
+ +----------------+----------------+----------------+
+ | Class \ IP ver | IPv6 (octets) | IPv4 (octets) |
+ +----------------+----------------+----------------+
+ | INFERRED | 2 + 4 bits | 4 + 4 bits |
+ | STATIC | 1 + 4 bits | 1 + 4 bits |
+ | STATIC-DEF | 38 + 4 bits | 12 |
+ | STATIC-KNOWN | - | 2 + 2 bits |
+ | CHANGING | 17 + 4 bits | 19 + 6 bits |
+ +----------------+----------------+----------------+
+ | Totals | 60 | 40 |
+ +----------------+----------------+----------------+
+ (Excludes options, which are all classified as CHANGING).
+
+ Figure 6. Overall field sizes
+
+3. Classification of Replicable Header Fields
+
+ Where multiple flows either overlap in time or occur sequentially
+ within a short space of time, there can be a great deal of similarity
+ in header field values. Such commonality of field values is
+ reflected in the compression context. Thus, it should be possible to
+ utilise commonality between fields across different flows to improve
+ the compression ratio. In order to do this, it is important to
+ understand the 'replicable' characteristics of the various header
+ fields.
+
+ The key concept is that of 'replication': an existing context is used
+ as a baseline and replicated to initialise a new context. Those
+ fields that are the same are then automatically initialised in the
+ new context. Those that have changed will be updated or overwritten
+ with values from the initialisation packet that triggered the
+ replication. This section considers the commonality between fields
+ in different flows.
+
+ Note, however, that replication is based on contexts (rather than on
+ just field values), so compressor-created fields that are part of the
+ context may also be included. These, of course, are dependent upon
+ the nature of the compression protocol (ROHC profile) being applied.
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 11]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ A brief analysis of the relationship of TCP/IP fields among
+ 'replicable' packet streams follows.
+
+ 'N/A': The field need not be considered in the replication
+ process, as it is inferred or known 'a priori' (and,
+ therefore, does not appear in the context).
+
+ 'No': The field cannot be replicated since its change pattern
+ between two packet flows is uncorrelated.
+
+ 'Yes': The field may be replicated. This does not guarantee that
+ the field value will be the same across two candidate
+ streams, only that it might be possible to exploit
+ replication to increase the compression ratio. Specific
+ encoding methods can be used to improve the compression
+ efficiency.
+
+3.1. IPv4 Header (Inner and/or Outer)
+
+ +-----------------------+---------------+------------+
+ | Field | Class | Replicable |
+ +-----------------------+---------------+------------+
+ | Version | STATIC | N/A |
+ | Header Length | STATIC-KNOWN | N/A |
+ | DSCP | ALTERNATING | No (1) |
+ | ECT flag | CHANGING | No (2) |
+ | CE flag | CHANGING | No (2) |
+ | Packet Length | INFERRED | N/A |
+ | Identification | CHANGING | Yes (3) |
+ | Reserved flag | CHANGING | No (4) |
+ | Don't Fragment flag | CHANGING | Yes (5) |
+ | More Fragments flag | STATIC-KNOWN | N/A |
+ | Fragment Offset | STATIC-KNOWN | N/A |
+ | Time To Live | CHANGING | Yes |
+ | Protocol | STATIC | N/A |
+ | Header Checksum | INFERRED | N/A |
+ | Source Address | STATIC-DEF | Yes |
+ | Destination Address | STATIC-DEF | Yes |
+ +-----------------------+---------------+------------+
+
+ Figure 7: IPv4 header
+
+ (1) The DSCP is marked according to the application's requirements.
+ If it can be assumed that replicable connections belong to the
+ same diffserv class, then it is likely that the DSCP will be
+ replicable. The DSCP can be set not only by the sender but by
+ any packet marker. Thus, a flow may have a number of DSCP values
+ at different points in the network. However, header compression
+
+
+
+West & McCann Informational [Page 12]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ operates on a point-to-point link and so would expect to see a
+ relatively stable value. If re-marking is being done based on
+ the state of a meter, then the value may change mid-flow.
+ Overall, though, we expect supporting replication of the DSCP to
+ be useful for header compression.
+
+ (2) It is not possible for the ECN bits to be replicated (note that
+ use of the ECN nonce scheme [19] is anticipated). However, it
+ seems likely that all TCP flows between ECN-capable hosts will
+ use ECN, the use (or not) of ECN for flows between the same end-
+ points might be considered replicable. See also note (4).
+
+ (3) The replicable context for this field includes the IP-ID, NBO,
+ and RND flags (as described in ROHC RTP). This highlights that
+ the replication is of the context, rather than just the header
+ field values and, as such, needs to be considered based on the
+ exact nature of compression applied to each field.
+
+ (4) Since the possible future behavior of the 'Reserved Flag' cannot
+ be predicted, it is not considered as replicable. However, it
+ might be expected that the behavior of the reserved flag between
+ the same end-points will be similar. In this case, any selection
+ of packet formats (for example) based on this behavior might
+ carry across to the new flow. In the case of packet formats,
+ this can probably be considered as a compressor-local decision.
+
+ (5) In theory, the DF bit may be replicable. However, this is not
+ guaranteed and, in practice, it is unlikely to be useful to do
+ this. From the perspective of header compression, having to
+ indicate whether or not a 1-bit flag should be replicated or
+ specified explicitly is likely to require more bits than simply
+ conveying the value of the flag. We do not rule out DF
+ replication.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 13]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+3.2. IPv6 Header (inner and/or outer)
+
+ +-----------------------+---------------+------------+
+ | Field | Class | Replicable |
+ +-----------------------+---------------+------------+
+ | Version | STATIC | N/A |
+ | Traffic Class | CHANGING | Yes (1) |
+ | ECT flag | CHANGING | No (2) |
+ | CE flag | CHANGING | No (2) |
+ | Flow Label | STATIC-DEF | N/A |
+ | Payload Length | INFERRED | N/A |
+ | Next Header | STATIC | N/A |
+ | Hop Limit | CHANGING | Yes |
+ | Source Address | STATIC-DEF | Yes |
+ | Destination Address | STATIC-DEF | Yes |
+ +-----------------------+---------------+------------+
+ (1) See comment about DSCP field for IPv4, above.
+ (2) See comment about ECT and CE flags for IPv4, above.
+
+ Figure 8. IPv6 Header
+
+3.3. TCP Header
+
+ +-----------------------+---------------+------------+
+ | Field | Class | Replicable |
+ +-----------------------+---------------+------------+
+ | Source Port | STATIC-DEF | Yes (1) |
+ | Destination Port | STATIC-DEF | Yes (1) |
+ | Sequence Number | CHANGING | No (2) |
+ | Acknowledgement Number| CHANGING | No |
+ | Data Offset | INFERRED | N/A |
+ | Reserved Bits | CHANGING | No (3) |
+ | Flags | | |
+ | CWR | CHANGING | No (4) |
+ | ECE | CHANGING | No (4) |
+ | URG | CHANGING | No |
+ | ACK | CHANGING | No |
+ | PSH | CHANGING | No |
+ | RST | CHANGING | No |
+ | SYN | CHANGING | No |
+ | FIN | CHANGING | No |
+ | Window | CHANGING | Yes |
+ | Checksum | CHANGING | No |
+ | Urgent Pointer | CHANGING | Yes (5) |
+ +-----------------------+---------------+------------+
+
+ Figure 9: TCP Header
+
+
+
+
+West & McCann Informational [Page 14]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ (1) On the server side, the port number is likely to be a well-known
+ value. On the client side, the port number is generally selected
+ by the stack automatically. Whether the port number is
+ replicable depends upon how the stack chooses the port number.
+ Whilst most implementations use a simple scheme that sequentially
+ picks the next available port number, it may not be desirable to
+ rely on this behavior.
+
+ (2) With the recommendation (and expected deployment) of TCP Initial
+ Sequence Number randomization, defined in RFC 1948 [10], it will
+ be impossible to share the sequence number. Thus, this field
+ will not be regarded as replicable.
+
+ (3) See comment (4) for the IPv4 header, above.
+
+ (4) See comment (2) on ECN flags for the IPv4 header, above.
+
+ (5) The urgent pointer is very rarely used. This means that, in
+ practice, the field may be considered replicable.
+
+3.4. TCP Options
+
+ +---------------------------+--------------+------------+
+ | Option | SYN-only (1) | Replicable |
+ +---------------------------+--------------+------------+
+ | End of Option List | No | No (2) |
+ | No-Operation | No | No (2) |
+ | Maximum Segment Size | Yes | Yes |
+ | Window Scale | Yes | Yes |
+ | SACK-Permitted | Yes | Yes |
+ | SACK | No | No |
+ | Timestamp | No | No |
+ +---------------------------+--------------+------------+
+
+ Figure 10. TCP Options
+
+ (1) This indicates whether the option only appears in SYN packets.
+ Options that are not 'SYN-only' may appear in any packet. Many
+ TCP options are used only in SYN packets. Some options, such as
+ MSS, Window Scale, and SACK-Permitted, will tend to have the same
+ value among replicable packet streams.
+
+ Thus, to support context sharing, the compressor should maintain
+ such TCP options in the context (even though they only appear in
+ the SYN segment).
+
+ (2) Since these options have fixed values, they could be regarded as
+ replicable. However, the only interesting thing to convey about
+
+
+
+West & McCann Informational [Page 15]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ these options is their presence. If it is known that such an
+ option exists, its value is defined.
+
+3.5. Summary of Replication
+
+ From the above analysis, it can be seen that there are reasonable
+ grounds for exploiting redundancy between flows as well as between
+ packets within a flow. Simply consider the advantage of being able
+ to elide the source and destination addresses for a repeated
+ connection between two IPv6 endpoints. There will also be a cost (in
+ terms of complexity and robustness) for replicating contexts, and
+ this must be considered when one decides what constitutes an
+ appropriate solution.
+
+ Finally, note that the use of replication requires that the
+ compressor have a suitable degree of confidence that the source data
+ is present and correct at the decompressor. This may place some
+ restrictions on which of the 'changing' fields, in particular, can be
+ utilised during replication.
+
+4. Analysis of Change Patterns of Header Fields
+
+ To design suitable mechanisms for efficient compression of all header
+ fields, their change patterns must be analyzed. For this reason, an
+ extended classification is done based on the general classification
+ in 2, considering the fields that were labeled CHANGING in that
+ classification.
+
+ The CHANGING fields are separated into five different subclasses:
+
+ o STATIC
+
+ These are fields that were classified as CHANGING on a general
+ basis, but that are classified as STATIC here due to certain
+ additional assumptions.
+
+ o SEMISTATIC
+
+ These fields are STATIC most of the time. However, occasionally
+ the value changes but reverts to its original value after a known
+ number of packets.
+
+ o RARELY-CHANGING (RC)
+
+ These are fields that change their values occasionally and then
+ keep their new values.
+
+
+
+
+
+West & McCann Informational [Page 16]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ o ALTERNATING
+
+ These fields alternate between a small number of different values.
+
+ o IRREGULAR
+
+ These, finally, are the fields for which no useful change pattern
+ can be identified.
+
+ To further expand the classification possibilities without increasing
+ complexity, the classification can be done either according to the
+ values of the field and/or according to the values of the deltas for
+ the field.
+
+ When the classification is done, other details are also stated
+ regarding possible additional knowledge about the field values and/or
+ field deltas, according to the classification. For fields classified
+ as STATIC or SEMISTATIC, the value of the field could be not only
+ STATIC but also well-KNOWN a priori (two states for SEMISTATIC
+ fields). For fields with non-irregular change behavior, it could be
+ known that changes are usually within a LIMITED range compared to the
+ maximal change for the field. For other fields, the values are
+ completely UNKNOWN.
+
+ Figure 11 classifies all the CHANGING fields on the basis of their
+ expected change patterns. (4) refers to IPv4 fields and (6) refers to
+ IPv6.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 17]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ +------------------------+-------------+-------------+-------------+
+ | Field | Value/Delta | Class | Knowledge |
+ +========================+=============+=============+=============+
+ | DSCP(4) / Tr.Class(6) | Value | ALTERNATING | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | IP ECT flag(4) | Value | RC | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | IP CE flag(4) | Value | RC | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | Sequential | Delta | STATIC | KNOWN |
+ | -----------+-------------+-------------+-------------+
+ | IP Id(4) Seq. jump | Delta | RC | LIMITED |
+ | -----------+-------------+-------------+-------------+
+ | Random | Value | IRREGULAR | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | IP DF flag(4) | Value | RC | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | IP TTL(4) / Hop Lim(6) | Value | ALTERNATING | LIMITED |
+ +------------------------+-------------+-------------+-------------+
+ | TCP Sequence Number | Delta | IRREGULAR | LIMITED |
+ +------------------------+-------------+-------------+-------------+
+ | TCP Acknowledgement Num| Delta | IRREGULAR | LIMITED |
+ +------------------------+-------------+-------------+-------------+
+ | TCP Reserved | Value | RC | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | TCP flags | | | |
+ | ECN flags | Value | IRREGULAR | UNKNOWN |
+ | CWR flag | Value | IRREGULAR | UNKNOWN |
+ | ECE flag | Value | IRREGULAR | UNKNOWN |
+ | URG flag | Value | IRREGULAR | UNKNOWN |
+ | ACK flag | Value | SEMISTATIC | KNOWN |
+ | PSH flag | Value | IRREGULAR | UNKNOWN |
+ | RST flag | Value | IRREGULAR | UNKNOWN |
+ | SYN flag | Value | SEMISTATIC | KNOWN |
+ | FIN flag | Value | SEMISTATIC | KNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | TCP Window | Value | ALTERNATING | KNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | TCP Checksum | Value | IRREGULAR | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | TCP Urgent Pointer | Value | IRREGULAR | KNOWN |
+ +------------------------+-------------+-------------+-------------+
+ | TCP Options | Value | IRREGULAR | UNKNOWN |
+ +------------------------+-------------+-------------+-------------+
+
+ Figure 11. Classification of CHANGING Fields
+
+
+
+
+
+West & McCann Informational [Page 18]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ The following subsections discuss the various header fields in
+ detail. Note that Table 1 and the discussion below do not consider
+ changes caused by loss or reordering before the compression point.
+
+4.1. IP Header
+
+4.1.1. IP Traffic-Class / Type-Of-Service (TOS)
+
+ The Traffic-Class (IPv6) or Type-Of-Service/DSCP (IPv4) field might
+ be expected to change during the lifetime of a packet stream. This
+ analysis considers several RFCs that describe modifications to the
+ original RFC 791 [1].
+
+ The TOS byte was initially described in RFC 791 [1] as 3 bits of
+ precedence followed by 3 bits of TOS and 2 reserved bits (defined to
+ be zero). RFC 1122 [21] extended this to specify 5 bits of TOS,
+ although the meanings of the additional 2 bits were not defined. RFC
+ 1349 [23] defined the 4th bit of TOS as 'minimize monetary cost'.
+ The next significant change was in RFC 2474 [14] (obsoleting RFC 1349
+ [23]). RFC 2474 reworked the TOS octet as 6 bits of DSCP (DiffServ
+ Code Point) plus 2 unused bits. Most recently, RFC 2780 [30]
+ identified the 2 reserved bits in the TOS or traffic class octet for
+ experimental use with ECN.
+
+ It is therefore proposed that the TOS (or traffic class) octet be
+ classified as 6 bits for the DSCP and 2 additional bits. These 2
+ bits may be expected to be zero or to contain ECN data. From a
+ future-proofing perspective, it is preferable to assume the use of
+ ECN, especially with respect to TCP.
+
+ It is also considered important that the profile work with legacy
+ stacks, since these will be in existence for some considerable time
+ to come. For simplicity, this will be considered as 6 bits of TOS
+ information and 2 bits of ECN data, so the fields are always
+ considered to be structured the same way.
+
+ The DSCP (as for TOS in ROHC RTP) is not expected to change
+ frequently (although it could change mid-flow, for example, as a
+ result of a route change).
+
+4.1.2. ECN Flags
+
+ Initially, we describe the ECN flags as specified in RFC 2481 [15]
+ and RFC 3168 [18]. Subsequently, a suggested update is described
+ that would alter the behavior of the flags.
+
+ In RFC 2481 [15] there are 2 separate flags, the ECT (ECN Capable
+ Transport) flag and the CE (Congestion Experienced) flag. The ECT
+
+
+
+West & McCann Informational [Page 19]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ flag, if negotiated by the TCP stack, will be '1' for all data
+ packets and '0' for all 'pure acknowledgement' packets. This means
+ that the behavior of the ECT flag is linked to behavior in the TCP
+ stack. Whether this can be exploited for compression is not clear.
+
+ The CE flag is only used if ECT is set to '1'. It is set to '0' by
+ the sender and can be set to '1' by an ECN-capable router in the
+ network to indicate congestion. Thus the CE flag is expected to be
+ randomly set to '1' with a probability dependent on the congestion
+ state of the network and the position of the compressor in the path.
+ Therefore, a compressor located close to the receiver in a congested
+ network will see the CE bit set frequently, but a compressor located
+ close to a sender will rarely, if ever, see the CE bit set to '1'.
+
+ A recent experimental proposal [19] suggests an alternative view of
+ these 2 bits. This considers the two bits together to have 4
+ possible codepoints. Meanings are then assigned to the codepoints:
+
+ 00 Not ECN capable
+ 01 ECN capable, no congestion (known as ECT(0))
+ 10 ECN capable, no congestion (known as ECT(1))
+ 11 Congestion experienced
+
+ The use of 2 codepoints for signaling ECT allows the sender to detect
+ when a receiver is not reliably echoing congestion information.
+
+ For the purposes of compression, this update means that ECT(0) and
+ ECT(1) are equally likely (for an ECN capable flow) and that '11'
+ will be seen relatively rarely. The probability of seeing a
+ congestion indication is discussed above in the description of the CE
+ flag.
+
+ It is suggested that, for the purposes of compression, ECN with
+ nonces be assumed as the baseline, although the compression scheme
+ must be able to compress the original ECN scheme transparently.
+
+4.1.3. IP Identification
+
+ The Identification field (IP ID) of the IPv4 header identifies which
+ fragments constitute a datagram, when fragmented datagrams are
+ reassembled. The IPv4 specification does not specify exactly how
+ this field is to be assigned values, only that each packet should get
+ an IP ID that is unique for the source-destination pair and protocol
+ for the time during which the datagram (or any of its fragments)
+ could be alive in the network. This means that assignment of IP ID
+ values can be done in various ways, which we have separated into
+ three classes:
+
+
+
+
+West & McCann Informational [Page 20]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ o Sequential jump
+
+ This is the most common assignment policy in today's IP stacks. A
+ single IP ID counter is used for all packet streams. When the
+ sender is running more than one packet stream simultaneously, the
+ IP ID can increase by more than one between packets in a stream.
+ The IP ID values will be much more predictable and will require
+ fewer bits to transfer than random values, and the packet-to-
+ packet increment (determined by the number of active outgoing
+ packet streams and sending frequencies) will usually be limited.
+
+ o Random
+
+ Some IP stacks assign IP ID values by using a pseudo-random number
+ generator. There is thus no correlation between the ID values of
+ subsequent datagrams. Therefore, there is no way to predict the
+ IP ID value for the next datagram. For header compression
+ purposes, this means that the IP ID field needs to be sent
+ uncompressed with each datagram, resulting in two extra octets of
+ header. IP stacks in cellular terminals that need optimum header
+ compression efficiency should not use this IP ID assignment
+ policy.
+
+ o Sequential
+
+ This assignment policy keeps a separate counter for each outgoing
+ packet stream, and thus the IP ID value will increment by one for
+ each packet in the stream, except at wrap around. Therefore, the
+ delta value of the field is constant and well known a priori.
+ This assignment policy is the most desirable for header
+ compression purposes. However, its usage is not as common as it
+ perhaps should be.
+
+ In order to avoid violating RFC 791 [1], packets sharing the same
+ IP address pair and IP protocol number cannot use the same IP ID
+ values. Therefore, implementations of sequential policies must
+ make the ID number spaces disjoint for packet streams of the same
+ IP protocol going between the same pair of nodes. This can be
+ done in a number of ways, all of which introduce occasional jumps
+ and thus make the policy less than perfectly sequential. For
+ header compression purposes, less frequent jumps are preferred.
+
+ Note that the ID is an IPv4 mechanism and is therefore not a problem
+ for IPv6. For IPv4, the ID could be handled in three different ways.
+ First, we have the inefficient but reliable solution where the ID
+ field is sent as-is in all packets, increasing the compressed headers
+ by two octets. This is the best way to handle the ID field if the
+ sender uses random assignment of the ID field. Second, there can be
+
+
+
+West & McCann Informational [Page 21]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ solutions with more flexible mechanisms that require fewer bits for
+ the ID handling as long as sequential jump assignment is used. Such
+ solutions will probably require even more bits if random assignment
+ is used by the sender. Knowledge about the sender's assignment
+ policy could therefore be useful when choosing between the two
+ solutions above. Finally, even for IPv4, header compression could be
+ designed without any additional information for the ID field included
+ in compressed headers. To use such schemes, it must be known which
+ assignment policy for the ID field is being used by the sender. That
+ might not be possible to know, which implies that the applicability
+ of such solutions is very uncertain. However, designers of IPv4
+ stacks for cellular terminals should use an assignment policy close
+ to sequential.
+
+ With regard to TCP compression, the behavior of the IP ID field is
+ essentially the same. However, in RFC 3095 [31], the IP ID is
+ generally inferred from the RTP Sequence Number. There is no obvious
+ candidate in the TCP case for a field to offer this 'master sequence
+ number' role.
+
+ Clearly, from a busy server, the observed behavior may well be quite
+ erratic. This is a case where the ability to share the IP
+ compression context between a number of flows (between the same end-
+ points) could offer potential benefits. However, this would only
+ have any real impact where there is a large number of flows between
+ one machine and the server. If context sharing is being considered,
+ then it is preferable to share the IP part of the context.
+
+4.1.4. Don't Fragment (DF) flag
+
+ Path-MTU discovery (RFC 1191 for IPv4 [6] and RFC 1981 for IPv6 [11])
+ is widely deployed for TCP, in contrast to little current use for UDP
+ packet streams. This employs the DF flag value of '1' to detect the
+ need for fragmentation in the end-to-end path and to probe the
+ minimum MTU along the network path. End hosts using this technique
+ may be expected to send all packets with DF set to '1', although a
+ host may end PMTU discovery by clearing the DF bit to '0'. Thus, for
+ compression, we expect the field value to be stable.
+
+4.1.5. IP Hop-Limit / Time-To-Live (TTL)
+
+ The Hop-Limit (IPv6) or Time-To-Live (IPv4) field is expected to be
+ constant during the lifetime of a packet stream or to alternate
+ between a limited number of values due to route changes.
+
+
+
+
+
+
+
+West & McCann Informational [Page 22]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+4.2. TCP Header
+
+ Any discussion of compressability of TCP fields borrows heavily from
+ RFC 1144 [22]. However, the premise of how the compression is
+ performed is slightly different, and the protocol has evolved
+ slightly in the intervening time.
+
+4.2.1. Sequence Number
+
+ Understanding the sequence and acknowledgement number behavior is
+ essential for a TCP compression scheme.
+
+ At the simplest level, the behavior of the sequence number can be
+ described relatively easily. However, there are a number of
+ complicating factors that also need to be considered.
+
+ For transferring in-sequence data packets, the sequence number will
+ increment for each packet by between 0 and an upper limit defined by
+ the MSS (Maximum Segment Size) and, if it is being used, by Path-MTU
+ discovery.
+
+ There are common MSS values, but these can be quite variable and
+ unpredictable for any given flow. Given this variability and the
+ range of window sizes, it is hard (compared with the RTP case, for
+ example) to select a 'one size fits all' encoding for the sequence
+ number. (The same argument applies equally to the acknowledgement
+ number).
+
+ Note that the increment of the sequence number in a packet is the
+ size of the data payload of that packet (including the SYN and FIN
+ flags). This is, of course, exactly the relationship that RFC 1144
+ [22] exploits to compress the sequence number in the most efficient
+ case. This technique may not be directly applicable to a robust
+ solution, but it may be a useful relationship to consider.
+
+ However, at any point on the path (i.e., wherever a compressor might
+ be deployed), the sequence number can be anywhere within a range
+ defined by the TCP window. This is a combination of a number of
+ values (buffer space at the sender; advertised buffer size at the
+ receiver; and TCP congestion control algorithms). Missing packets or
+ retransmissions can cause the TCP sequence number to fluctuate within
+ the limits of this window.
+
+ It is desirable to be able to predict the sequence number with some
+ regularity. However, this also appears to be difficult to do. For
+ example, during bulk data transfer, the sequence number will tend to
+ go up by 1 MSS per packet (assuming no packet loss). Higher layer
+ values have been seen to have an impact as well, where sequence
+
+
+
+West & McCann Informational [Page 23]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ number behavior has been observed with an 8 kbyte repeating pattern
+ -- 5 segments of 1460 bytes followed by 1 segment of 892 bytes. The
+ implementation of TCP and the management of buffers within a protocol
+ stack can affect the behavior of the sequence number.
+
+ It may be possible to track the TCP window by the compressor,
+ allowing it to bound the size of these jumps.
+
+ For interactive flows (for example, telnet), the sequence number will
+ change by small, irregular amounts. In this case, the Nagle
+ algorithm [3] commonly applies, coalescing small packets where
+ possible in order to reduce the basic header overhead. This may also
+ mean that predictable changes in the sequence number are less likely
+ to occur. The Nagle algorithm is an optimisation and is not required
+ to be used (applications can disable its use). However, it is turned
+ on by default in all common TCP implementations.
+
+ Note also that the SYN and FIN flags (which have to be acknowledged)
+ each consume 1 byte of sequence space.
+
+4.2.2. Acknowledgement Number
+
+ Much of the information about the sequence number applies equally to
+ the acknowledgement number. However, there are some important
+ differences.
+
+ For bulk data transfers, there will tend to be 1 acknowledgement for
+ every 2 data segments. The algorithm is specified in RFC 2581 [16].
+ An ACK need not always be sent immediately on receipt of a data
+ segment, but it must be sent within 500ms and should be generated for
+ at least every second full-size segment (MSS) of received data. It
+ may be seen from this that the delta for the acknowledgement number
+ is roughly twice that of the sequence number. This is not always the
+ case, and the discussion about sequence number irregularity should be
+ applied.
+
+ As an aside, a common implementation bug is 'stretch ACKs' [33]
+ (acknowledgements may be generated less frequently than every two
+ full-size data segments). This pattern can also occur following loss
+ on the return path.
+
+ Since the acknowledgement number is cumulative, dropped packets in
+ the forward path will result in the acknowledgement number remaining
+ constant for a time in the reverse direction. Retransmission of a
+ dropped segment can then cause a substantial jump in the
+ acknowledgement number. These jumps in acknowledgement number are
+ bounded by the TCP window, just as for the jumps in sequence number.
+
+
+
+
+West & McCann Informational [Page 24]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ In the acknowledgement case, information about the advertised
+ received window gives a bound to the size of any ACK jump.
+
+4.2.3. Reserved
+
+ This field is reserved, and it therefore might be expected to be
+ zero. This can no longer be assumed, due to future-proofing. It is
+ only a matter of time before a suggestion for using the flag is made.
+
+4.2.4. Flags
+
+ o ECN-E (Explicit Congestion Notification)
+
+ '1' to echo CE bit in IP header. It will be set in several
+ consecutive headers (until 'acknowledged' by CWR). If ECN nonces
+ are used, then there will be a 'nonce-sum' (NS) bit in the flags,
+ as well. Again, transparency of the reserved bits is crucial for
+ future-proofing this compression scheme. From an
+ efficiency/compression standpoint, the NS bit will either be
+ unused (always '0') or randomly changing. The nonce sum is the
+ 1-bit sum of the ECT codepoints, as described in [19].
+
+ o CWR (Congestion Window Reduced)
+
+ '1' to signal congestion window reduced on ECN. It will generally
+ be set in individual packets. The flag will be set once per loss
+ event. Thus, the probability of its being set is proportional to
+ the degree of congestion in the network, but it is less likely to
+ be set than the CE flag.
+
+ o ECE (Echo Congestion Experience)
+
+ If 'congestion experienced' is signaled in a received IP header,
+ this is echoed through the ECE bit in segments sent by the
+ receiver until acknowledged by seeing the CWR bit set. Clearly,
+ in periods of high congestion and/or long RTT, this flag will
+ frequently be set to '1'.
+
+ During connection open (SYN and SYN/ACK packets), the ECN bits
+ have special meaning:
+
+ * CWR and ECN-E are both set with SYN to indicate desire to use
+ ECN.
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 25]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ * CWR only is set in SYN-ACK, to agree to ECN.
+
+ (The difference in bit-patterns for the negotiation is such that
+ it will work with broken stacks that reflect the value of
+ reserved bits).
+
+ o URG (Urgent Flag)
+
+ '1' to indicate urgent data (which is unlikely with any flag other
+ than ACK).
+
+ o ACK (Acknowledgement)
+
+ '1' for all except the initial 'SYN' packet.
+
+ o PSH (Push Function Field)
+
+ Generally accepted to be randomly '0' or '1'. However, it may be
+ biased more to one value than the other (this is largely caused by
+ the implementation of the stack).
+
+ o RST (Reset Connection)
+
+ '1' to reset a connection (unlikely with any flag other than ACK).
+
+ o SYN (Synchronize Sequence Number)
+
+ '1' for the SYN/SYN-ACK, only at the start of a connection.
+
+ o FIN (End of Data: FINished)
+
+ '1' to indicate 'no more data' (unlikely with any flag other than
+ ACK).
+
+4.2.5. Checksum
+
+ Carried as the end-to-end check for the TCP data. See RFC 1144 [22]
+ for a discussion of why this should be carried. A header compression
+ scheme should not rely upon the TCP checksum for robustness, though,
+ and should apply appropriate error-detection mechanisms of its own.
+ The TCP checksum has to be considered to be randomly changing.
+
+4.2.6. Window
+
+ This may oscillate randomly between 0 and the receiver's window limit
+ (for the connection).
+
+
+
+
+
+West & McCann Informational [Page 26]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ In practice, the window will either not change or alternate between a
+ relatively small number of values. Particularly when the window is
+ closing (its value is getting smaller), the change in window is
+ likely to be related to the segment size, but it is not clear that
+ this necessarily offers any compression advantage. When the window
+ is opening, the effect of 'Silly-Window Syndrome' avoidance should be
+ remembered. This prevents the window from opening by small amounts
+ that would encourage the sender to clock out small segments.
+
+ When thinking about what fields might change in a sequence of TCP
+ segments, one should note that the receiver can generate 'window
+ update' segments in which only the window advertisement changes.
+
+4.2.7. Urgent Pointer
+
+ From a compression point of view, the Urgent Pointer is interesting
+ because it offers an example where 'semantically identical'
+ compression is not the same as 'bitwise identical'. This is because
+ the value of the Urgent Pointer is only valid if the URG flag is set.
+
+ However, the TCP checksum must be passed transparently, in order to
+ maintain its end-to-end integrity checking property. Since the TCP
+ checksum includes the Urgent Pointer in its coverage, this enforces
+ bitwise transparency of the Urgent Pointer. Thus, the issue of
+ 'semantic' vs. 'bitwise' identity is presented as a note: the Urgent
+ Pointer must be compressed in a way that preserves its value.
+
+ If the URG flag is set, then the Urgent Pointer indicates the end of
+ the urgent data and thus can point anywhere in the window. It may be
+ set (and changing) over several segments. Note that urgent data is
+ rarely used, since it is not a particularly clean way of managing
+ out-of-band data.
+
+4.3. Options
+
+ Options occupy space at the end of the TCP header. All options are
+ included in the checksum. An option may begin on any byte boundary.
+ The TCP header must be padded with zeros to make the header length a
+ multiple of 32 bits.
+
+ Optional header fields are identified by an option kind field.
+ Options 0 and 1 are exactly one octet, which is their kind field.
+ All other options have their one-octet kind field, followed by a
+ one-octet length field, followed by length-2 octets of option data.
+
+
+
+
+
+
+
+West & McCann Informational [Page 27]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+4.3.1. Options Overview
+
+ The IANA provides the authoritative list of TCP options. Figure 12
+ describes the current allocations at the time of publication. Any
+ new option would have a 'kind' value assigned by IANA. The list is
+ available at [20]. Where applicable, the associated RFC is also
+ cited.
+
+ +----+-------+------------------------------------+----------+-----+
+ |Kind|Length | Meaning | RFC | Use |
+ | |octets | | | |
+ +----+-------+------------------------------------+----------+-----+
+ | 0 | - | End of Option List | RFC 793 | * |
+ | 1 | - | No-Operation | RFC 793 | * |
+ | 2 | 4 | Maximum Segment Size | RFC 793 | * |
+ | 3 | 3 | WSopt - Window Scale | RFC 1323 | * |
+ | 4 | 2 | SACK Permitted | RFC 2018 | * |
+ | 5 | N | SACK | RFC 2018 | * |
+ | 6 | 6 | Echo (obsoleted by option 8) | RFC 1072 | |
+ | 7 | 6 | Echo Reply (obsoleted by option 8) | RFC 1072 | |
+ | 8 | 10 | TSopt - Time Stamp Option | RFC 1323 | * |
+ | 9 | 2 | Partial Order Connection Permitted | RFC 1693 | |
+ | 10 | 3 | Partial Order Service Profile | RFC 1693 | |
+ | 11 | 6 | CC | RFC 1644 | |
+ | 12 | 6 | CC.NEW | RFC 1644 | |
+ | 13 | 6 | CC.ECHO | RFC 1644 | |
+ | 14 | 3 | Alternate Checksum Request | RFC 1146 | |
+ | 15 | N | Alternate Checksum Data | RFC 1146 | |
+ | 16 | | Skeeter | | |
+ | 17 | | Bubba | | |
+ | 18 | 3 | Trailer Checksum Option | | |
+ | 19 | 18 | MD5 Signature Option | RFC 2385 | |
+ | 20 | | SCPS Capabilities | | |
+ | 21 | | Selective Negative Acks | | |
+ | 22 | | Record Boundaries | | |
+ | 23 | | Corruption experienced | | |
+ | 24 | | SNAP | | |
+ | 25 | | Unassigned (released 12/18/00) | | |
+ | 26 | | TCP Compression Filter | | |
+ +----+-------+------------------------------------+----------+-----+
+
+ Figure 12. Common TCP Options
+
+ The 'use' column is marked with '*' to indicate options that are most
+ likely to be seen in TCP flows. Also note that RFC 1072 [4] has been
+ obsoleted by RFC 1323 [7], although the original bit usage is defined
+ only in RFC 1072.
+
+
+
+
+West & McCann Informational [Page 28]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+4.3.2. Option Field Behavior
+
+ Generally speaking, all option fields have been classified as
+ changing. This section describes the behavior of each option
+ referenced within an RFC, listed by 'kind' indicator.
+
+ 0: End of Option List
+
+ This option code indicates the end of the option list. This
+ might not coincide with the end of the TCP header according to
+ the Data Offset field. This is used at the end of all options,
+ not at the end of each option, and it need only be used if the
+ end of the options would not otherwise coincide with the end of
+ the TCP header. Defined in RFC 793 [2].
+
+ There is no data associated with this option, so a compression
+ scheme must simply be able to encode its presence. However,
+ note that since this option marks the end of the list and the
+ TCP options are 4-octet aligned, there may be octets of padding
+ (defined to be '0' in [2]) after this option.
+
+ 1: No-Operation
+
+ This option code may be used between options, for example, to
+ align the beginning of a subsequent option on a word boundary.
+ There is no guarantee that senders will use this option, so
+ receivers must be prepared to process options even if they do
+ not begin on a word boundary RFC 793 [2]. There is no data
+ associated with this option, so a compression scheme must
+ simply be able to encode its presence. This may be done by
+ noting that the option simply maintains a certain alignment and
+ that compression need only convey this alignment. In this way,
+ padding can just be removed.
+
+ 2: Maximum Segment Size
+
+ If this option is present, then it communicates the maximum
+ segment size that may be used to send a packet to this end-
+ host. This field must only be sent in the initial connection
+ request (i.e., in segments with the SYN control bit set). If
+ this option is not used, any segment size is allowed RFC 793
+ [2].
+
+ This option is very common. The segment size is a 16-bit
+ quantity. Theoretically, this could take any value; however
+ there are a number of values that are common. For example,
+ 1460 bytes is very common for TCP/IPv4 over Ethernet (though
+ with the increased prevalence of tunnels, for example, smaller
+
+
+
+West & McCann Informational [Page 29]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ values such as 1400 have become more popular). 536 bytes is the
+ default MSS value. This may allow for common values to be
+ encoded more efficiently.
+
+ 3: Window Scale Option (WSopt)
+
+ This option may be sent in a SYN segment by the TCP end-host
+ (1) to indicate that the sending TCP end-host is prepared to
+ perform both send and receive window scaling, and
+ (2) to communicate a scale factor to be applied to its receive
+ window.
+
+ The scale factor is encoded logarithmically as a power of 2
+ (presumably to be implemented by binary shifts). Note that the
+ window in the SYN segment itself is never scaled (RFC 1072
+ [4]). This option may be sent in an initial segment (i.e., in
+ a segment with the SYN bit on and the ACK bit off). It may
+ also be sent in later segments, but only if a Window Scale
+ option was received in the initial segment. A Window Scale
+ option in a segment without a SYN bit should be ignored. The
+ Window field in a SYN segment itself is never scaled (RFC 1323
+ [7]).
+
+ The use of window scaling does not affect the encoding of any
+ other field during the lifetime of the flow. Only the encoding
+ of the window scaling option itself is important. The window
+ scale must be between 0 and 14 (inclusive). Generally, smaller
+ values would be expected (a window scale of 14 allows for a
+ 1Gbyte window, which is extremely large).
+
+ 4: SACK-Permitted
+
+ This option may be sent in a SYN by a TCP that has been
+ extended to receive (and presumably to process) the SACK option
+ once the connection has opened RFC 2018 [12]. There is no data
+ in this option all that is required is for the presence of the
+ option to be encoded.
+
+ 5: SACK
+
+ This option is to be used to convey extended acknowledgment
+ information over an established connection. Specifically, it
+ is to be sent by a data receiver to inform the data transmitter
+ of non-contiguous blocks of data that have been received and
+ queued. The data receiver awaits the receipt of data in later
+ retransmissions to fill the gaps in sequence space between
+ these blocks. At that time, the data receiver acknowledges the
+ data, normally by advancing the left window edge in the
+
+
+
+West & McCann Informational [Page 30]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ Acknowledgment Number field of the TCP header. It is important
+ to understand that the SACK option will not change the meaning
+ of the Acknowledgment Number field, whose value will still
+ specify the left window edge, i.e., one byte beyond the last
+ sequence number of fully received data (RFC 2018 [12]).
+
+ If SACK has been negotiated (through an exchange of SACK-
+ Permitted options), then this option may occur when dropped
+ segments are noticed by the receiver. Because this identifies
+ ranges of blocks within the receiver's window, it can be viewed
+ as a base value with a number of offsets. The base value (left
+ edge of the first block) can be viewed as offset from the TCP
+ acknowledgement number. There can be up to 4 SACK blocks in a
+ single option. SACK blocks may occur in a number of segments
+ (if there is more out-of-order data 'on the wire'), and this
+ will typically extend the size of or add to the existing
+ blocks.
+
+ Alternative proposals such as DSACK RFC 2883 [17] do not
+ fundamentally change the behavior of the SACK block, from the
+ point of view of the information contained within it.
+
+ 6: Echo
+
+ This option carries information that the receiving TCP may send
+ back in a subsequent TCP Echo Reply option (see below). A TCP
+ may send the TCP Echo option in any segment, but only if a TCP
+ Echo option was received in a SYN segment for the connection.
+ When the TCP echo option is used for RTT measurement, it will
+ be included in data segments, and the four information bytes
+ will define the time at which the data segment was transmitted
+ in any format convenient to the sender (see RFC 1072 [4]).
+
+ The Echo option is generally not used in practice -- it is
+ obsoleted by the Timestamp option. However, for transparency
+ it is desirable that a compression scheme be able to transport
+ it. (However, there is no benefit in attempting any treatment
+ more sophisticated than viewing it as a generic 'option').
+
+ 7: Echo Reply
+
+ A TCP that receives a TCP Echo option containing four
+ information bytes will return these same bytes in a TCP Echo
+ Reply option. This TCP Echo Reply option must be returned in
+ the next segment (e.g., an ACK segment) that is sent. If more
+ than one Echo option is received before a reply segment is
+ sent, the TCP must choose only one of the options to echo,
+
+
+
+
+West & McCann Informational [Page 31]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ ignoring the others; specifically, it must choose the newest
+ segment with the oldest sequence number (see RFC 1072 [4]).
+
+ The Echo Reply option is generally not used in practice -- it
+ is obsoleted by the Timestamp option. However, for
+ transparency it is desirable that a compression scheme be able
+ to transport it. (However, there is no benefit in attempting
+ any more sophisticated treatment than viewing it as a generic
+ 'option').
+
+ 8: Timestamps
+
+ This option carries two four-byte timestamp fields. The
+ Timestamp Value field (TSval) contains the current value of the
+ timestamp clock of the TCP sending the option. The Timestamp
+ Echo Reply field (TSecr) is only valid if the ACK bit is set in
+ the TCP header; if it is valid, it echoes a timestamp value
+ that was sent by the remote TCP in the TSval field of a
+ Timestamps option. When TSecr is not valid, its value must be
+ zero. The TSecr value will generally be from the most recent
+ Timestamp option that was received; however, there are
+ exceptions that are explained below. A TCP may send the
+ Timestamps option (TSopt) in an initial segment (i.e., a
+ segment containing a SYN bit and no ACK bit), and it may send a
+ TSopt in other segments only if it received a TSopt in the
+ initial segment for the connection (see RFC 1323 [7]).
+ Timestamps are quite commonly used. If timestamp options are
+ exchanged in the connection set-up phase, then they are
+ expected to appear on all subsequent segments. If this
+ exchange does not happen, then they will not appear for the
+ remainder of the flow.
+
+ Because the value being carried is a timestamp, it is logical
+ to expect that the entire value need not be carried. There is
+ no obvious pattern of increments that might be expected,
+ however.
+
+ An important reason for using the timestamp option is to allow
+ detection of sequence space wrap-around (Protection Against
+ Wrapped Sequence-number, or PAWS, see RFC 1323 [7]). It is not
+ expected that this is a serious concern on the links on which
+ TCP header compression would be deployed, but it is important
+ that the integrity of this option be maintained. This issue is
+ discussed in, for example, RFC 3150 [32]. However, the
+ proposed Eifel algorithm [35] makes use of timestamps, so it is
+ currently recommended that timestamps be used for cellular-type
+ links [34].
+
+
+
+
+West & McCann Informational [Page 32]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ With regard to compression, note that the range of resolutions
+ for the timestamp suggested in RFC 1323 [7] is quite wide (1ms
+ to 1s per 'tick'). This (along with the perhaps wide variation
+ in RTT) makes it hard to select a set of encodings that will be
+ optimal in all cases.
+
+ 9: Partial Order Connection (POC) permitted
+
+ This option represents a simple indicator communicated between
+ the two peer transport entities to establish the operation of
+ the POC protocol. See RFC 1693 [9].
+
+ The Partial Order Connection option sees little (or no) use in
+ the current Internet, so the only requirement is that the
+ header compression scheme be able to encode it.
+
+ 10: POC service profile
+
+ This option serves to communicate the information necessary to
+ carry out the job of the protocol -- the type of information
+ that is typically found in the header of a TCP segment. The
+ Partial Order Connection option sees little (or no) use in the
+ current Internet, so the only requirement is that the header
+ compression scheme be able to encode it.
+
+ 11: Connection Count (CC)
+
+ This option is part of the implementation of TCP Accelerated
+ Open (TAO) that effectively bypasses the TCP Three-Way
+ Handshake (3WHS). TAO introduces a 32-bit incarnation number,
+ called a "connection count" (CC), that is carried in a TCP
+ option in each segment. A distinct CC value is assigned to
+ each direction of an open connection. The implementation
+ assigns monotonically increasing CC values to successive
+ connections that it opens actively or passively (see RFC 1644
+ [8]). This option sees little (or no) use in the current
+ Internet, so the only requirement is that the header
+ compression scheme be able to encode it.
+
+ 12: CC.NEW
+
+ Correctness of the TAO mechanism requires that clients generate
+ monotonically increasing CC values for successive connection
+ initiations. Receiving a CC.NEW causes the server to
+ invalidate its cache entry and to do a 3WHS. See RFC 1644 [8].
+ This option sees little (or no) use in the current Internet, so
+ the only requirement is that the header compression scheme be
+ able to encode it.
+
+
+
+West & McCann Informational [Page 33]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ 13: CC.ECHO
+
+ When a server host sends a segment, it echoes the connection
+ count from the initial in a CC.ECHO option, which is used by
+ the client host to validate the segment (see RFC 1644 [8]).
+ This option sees little (or no) use in the current Internet, so
+ the only requirement is that the header compression scheme be
+ able to encode it.
+
+ 14: Alternate Checksum Request
+
+ This option may be sent in a SYN segment by a TCP to indicate
+ that the TCP is prepared to both generate and receive checksums
+ based on an alternate algorithm. During communication, the
+ alternate checksum replaces the regular TCP checksum in the
+ checksum field of the TCP header. Should the alternate
+ checksum require more than 2 octets to transmit, either the
+ checksum may be moved into a TCP Alternate Checksum Data Option
+ and the checksum field of the TCP header be sent as zero, or
+ the data may be split between the header field and the option.
+ Alternate checksums are computed over the same data as the
+ regular TCP checksum; see RFC 1146 [5].
+
+ This option sees little (or no) use in the current Internet, so
+ the only requirement is that the header compression scheme be
+ able to encode it. It would only occur in connection set-up
+ (SYN) packets. Even if this option were used, it would not
+ affect the handling of the checksum, since this should be
+ carried transparently in any case.
+
+ 15: Alternate Checksum Data
+
+ This field is used only when the alternate checksum that is
+ negotiated is longer than 16 bits. These checksums will not
+ fit in the checksum field of the TCP header and thus at least
+ part of them must be put in an option. Whether the checksum is
+ split between the checksum field in the TCP header and the
+ option or the entire checksum is placed in the option is
+ determined on a checksum-by-checksum basis. The length of this
+ option will depend on the choice of alternate checksum
+ algorithm for this connection; see RFC 1146 [5].
+
+ If an alternative checksum was negotiated in the connection
+ set-up, then this option may appear on all subsequent packets
+ (if needed to carry the checksum data). However, this option
+ is in practice never seen, so the only requirement is that the
+ header compression scheme be able to encode it.
+
+
+
+
+West & McCann Informational [Page 34]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ 16 - 18:
+
+ These non-RFC option types are not considered in this document.
+
+ 19: MD5 Digest
+
+ Every segment sent on a TCP connection to be protected against
+ spoofing will contain the 16-byte MD5 digest produced by
+ applying the MD5 algorithm to a concatenated block of data
+ [13].
+
+ Upon receiving a signed segment, the receiver must validate it
+ by calculating its own digest from the same data (using its own
+ key) and comparing the two digests. A failing comparison must
+ result in the segment's being dropped and must not produce any
+ response back to the sender. Logging the failure is probably
+ advisable.
+
+ Unlike other TCP extensions (e.g., the Window Scale option
+ [7]), the absence of the option in the SYN-ACK segment must not
+ cause the sender to disable its sending of signatures. This
+ negotiation is typically done to prevent some TCP
+ implementations from misbehaving upon receiving options in non-
+ SYN segments. This is not a problem for this option, since the
+ SYN-ACK sent during connection negotiation will not be signed
+ and will thus be ignored. The connection will never be made,
+ and non-SYN segments with options will never be sent. More
+ importantly, the sending of signatures must be under the
+ complete control of the application, not at the mercy of a
+ remote host not understanding the option. MD5 digest
+ information should, like any cryptographically secure data, be
+ incompressible. Therefore the compression scheme must simply
+ transparently carry this option, if it occurs.
+
+ 20 - 26;
+
+ Thse non-RFC option types are not considered in this document.
+ This only means that their behavior is not described in detail,
+ as a compression scheme is not expected to be optimised for
+ these options. However, any unrecognised option must be
+ carried by a TCP compression scheme transparently, in order to
+ work efficiently in the presence of new or rare options.
+
+ The above list covers options known at the time of writing. Other
+ options are expected to be defined. It is important that any future
+ options can be handled by a header compression scheme. The
+ processing of as-yet undefined options cannot be optimised but, at
+ the very least, unknown options should be carried transparently.
+
+
+
+West & McCann Informational [Page 35]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ The current model for TCP options is that an option is negotiated in
+ the SYN exchange and used thereafter, if the negotiation succeeds.
+ This leads to some assumptions about the presence of options (being
+ only on packets with the SYN flag set, or appearing on every packet,
+ for example). Where such assumptions hold true, it may be possible
+ to optimise compression of options slightly. However, it is seen as
+ undesirable to be so constrained, as there is no guarantee that
+ option handling and negotiation will remain the same in the future.
+ Also note that a compressor may not process the SYN packets of a flow
+ and cannot, therefore, be assumed to know which options have been
+ negotiated.
+
+5. Other Observations
+
+5.1. Implicit Acknowledgements
+
+ There may be a small number of cues for 'implicit acknowledgements'
+ in a TCP flow. Even if the compressor only sees the data transfer
+ direction, for example, seeing a packet without the SYN flag set
+ implies that the SYN packet has been received.
+
+ There is a clear requirement for the deployment of compression to be
+ topologically independent. This means that it is not actually
+ possible to be sure that seeing a data packet at the compressor
+ guarantees that the SYN packet has been correctly received by the
+ decompressor (as the SYN packet may have taken an alternative path).
+
+ However, there may be other such cues, which may be used in certain
+ circumstances to improve compression efficiency.
+
+5.2. Shared Data
+
+ It can be seen that there are two distinct deployments (i) where the
+ forward (data) and reverse (ACK) path are both carried over a common
+ link, and (ii) where the forward (data) and reverse (ACK) path are
+ carried over different paths, with a specific link carrying packets
+ corresponding to only one direction of communication.
+
+ In the former case, a compressor and decompressor could be colocated.
+ It may then be possible for the compressor and decompressor at each
+ end of the link to exchange information. This could lead to possible
+ optimizations.
+
+ For example, acknowledgement numbers are generally taken from the
+ sequence numbers in the opposite direction. Since an acknowledgement
+ cannot be generated for a packet that has not passed across the link,
+ this offers an efficient way of encoding acknowledgements.
+
+
+
+
+West & McCann Informational [Page 36]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+5.3. TCP Header Overhead
+
+ For a TCP bulk data-transfer, the overhead of the TCP header does not
+ form a large proportion of the data packet (e.g., < 3% for a 1460
+ octet packet), particularly compared to the typical RTP voice case.
+ Spectral efficiency is clearly an important goal. However,
+ extracting every last bit of compression gain offers only marginal
+ benefit at a considerable cost in complexity. This trade-off, of
+ efficiency and complexity, must be addressed in the design of a TCP
+ compression profile.
+
+ However, in the acknowledgement direction (i.e., for 'pure'
+ acknowledgement headers), the overhead could be said to be infinite
+ (since there is no data being carried). This is why optimizations
+ for the acknowledgement path may be considered useful.
+
+ There are a number of schemes for manipulating TCP acknowledgements
+ to reduce the ACK bandwidth. Many of these are documented in [33]
+ and [32]. Most of these schemes are entirely compatible with header
+ compression, without requiring any particular support. While it is
+ not expected that a compression scheme will be optimised for
+ experimental options, it is useful to consider these when developing
+ header compression schemes, and vice versa. A header compression
+ scheme must be able to support any option (including ones as yet
+ undefined).
+
+5.4. Field Independence and Packet Behavior
+
+ It should be apparent that direct comparisons with the highly
+ 'packet'-based view of RTP compression are hard. RTP header fields
+ tend to change regularly per-packet, and many fields (IPv4 IP ID, RTP
+ sequence number, and RTP timestamp, for example) typically change in
+ a dependent manner. However, TCP fields, such as sequence number
+ tend to change more unpredictably, partly because of the influence of
+ external factors (size of TCP windows, application behavior, etc.).
+ Also, the field values tend to change independently. Overall, this
+ makes compression more challenging and makes it harder to select a
+ set of encodings that can successfully trade off efficiency and
+ robustness.
+
+5.5. Short-Lived Flows
+
+ It is hard to see what can be done to improve performance for a
+ single, unpredictable, short-lived connection. However, there are
+ commonly cases where there will be multiple TCP connections between
+ the same pair of hosts. As a particular example, consider web
+ browsing (this is more the case with HTTP/1.0 [25] than with HTTP/1.1
+ [26]).
+
+
+
+West & McCann Informational [Page 37]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ When a connection closes, either it is the last connection between
+ that pair of hosts or it is likely that another connection will open
+ within a relatively short space of time. In this case, the IP header
+ part of the context (i.e., those fields characterised in Section 2.1)
+ will probably be almost identical. Certain aspects of the TCP
+ context may also be similar.
+
+ Support for context replication is discussed in more detail in
+ Section 3. Overall, support for sub-context sharing or initializing
+ one context from another offers useful optimizations for a sequence
+ of short-lived connections.
+
+ Note that, although TCP is connection oriented, it is hard for a
+ compressor to tell whether a TCP flow has finished. For example,
+ even in the 'bi-directional' link case, seeing a FIN and the ACK of
+ the FIN at the compressor/decompressor does not mean that the FIN
+ cannot be retransmitted. Thus, it may be more useful to think about
+ initializing a new context from an existing one, rather than re-using
+ an existing one.
+
+ As mentioned previously in Section 4.1.3, the IP header can clearly
+ be shared between any transport-layer flows between the same two
+ end-points. There may be limited scope for initialisation of a new
+ TCP header from an existing one. The port numbers are the most
+ obvious starting point.
+
+5.6. Master Sequence Number
+
+ As pointed out earlier, in Section 4.1.3, there is no obvious
+ candidate for a 'master sequence number' in TCP. Moreover, it is
+ noted that such a master sequence number is only required to allow a
+ decompressor to acknowledge packets in bi-directional mode. It can
+ also be seen that such a sequence number would not be required for
+ every packet.
+
+ While the sequence number only needs to be 'sparse', it is clear that
+ there is a requirement for an explicitly added sequence number.
+ There are no obvious ways to guarantee the unique identity of a
+ packet other than by adding such a sequence number (sequence and
+ acknowledgement numbers can both remain the same, for example).
+
+5.7. Size Constraint for TCP Options
+
+ As can be seen from the above analysis, most TCP options, such as
+ MSS, WSopt, or SACK-Permitted, may appear only on a SYN segment.
+ Every implementation should (and we expect that most will) ignore
+ unknown options on SYN segments. TCP options will be sent on non-SYN
+ segments only when an exchange of options on the SYN segments has
+
+
+
+West & McCann Informational [Page 38]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ indicated that both sides understand the extension. Other TCP
+ options, such as MD5 Digest or Timestamp, also tend to be sent when
+ the connection is initiated (i.e., in the SYN packet).
+
+ The total header size is also an issue. The TCP header specifies
+ where segment data starts with a 4-bit field that gives the total
+ size of the header (including options) in 32-bit words. This means
+ that the total size of the header plus option must be less than or
+ equal to 60 bytes. This leaves 40 bytes for options.
+
+6. Security Considerations
+
+ Since this document only describes TCP field behavior, it raises no
+ direct security concerns.
+
+ This memo is intended to be used to aid the compression of TCP/IP
+ headers. Where authentication mechanisms such as IPsec AH [24] are
+ used, it is important that compression be transparent. Where
+ encryption methods such as IPsec ESP [27] are used, the TCP fields
+ may not be visible, preventing compression.
+
+7. Acknowledgements
+
+ Many IP and TCP RFCs (hopefully all of which have been collated
+ below), together with header compression schemes from RFC 1144 [22],
+ RFC 3544 [36], and RFC 3095 [31], and of course the detailed analysis
+ of RTP/UDP/IP in RFC 3095, have been sources of ideas and knowledge.
+ Further background information can also be found in [28] and [29].
+
+ This document also benefited from discussion on the ROHC mailing list
+ and in various corridors (virtual or otherwise) about many key
+ issues; special thanks go to Qian Zhang, Carsten Bormann, and Gorry
+ Fairhurst.
+
+ Qian Zhang and Hongbin Liao contributed the extensive analysis of
+ shareable header fields.
+
+ Any remaining misrepresentation or misinterpretation of information
+ is entirely the fault of the authors.
+
+
+
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 39]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+8. References
+
+8.1. Normative References
+
+ [1] Postel, J., "Internet Protocol", STD 5, RFC 791, September
+ 1981.
+
+ [2] Postel, J., "Transmission Control Protocol", STD 7, RFC 793,
+ September 1981.
+
+ [3] Nagle, J., "Congestion control in IP/TCP internetworks", RFC
+ 896, January 1984.
+
+ [4] Jacobson, V. and R. Braden, "TCP extensions for long-delay
+ paths", RFC 1072, October 1988.
+
+ [5] Zweig, J. and C. Partridge, "TCP alternate checksum options",
+ RFC 1146, March 1990.
+
+ [6] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191,
+ November 1990.
+
+ [7] Jacobson, V., Braden, B., and D. Borman, "TCP Extensions for
+ High Performance", RFC 1323, May 1992.
+
+ [8] Braden, B., "T/TCP -- TCP Extensions for Transactions
+ Functional Specification", RFC 1644, July 1994.
+
+ [9] Connolly, T., Amer, P., and P. Conrad, "An Extension to TCP:
+ Partial Order Service", RFC 1693, November 1994.
+
+ [10] Bellovin, S., "Defending Against Sequence Number Attacks", RFC
+ 1948, May 1996.
+
+ [11] McCann, J., Deering, S., and J. Mogul, "Path MTU Discovery for
+ IP version 6", RFC 1981, August 1996.
+
+ [12] Mathis, M., Mahdavi, J., Floyd, S., and A. Romanow, "TCP
+ Selective Acknowledgment Options", RFC 2018, October 1996.
+
+ [13] Heffernan, A., "Protection of BGP Sessions via the TCP MD5
+ Signature Option", RFC 2385, August 1998.
+
+ [14] Nichols, K., Blake, S., Baker, F., and D. Black, "Definition of
+ the Differentiated Services Field (DS Field) in the IPv4 and
+ IPv6 Headers", RFC 2474, December 1998.
+
+
+
+
+
+West & McCann Informational [Page 40]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ [15] Ramakrishnan, K. and S. Floyd, "A Proposal to add Explicit
+ Congestion Notification (ECN) to IP", RFC 2481, January 1999.
+
+ [16] Allman, M., Paxson, V., and W. Stevens, "TCP Congestion
+ Control", RFC 2581, April 1999.
+
+ [17] Floyd, S., Mahdavi, J., Mathis, M., and M. Podolsky, "An
+ Extension to the Selective Acknowledgement (SACK) Option for
+ TCP", RFC 2883, July 2000.
+
+ [18] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of
+ Explicit Congestion Notification (ECN) to IP", RFC 3168,
+ September 2001.
+
+ [19] Spring, N., Wetherall, D., and D. Ely, "Robust Explicit
+ Congestion Notification (ECN) Signaling with Nonces", RFC
+ 3540, June 2003.
+
+8.2. Informative References
+
+ [20] IANA, "IANA", IANA TCP options, February 1998,
+ <http://www.iana.org/assignments/tcp-parameters>.
+
+ [21] Braden, R., "Requirements for Internet Hosts - Communication
+ Layers", STD 3, RFC 1122, October 1989.
+
+ [22] Jacobson, V., "Compressing TCP/IP headers for low-speed serial
+ links", RFC 1144, February 1990.
+
+ [23] Almquist, P., "Type of Service in the Internet Protocol Suite",
+ RFC 1349, July 1992.
+
+ [24] Kent, S. and R. Atkinson, "IP Authentication Header", RFC 2402,
+ November 1998.
+
+ [25] Berners-Lee, T., Fielding, R., and H. Nielsen, "Hypertext
+ Transfer Protocol -- HTTP/1.0", RFC 1945, May 1996.
+
+ [27] Kent, S. and R. Atkinson, "IP Encapsulating Security Payload
+ (ESP)", RFC 2406, November 1998.
+
+ [26] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., and T.
+ Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC
+ 2068, January 1997.
+
+ [28] Degermark, M., Nordgren, B., and S. Pink, "IP Header
+ Compression", RFC 2507, February 1999.
+
+
+
+
+West & McCann Informational [Page 41]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+ [29] Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP Headers for
+ Low-Speed Serial Links", RFC 2508, February 1999.
+
+ [30] Bradner, S. and V. Paxson, "IANA Allocation Guidelines For
+ Values In the Internet Protocol and Related Headers", BCP 37,
+ RFC 2780, March 2000.
+
+ [31] Bormann, C., Burmeister, C., Degermark, M., Fukushima, H.,
+ Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., Le, K.,
+ Liu, Z., Martensson, A., Miyazaki, A., Svanbro, K., Wiebke, T.,
+ Yoshimura, T., and H. Zheng, "RObust Header Compression (ROHC):
+ Framework and four profiles: RTP, UDP, ESP, and uncompressed",
+ RFC 3095, July 2001.
+
+ [32] Dawkins, S., Montenegro, G., Kojo, M., and V. Magret, "End-to-
+ end Performance Implications of Slow Links", BCP 48, RFC 3150,
+ July 2001.
+
+ [33] Balakrishnan, Padmanabhan, V., Fairhurst, G., and M.
+ Sooriyabandara, "TCP Performance Implications of Network Path
+ Asymmetry", RFC 3449, December 2002.
+
+ [34] Inamura, H., Montenegro, G., Ludwig, R., Gurtov, A., and F.
+ Khafizov, "TCP over Second (2.5G) and Third (3G) Generation
+ Wireless Networks", RFC 3481, February 2003.
+
+ [35] Ludwig, R. and M. Meyer, "The Eifel Detection Algorithm for
+ TCP", RFC 3522, April 2003.
+
+ [36] Engan, M., Casner, S., Bormann, C., and T. Koren, "IP Header
+ Compression over PPP", RFC 3544, July 2003.
+
+ [37] Karn, P., Bormann, C., Fairhurst, G., Grossman, D., Ludwig, R.,
+ Mahdavi, J., Montenegro, G., Touch, J., and L. Wood, "Advice
+ for Internet Subnetwork Designers", BCP 89, RFC 3819, July
+ 2004.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 42]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+Authors' Addresses
+
+ Mark A. West
+ Siemens/Roke Manor Research
+ Roke Manor Research Ltd.
+ Romsey, Hants SO51 0ZN
+ UK
+
+ Phone: +44 (0)1794 833311
+ EMail: mark.a.west@roke.co.uk
+ URI: http://www.roke.co.uk
+
+
+ Stephen McCann
+ Siemens/Roke Manor Research
+ Roke Manor Research Ltd.
+ Romsey, Hants SO51 0ZN
+ UK
+
+ Phone: +44 (0)1794 833341
+ EMail: stephen.mccann@roke.co.uk
+ URI: http://www.roke.co.uk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+West & McCann Informational [Page 43]
+
+RFC 4413 TCP/IP Field Behavior March 2006
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2006).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at
+ ietf-ipr@ietf.org.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is provided by the IETF
+ Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+West & McCann Informational [Page 44]
+