ROHC WG                            HongBin Liao, Microsoft Research Asia
Internet Draft                       Qian Zhang, Microsoft Research Asia
Expires: May 2002                     Wenwu Zhu, Microsoft Research Asia
                                   Ya-Qin Zhang, Microsoft Research Asia

                                       Richard Price, Siemens/Roke Manor
                                      Robert Hancock, Siemens/Roke Manor
                                      Stephen McCann, Siemens/Roke Manor
                                         Mark A West, Siemens/Roke Manor
                                     Abigail Surtees, Siemens/Roke Manor
                                          Paul Ollis, Siemens/Roke Manor

                                                       November 21, 2001



              TCP-Aware RObust Header Compression (TAROC)
                    draft-ietf-rohc-tcp-taroc-04.txt



Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026 [1].

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsolete by other documents
   at any time. It is inappropriate to use Internet- Drafts as
   reference material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.



1. Abstract

   As a major transport protocol of current Internet, TCP has the
   problem of the large header overhead on bandwidth-limited links.
   Header compression has been proven to be efficient for using TCP
   over bandwidth-limited reliable links. Unfortunately, existing
   TCP/IP header compression schemes do not work well on noisy links,
   especially the one with high bit error rate and long roundtrip time.
   In addition, existing schemes [2,3] have not addressed some TCP
   options such as SACK [4,5] and Timestamps [6].



Liao, et al.                                                  [Page 1]


                    draft-ietf-rohc-tcp-taroc-04.txt


   A robust and efficient header compression scheme for TCP/IP, called
   TAROC, is presented in this document. TAROC is composed of a
   behavior-aware control mechanism, called TAROC-C, and a detailed
   header encoding scheme. In this draft, the Efficient Protocol
   Independent Compression (EPIC-LITE) scheme is used as the compressed
   header encoding framework. The window-based LSB encoding is
   introduced in our scheme for compressing redundant fields and
   reducing error propagation. The key point of TAROC-C is the TCP
   congestion window tracking approach, which can be used to improve
   the efficiency of the window-based encoding and the performance of
   the overall header compression scheme. With the dynamical congestion
   window tracking, our scheme can achieve good performance even when
   the feedback channel is not available.









































Liao, et al.                                                  [Page 2]


                    draft-ietf-rohc-tcp-taroc-04.txt


Table of Contents

   Status of this Memo................................................1
   1. Abstract........................................................1
   2. Conventions used in this document...............................6
   3. Introduction....................................................6
   4. The concept and components of TCP-Aware RObust Header compression
   and Efficient Protocol Independent Compression (EPIC-LITE) scheme..8
   5. The framework of TAROC-C........................................9
      5.1. TCP congestion window tracking.............................9
         5.1.1. General principle of congestion window tracking.......9
         5.1.2. Congestion window tracking based on Sequence Number..10
         5.1.3. Congestion window tracking based on Acknowledgment
         Number......................................................11
         5.1.4. Further discussion on congestion window tracking.....13
      5.2. Compressor/decompressor state management with TAROC-C.....13
         5.2.1. Compressor states....................................13
            5.2.1.1. Initialization and Refresh (IR) state...........14
            5.2.1.2. First Order (FO) State..........................14
            5.2.1.3. Second Order (SO) State.........................14
         5.2.2. Decompressor states..................................15
      5.3. Compressor logic in TAROC-C...............................15
         5.3.1. IR state.............................................15
         5.3.2. FO state.............................................16
         5.3.3. SO state.............................................16
      5.4. Decompressor logic in TAROC-C.............................17
         5.4.1. No Context State.....................................17
         5.4.2. Full Context State...................................17
      5.5. Modes of operation........................................18
         5.5.1. Unidirectional mode -- U-mode........................18
         5.5.2.  Bi-directional Optimistic mode -- O-mode............18
            5.5.2.1.  Compressor states and logic (O-mode)...........18
            5.5.2.2.  Decompressor states and logic (O-mode).........19
         5.5.3.  Bi-directional Reliable mode -- R-mode..............19
            5.5.3.1.  Compressor states and logic (R-mode)...........19
            5.5.3.2.  Decompressor states and logic (R-mode).........20
      5.6. Implementation issues.....................................20
         5.6.1. Determine the value K................................20
         5.6.2. Determine the value N................................20
         5.6.3. Determine the frequency of updating context..........20
   6. Coding scheme and compressed packet header format..............21
      6.1. Window-based LSB encoding and fixed-payload encoding......21
      6.2. The framework of EPIC-LITE scheme.........................21
      6.3. ROHC Profile for compression of TCP/IP....................22
   7. Conclusions....................................................24
   8. Acknowledgments................................................25
   9. Security considerations........................................25
   10. Authors' addresses............................................26
   11. References....................................................26
   12. Intellectual property considerations..........................29
   Appendix A - Simulation results...................................29
      A.1. Simulation topology.......................................29
      A.2. Tested header compression schemes.........................29

Liao, et al.                                                  [Page 3]


                    draft-ietf-rohc-tcp-taroc-04.txt


      A.3. Simulations and results...................................30
         A.3.1. 384kb................................................30
         A.3.2. 114kb................................................32
         A.3.3. 64kb.................................................33
         A.3.4. 9.6kb................................................35

















































Liao, et al.                                                  [Page 4]


                    draft-ietf-rohc-tcp-taroc-04.txt



   Document History

   04  Nov. 21, 2001     Separate the control mechanism, TAROC-C, with
                         the detailed compressed packet formats
                         generation approach;
                         TAROC-C does not have an IPR-statement;
                         Introduce the simple TCP/IP profile;
                         Use EPIC-LITE as coding framework to simplify
                         the creation of new TCP/IP compressed header
                         format.
   03  Oct. 26, 2001     Modify our TCP congestion window estimation
                         scheme with the MAX and MIN boundary;
                         Clarify the initialization and state
                         transition process in compressor state
                         management;
                         Add the CRC option in our compressed header.
   02  July 20, 2001     Integrate TAROC with ROHC framework;
                         Add a second order (SO) state on compressor
                         side for fixed-payload packets compression;
                         Modify the coding method for type
                         identification and adjust corresponding packet
                         format to improve compression efficiency;
                         Update the simulation results.
   01  March 01, 2001    Improve congestion window tracking algorithm
                         to handle the special cases where congestion
                         indications are lost;
                         Improve the compression efficiency by adding
                         fixed-payload encoding;
                         Change in header format accordingly.
   00  November 17, 2000 First release.























Liao, et al.                                                  [Page 5]


                    draft-ietf-rohc-tcp-taroc-04.txt


2. Conventions used in this document

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [7].

   Other terminologies, such as Profile, Context, Compressed header
   format, Encoding method, Indicator flags, Set of compressed header
   formats, Library of encoding methods, Input language, Control field,
   are defined in [19].


3. Introduction

   The necessity and importance of doing TCP/IP header compression on
   low- or medium-speed links have been discussed in [3]. For
   conciseness, the general background information on header
   compression has not been discussed in detail in this draft. Detailed
   information can be found in RFC2507 [3]. Existing header compression
   schemes, such as VJHC [2] and IPHC [3], rely on transmitting only
   the difference from the previous header in order to reduce the large
   overhead of TCP/IP header.

   Although VJHC works well over reliable links, when used over
   unreliable link, such as wireless links, it induces many additional
   errors due to inconsistent contexts between the compressor and the
   decompressor. Considering the high bit error rate in wireless
   channel, if a packet gets lost, the compressed header of next packet
   cannot be correctly decompressed. Then the decompressor must send
   the request for resynchronization and in the meanwhile discard all
   compressed header. A fatal result of this effect is that it prevents
   TCP Fast Retransmit algorithm [8] from being fired and always causes
   TCP retransmission timeout. This effect is shown in detail in [9].

   IPHC proposes two simple mechanisms, the TWICE algorithm and the
   full header request mechanism, to reduce the errors due to the
   inconsistent contexts between the compressor and the decompressor.
   The TWICE algorithm assumes that only the Sequence Number field of
   TCP segments are changing during the connection and the deltas among
   consecutive packets are constant in most cases. However, these
   assumptions are not always true, especially when TCP Timestamp and
   SACK options are used. The full header request mechanism needs a
   feedback channel, which is unavailable in some circumstances. Even
   when the feedback channel is available, this mechanism still cannot
   perform well enough if the roundtrip time of this link is very long.
   Once a packet is corrupted on the noisy link, there are still
   several consecutive packets dropped due to the inconsistency between
   the compressor and the decompressor.

   This Internet draft describes a new header compression scheme (TAROC,
   or TCP-Aware RObust header Compression), which consists of two
   components, TAROC-C (TCP-Aware RObust Header Compression Control
   mechanism) and EPIC-LITE (Efficient Protocol Independent Compression

Liao, et al.                                                  [Page 6]


                    draft-ietf-rohc-tcp-taroc-04.txt


   scheme). By combining them together, our scheme is more robust
   against packet loss and hence achieves better performance over
   wireless links.



















































Liao, et al.                                                  [Page 7]


                    draft-ietf-rohc-tcp-taroc-04.txt


4. The concept and components of TCP-Aware RObust Header compression
  and Efficient Protocol Independent Compression (EPIC-LITE) scheme

   This section first describes the concept of the TCP-aware robust
   header compression (TAROC) proposal and then discusses how this
   concept leads to a better performance when used over unreliable
   links.

   To design suitable mechanisms for efficient compression of all
   TCP/IP header fields, it would be important to analyze their change
   patterns first. It is known that the change patterns of several TCP
   fields (for example, Sequence Number, Acknowledgement Number, Window,
   etc.) are completely different from the ones of RTP, which had
   already discussed in detail in [10], and are very hard to predict.
   Thus, it is hard to encode these fields with k-LSB both efficiently
   and robustly. On the other hand, Window-based LSB encoding [10],
   which does not assume the linear changing pattern of the target
   header fields, is more suitable to encode those TCP fields both
   efficiently and robustly.

   The main idea of TAROC-C, the control mechanism of TAROC, is the
   combination of the Window-based LSB encoding (W-LSB encoding) and
   dynamically TCP congestion window tracking. In W-LSB encoding, a
   sliding window (VSW), which equals to the value r mentioned in the
   Section 6.4 in EPIC-LITE [19], is maintained on the compressor side.
   The compressor gets inconsistent with the decompressor only when the
   reference value on the decompressor side is out of this VSW. By
   keeping the sliding window large enough, the compressor rarely gets
   out of synchronization with the decompressor.

   However, the larger the sliding window is, the less the header
   compression gains. To shrink the window size, the compressor needs
   some form of feedback to get sufficient confidence that a certain
   value will not be used as a reference by the decompressor. Then the
   window can be advanced by removing that value and all other values
   older than it. Obviously, when a feedback channel is available,
   confidence can be achieved by proactive feedback in the form of ACKs
   from the decompressor. A feedback channel, however, is unavailable
   or expensive in some environments. In this Internet draft, a
   mechanism based on dynamically tracking TCP congestion window is
   proposed to explore such feedbacks from the nature feedback-loop of
   TCP protocol itself.

   Since TCP is a window-based protocol, a new segment cannot be
   transmitted without getting the acknowledgment of segment in the
   previous window. Upon receiving the new segment, the compressor can
   get enough confidence that the decompressor has received the segment
   in the previous window and then shrink the sliding window by
   removing all the values older than that segment.

   As originally outlined in [11] and specified in [12], TCP is
   incorporated with four congestion control algorithms: slow-start,
   congestion-avoidance, fast retransmit, and fast recovery. The

Liao, et al.                                                  [Page 8]


                    draft-ietf-rohc-tcp-taroc-04.txt


   effective window of TCP is mainly controlled by the congestion
   window and may change during the entire connection life. TAROC-C
   designs a mechanism to track the dynamics of TCP congestion window,
   and control the sliding window of W-LSB encoding by the estimated
   congestion window. By combining the W-LSB encoding and TCP
   congestion window tracking, TAROC can achieve better performance
   over high bit-error-rate links.

   Note that in one-way TCP traffic, only the information about
   sequence number or acknowledgment number is available for tracking
   TCP congestion window. TAROC-C does not require that all one-way TCP
   traffics must cross the same compressor. The detail will be
   described in the following sections. The topology assumption of
   TAROC is the same as the one in VJHC.

  The TAROC scheme achieves its compression gain by establishing state
  information at both ends of the link, i.e., at the compressor and at
  the decompressor. Header compression with TAROC can be characterized
  as an interaction between two state machines, one compressor machine
  and one decompressor machine, each instantiated once per context.

  The Efficient Protocol Independent Compression (EPIC-LITE) scheme,
  which had been discussed in detail in [19], is used to generate new
  ROHC profiles. This scheme takes as its input a list of fields in the
  protocol stack to be compressed, and for each field a choice of one
  or more compression techniques. Using this input EPIC-LITE derives a
  set of compressed header formats that can be used to quickly and
  efficiently compress and decompress headers.

   A TCP/IP profile is proposed to describe the behaviors of each field
   in TCP/IP header.

  In the rest of this draft, the control mechanism, TAROC-C, and the
  detailed compressed packet header format will be discussed in detail
  respectively. More specifically, the TCP congestion window tracking
  algorithm, the state machines in the header compression framework,
  and the logics of the compressor/decompressor, are described in
  TAROC-C.


5. The framework of TAROC-C

5.1. TCP congestion window tracking

5.1.1. General principle of congestion window tracking

   The general principle of congestion window tracking is as follows.
   The compressor imitates the congestion control behavior of TCP upon
   receiving each segment, in the meantime, estimates the congestion
   window (cwnd) and the slow start threshold (ssthresh). Besides the


Liao, et al.                                                  [Page 9]


                    draft-ietf-rohc-tcp-taroc-04.txt


   requirement of accuracy, there are also some other requirements for
   the congestion window tracking algorithms:

       - Simplex link. The tracking algorithm SHOULD always only take
       Sequence Number or Acknowledgment Number of a one-way TCP
       traffic into consideration. It SHOULD NOT use Sequence Number
       and Acknowledgment Number of that traffic simultaneously.

       - Misordering resilience. The tracking algorithm SHOULD work
       well while receiving misordered segments.

       - Multiple-links. The tracking algorithm SHOULD work well when
       not all the one-way TCP traffics are crossing the same link.

       - Slightly overestimation. If the tracking algorithm cannot
       guarantee the accuracy of the estimated cwnd and ssthresh, it is
       RECOMMANDED that it produces a slightly overestimated one.

   The following sections will describe two congestion window tracking
   algorithms, which use Sequence Number and Acknowledgment Number of a
   one-way TCP traffic, respectively.

5.1.2. Congestion window tracking based on Sequence Number

   This algorithm (Algorithm SEQ) contains 3 states: SLOW-START,
   CONGESTION-AVOIDANCE, and FAST-RECOVERY, which are equivalent to the
   states in TCP congestion control algorithms. It maintains 2
   variables: cwnd and ssthresh.

                                   +-------------+
                                   |             |
                  ---------------->| CONGESTION- |
                  |                |  AVOIDANCE  |
                  |            ----|             |<---
          +------------+       |   +-------------+   |
          |            |       |                     |
          | SLOW-START |       |                     |
          |            |       |   +-------------+   |
          +------------+       |   |             |   |
                  |            |-->|    FAST-    |----
                  |                |  RECOVERY   |
                  ---------------->|             |
                                   +-------------+


   Initially, this algorithm starts in state SLOW-START with ssthresh
   set to ISSTHRESH and cwnd set to IW.

   Upon receiving a segment, if it is the first segment, which is not
   necessary to be the SYN segment, the algorithm sets the current
   maximum Sequence Number (CMAXSN) and the current minimum Sequence
   Number (CMINSN) to this segment's sequence number; otherwise, the
   algorithm takes a procedure according to the current state.

Liao, et al.                                                 [Page 10]


                    draft-ietf-rohc-tcp-taroc-04.txt



     - SLOW-START

       * If the new Sequence Number (NSN) is larger than CMAXSN,
         increase cwnd by the distance between NSN and CMAXSN, and
         update CMAXSN and CMINSN based on the following rules:
             CMAXSN = NSN
             if (CMAXSN - CMINSN) > cwnd)
                 CMINSN = cwnd - CMAXSN;
         If the cwnd is larger than ssthresh, the algorithm transits to
         CONGESTION-AVOIDANCE state;

       * If the distance between NSN and CMAXSN is less than or equal
         to 3*MSS, ignore it;


       * If the distance is larger than 3*MSS, halve the cwnd and set
         ssthresh to MAX(cwnd, 2*MSS). After that, the algorithm
         transits into FAST-RECOVERY state.

     - CONGESTION-AVOIDANCE

       * If NSN is larger than CMAXSN, increase cwnd by ((NSN-
         CMAXSN)*MSS)/cwnd and then update CMAXSN and CMINSN based on
         the following rules:
             CMAXSN = NSN
             if (CMAXSN - CMINSN) > cwnd)
                 CMINSN = cwnd - CMAXSN;

       * If the distance between NSN and CMAXSN is less than or equal
         to 3*MSS, ignore it;

       * If the distance is larger than 3*MSS, halve the cwnd and set
         ssthresh to MAX(cwnd, 2*MSS). After that, the algorithm
         transits into FAST-RECOVERY state.

     - FAST-RECOVERY

       * If NSN is larger than or equal to CMAXSN + cwnd, the algorithm
         transits into CONGESTION-AVOIDANCE state;

       * Otherwise, ignore it.

   In this algorithm, MSS is denoted as the estimated maximum segment
   size. The implementation can use the MTU of the link as an
   approximation of this value. ISSHRESH and IW are the initial values
   of ssthresh and cwnd, respectively. ISSTHRESH MAY be arbitrarily
   high. IW SHOULD be set to 4*MSS.


5.1.3. Congestion window tracking based on Acknowledgment Number



Liao, et al.                                                 [Page 11]


                    draft-ietf-rohc-tcp-taroc-04.txt


                                   +-------------+
                                   |             |
                  ---------------->| CONGESTION- |
                  |                |  AVOIDANCE  |
                  |            ----|             |<---
          +------------+       |   +-------------+   |
          |            |       |                     |
          | SLOW-START |       |                     |
          |            |       |   +-------------+   |
          +------------+       |   |             |   |
                  |            |-->|     FAST-   |----
                  |                |   RECOVERY  |
                  ---------------->|             |
                                   +-------------+

   This algorithm (Algorithm ACK) maintains 3 states: SLOW-START,
   CONGESTION-AVOIDANCE and FAST-RECOVERY, which are equivalent to the
   states in TCP congestion control algorithms. It also maintains 2
   variables: cwnd and ssthresh.

   Initially, this algorithm starts in state SLOW-START with ssthresh
   set to ISSTHRESH and cwnd set to IW.

   Upon receiving a segment, if it is the first segment, which is not
   necessary to be the SYN segment, the algorithm sets the current
   maximum Acknowledgment Number (CMAXACK) to this segment's
   acknowledgment number; otherwise, the algorithm takes a procedure
   according to the current state.

     - SLOW-START

       * If the new Acknowledgment Number (NEWACK) is larger than
         CMAXACK, increase cwnd by the distance between NEWACK and
         CMAXACK, set duplicate ack counter (NDUPACKS) to 0, and update
         CMAXACK accordingly; If the cwnd is larger than ssthresh, the
         algorithm transits to CONGESTION-AVOIDANCE state;

       * If NEWACK is equal to CMAXACK, increase the NDUPACKS by 1. If
         NDUPACKS is greater than 3, halve the cwnd and set ssthresh to
         MAX(cwnd, 2*MSS). Consequently, the algorithm transits into
         FAST-RECOVERY state;

       * Otherwise, set NDUPACKS to 0.

     - CONGESTION-AVOIDANCE

       * If NEWACK is larger than CMAXACK, increase cwnd by ((NEWACK-
         CMAXACK)*MSS)/cwnd, set NDUPACKS to 0 and update CMAXACK
         accordingly;

       * If NEWACK is equal to CMAXACK, increase NDUPACKS by 1. If
         NDUPACKS is greater than 3, halve the cwnd and set ssthresh to


Liao, et al.                                                 [Page 12]


                    draft-ietf-rohc-tcp-taroc-04.txt


         MAX(cwnd, 2*MSS). After that, the algorithm transits into
         FAST-RECOVERY state;

       * Otherwise, set NDUPACKS to 0.

     - FAST-RECOVERY

       * If NEWACK is larger than CMAXACK, set NDUPACKS to 0.
         Consequently, the algorithm transits into CONGESTION-AVOID
         state;

       * Otherwise, ignore it.

   In this algorithm, MSS is denoted as the estimated maximum segment
   size. The implementation can use the MTU of the link as an
   approximation of this value. ISSHRESH and IW are the initial values
   of ssthresh and cwnd, respectively. ISSTHRESH MAY be arbitrarily
   high. IW SHOULD be set to 4*MSS.

5.1.4. Further discussion on congestion window tracking

   In some cases, it is inevitable for the tracking algorithms to
   overestimate the TCP congestion window. Also, it SHOULD be avoided
   that the estimated congestion window gets significantly smaller that
   the actual one. For all of these cases, TAROC simply applies two
   boundaries on the estimated congestion window size. One of the two
   boundaries is the MIN boundary, which is the minimum congestion
   window size and whose value is determined according to the [18]; the
   other boundary is the MAX boundary, which is the maximum congestion
   window size. There are two possible approaches to setting this MAX
   boundary. One is to select a commonly used maximum TCP socket buffer
   size. The other one is to use the simple equation W=sqrt(8/3*l),
   where W is the maximum window size and l is the typical packet loss
   rate.

   If ECN mechanism is deployed, according to [13] and [14], the TCP
   sender will set the CWR (Congestion Window Reduced) flag in the TCP
   header of the first new data packet sent after the window reduction,
   and the TCP receiver will reset the ECN-Echo flag back to 0 after
   receiving a packet with CWR flag set. Thus, the CWR flag and the
   ECN-Echo flag's transition from 1 to 0 can be used as another
   indication of congestion combined with other mechanisms mentioned in
   the tracking algorithm.


5.2. Compressor/decompressor state management with TAROC-C

5.2.1. Compressor states

   There are three compressor states in TAROC: Initialization and
   Refresh (IR) state, First Order (FO), and Second Order (SO) states.
   The compressor starts in the lowest compression state (IR) and


Liao, et al.                                                 [Page 13]


                    draft-ietf-rohc-tcp-taroc-04.txt


   transits gradually to the higher compression state. The compressor
   will always operate in the highest possible compression state, under
   the constraint that the compressor is sufficiently confident that
   the decompressor has the information necessary to decompress a
   header, which is compressed according to the state.


                              +----------+
                              |          |
    +----------+              | FO State |              +----------+
    |          |  <-------->  |          |  <-------->  |          |
    | IR State |              +----------+              | SO State |
    |          |  <---------------------------------->  |          |
    +----------+                                        +----------+


5.2.1.1. Initialization and Refresh (IR) state

   The purpose of IR state is to initialize or refresh the static parts
   of the context at the decompressor. In this state, the compressor
   sends full header periodically with an exponentially increasing
   period, which is so-called compression slow-start [3]. The
   compressor leaves the IR state only when it is confident that the
   decompressor has correctly received the static information.

   To compress short-lived TCP transfers more efficiently, the
   compressor should speed up the initial process. The compressor
   enters the IR state when it receives the packet with SYN bit set and
   sends IR packet. When it receives the first data packet of the
   transfer, it should transit to FO state because that means the
   decompressor has received the packet with SYN bit set and
   established the context successfully at its side. Using this
   mechanism can significantly reduce the number of context initiation
   headers.

5.2.1.2. First Order (FO) State

   The purpose of FO state is to efficiently transmit the difference
   between the two consecutive packets in the TCP stream. When
   operating in this state, the compressor and the decompressor should
   have the same context. Only compressed packet is transmitted from
   the compressor to the decompressor in this state. The compressor
   transits back to IR state only when it finds that the context of
   decompressor may be inconsistent, or there are remarkable changes in
   the TCP/IP header.

5.2.1.3. Second Order (SO) State

   The purpose of SO state is to efficiently transmit the fixed-payload
   data.  The compressor enters this state when it is sufficiently
   confident that the decompressor has got the constant payload size of
   the data transferring.


Liao, et al.                                                 [Page 14]


                    draft-ietf-rohc-tcp-taroc-04.txt


   The compressor leaves this state and transits to the FO state when
   the current payload size no longer conforms to the constant payload.
   The compressor transits back to IR state only when it finds that the
   context of decompressor may be inconsistent, or there are remarkable
   changes in the TCP/IP header.

5.2.2. Decompressor states

   The decompressor starts in its lowest compression state, "No
   Context" and gradually transits to higher state, "Full Context". The
   decompressor state machine normally never leaves the "Full Context"
   state once it has entered this state.

          +--------------+         +--------------+
          |  No Context  |  <--->  | Full Context |
          +--------------+         +--------------+

5.3. Compressor logic in TAROC-C

   In TAROC-C, the compressor will start in the IR state and perform
   different logics in different states. The following sub-sections
   will describe the logic for each compressor sate in detail.

5.3.1. IR state

   The operations of compressor in IR state can be summarized as
   follows:

   a) Upon receiving a packet, the compressor sends IR or IR-DYN packet
      on the following conditions: 1) if it is the turn to send full
      header packet according to compression slow-start, i.e. after
      sending F_PERIOD compressed packets; 2) if the packet to be sent
      is a retransmission of the packet in VSW and it was sent as IR or
      IR-DYN packet previously. Otherwise, the compressor compresses
      the packet using W-LSB encoding.  If the compressor enters the IR
      state for the first time or the static part of the TCP flow has
      changed, it will send IR packet. Otherwise, it will send IR-DYN
      packet because the decompressor has known the static part.

   b) The packet is added into VSW as a potential reference after it
      has been sent out. The compressor then invokes the Algorithm SEQ
      and Algorithm ACK to track the congestion windows of the two one-
      way traffics with different directions in a TCP connection.
      Suppose that the estimated congestion windows are cwnd_seq and
      cwnd_ack, while the estimated slow start thresholds are
      ssthresh_seq and ssthresh_ack, respectively. Let W(cwnd_seq,
      ssthresh_seq, cwnd_ack, ssthresh_ack) = K*MAX(MAX(cwnd_seq,
      2*ssthresh_seq), MAX(cwnd_ack, 2*ssthresh_ack)). If the size of
      VSW is larger than W(cwnd_seq, ssthresh_seq, cwnd_ack,
      ssthresh_ack), the VSW can be shrunk. K is an implementation
      parameter that will be further discussed in Section 5.6.



Liao, et al.                                                 [Page 15]


                    draft-ietf-rohc-tcp-taroc-04.txt


   c) After sending F_PERIOD compressed packets, F_PERIOD SHOULD be
      doubled. If it gets larger than W(cwnd_seq, ssthresh_seq,
      cwnd_ack, ssthresh_ack), the compressor transits to FO or SO
      state. If the compressor finds that the payload size of
      consecutive packets is a constant value and one of such packets
      is removed from the VSW, which means the decompressor has known
      the exact value of the constant size, it may transit to SO state.
      Otherwise it will transit to the FO state.

5.3.2. FO state

   The operations of the compressor in the FO state can be summarized
   as follows:

  a) Upon receiving a packet, if it falls behind the VSW, i.e. it is
     older than all the packets in VSW; the compressor transits to IR
     state. Otherwise, the compressor compresses it using W-LSB
     encoding and sends it.

  b) The packet is added into VSW as a potential reference after it has
     been sent out. The compressor then invokes the Algorithm SEQ and
     Algorithm ACK to track the congestion windows of the two one-way
     traffics with different directions in a TCP connection. Suppose
     that the estimated congestion windows are cwnd_seq and cwnd_ack,
     while the estimated slow start thresholds are ssthresh_seq and
     ssthresh_ack, respectively. Let W(cwnd_seq, ssthresh_seq, cwnd_ack,
     ssthresh_ack) = K*MAX(MAX(cwnd_seq, 2*ssthresh_seq), MAX(cwnd_ack,
     2*ssthresh_ack)). If the size of VSW is larger than W(cwnd_seq,
     ssthresh_seq, cwnd_ack, ssthresh_ack), the VSW can be shrunk. K is
     also an implementation parameter, which can be set to the same
     value as in the IR state.

  c) If the VSW contains only one packet, which means there is a long
     jump in the packet sequence number or acknowledge number, the
     compressor will transit to the IR state and re-initialize the
     algorithm for tracking TCP congestion window. Here, a segment
     causes a long jump when the distance between its sequence number
     (or acknowledgment number) and CMAXSN (or CMAXACK) is larger than
     the estimated congestion window size, i.e.,

     |sequence number (acknowledgement number) “ CMAXSN (CMAXACK)| >
     estimated congestion window size.

  d) If the compressor finds that the payload size of consecutive
     packets is a constant value and one of such packets has been
     removed from the VSW, which means the decompressor has known the
     exact value of the constant size, it may transit to the SO state.

  e) If the static context of transfers changed, the compressor will
     transit to the IR state and re-initialize the algorithms for
     tracking TCP congestion window.

5.3.3. SO state

Liao, et al.                                                 [Page 16]


                    draft-ietf-rohc-tcp-taroc-04.txt



   The operations of the compressor in the SO state can be summarized
   as follows:

  a) Upon receiving a packet, if it falls behind the VSW, i.e. it is
     older than all the packets in VSW; the compressor transits to IR
     state. Otherwise, the compressor compresses it using fixed-payload
     encoding and sends it.

  b) The packet is added into VSW as a potential reference after it has
     been sent out. The compressor then invokes the Algorithm SEQ and
     Algorithm ACK to track the congestion windows of the two one-way
     traffics with different directions in a TCP connection. Suppose
     that the estimated congestion windows are cwnd_seq and cwnd_ack,
     while the estimated slow start thresholds are ssthresh_seq and
     ssthresh_ack, respectively. Let W(cwnd_seq, ssthresh_seq, cwnd_ack,
     ssthresh_ack) = K*MAX(MAX(cwnd_seq, 2*ssthresh_seq), MAX(cwnd_ack,
     2*ssthresh_ack)). If the size of VSW is larger than W(cwnd_seq,
     ssthresh_seq, cwnd_ack, ssthresh_ack), the VSW can be shrunk. K is
     an implementation parameter, which can be set to the same value as
     in the IR state.

  c) If the VSW contains only one packet, which means there is a long
     jump in the packet sequence number or acknowledge number, the
     compressor will transit to the IR state and re-initialize the
     algorithms for tracking TCP congestion window.

  d) If the payload size of the packets in VSW doesn't keep constant,
     the compressor transits to the FO state.

  e) If the static context of transfers changed, the compressor will
     transit to the IR state and re-initialize the algorithms for
     tracking TCP congestion window.


5.4. Decompressor logic in TAROC-C

   The logic of the decompressor is simpler compared to the compressor.

5.4.1. No Context State

   The decompressor starts in this state. Upon receiving an IR or IR-
   DYN packet, the decompressor should verify the correctness of its
   header by TCP checksum. If the verification succeeds, the
   decompressor will update the context and use this packet as the
   reference packet. After that, the decompressor will pass it to the
   system's network layer and transit to Full Context State. Conformed
   to ROHC framework [10], only IR or IR-DYN packets may be
   decompressed in No Context state.

5.4.2. Full Context State



Liao, et al.                                                 [Page 17]


                    draft-ietf-rohc-tcp-taroc-04.txt


   The operations of decompressor in Full Context state can be
   summarized as follows:

   a) Upon receiving an IR or IR-DYN packet, the decompressor should
   verify the correctness of its header by TCP checksum. If the
   verification succeeds, the decompressor will update the context and
   use this packet as the reference packet. Consequently, the
   decompressor will convert the packet into the original packet and
   pass it to the network layer of the system.

   b) Upon receiving the other type of packet, the decompressor will
   decompress it.  After that, the decompressor MUST verify the
   correctness of the decompressed packet by the TCP checksum. If the
   verification succeeds, the decompressor passes it to the system's
   network layer. Then the decompressor will use it as the reference
   value if this packet is not older than the current reference packet.

   c) If consequent N packets fail to be decompressed, the decompressor
   should transit downwards to No Context State. N is an implementation
   parameter that will be further discussed in Section 5.6.


5.5. Modes of operation

   There are three modes in ROHC framework, called Unidirectional, Bi-
   directional Optimistic, and Bi-directional Reliable mode,
   respectively. The mode transitions are conformed to ROHC framework.
   However, the operations of each mode are different.

5.5.1. Unidirectional mode -- U-mode

   When in U-mode, packets are sent in one direction only: from
   compressor to decompressor. Therefore, feedbacks from decompressor
   to the compressor are unavailable under this mode.

   In the U-mode, the compressor and decompressor logic is the same as
   the discussion in section 5.3 and 5.4.

5.5.2.  Bi-directional Optimistic mode -- O-mode

   When in O-mode, a feedback channel is used to send error recovery
   requests and (optionally) acknowledgments of significant context
   updates from the decompressor to the compressor. In this mode, the
   VSW will be shrunk more efficiently.

5.5.2.1.  Compressor states and logic (O-mode)

   Following rules should be combined with the action defined in
   section 5.3.

   In the IR state, the compressor can transit to the FO or SO state
   once it receives a valid ACK(O) for an IR packet sent (an ACK(O) can
   only be valid if it refers to a packet sent earlier). If the packet

Liao, et al.                                                 [Page 18]


                    draft-ietf-rohc-tcp-taroc-04.txt


   referred by the feedback is in the VSW, the compressor will remove
   the packets older than the referred packet from the VSW window.
   Because ACK(O) means that the packet referred by ACK(O) has been the
   reference of the decompressor, the compressor doesn't need to keep
   older packets.

   If the compressor is in the FO or SO state, it will remove the
   packets older than the referred packet from the VSW window.

   Upon receiving an NACK(O), the compressor transits back to IR state.

5.5.2.2.  Decompressor states and logic (O-mode)

   The decompression states and the state transition logic are the same
   as in the Unidirectional case (see section 5.5.1.). What differs is
   the feedback logic.

   Below, rules are defined stating which feedback to use when.

   When an IR packet passes the verification, send an ACK(O).  When an
   IR-DYN packet or other packet is correctly decompressed, optionally
   send an ACK(O). When any packet fails the verification, send an
   NACK(O).

5.5.3.  Bi-directional Reliable mode -- R-mode

   The R-mode are a more intensive usage of the feedback channel and a
   stricter logic at both the compressor and the decompressor that
   prevents loss of context synchronization between the compressor and
   decompressor except for very high residual bit error rates. Feedback
   is sent to acknowledge all context updates. In this mode, the VSW
   will be shrunk with the highest efficiency.

5.5.3.1.  Compressor states and logic (R-mode)

   Following rules should be reparation to the action defined in
   section 5.3.

   In IR state, the compressor should transit to the FO or SO state
   only when it receives a valid ACK(R) for an IR or IR-DYN packet sent
   (an ACK(R) can only be valid if it refers to an packet sent earlier).
   If the packet referred by the feedback is in the VSW, the compressor
   will remove the packets older than the referred packet from the VSW
   window. Because ACK(R) means that the packet referred by ACK(R) has
   been the reference of the decompressor; the compressor doesn't need
   to keep older packets.

   If the compressor is in the FO or SO state, when it receives a valid
   ACK(R), it will remove the packets older than the referred packet
   from the VSW window. In this mode, the compressor need not use
   window tracking, because feedback can shrink VSW efficiently and
   robustly.


Liao, et al.                                                 [Page 19]


                    draft-ietf-rohc-tcp-taroc-04.txt


   Upon receiving an NACK(O), the compressor transits back to IR state.

5.5.3.2.  Decompressor states and logic (R-mode)

   Below, rules are defined stating which feedback to use when.

     . When a packet is correctly decompressed and updates the context,
        send an ACK(R).

     . When any packet fails the verification, send a NACK(R).

   The frequency of updating context will be discussed in section 5.6.


5.6. Implementation issues

5.6.1. Determine the value K

   As mentioned above, the VSW SHOULD be shrunk when its size gets
   larger than K*MAX(MAX(cwnd_seq, 2*ssthresh_seq), MAX(cwnd_ack,
   2*ssthresh_ack)). Since the Fast Recovery algorithm was introduced
   in TCP, several TCP variants had been proposed, which are different
   only in the behaviors of Fast Recovery. Some of them need several
   RTTs to be recovered from multiple losses in a window. Ideally, they
   may send L*W/2 packets in this stage, where L is the number of lost
   packets and W is the size of the congestion window where error
   occurs. Some recent work [15] on improving TCP performance allows to
   transmit packets even when receiving duplicate acknowledgments. Due
   to the above concerns, it'd better keep K large enough so as to
   prevent shrinking VSW without enough confidence that corresponding
   packets had been successfully received.

   Considering the bandwidth-limited environments and the limited
   receiver buffer, a practical range of K is around 1~2. From the
   simulation results, K=1 is good enough for most cases.

5.6.2. Determine the value N

   We should distinguish out of synchronization from the packet errors
   cause by the link. So considering the error condition of the link, N
   should be higher than the packet burst error length, a practical
   range of N is around 8~10.

5.6.3. Determine the frequency of updating context

   The choice of the frequency of updating context, ACK(R), is a
   balance between the efficiency and robustness, i.e. sending ACK(R)
   more frequently improves the compression robustness but adds more
   system overhead, and the vice versa. From a practical view, the
   ACK(R) SHOULD be sent for every 4~8 successfully decompressed
   packets.



Liao, et al.                                                 [Page 20]


                    draft-ietf-rohc-tcp-taroc-04.txt


6. Coding scheme and compressed packet header format

   Following the requirement of TCP/IP header compression [15], TAROC
   should fit into the ROHC framework. Thus, TAROC will conform to the
   general format and the reserved packet types defined in [10]. A
   compressed header format had been discussed in [20] in our past work.
   As stated in [19], EPIC-LITE is a generic encoding scheme which can
   automatically generate efficient packet format for the compressed
   header. In this draft, TAROC adopts EPIC-LITE as the coding
   framework. To use the EPIC-LITE coding framework, a suitable TCP/IP
   profile is also needed as the input. In the following of this
   section, we will discuss that in detail.

6.1. Window-based LSB encoding and fixed-payload encoding

   As stated above, the change patterns of several TCP fields (for
   example, Sequence Number, Acknowledgement Number, Window, etc.) are
   completely different from the ones of RTP, and are very hard to
   predict. Thus, Window-based LSB encoding, which does not assume the
   linear changing pattern of the target header fields, is used in
   TAROC to encode those TCP fields both efficiently and robustly.

   The Window-based LSB encoding (W-LSB encoding) used in TAROC is a
   slightly modified version of [10]. The major modifications can be
   summarized as follows:

       - For reference selection, the decompressor always choose the
       one which is the last received non-retransmission value or
       uncompressed value that had passed the TCP checksum successfully.

       - After sending a value v (compressed or uncompressed), the
       compressor always adds v into the VSW since each TCP segment is
       protected by the TCP checksum.

   The W-LSB encoding will be applied to several fields, such as IP-ID,
   Sequence Number, Acknowledgment Number, Window fields, TCP Timestamp
   option, etc.

   For some applications, such as bulk data transferring, etc., the
   payload size of each packet is usually a constant value, e.g. 1460
   bytes. In such a case, the sequence number and acknowledgment number
   can be represented as the following equation:

             SEQ (or ACK) = m * MTU + n.

   If all the packets in VSW have the same 'n', only 'm' need be
   transmitted to the decompressor. The decompressor can obtain the
   sequence number or acknowledgment number after correctly decoding
   'm', and use them as the reference values. This encoding method is
   called fixed-payload encoding.


6.2. The framework of EPIC-LITE scheme

Liao, et al.                                                 [Page 21]


                    draft-ietf-rohc-tcp-taroc-04.txt



   The detailed information about EPIC-LITE, include the structure of
   the EPIC-LITE compressed headers, the overview of the input language
   for EPIC-LITE, the packet types available to EPIC-LITE, the library
   of EPIC-LITE encoding methods, and how to create a new ROHC profile,
   are described in [19].


6.3. ROHC Profile for compression of TCP/IP

   This session describes a ROHC profile for the compression of TCP/IP.

   Note that the probabilities listed for each encoding method are
   initial estimates only. These need to be refined with more accurate
   values from genuine TCP/IP streams.

   The profile for TCP/IP compression is given below:

   only uses the following toolbox methods:
   - STATIC-KNOWN
   - STATIC-UNKNOWN
   - STATIC
   - IRREGULAR
   - LSB
   - VALUE
   - MSN-IRREGULAR
   - MSN-LSB
   - C


      profile_identifier      0xFFFF
      max_formats             200
      max_sets                1
      bit_alignment           8
      npatterns               224
      CO_packet               TCP-IP


      TCP-IP          =    IPv4-header
                           TCP-header
                           msn

      msn             =    C(MSN-LSB(4,-1,90%)) | C(MSN-LSB(7,-1,9%)) |
                           MSN-IRREGULAR(16,1%)

      IPv4-header     =    version
                           header_len
                           tos
                           ecn
                           length
                           ip-id
                           rf_flag
                           df_flag

Liao, et al.                                                 [Page 22]


                    draft-ietf-rohc-tcp-taroc-04.txt


                           mf_flag
                           offset
                           ttl
                           protocol
                           ip_chksum
                           src_address
                           dst_address

      version         =    STATIC-KNOWN(4,4)

      header_len      =    STATIC-KNOWN(4,5)

      tos             =    C(STATIC(99%)) | IRREGULAR(6,1%)

      ecn             =    IRREGULAR(2,100%)

      length          =    IRREGULAR(16)

      ip-id           =    C(LSB(4,-1,90%)) | C(LSB(6,-1,8%)) |
                           C(LSB(8,-1,1%))  | IRREGULAR(16,1%)

      rf_flag         =    VALUE(1,0,100%)

      df_flag         =    IRREGULAR(1,100%)

      mf_flag         =    VALUE(1,0,99%) | VALUE(1,1,1%)

      offset          =    C(STATIC(99%)) | IRREGULAR(13,1%)

      ttl             =    C(STATIC(99%)) | IRREGULAR(8,1%)

      protocol        =    STATIC-KNOWN(8,6)

      ip_chksum       =    IRREGULAR(16,100%)

      src_address     =    STATIC-UNKNOWN(32)

      dst_address     =    STATIC-UNKNOWN(32)

      TCP-header      =    source_port
                           dest_port
                           seqno
                           ackno
                           data_offset
                           flags
                           window
                           tcp_chksum
                           urg_ptr

      source_port     =    STATIC-UNKNOWN(16)

      dest_port       =    STATIC-UNKNOWN(16)


Liao, et al.                                                 [Page 23]


                    draft-ietf-rohc-tcp-taroc-04.txt


      seqno           =    C(LSB(8,63,80%))  | C(LSB(14,127,10%)) |
                           C(LSB(20,1023,5%)) | IRREGULAR(32,5%)


      ackno           =    C(LSB(8,-1,80%))  | C(LSB(14,-1,10%))  |
                           C(LSB(20,-1,5%))   | IRREGULAR(32,5%)


      data_offset     =    IRREGULAR(4,100%)

      window          =    C(STATIC(80%)) | C(LSB(12,63,10%)) |
                           IRREGULAR(16,10%)

      tcp_chksum      =    IRREGULAR(16,100%)

      urg_ptr         =    C(STATIC(99%)) | IRREGULAR(16,1%)

      flags           =    reserved
                           cwr
                           ece
                           urg
                           ack
                           psh
                           rst
                           syn
                           fin

      reserved        =    C(STATIC(90%)) | IRREGULAR(4,10%)

      cwr             =    VALUE(1,0,80%) | VALUE(1,1,20%)

      ece             =    VALUE(1,0,80%) | VALUE(1,1,20%)

      urg             =    VALUE(1,0,99%) | VALUE(1,1,1%)

      ack             =    VALUE(1,1,99%) | VALUE(1,0,1%)

      psh             =    IRREGULAR(1,100%)

      rst             =    VALUE(1,0,99%) | VALUE(1,1,1%)

      syn             =    VALUE(1,0,99%) | VALUE(1,1,1%)

      fin             =    VALUE(1,0,95%) | VALUE(1,1,5%)



7. Conclusions

   Based on the requirements proposed in [16] and [17], a robust header
   compression scheme should be of transparency, ubiquity, and
   efficiency. It must be able to support both IPv4 and Ipv6 packet and
   tolerate error propagation. Different types of link delay and the

Liao, et al.                                                 [Page 24]


                    draft-ietf-rohc-tcp-taroc-04.txt


   misordering of packets should be addressed. In addition, multiple
   links and unidirectional link should be supported in the proposed
   header compression scheme. Particularly for TCP/IP, the header
   compression scheme should compress TCP SACK and Timestamp options.

   From the above analysis, it can be seen that all these requirements
   can be satisfied in our proposed TAROC.

   Considering the behavior of TCP protocol itself, even the packets
   misordering occurs between the compressor and the decompressor, a
   good performance can still be achieved in TAROC.

   Note that in our scheme, we need to select a packet with correct
   checksum of the whole packet as a reference. In this way, it does
   not require link layer to treat the header and payload of the packet
   separately.

   Simulations results (Appendix A) demonstrate the effectiveness of
   control mechanism TAROC-C and corresponding header compression
   scheme, TAROC of TAROC.


8. Acknowledgments

   When designing this protocol, earlier header compression ideas
   described in [2], [3] and [10] have been import sources of knowledge.

   This draft also benefited from discussion on the ROHC mailing list
   about the TAROC-C mechanism.


9. Security considerations

   Security issues are not considered in this memo.




















Liao, et al.                                                 [Page 25]


                    draft-ietf-rohc-tcp-taroc-04.txt


10. Authors' addresses

   HongBin Liao          Tel: +86 10 62617711-3156
   Email:                i-hbliao@microsoft.com

   Qian Zhang            Tel: +86 10 62617711-3135
   Email:                qianz@microsoft.com

   Wenwu Zhu             Tel: +86 10 62617711-5405
   Email:                wwzhu@microsoft.com

   Ya-Qin Zhang          Tel: +86 10 62617711
   Email:                yzhang@microsoft.com

   Microsoft Research Asia
   Beijing Sigma Center
   No.49, Zhichun Road, Haidian District
   Beijing 100080, P.R.C.


   Richard Price        Tel: +44 1794 833681
   Email:               richard.price@roke.co.uk

   Robert Hancock       Tel: +44 1794 833601
   Email:               robert.hancock@roke.co.uk

   Stephen McCann       Tel: +44 1794 833341
   Email:               stephen.mccann@roke.co.uk

   Mark A West          Tel: +44 1794 833311
   Email:               mark.a.west@roke.co.uk

   Abigail Surtees      Tel: +44 1794 833131
   Email:               abigail.surtees@roke.co.uk

   Paul Ollis            Tel: +44 1794 833168
   Email:                paul.ollis@roke.co.uk

   Roke Manor Research Ltd
   Romsey, Hants, SO51 0ZN
   United Kingdom


11. References

   1  S. Bradner, "The Internet Standards Process -- Revision 3", BCP 9,
      RFC 2026, October 1996.

   2  V. Jacobson, "Compressing TCP/IP headers for low-speed serial
      links", RFC 1144, February 1990.

   3  M. Degermark, B. Nordgren, and S. Pink, "IP Header Compression",
      RFC 2507, February 1999.

Liao, et al.                                                 [Page 26]


                    draft-ietf-rohc-tcp-taroc-04.txt



   4  M. Mathis, J. Mahdavi, S. Floyd, and A. Romanow, "TCP Selective
      Acknowledgment Options", RFC 2018, October 1996.

   5  S. Floyd, J. Mahdavi, M. Mathis, and M. Podolsky, "An Extension
      to the Selective Acknowledgement (SACK) Option for TCP", RFC 2883,
      July 2000.

   6  V. Jacobson, R. Braden, and D. Borman, "TCP Extensions for High
      Performance", RFC 1323, May 1992.

   7  S. Bradner, "Key words for use in RFCs to Indicate Requirement
      Levels", BCP 14, RFC 2119, March 1997.

   8  V. Jacobson, "Fast Retransmit", Message to the end2end-interest
      mailing list, April 1990.

   9  M. Degermark, M. Engan, B. Nordgren, and Stephen Pink, " Low-loss
      TCP/IP header compression for wireless networks", In the
      Proceedings of MobiCom, 1996.

   10 Bormann (ed.), et al., "RObust Header Compression (ROHC)", RFC
      3095, July 2001.

   11 V. Jacobson, "Congestion avoidance and control", In ACM SIGCOMM
      '88, 1988.

   12 M. Allman, V. Paxson, and W. R. Stevens, "TCP Congestion Control",
      RFC 2581, April 1999.

   13 K. Ramakrishnan, S. Floyd, "A Proposal to add Explicit Congestion
      Notification (ECN) to IP", RFC 2481, January 1999.

   14 K. K. RamaKrishnan, Sally Floyd, D. Black, "The Addition of
      Explicit Congestion Notification (ECN) to IP", Internet Draft
      (work in progress), June, 2001. <draft-ietf-tsvwg-ecn-04.txt>

   15 L-E. Jonsson, "Requirements for ROHC IP/TCP header compression",
      Internet Draft (work in progress), June 20, 2001.

   16 M. Allman, H. Balakrishnan, and S. Floyd, "Enhancing TCP's Loss
      Recovery Using Limited Transmit", Internet Draft (work in
      progress), August 2000. <draft-ietf-tsvwg-limited-xmit-00.txt>

   17 M. Degermark, "Requirements for robust IP/UDP/RTP header
      compression", RFC 3096, July 2001.

   18 M. Allman, S. Floyd, and C. Partridge, "Increasing TCP's Initial
      Window", Internet Draft (work in progress), May 2001. <draft-
      ietf-tsvwg-initwin-00.txt>

   19 Richard Price et al, "Framework for EPIC-LITE", <draft-ietf-rohc-
      epic-lite-00.txt>, Internet Draft (work in progress), Oct. 2001.

Liao, et al.                                                 [Page 27]


                    draft-ietf-rohc-tcp-taroc-04.txt


   20 H. Liao, Q. Zhang, W. Zhu, and Y.-Q. Zhang, ŸTCP-Aware RObust
      Header Compression (TAROC)÷, Internet Draft (work in progress),
      Nov. 2001. <draft-ietf-rohc-taroc-03.txt>



















































Liao, et al.                                                 [Page 28]


12. Intellectual property considerations

   The TCP-Aware Robust header Compression Control mechanism, TAROC-C,
   and the Efficient Protocol Independent Compression scheme, EPIC-LITE,
   do not have an IPR statement.




Appendix A - Simulation results

   To study the performance of various TCP/IP header compression
   schemes, we have simulated VJHC, IPHC and TAROC schemes on NS-2
   network simulator. The simulation result in gained by the TAROC
   coding scheme discussed in [20].

A.1. Simulation topology

   +------------+             +--------+             +-------------+
   |            |------------>|        |------------>|             |
   | Fixed Host |  8Mb 100ms  | Router |Wireless link| Mobile Host |
   |            |<------------|        |<------------|             |
   +------------+             +--------+             +-------------+

   In this scenario, a fixed host is connected to the router with a WAN
   link (8Mb, 100ms). The queue size on the router is 6. The
   communication channel between the mobile host and the router
   simulates the wireless link, which has a wide range of bandwidth
   from 384kb to 9.6kb and a delay of 100ms. The bit error rate (BER)
   on this wireless link is from 1e-7 to 1e-3. TCP traffic is conveyed
   from the fixed host to the mobile host.

   It is known that, in wireless link under a high bit-error-rate
   situation, a smaller MTU is better in terms of the increasing chance
   of successful transmission. So different MTUs are selected under
   different BER conditions in our simulation.


A.2. Tested header compression schemes
   Five header compression schemes in our simulation:

   NONE      This scheme refers to the situation when no header
             compression is employed on the wireless link.

   VJHC      This scheme employs RFC1144 on the wireless link. It
             assumes that the compressed header size is 4.

   IPHC      This scheme employs RFC2507 on the wireless link, but
             without TWICE algorithm. The characteristics of the
             feedback channel are the same as the forward wireless
             link. It assumes that the compressed header size is 5.


Liao, et al.                                                 [Page 29]


                    draft-ietf-rohc-tcp-taroc-04.txt


   TAROC     It refers to the scheme proposed in this Internet Draft.
             The compressed header size is determined by the scheme
             described in this draft.

   IDEAL     This scheme simulates the situation where header
             compression does not introduce additional errors. It
             assumes that the compressed header size is 4, the same one
             as in the VJHC.


A.3. Simulations and results

   Based upon these configurations, enormous simulations have been
   tested. The followings are the results of several TCP variants,
   Tahoe, Reno and Sack on the wireless link with wide range of
   bandwidth, BER and MTU.

   Wireless link characteristics:

   * Bandwidth: 384kb, 114kb, 64kb, 9.6kb

   * Delay: 100ms

   * BER: 1e-8, 3e-8, 1e-7, 3e-7, 1e-6, 3e-6, 1e-5, 3e-5, 1e-4, 3e-4

   TCP Variants: Tahoe, Reno, Sack

   Header compression schemes: NONE, VJHC, IPHC, TAROC, IDEAL

   The following lists some of the results: 384kb for Tahoe, 114kb for
   Sack, 64kb for Reno, and 9.6kb for Sack.



A.3.1. 384kb

   Tahoe
   +----+------+-----------+-----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE | VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-8|576   |Throughput |25470| 25457| 25179|25587|25603|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-0.05 |-1.14 |0.46 |0.52 |
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-8|576   |Throughput |25770| 25764| 25696|25819|25839|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 | -0.02| -0.29| 0.19|0.27 |
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+

Liao, et al.                                                 [Page 30]


                    draft-ietf-rohc-tcp-taroc-04.txt


   +----+------+-----------+-----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE | VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-7|576   |Throughput |24564| 24185| 23550|24687|24717|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 | -1.54| -4.12| 0.50| 0.62|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-7|576   |Throughput |22256| 21240| 20216|22365|22407|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 | -4.56| -9.17| 0.50| 0.68|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-6|576   |Throughput |16703| 14638| 13840|16930|17027|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-12.36|-17.14| 1.36| 1.94|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-6|576   |Throughput | 9895| 7987 | 8086 |10255|10266|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-19.04|-18.03| 3.95| 4.06|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-5|296   |Throughput | 3531| 2803 | 2950 | 3825| 3826|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-20.62|-16.45| 8.33| 8.35|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-5|296   |Throughput | 1731| 1181 | 1317 | 1900| 1901|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-31.77|-23.92| 9.76| 9.82|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-4|168   |Throughput | 504 |  342 |   366|  635|  636|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-32.14|-27.38|25.99|26.19|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-4| 96   |Throughput |  97 |   80 |  91  |  202|  203|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-17.53| -6.19|108.2|109.3|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+


Liao, et al.                                                 [Page 31]


                    draft-ietf-rohc-tcp-taroc-04.txt


A.3.2. 114kb

   Sack
   +----+------+-----------+-----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE | VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-8|576   |Throughput |12105| 12636| 12605|12660|12662|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |  4.39| 4.13 | 4.58| 4.60|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-8|576   |Throughput |12083| 12565|12474 |12642|12643|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 | 3.99 | 3.24 | 4.63| 4.63|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-7|576   |Throughput |12030| 12329| 12165|12582|12587|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 | 2.49 | 1.12 | 4.59| 4.63|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-7|576   |Throughput |11856| 11687|11326 |12392|12411|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 | -1.43| -4.47| 4.52| 4.68|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-6|576   |Throughput |11213| 9871 | 9177 |11737|11740|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-11.97|-18.16| 4.63| 4.70|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-6|576   |Throughput | 9258| 6578 | 6206 | 9719| 9784|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-28.95|-32.97| 4.98| 5.68|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-5|296   |Throughput | 3883| 2622 | 2587 | 4236| 4239|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-32.47|-33.38| 9.09| 9.17|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+





Liao, et al.                                                 [Page 32]


                    draft-ietf-rohc-tcp-taroc-04.txt


   +----+------+-----------+-----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE | VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-5|296   |Throughput | 1786| 1111 | 1214 | 2000| 2012|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-37.79|-32.03|11.98|12.65|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |1e-4|168   |Throughput | 489 |  325 |  361 |  640|  652|
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-33.54|-26.18|30.88|33.33|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+
   |3e-4| 96   |Throughput | 92  |  81  |  88  | 202 | 203 |
   |    |      | (Byte/s)  |     |      |      |     |     |
   |    |      |-----------+-----+------+------+-----+-----+
   |    |      |Improvement|   0 |-11.96| -4.35|119.6|120.7|
   |    |      |     (%s)  |     |      |      |     |     |
   +----+------+-----------+-----+------+------+-----+-----+


A.3.3. 64kb

   Reno
   +----+------+-----------+----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE| VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-8|576   |Throughput |7317| 7743 | 7698 | 7763| 7764|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0| 5.82 | 5.21 | 6.10| 6.11|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-8|576   |Throughput |7312| 7716 | 7672 | 7756| 7757|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|  5.53| 4.92 | 6.07| 6.09|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-7|576   |Throughput |7288| 7615 | 7556 | 7727| 7728|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|  4.49| 3.68 | 6.02| 6.04|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+





Liao, et al.                                                 [Page 33]


                    draft-ietf-rohc-tcp-taroc-04.txt


   +----+------+-----------+----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE| VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-7|576   |Throughput |7213| 7351 | 7222 | 7648| 7649|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|  1.91| 0.12 | 6.03| 6.04|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-6|576   |Throughput |6966| 6612 | 6286 | 7387| 7398|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0| -5.08| -9.76| 6.04| 6.20|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-6|576   |Throughput |6206| 5070 | 4746 | 6562| 6580|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-18.30|-23.53| 5.74| 6.03|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-5|296   |Throughput |3377| 2470 | 2312 | 3633| 3667|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-26.86|-31.54| 7.58| 8.59|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-5|296   |Throughput |1576| 1065 | 1122 | 1755| 1773|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-32.42|-28.81|11.36|12.50|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-4|168   |Throughput | 465|  319 |  340 |  595|  597|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-31.40|-26.88|27.96|28.39|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-4| 96   |Throughput |  87|    79|   86 |  190|  194|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0| -9.20| -1.15|118.4|123.0|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+








Liao, et al.                                                 [Page 34]


                    draft-ietf-rohc-tcp-taroc-04.txt


A.3.4. 9.6kb

   Sack
   +----+------+-----------+----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE| VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-8|576   |Throughput |1116| 1187 | 1185 | 1190| 1191|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|  6.36| 6.18 | 6.63| 6.72|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-8|576   |Throughput |1116| 1188 | 1186 | 1191| 1192|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|  6.45| 6.27 | 6.72| 6.81|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-7|576   |Throughput |1116| 1183 | 1181 | 1190| 1191|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|  6.00| 5.82 | 6.63| 6.72|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-7|576   |Throughput |1114| 1173 | 1172 | 1188| 1190|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0| 5.30 | 5.21 | 6.64| 6.82|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-6|576   |Throughput |1110| 1133 | 1144 | 1183| 1184|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|  2.07| 3.06 | 6.58| 6.67|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-6|576   |Throughput |1089| 1036 | 1070 | 1164| 1167|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0| -4.87|-1.74 | 6.89| 7.16|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-5|296   |Throughput | 979|  855 |  935 | 1122| 1123|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-12.67|-4.49 |14.61|14.71|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+





Liao, et al.                                                 [Page 35]


                    draft-ietf-rohc-tcp-taroc-04.txt


   +----+------+-----------+----+------+------+-----+-----+
   |BER |MTU   |Performance|NONE| VJHC | IPHC |TAROC|IDEAL|
   |    |(Byte)|           |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-5|296   |Throughput | 759|  500 |  600 | 900 | 908 |
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-34.12|-20.95|18.58|19.63|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |1e-4|168   |Throughput | 341|   224|  252 |  455|  465|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-34.31|-26.10|33.43|36.36|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
   |3e-4| 96   |Throughput |  78|    67|  72  |  172|  173|
   |    |      | (Byte/s)  |    |      |      |     |     |
   |    |      |-----------+----+------+------+-----+-----+
   |    |      |Improvement|   0|-14.10|-7.69 |120.5|121.8|
   |    |      |     (%s)  |    |      |      |     |     |
   +----+------+-----------+----+------+------+-----+-----+
































Liao, et al.                                                 [Page 36]