INTERNET-DRAFT                                           Carsten Bormann
Expires: May September 2001                                   TZI/Uni Bremen
                                                           November 2000
                                                              March 2001

                             ROHC over PPP
                    draft-ietf-rohc-over-ppp-00.txt
                    draft-ietf-rohc-over-ppp-01.txt

Status of this memo

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

   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 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

   This document is a submission to product of the IETF ROHC WG.  Comments should be
   directed to its mailing list, rohc@cdt.luth.se.

Abstract

   This document describes an option for negotiating the use of robust
   header compression (ROHC) on IP datagrams transmitted over the Point-
   to-Point Protocol [RFC1661]. It defines extensions to the PPP Control
   Protocols for IPv4 and IPv6 [RFC1332, RFC2023]. RFC2472].

1.  Introduction

   Robust Header Compression (ROHC) as defined in [ROHC] may be used for
   compression of both IPv4 and IPv6 datagrams or packets encapsulated
   with multiple IP headers. The initial version of ROHC focuses on
   compression of the packet headers in RTP streams, while supporting
   compression of other UDP flows; however, it also defines a framework
   into which further header compression mechanisms can be plugged as
   new profiles.  Planned additions to the set of profiles supported by
   ROHC will be capable of compressing TCP transport protocol headers as
   well.

   In order to establish compression of IP datagrams sent over a PPP
   link each end of the link must agree on a set of configuration
   parameters for the compression. The process of negotiating link
   parameters for network layer protocols is handled in PPP by a family
   of network control protocols (NCPs).  Since there are separate NCPs
   for IPv4 and IPv6, this document defines configuration options to be
   used in both NCPs to negotiate parameters for the compression scheme.

   ROHC does not rely on any require that link layer's ability layer be able to indicate the types
   of datagrams carried in the link layer frames. Therefore,  However, there are
   two basic types of ROHC headers defined in the ROHC framework: small-
   CID headers (zero or one bytes are used to identify the compression
   context) and large-CID headers (one or two bytes are used for this
   purpose).  To keep the PPP packets self-describing, in this document a single
   two new type types for the PPP Data Link Layer Protocol Field are defined,
   one for small-CID ROHC packets and one for large-CID ROHC packets.
   (This also avoids a problem that would occur if PPP were to negotiate
   which of the formats to use in each of IPCP and IPV6CP and the two
   negotiation processes were to arrive at different results.)  Any PPP
   ROHC receiver MUST be able to process both small-CID and large-CID
   ROHC packets, therefore no negotiation of this function is defined. required.

   ROHC assumes that the link layer delivers packets in sequence.  PPP
   normally does not reorder packets.  When using reordering mechanisms
   such as multiclass multilink PPP [RFC2686], care must be taken so
   that packets that share the same compression context are not
   reordered.

   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.

2.  Configuration Option

   This document specifies a new compression protocol value for the IPCP
   IP-Compression-Protocol option as specified in [RFC1332].  The new
   value and the associated option format are described in section 2.1.

   The option format is structured to allow future extensions to the
   ROHC scheme.

        NOTE: The specification of link and network layer parameter
        negotiation for PPP [RFC1661], [RFC1331], [RFC1332] does not
        prohibit multiple instances of one configuration option but
        states that the specification of a configuration option must
        explicitly allow multiple instances.  From the current
        specification of the IPCP IP-Compression-Protocol configuration
        option [RFC1332, p 6] it follows that it can only be used to
        select a single compression protocol at any time.

        NOTE: [RFC1332] is not explicit about whether the option
        negotiates the capabilities of the receiver or of the sender.
        In keeping with current practice, we assume that the option
        describes the capabilities of the decompressor (receiving side)
        of the peer that sends the Config-Req.

2.1.  Configuration Option Format

   Both the network control protocol for IPv4, IPCP [RFC1332] and the
   IPv6 NCP, IPV6CP [RFC2023] [RFC2472] may be used to negotiate IP Header
   Compression parameters for their respective protocols.  The format of
   the configuration option is the same for both IPCP and IPV6CP.

   Description

        This NCP configuration option is used to negotiate parameters
        for Robust Header Compression.  The option format is summarized
        below.  The fields are transmitted from left to right.

           Figure 1: Robust Header Compression (ROHC) Option
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |    IP-Compression-Protocol    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            MAX_CID            |             MRRU              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           MAX_HEADER          |          suboptions...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type
      2

   Length
      >= 14 10

      The length may be increased if the presence of additional
      parameters is indicated by additional suboptions.

   IP-Compression-Protocol
      00XX
      00SS (hex) [to be assigned]
   MAX_CID
      The MAX_CID field is two octets and indicates the maximum value
      of a context identifier.

         Suggested value: 15

      MAX_CID must be at least 0 and at most 16383 (The value 0 implies
      having one context).

   MRRU
      The MRRU field is two octets and indicates the maximum
      reconstructed reception unit (see [ROHC], section 5.1.1).

         Suggested value: 0

   MAX_HEADER
      The largest header size in octets that may be compressed.

         Suggested value: 168 octets

      The value of MAX_HEADER should be large enough so that at least
      the outer network layer header can be compressed.  To increase
      compression efficiency MAX_HEADER should be set to a value large
      enough to cover common combinations of network and transport layer
      headers.

   suboptions
      The suboptions field consists of zero or more suboptions.  Each
      suboption consists of a type field, a length field and zero or
      more parameter octets, as defined by the suboption type.  The
      value of the length field indicates the length of the suboption in
      its entirety, including the lengths of the type and length fields.

                          Figure 2: Suboption
          0                   1                   2
          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |     Type      |    Length     |  Parameters...
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2.2.  LARGE_CIDS Suboption

   Without specifying further options, the LARGE_CIDS per-channel
   parameter (see [ROHC], section 5.1.1) is false.

   Description

        Set LARGE_CIDS to true.

                          LARGE_CIDS suboption
          0                   1
          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |     Type      |    Length     |
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Type
            1

         Length
            2

2.3.  PROFILES Suboption

   The set of profiles to be enabled is subject to negotiation.  Most
   initial implementations of ROHC implement profiles 0 0x0000 to 3. 0x0003.
   This option MUST be supplied.

   Description

        Define the set of profiles supported by the decompressor.

                      Figure 3: PROFILES suboption
          0                   1                   2
          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         |     Type      |    Length     |  Profiles...
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Type
            2
            1

         Length
            n+2
            2n+2

         Value
            n octets octet-pairs in ascending order, each octet-pair specifying
            a ROHC profile supported.

3.  Multiple Network Control Protocols

   The ROHC protocol is able to compress both IPv6 and IPv4 datagrams.
   Both IPCP and IPV6CP are able to negotiate option parameter values
   for ROHC.  These values apply to the compression of packets where the
   outer header is an IPv4 header and an IPv6 header, respectively.

3.1.  Sharing Context Identifier Space

   For the compression and decompression of IPv4 and IPv6 datagram
   headers the context identifier space is shared.  While the parameter
   values are independently negotiated, sharing the context identifier
   spaces becomes more complex when the parameter values differ.  Since
   the compressed packets share context identifier space, the
   compression engine must allocate context identifiers out of a common
   pool; for compressed packets, the decompressor has to examine the
   context state to determine what parameters to use for decompression.

   In particular, the context identifier space is shared between ROHC
   small-CID packets and ROHC large-CID packets.  From the point of view
   of the ROHC framework, the PPP NCP instances for IPCP and IPV6CP
   together constitute exactly one ROHC channel; its feedback is
   destined for the ROHC channel defined by the NCP instances for IPCP
   and IPV6CP in the reverse direction on the same PPP link.

   In particular, this means that taking down either of the NCPs while
   the other is still open means that the contexts of the channel stay
   active.  [[ The following needs some more discussion. ]] To avoid
   race conditions, the same is true if both NCPs are taken down and
   then one or more is reopened.  Taking down LCP destroys the channel,
   however; reopening LCP and then one or more of IPCP and IPV6CP
   restarts ROHC with all contexts in no-context state.

4.  Demultiplexing of Datagrams

   The ROHC specification [ROHC] defines a single header format for all
   different types of compressed headers.  One headers, with a variant for small CIDs
   and a variant for large CIDs.  Two PPP Data Link Layer Protocol Field value is
   values are specified below.
        ROHC small-CIDs
           The frame contains a ROHC packet with small CIDs as defined
        in [ROHC].
           Value: 00XX 00SS (hex)  [to be assigned -- same XX 00SS as above]

5.  Security Considerations
        ROHC large-CIDs
           The frame contains a ROHC packet with large CIDs as defined
        in [ROHC].
           Value: 00LL (hex)  [to be assigned]

5.  ROHC Usage Considerations

   Certain considerations are required for any ROHC-over-X protocol.
   This section describes how some of these are handled for ROHC over
   PPP.

5.1.  Uncompressed profile

   There is no need for the ROHC uncompressed profile in ROHC over PPP,
   as uncompressed packets can always be sent using the PPP protocol
   demultiplexing method.  Therefore, no consideration was given to
   locking down one of the context numbers for the uncompressed profile
   (see [ROHC] section 5.1.2).

5.2.  Parameter selection

   For each of the ROHC channel parameters MAX_CID and MRRU, the value
   is the maximum of the respective values negotiated for the IPCP and
   IPv6CP instances, if any.

   The ROHC channel parameter FEEDBACK_FOR is set implicitly to the
   reverse direction on the same PPP link (see "Sharing Context
   Identifier Space" above).

   A number of parameters for ROHC must be set correctly for good
   compression on a specific link.  E.g., the parameters k_1, n_1, k_2,
   n_2 in section 5.3.2.2.3 of [ROHC] need to be set based on the error
   characteristics of the underlying links.  As PPP links are usually
   run with a strong error detection scheme [RFC1662], k_1 = n_1 = k_2 =
   n_2 = 1 is usually a good set of values.  (Note that in any case k
   values need to be set low enough relative to n values to allow for
   limited ability of the CRC to detect errors, i.e., the CRC will
   succeed for about 1/8 of the packets even in case of context damage,
   so k/n should be significantly less than 7/8.)

6.  Security Considerations

   Negotiation of the option defined here imposes no additional security
   considerations beyond those that otherwise apply to PPP [RFC1661].

   The security considerations of ROHC [ROHC] apply.

   The use of header compression can, in rare cases, cause the
   misdelivery of packets. If necessary, confidentiality of packet
   contents should be assured by encryption.

   Encryption applied at the IP layer (e.g., using IPSEC mechanisms)
   precludes header compression of the encrypted headers, though
   compression of the outer IP header and authentication/security
   headers is still possible as described in [ROHC].  For RTP packets,
   full header compression is possible if the RTP payload is encrypted
   by itself without encrypting the UDP or RTP headers, as described in
   [RFC1889].  This method is appropriate when the UDP and RTP header
   information need not be kept confidential.

6.

7.  IANA considerations

   The ROHC suboption identifier is a non-negative integer.  Following
   the policies outlined in [IANA-CONSIDERATIONS], the IANA policy for
   assigning new values for the suboption identifier shall be
   Specification Required: values and their meanings must be documented
   in an RFC or in some other permanent and readily available reference,
   in sufficient detail that interoperability between independent
   implementations is possible.  The range 0 to 127 is reserved for IETF
   standard-track specifications; the range 128 to 254 is available for
   other specifications that meet this requirement (such as
   Informational RFCs). The value 255 is reserved for future
   extensibility of the present specification.

   The following suboption identifiers are already allocated:

   Suboption   Document       Usage
   identifier

   1           RFCthis        Profiles

   [[ The PPP protocol identifier values for 00SS and 00LL are to be
   assigned by IANA before publication of this document.  As it is
   rather unlikely that ROHC will be used over links with highly
   populated ACCMs, this could start using the values reserved for
   inefficient transparency, e.g. 0003 for 00SS and 0005 for 00LL.  ]]

8.  Acknowledgments

   The present document borrows heavily from [RFC2509].

7.

9.  References

   [ROHC]      Carsten Bormann (ed.) et al., "RObust Header Compression
               (ROHC)",
               (ROHC): Framework and four profiles: RTP, UDP, ESP, and
               uncompressed", work in progress, November 2000 (draft-ietf-
               rohc-rtp-06.txt).

   [RFC2023] February 2001 (draft-
               ietf-rohc-rtp-09.txt).

   [RFC2472]   Haskin, E. and E. Allan, "IP Version 6 over PPP", RFC
               2023, October 1996.
               2472, December 1998.

   [RFC1144]   Jacobson, V., "Compressing TCP/IP Headers for Low- Speed
               Serial Links", RFC 1144, February 1990.

   [RFC1332]   McGregor, G., "The PPP Internet Protocol Control Protocol
               (IPCP)", RFC 1332, May 1992.

   [RFC1889]   Schulzrinne, H., Casner, S., Frederick, R. and V.
               Jacobson, "RTP: A Transport Protocol for real-time
               applications", RFC 1889, January 1996.

   [RFC1661]   Simpson, W., Ed., "The Point-To-Point Protocol (PPP)",
               STD 51, RFC 1661, July 1994.

   [RFC2686]   Bormann, C., "The Multi-Class Extension to Multi-Link
               PPP", RFC 2686, September 1999.

   [RFC2509]   M. Engan, S. Casner, C. Bormann, "IP Header Compression
               over PPP", RFC 2509, February 1999.

8.

10.  Authors' addresses

   Carsten Bormann
   Universitaet Bremen FB3 TZI
   Postfach 330440
   D-28334 Bremen, GERMANY
   cabo@tzi.org
   phone +49.421.218-7024
   fax +49.421.218-7000