Network Working Group                                       L-E. Jonsson                        Lars-Erik Jonsson, Ericsson
INTERNET-DRAFT                              Ghyslain Pelletier, Ericsson
Expires: July December 2003                                      January 23,
                                                           June 27, 2003

                    RObust Header Compression (ROHC):
                       A Compression Profile for IP
                     <draft-ietf-rohc-ip-only-01.txt>
                     <draft-ietf-rohc-ip-only-02.txt>

Status of this memo

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

   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 obsoleted by other documents at any
   time. It is inappropriate to use Internet-Drafts as reference
   material or cite them other than as "work in progress".

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

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

   This document is a submission of the IETF ROHC WG. Comments should be
   directed to the ROHC WG mailing list, rohc@ietf.org.

Abstract

   The original RObust Header Compression (ROHC) RFC, RFC 3095, defines
   a framework for header compression, along with compression protocols
   (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for
   uncompressed packet streams. However, no profile was defined for
   compression of IP only, which has been identified as a missing piece
   in RFC 3095. This document defines a ROHC compression profile for IP,
   similar to the IP/UDP profile defined by RFC 3095, but simplified to
   exclude UDP, and enhanced to compress IP header chains of arbitrary
   length.

Table of Contents

   1.  Introduction..................................................2
   2.  Terminology...................................................3
   3.  ROHC IP Compression (Profile 0x0004)..........................3
        3.1.  Static chain termination and termination...............................3
        3.2.  Handling multiple levels of IP headers.......3
        3.2.  Initialization.........................................4 headers.................3
        3.3.  Constant IP-ID.........................................4
        3.4.  Additional mode transition logic.......................6
        3.5.  Initialization.........................................7
        3.6.  Packet types...........................................5 types...........................................8
   4.  Security Considerations.......................................6 Considerations.......................................9
   5.  IANA Considerations...........................................6 Considerations...........................................9
   6.  Acknowledgements..............................................6  Acknowledgements..............................................9
   7.  References....................................................6  References....................................................9
   8.  Author's Address..............................................7  Authors' Addresses...........................................10
   Appendix A.  Detailed procedures for canceling mode transitions..11
   A.1.  Transition from Optimistic to Reliable mode................11
   A.2.  Transition from Unidirectional to Reliable mode............12
   A.3.  Transition from Reliable to Optimistic mode................12
   A.4.  Transition back to Unidirectional mode.....................13

1.  Introduction

   The original RObust Header Compression (ROHC) RFC [RFC-3095] defines
   a framework for header compression, along with compression protocols
   (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for
   uncompressed packet streams. The profile for uncompressed data was
   defined to provide means to encapsulate all traffic over a link
   within ROHC packets. Through this profile, the lower layers do not
   have to provide multiplexing for different packet types, but instead
   ROHC can handle any packet stream, even if compression profiles for
   all kinds of packet streams have yet not been defined or implemented
   over the link.

   Although the profile without compression is simple and can tunnel
   arbitrary packets, it has of course a major weakness in that it does
   not compress the headers at all. When considering that normally all
   packets are expected to be IP [RFC-791, RFC-2460] packets, and that
   the IP header often represent a major part of the total header, a
   useful alternative to no compression would for most packets be
   compression of the IP header only. Unfortunately, such a profile was
   not defined in [RFC-3095], and this has thus been identified as an
   important missing piece in the ROHC toolbox.

   This document addresses this missing compression support and defines
   a ROHC compression profile for IP [RFC-791, RFC-2460] only, similar
   to the IP/UDP profile defined by [RFC-3095], but simplified to
   exclude UDP. Due to the similarities with the IP/UDP profile, the IP
   compression profile is described based on the IP/UDP profile, mainly
   covering differences. The most important differences are a different
   way of terminating the static header chain, and the capability to
   compress IP header chains of arbitrary length.

2.  Terminology

   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 [RFC-2119].

   ROHC UDP

       "ROHC UDP" in this document refers to the IP/UDP profile
       (Profile 0x0002) as defined in [RFC-3095].

3.  ROHC IP Compression (Profile 0x0004)

   In general, there are no major difference between the ROHC UDP
   profile and the IP profile (ROHC IP) defined in this document, since
   the removal of UDP has no impact on the compression mechanisms. As
   for ROHC UDP, the compressor generates a 16-bit sequence number which
   increases by one for each packet compressed in the packet stream,
   simply called SN below. The most important difference between this
   profile and ROHC UDP is about static chain termination and handling
   of multiple IP headers. Unless stated explicitly below, mechanisms
   and formats are as for ROHC UDP.

3.1.  Static chain termination and multiple IP headers

   The most important

   One difference for IP-only compression, compared to IP/UDP
   compression, is about how to terminate compression, i.e. how related to end the termination of the static chain in IR
   headers. For the UDP profile, the chain always ends with a UDP header
   part, which per definition terminates
   compression, and provides the boundaries for the chain. The
   UDP header is also the last header in the uncompressed packet (except
   for potential application header). For the case of IP-only compression, profile, there is
   no single last header that per profile definition terminates the
   chain. Instead, the static chain is terminated if the "Next Header /
   Protocol" field of a static IP header part indicates anything but IP
   (IPinIP or IPv6).

   Another difference with IP-only compression is related

3.2.  Handling multiple levels of IP headers

   The ROHC IR and IR-DYN packets defined in [RFC-3095] are used to
   communicate static and/or dynamic parts of a context. For each of the
   potential
   compression profiles defined in [RFC-3095], there is a single last
   header in the header chain that clearly marks the termination of the
   static chain. The length of the dynamic chain is then inferred from
   the static chain in the IR header itself, or from the static chain in
   the context for the IR-DYN header. The length of both static and
   dynamic chains may thus be of arbitrary length and may, in theory,
   initialize a context with an arbitrary number of multiple IP headers. ROHC UDP can compress
   at levels.

   However, the general compressed header formats defined in [RFC-3095,
   section 5.7.] specifies that a most two levels of IP headers (the
   'Inner' and the 'Outer' level of IP headers) may be included in a
   compressed header. Specifically, the format defined for Extension 3
   [RFC-3095, section 5.7.5.] can only carry the 'Outer' IP header. In
   addition, while list compression may be used to compress other types
   of headers, but it cannot be used to compress additional IP headers would completely
   disable the use as IP
   headers may not be part of an extension header compression, since the compressed chain
   must end with in compressed
   headers [ROHC, section 5.8.].

   For the UDP header part. However, as there compression profiles defined in [RFC-3095], the consequence
   is no single
   packet type that ends at most two levels of IP headers can be compressed. In other
   words, the compressed chain with presence of additional IP headers at best partially
   disables header compression and compression will not go beyond the IR
   state (as only IR and IR-DYNs can be used in such case).

   For the compression of IP profile, headers only, the additional IP headers
   would however not have to cause header compression to be disabled. By disabled
   because there is no single packet type that ends the compressed
   chain. The excess IP headers could simply be left uncompressed by
   implicitly terminating the chain static and dynamic chains after at most 2 IP
   headers, additional
   two levels of IP headers could just be left uncompressed. headers.

   The IP IP-only profile defined in this document goes takes one step further, further
   and supports compression of an arbitrary number of IP headers. The levels. This is
   achieved by adding a dynamic chain to the general format of
   compressed headers, to include the header part of each IP level in
   excess of the first two.

   As explained above, the static chain within IR packets can obviously be of an
   arbitrary length, and the chain is simply terminated through by the presence of a
   non-IP header (not IPinIP nor IPv6). The dynamic chain is structured
   analogously. In

   For compressed
   packet headers, header the information related to the initial two IP
   headers are is carried as in for the IP/UDP profile, while and a chain of dynamic
   header
   chain information is added at to the end of the compressed header for
   each and every additional IP header. The This additional data structure used for these header
   portions in compressed headers
   is thus exactly the same as the one used in IR and IR-DYN packets.
   The following sections describe how length of the chain is inferred from the chain of static
   parameters in the context. While a dynamic chain carries dynamically
   changing parameters using an uncompressed representation, this
   ensures that flows with arbitrary levels of IP profile differs headers will not
   impair compression efficiency.

3.3.  Constant IP-ID

   Most IPv4 stacks assigns IP-ID according to the value of a counter
   increasing by one for each outgoing packet. ROHC UDP compresses the
   IP-ID field using offset IP-ID encoding based on the UDP SN [RFC-
   3095]. For stacks generating IP-ID values using a pseudo-random
   number generator, the field is not compressed and is sent as-is in
   its entirety as additional octets after the compressed header.

   Cases have also been found where an IPv4 stack uses a constant value
   for the IP Identifier. When the IP-ID field is constant, it cannot be
   compressed using offset IP-ID encoding and the field must be sent in
   its entirety. This overhead can be avoided with the addition of a
   flag within the dynamic part of the chain used to initialize the IPv4
   header, as follow:

   Dynamic part:

      +---+---+---+---+---+---+---+---+
      |        Type of Service        |
      +---+---+---+---+---+---+---+---+
      |         Time to Live          |
      +---+---+---+---+---+---+---+---+
      /        Identification         /   2 octets
      +---+---+---+---+---+---+---+---+
      | DF|RND|NBO|SID|       0       |
      +---+---+---+---+---+---+---+---+
      / Generic extension header list /  variable length
      +---+---+---+---+---+---+---+---+

   SID: Static IP Identifier.

      For IR and IR-DYN packets, the logic is the same as for ROHC UDP
      with the addition that field(SID) must be kept in the context.

      For compressed headers other than IR and IR-DYN:

         If value(RND) = 0 and context(SID) = 0, hdr(IP-ID) is
         compressed using Offset IP-ID encoding (see [RFC-3095 section
         4.5.5]) using p = 0 and default-slope(IP-ID offset) = 0.

         If value(RND) = 0 and context(SID) = 1, hdr(IP-ID) is constant
         and compressed away; hdr(IP-ID) is the value of context(IP-ID).

         If value(RND) = 1, IP-ID is the uncompressed hdr(IP-ID). IP-ID
         is then passed as additional octets at the end of the
         compressed header, after any extensions.

   Note: Only IR and IR-DYN packets can update context(SID).

   Note: All other fields are the same as for ROHC UDP [RFC-3095].

3.4.  Additional mode transition logic

   The profiles defined in [ROHC] operate using different modes of
   compression. A mode transition can be requested once a packet has
   reached the decompressor by sending feedback indicating the desired
   mode. As per the specifications found in [ROHC], the compressor is
   compelled to honor such request.

   The Mode parameter for the value mode = 0, for packet types UOR-2, IR
   and IR-DYN, is redefined to allow the compressor to decline a mode
   transition requested by the decompressor:

      Mode: Compression mode.  0 = (C)ancel Mode Transition

   Upon receiving the Mode parameter set to '0', the decompressor MUST
   stay in its current mode of operation and SHOULD refrain from sending
   further mode transition requests for a certain amount of time.

   More specifically, with reference to the
   IP/UDP profile, providing parameters C_TRANS, C_MODE,
   D_TRANS and D_MODE defined in [ROHC, section 5.6.1.], the following
   modifications apply when the compressor cancels a mode transition:

   Parameters for the compressor side:

      - C_MODE:
         This value must not be changed when sending mode information
         within packets when the mode parameter set to '0' (as a
         response to a mode transition request from the decompressor).

      - C_TRANS:
         C_TRANS is (P)ending when receiving a mode transition request
         from the decompressor. C_TRANS is set to (D)one when the
         compressor receives an ACK for a UOR-2, IR-DYN, or IR packet
         sent with the mode parameter set to the mode in use at the time
         when the mode transition request was initiated.

   Parameters for the decompressor side:

      - D_MODE:
         D_MODE MUST remain unchanged when receiving a UOR-2, an IR-DYN,
         or an IR packet sent with the details mode parameter set to '0'.

      - D_TRANS:
         D_TRANS is (P)ending when a UOR-2, IR-DYN, or IR packet sent
         with the mode parameter set to '0' is received. It is set to
         (D)one when a packet of type 1 or 0 corresponding to the general principles
         unchanged mode is received.

   The resulting mode transition procedure is described below:

              Compressor                     Decompressor
             ----------------------------------------------
   C_MODE = X      |                               |  D_MODE = X
                   |       Mode Request(Y) +-<-<-<-|  D_TRANS = I
                   |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = P     |-<-<-<-+                       |
   C_MODE = X      |                               |
                   |->->->-+ IR/IR-DYN/UOR-2(SN,C) |
                   |       +->->->->->->->-+       |
                   |->-..                  +->->->-|  D_TRANS = P
                   |->-..                          |  D_MODE = X
                   |           ACK(SN,X)   +-<-<-<-|
                   |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = D     |-<-<-<-+                       |
                   |                               |
                   |->->->-+  X-0, X-1*          |
                   |       +->->->->->->->-+       |
                   |                       +->->->-|  D_TRANS = D
                   |                               |

           where X: mode in use before the previous paragraph.

3.2. mode transition was initiated
                 Y: mode requested by the decompressor
                 C: (C)ancel mode transition

3.5.  Initialization

   The static context for ROHC IP compression can be initialized in
   either of two ways:

   1) By using an IR packet as in ROHC UDP, where the profile is
      0x0004, and the static chain ends with the static part of an
      IP header, where the Next Header/Protocol field has any value but
      IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, SN is
      initialized to a random value when the first IR packet is sent.

   2) By reusing an existing context. This is done with an IR-DYN
      packet, identifying profile 0x0004, where the dynamic chain
      corresponds to the prefix of the existing static chain, ending
      with an IP header where the Next Header/Protocol field has any
      value but IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor,
      SN is initialized to a random value when the first IR-DYN packet
      is sent.

   For ROHC IP, the dynamic part of an IR or IR-DYN packet is similar to
   the one for ROHC UDP, with a two-octet field containing the SN
   present at the end of the dynamic chain in IR and IR-DYN packets. It
   should be noted that the static and dynamic chains have an arbitrary
   length, and the SN is added only once, at the end of the dynamic
   chain in IR and IR-DYN packets. Note further that additional dynamic
   chains in compressed packets do not have this sequence number at the
   end of the chain, as SN is present within compressed base headers.

3.3.

3.6.  Packet types

   The only packet format that differs from ROHC UDP is the general
   format for compressed packets, which has no UDP checksum in the end.
   Instead, it ends with a list of dynamic header portions, one for each
   IP header above the initial two (if any, as indicated by the presence
   of corresponding header portions in the static chain).

   The general format for a compressed header is thus as follows:

     0   1   2   3   4   5   6   7
    --- --- --- --- --- --- --- ---
   :         Add-CID octet         :                    |
   +---+---+---+---+---+---+---+---+                    |
   |   first octet of base header  |                    |
   +---+---+---+---+---+---+---+---+                    |
   :                               :                    |
   /   0, 1, or 2 octets of CID    /                    |
   :                               :                    |
   +---+---+---+---+---+---+---+---+                    |
   /   remainder of base header    /                    |
   +---+---+---+---+---+---+---+---+                    |
   :                               :                    |
   /           Extension           /                    |
   :                               :                    |
    --- --- --- --- --- --- --- ---                     |
   :                               :                    |
   +   IP-ID of outer IPv4 header  +
   :                               :     (see section 5.7 or of [RFC-3095])
    --- --- --- --- --- --- --- ---
   /    AH data for outer list     /                    |
    --- --- --- --- --- --- --- ---                     |
   :                               :                    |
   +         GRE checksum          +                    |
   :                               :                    |
    --- --- --- --- --- --- --- ---                     |
   :                               :                    |
   +   IP-ID of inner IPv4 header  +                    |
   :                               :                    |
    --- --- --- --- --- --- --- ---                     |
   /    AH data for inner list     /                    |
    --- --- --- --- --- --- --- ---                     |
   :                               :                    |
   +         GRE checksum          +                    |
   :                               :                    |
    --- --- --- --- --- --- --- ---
   :            List of            :
   /        Dynamic chains         /    variable, given by static chain
   :   for additional IP headers   :           (includes no SN)
    --- --- --- --- --- --- --- ---

   Note that the list of dynamic chains for the additional IP headers in
   compressed packets do not have a sequence number at the end of the
   chain, as SN is present within compressed base headers.

4.  Security Considerations

   The security considerations of [RFC-3095] apply equally to this
   document, without exceptions or additions.

5.  IANA Considerations

   ROHC profile identifier 0x0004 has been reserved by the IANA for the
   profile defined in this document.

   { NOTE TO IANA - TO BE REMOVED BEFORE PUBLICATION }

      A ROHC profile identifier must be reserved by the IANA for the
      profile defined in this document. Profile number 0x0004 has
      previously been saved for this purpose, and should thus be used.
      As for previous ROHC profiles, profile numbers 0xnn04 must also be
      reserved for future variants of this profile. A suggested
      registration in the "RObust Header Compression (ROHC) Profile
      Identifiers" name space would then be:

      OLD:   0xnn04         To be Assigned by IANA

      NEW:   0x0004         ROHC IP                    [RFCXXXX (this)]
             0xnn04         Reserved

   { END OF NOTE }

6.  Acknowledgements

   The author authors would like to thank Carsten Bormann and Ghyslain Pelletier Fredrik Lindstr÷m
   for valuable input and review.

7.  References

   [RFC-2119]  Bradner, S., "Key words for use in RFCs to Indicate
               Requirement Levels", RFC 2119, March 1997.

   [RFC-3095]  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)", RFC 3095, July 2001.

   [RFC-791]   Postel, J., "Internet Protocol", RFC 791, September 1981.

   [RFC-2460]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
               (IPv6) Specification", RFC 2460, December 1998.

   [PROTOCOL]  "Assigned Internet Protocol Numbers", IANA registry at:
               http://www.iana.org/assignments/protocol-numbers

8.  Author's Address  Authors' Addresses

   Lars-Erik Jonsson              Tel:
   Ericsson AB
   Box 920
   SE-971 28 Lulea, Sweden

   Phone: +46 920 20 21 07
   Ericsson AB
   Fax: +46 920 20 20 99
   Email: lars-erik.jonsson@ericsson.com

   Ghyslain Pelletier
   Box 920
   Ericsson AB
   SE-971 28 Lulea Lulea, Sweden                         EMail: lars-erik.jonsson@ericsson.com

   Phone: +46 920 20 24 32
   Fax:   +46 920 20 20 99
   Email: ghyslain.pelletier@epl.ericsson.se

Appendix A.  Detailed procedures for canceling mode transitions

   [Author's note: This appendix may be removed before publication]

   The profiles defined in [ROHC] operate using different modes of
   compression: Unidirectional (U-Mode), Bi-directional Optimistic (O-
   Mode) and Bi-directional Reliable (R-Mode). Compression always starts
   in the U-Mode, and mode transitions can only be initiated by the
   decompressor [ROHC, section 5.6.]. A mode transition can be requested
   once a packet has reached the decompressor by sending feedback
   indicating the desired mode.

   With reference to the parameters C_TRANS, C_MODE, D_TRANS and D_MODE
   defined in [ROHC, section 5.6.1.], the following sub-sections
   describe the resulting procedures when a compressor declines a mode
   transition request from the decompressor as described in section 3.4.

A.1.  Transition from Optimistic to Reliable mode

   When the decompressor initiates a mode transition from Optimistic to
   Reliable mode, the cancellation of the transition procedure is
   described as follows:

             Compressor                     Decompressor
             ----------------------------------------------
                   |                               |
                   |        ACK(R)/NACK(R) +-<-<-<-|  D_TRANS = I
                   |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = P     |-<-<-<-+                       |
   C_MODE = O      |                               |
                   |->->->-+ IR/IR-DYN/UOR-2(SN,C) |
                   |       +->->->->->->->-+       |
                   |->-..                  +->->->-|  D_TRANS = P
                   |->-..                          |  D_MODE = O
                   |           ACK(SN,O)   +-<-<-<-|
                   |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = D     |-<-<-<-+                       |
                   |                               |
                   |->->->-+  UO-0, UO-1*          |
                   |       +->->->->->->->-+       |
                   |                       +->->->-|  D_TRANS = D

   The compressor must not send packet types 1 or 0 when C_TRANS is P,
   i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR
   packet sent with the mode transition parameter set to C. When the
   decompressor receives a UOR-2, IR-DYN, or IR packet sent with the
   mode transition parameter set to C, it must keep the value D_MODE to
   O and it sets D_TRANS to P. When the decompressor receives packet
   types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it
   sets D_TRANS to D.

A.2.  Transition from Unidirectional to Reliable mode

   The cancellation of a transition from Unidirectional to Reliable mode
   follows the same procedure as defined in section 4.2 above.

A.3.  Transition from Reliable to Optimistic mode

   When the decompressor initiates a mode transition from Reliable to
   Optimistic mode, the cancellation of the transition procedure is
   described as follows:

               Compressor                     Decompressor
             ----------------------------------------------
                   |                               |
                   |        ACK(O)/NACK(O) +-<-<-<-|  D_TRANS = I
                   |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = P     |-<-<-<-+                       |
   C_MODE = R      |                               |
                   |->->->-+ IR/IR-DYN/UOR-2(SN,C) |
                   |       +->->->->->->->-+       |
                   |->-..                  +->->->-|  D_MODE = R
                   |->-..                          |
                   |           ACK(SN,R)   +-<-<-<-|
                   |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = D     |-<-<-<-+                       |
                   |                               |
                   |->->->-+   R-0, R-1*           |
                   |       +->->->->->->->-+       |
                   |                       +->->->-|  D_TRANS = D
                   |                               |

   The compressor must not send packet types 1 or 0 when C_TRANS is P,
   i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR
   packet sent with the mode transition parameter set to C. When the
   decompressor receives a UOR-2, IR-DYN, or IR packet sent with the
   mode transition parameter set to C, it must keep the value D_MODE to
   R. When the decompressor receives packet types 0 or 1, after having
   ACKed a UOR-2, IR-DYN, or IR packet, it sets D_TRANS to D.

A.4.  Transition back to Unidirectional mode

   When the decompressor initiates a mode transition from Reliable or
   Optimistic mode back to Unidirectional mode, the cancellation of the
   transition procedure is described as follows:

              Compressor                     Decompressor
             ----------------------------------------------
               |                               |
               |        ACK(U)/NACK(U) +-<-<-<-| D_TRANS = I
               |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = P |-<-<-<-+                       |
   C_MODE = O/R|                               |
               |->->->-+ IR/IR-DYN/UOR-2(SN,C) |
               |       +->->->->->->->-+       |
               |->-..                  +->->->-|
               |->-..                          |
               |          ACK(SN,O/R)  +-<-<-<-|
               |       +-<-<-<-<-<-<-<-+       |
   C_TRANS = D |-<-<-<-+                       |
               |          R-0, R-1* or         |
               |->->->-+  UO-0, UO-1*          |
               |       +->->->->->->->-+       |
               |                       +->->->-| D_TRANS = D
                                                 D_MODE = O/R

   When the decompressor receives a UOR-2, IR-DYN, or IR packet sent
   with the mode transition parameter set to C, it must keep the value
   D_MODE to the bi-directional mode already in use (either O- or R-
   mode). After ACKing the first UOR-2(C), IR-DYN(C), or IR(C), the
   decompressor MUST continue to send feedback with the Mode parameter
   set to the bi-directional mode in use (either O- or R-mode) until it
   receives packet types 0 or 1. When the decompressor receives packet
   types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it
   sets D_TRANS to D.

Full Copyright Statement

   Copyright (C) The Internet Society (2003). All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS 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.

This Internet-Draft expires July 23, December 27, 2003.