Subject: [rohc] Comments for TCP field behavior

From: "Qian Zhang" <[email-masked]>
Date: Thu, 28 Mar 2002 22:32:13 +0800

Mark,

As we discussed in the MSP meeting, the shareable characteristic analysis for TCP/IP header field is worth adding into the TCP field behavior draft, since it will give some guideline to context sharing/replication of TCP/IP header compression. Thus, I suggest to adding the following text as the Section 3.4 in the field behavior draft.

-+-+-+-+-+-
3.4 Classification of shareable header fields

For multiple flows that are occurred simultaneously (or near simultaneously within a relatively short space of time), there is much similarity in header field values and context values among those connections.  To utilize these properties for header compression, it is important to understand the shareable characteristics for the various header fields and context values.

A brief study on the TCP/IP field behavior among 'shareable' packet stream is given in the following. 
 
'shareable' - Two packet streams are defined as shareable if they belong to the same profile (ROHC/TCP, etc.) AND have at least the identical Source IP address.
 
           -  The shareable property of a field specifies how similar the value in a new context is to the existing one.  It has the following values:
 
                  'N/A'  - The field is unnecessary to be shared since it can be inferred or used to define a packet stream
 
                  'No'   - The field is impossible to be shared since its change pattern between two packet streams are irregular
 
                  'Yes'  - The field is possible to be shared. Specific encoding method can be used to improve the compression efficiency.

IPv4 Header (inner and/or outer)
 
Field                   Class           Shareable
------------------------------------------------
Version                 STATIC          N/A
Header Length           STATIC-KNOWN    Yes
ToS                     CHANGING        Yes (1) 
Packet Length           INFERRED        N/A
Identification          CHANGING        Yes (2)
Reserved flag           STATIC-KNOWN    No  (3)
Don't Fragment flag     STATIC          No
More Fragments flag     STATIC-KNOWN    No
Fragment Offset         STATIC-KNOWN    No
Time To Live            CHANGING        Yes
Protocol                STATIC          N/A
Header Checksum         INFERRED        N/A
Source Address          STATIC-DEF      N/A
Destination Address     STATIC-DEF      N/A
 
(1) ToS is marked based on the application's requirement. Considering that the shareable connections usually belong to same type of traffic, it can be regarded as shareable.
 
(2) The shareable context for this field includes IP-ID, NBO, and RND flags.

(3) Since the possible future behavior of the 'Reserved Flag' cannot be predicted, it is considered as not shareable.

IPv6 Header (inner and/or outer)
 
Field                   Class           Shareable
------------------------------------------------
Version                 STATIC          N/A
Traffic Class           CHANGING        No
Flow Label              STATIC-DEF      N/A
Payload Length          INFERRED        N/A
Next Header             STATIC          N/A
Hop Limit               CHANGING        Yes
Source Address          STATIC-DEF      N/A
Destination Address     STATIC-DEF      N/A

TCP Header
 
Field                   Class           Shareable
------------------------------------------------
Source Port             STATIC-DEF      Yes (4)
Destination Port        STATIC-DEF      Yes (4)
Sequence Number         CHANGING        No  (5)
Acknowledgement Number  CHANGING        No
Data Offset             INFERRED        N/A
Reserved Bits           CHANGING        Yes (6)
Control Bits
        URG             CHANGING        No
        ACK             CHANGING        No
        PSH             CHANGING        No
        RST             CHANGING        No
        SYN             CHANGING        No
        FIN             CHANGING        No
Window                  CHANGING        Yes (7)
CHECKSUM                CHANGING        No
Urgent Pointer          CHANGING        No
 
(4) On the server side, the port number should be well-known value. On the client side, the port number is selected by OS automatically. Whether the port number is shareable depends on how the OS chooses port number.  However, most implementation uses a simple scheme which just search next available port number.
 
(5) With the deployment of TCP Initial Sequence Number Randomization, the Sequence Number will be impossible to share at all.  Thus, this field will not be regarded as shareable. 
 
(6) Don't include ECN flags if ECT is enabled
 
(7) The Window, here, should be referred as the initial value (or maximum value) of RWND. Since sharable packet streams are likely to have the same initial RWND, it would optimize the SYN packet size for short-lived TCP traffics.

ECN Flags
 
Field                   Class           Shareable
------------------------------------------------
ECT                     CHANGING        No   (8)
CE                      CHANGING        No
ECN                     CHANGING        No
CWR                     CHANGING        No
 
(8) Considering that the IP ECN bits will also make use of the ECN nonce scheme.  None of the ECN flags could be regarded as shareable.

TCP Options
 
Option                         SYN-only (9)   Shareable
-----------------------------------------------------
End of option list Option      No             No
No-Operation Option            No             No
Maximum Segment Size Option    Yes            Yes
Window Scale Option            Yes            Yes
SACK-Permitted Option          Yes            Yes
SACK Option                    No             No
Timestamps Option              No             Yes
 
(9) SYN-only indicates whether the options only appear in SYN packet or not. For 'Yes', the option only appears in SYN packet; otherwise, the option may appear in any packets.
 
Most TCP options are used only in SYN packet. Some options, such as MSS, Window Scale, SACK-Permitted and etc., tend to have the same value among shareable packet streams. Since TCP options may not be included in the context if the header compression scheme doesn't support context sharing. Thus, to support context sharing, the compressor should maintain such TCP options in the context.

-+-+-+-+-+-

Meanwhile, considering the correlation and size constraint characteristics of TCP options, it is also worth adding it as another observation in field behavior analysis.

-+-+-+-+-+-
5.7 Correlation and size constraint for TCP options

It can be seen from the above analysis, most TCP options, such as MSS, WSopt, 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 as indicated that both sides understand the extension.  Other TCP options, such as MD5 Digest, Timestamp also tend to be send when the connection initiated (with SYN packet). 

The total header size is also an issue.  The TCP header specifies where segment data starts with a 4-bit field which gives the total size of the header (including options) in 32-byte 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.
-+-+-+-+-+-

BR,

Qian

_______________________________________________
Rohc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rohc

---

From: "West, Mark (ITN)" <[email-masked]>
Date: Sat, 30 Mar 2002 14:39:33 +0000

Hi Qian,

Thanks for this contribution.

I'm planning on up-issuing the draft after the 'freeze-call' period for
the requirements document has ended (so that we can collate any comments
and questions).  When I do that, I will incorporate your text (or
something very like it!)

Cheers,

Mark.

-- 
Mark A. West, Consultant Engineer
Roke Manor Research Ltd., Romsey, Hants.  SO51 0ZN
Phone +44 (0)1794 833311   Fax  +44 (0)1794 833433

(Yes, I do know that my disclaimer is in an attachment.  And, no, I
didn't ask for it to be that way)