Internet DRAFT - draft-degermark-rohc-initialization

draft-degermark-rohc-initialization









Network Working Group            Mikael Degermark /University of Arizona
INTERNET-DRAFT                                                       USA
Expires: Feb 2001                                        August 27, 2001





                      ROHC Initialization Headers

              <draft-degermark-rohc-initialization-00.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 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.

Abstract

   This is an individual contribution to the IETF ROHC WG.  The document
   proposes a format for the initialization headers that establish the
   static (and dynamic) part of ROHC context.  The method is intended to
   be general and extensible, and to deal well with IPv6 extension
   headers, headers used by Mobile IP, and IPSEC headers. All these
   headers must be dealt with according to the ROHC requirements, but
   are not handled by existing proposals.

   Comments should be sent to the ROHC WG, rohc@cdt.luth.se






Degermark                                                       [Page 1]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


   TABLE OF CONTENTS
      1.  Introduction..............................................3
      2.  Header formats ...........................................4
         2.1 Basic structure of initialization headers..............4
         2.2 Initialization of IPv6 header..........................6
         2.3 Initialization of IPv6 extension headers...............6
         2.3.1 Options..............................................6
         2.3.2 Hop-by-hop options header............................7
         2.3.3 Initialization of Routing Header.....................8
         2.3.4 Fragment Header......................................8
         2.3.5 Initialization of Destination Options Header.........8
         2.3.6 No Next Header.......................................8
         2.4 Authentication Header..................................9
         2.5 Encapsulating Security Payload Header..................9
         2.6 Initialization of UDP Header..........................10
         2.7 Initialization of IPv4 Header.........................11
         2.8 Minimal Encapsulation header..........................12
         2.9 Initialization of RTP header..........................13
      3. Conclusions...............................................15
      4. Author's Address..........................................15
      5. References................................................15






























Degermark                                                       [Page 2]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


   1.  Introduction

   The Robust header compression WG (ROHC WG) of the IETF is developing
   header compression schemes suitable for communication channels with
   high error rates and long roundtrip times.

   Before compression of a packet stream can start, the required context
   needs to be present at compressor and decompressor.

   Context can be established at the following conceptually distinct
   events:

      0) Specification - when the compression scheme is specified.

      1) Link establishment - when the link is established.  The
         capabilities of the compressor and decompressor may not be
         known until this time.

      2) Channel establishment - when the channel is established.  The
         number of streams that can be compressed in the channel may not
         be known until this time.

      3) Stream establishment - when a packet stream starts to flow.  A
         number of properties of a packet stream may not be known until
         this time.

   ROHC can deal with logically distinct dynamic channels between
   compressor and decompressor. The decompressor is assumed to know over
   which channel each frame arrives, and thus the context indication
   information can be reduced or eliminated (if a single stream is
   compressed over the channel).  In the case of a PPP link, 1) and 2)
   occurs simultaneously.

   This document assumes that for each kind of link (PPP, WCDMA, etc)
   there will be a document "ROHC over X" which details 0). Presumably
   this document will specify what capabilities compressor and
   decompressor can have. When the ROHC scheme is extended, this
   document will have to be updated.

   At link establishment time, 1), a negotiation will establish non-
   default capabilities of the decompressor and compressor. Examples of
   such capabilities can be "decompressor can do timer-based
   timestamps", "compressor can do timer-based timestamps",
   "decompressor can do TCP compression", "decompressor can deal with
   headers of size at most X", "compressor can do RTP compression".

   After channel extablishment, 2), parameters such as the size of the
   CID space must be known. This will have an impact on header formats.



Degermark                                                       [Page 3]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


   At stream establishment, 3), stream specific context such as the
   actual values of addresses, ports, etc, must be communicated to the
   decompressor. This proposal assumes that the static part of such
   information is passed in Initialization headers (INIT). These have
   earlier been known under the name Full Headers (e.g., in rfc2507) but
   this would be a mis-nomer as we here propose to send only static
   information that is not known a priori, and not the entire header.

   The core of this proposal is to use a notion of profiles, similar to
   that outlined in "Profiles and Parameters in ROHC" [draft-jonsson-
   rohc-profiles-00.txt], in INIT headers.  The profiles are more
   restricted, however.  Essentially a profile tells the decompressor
   which transport/application this stream carries, e.g., UDP/RTP with
   UDP checksum, UDP/RTP without checksum, TCP, etc. The profile does
   not say anything about IP version, whether there are extension
   headers present or whether there are tunneling headers present.

   All other header information is carried in the INIT header, which is
   a chain of subheaders. The scheme allows dynamic header fields to be
   sent either separately in a FO header or REFRESH header, or after the
   static fields in the initialization header.

2.  Header formats

2.1 Basic structure of Initialization headers

2.1.1 INIT header


       - - - - - - - -
      |      CID      |       0-2 octets
      +-+-+-+-+-+-+-+-+
      |1 1 1 1 0|V|Res|
      +-+-+-+-+-+-+-+-+
      |    Profile    |       1 octet
      +-+-+-+-+-+-+-+-+
      |    STATIC     |
      |               |
       - - - - - - - -
      |    DYNAMIC    |
      |               |
       - - - - - - - -

      V         V=0:  the outermost header is an IPv4 header
                V=1:  the outermost header is an IPv6 header

      Res       reserved. Must be 0.




Degermark                                                       [Page 4]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


      Profile   Indicates transport/application of this stream

      STATIC    A chain of Static parts

      DYNAMIC   A chain of Dynamic parts, as defined by the
                STATIC chain.


   2.1.2 REFRESH header


       - - - - - - - -
      |      CID      |       0-2 octets
      +-+-+-+-+-+-+-+-+
      |1 1 1 1 1|V|Res|
      +-+-+-+-+-+-+-+-+
      |    Profile    |       1 octet
      +-+-+-+-+-+-+-+-+
      |    DYNAMIC    |
      |               |
       - - - - - - - -

      V         V=0:  the outermost header is an IPv4 header
                V=1:  the outermost header is an IPv6 header

      Res       reserved. Must be 0.

      Profile   Indicates transport/application of this stream

      DYNAMIC   A chain of Dynamic parts





















Degermark                                                       [Page 5]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


2.2.  Initialization of IPv6 Header

   STATIC Part:
                                                      +-+-+-+-+-+-+-+-+
                                                      |Version| F.Lbl |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     2 LSBs of Flow Label      |  Next Header  |   Hop Limit   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                         Source Address                        +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                      Destination Address                      +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   DYNAMIC Part:

      Traffic Class

   Eliminated:

      Payload Length


2.3.  Initialization of IPv6 Extension Headers [IPv6, section 4]

   What extension headers are present and the relative order of them is
   not expected to change in a packet stream.  Whenever there is a
   change, an INIT header must be sent.

2.3.1.  Options [IPv6, section 4.2]

   The contents of Hop-by-hop Options and Destination Options extension
   headers are encoded with TLV "options" (see [IPv6]):

         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
         |  Option Type  |  Opt Data Len |  Option Data
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -



Degermark                                                       [Page 6]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


   Option Type and Opt Data Len fields are assumed to be fixed for a
   given packet stream, so they are classified as STATIC.  The Option
   data is DYNAMIC unless specified otherwise below.

   Padding

      Pad1 option

         +-+-+-+-+-+-+-+-+
         |       0       |
         +-+-+-+-+-+-+-+-+

         Entire option is STATIC.

      PadN option

         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
         |       1       |  Opt Data Len |  Option Data
         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -

         All fields are STATIC.

2.3.2.  Hop-by-Hop Options Header [IPv6, section 4.3]


   STATIC Part:

      Next Header, Hdr Ext Len, Option Type, Opt Data Len, Padding.

   DYNAMIC Part:

      Option Data

   Eliminated:

      Empty.















Degermark                                                       [Page 7]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


2.3.3. Initialization of Routing Header [IPv6, section 4.4]


   STATIC Part:

      Entire routing header.

   DYNAMIC Part:

      Empty.

2.3.4. Fragment Header [IPv6, section 4.5]

   Fragment headers are not compressed by ROHC. Headers after a Fragment
   Header MUST NOT be compressed.

2.3.5. Initialization of Destination Options Header [IPv6, section 4.6]

   STATIC Part:

      Next Header, Hdr Ext Len, Option Type, Option Ext Len, Padding.

   DYNAMIC Part:

      Option Data.

   Eliminated:

      Nothing.

2.3.6.  No Next Header [IPv6, section 4.7]

   Covered by rules for IPv6 Header Extensions (2.3).


















Degermark                                                       [Page 8]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


2.4.  Authentication Header [RFC-1826, section 3.2]

   STATIC Part:

       1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
      +---------------+---------------+---------------+---------------+
      | Next Header   | Length        |           RESERVED            |
      +---------------+---------------+---------------+---------------+
      |                Security Parameters Index (SPI)                |
      +---------------+---------------+---------------+---------------+

   DYNAMIC Part:

      +---------------+---------------+---------------+---------------+
      |                                                               |
      +     Authentication Data (variable number of 32-bit words)     |
      |                                                               |
      +---------------+---------------+---------------+---------------+

   Eliminated:

      Empty.


2.5.  Encapsulating Security Payload Header [RFC-1827, section 3.1]


   STATIC Part:

      +---------------+---------------+---------------+---------------+
      |        Security Association Identifier (SPI), 32 bits         |
      +===============+===============+===============+===============+

   DYNAMIC Part:

      +===============+===============+===============+===============+
      |            Opaque Transform Data, variable length             |
      +---------------+---------------+---------------+---------------+

   Eliminated:

      Empty









Degermark                                                       [Page 9]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


2.6. Initialization of UDP Header [RFC-768].


   STATIC Part:

      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |          Source Port          |       Destination Port        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   DYNAMIC Part:

      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           Checksum            |  If Checksum != 0
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      The Profile determines if the Checksum is present.

   Eliminated:

      Length

   The Length field of the UDP header MUST match the Length field(s) of
   preceding subheaders, i.e, there must not be any padding after the
   UDP payload that is covered by the IP Length.



























Degermark                                                      [Page 10]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


2.7.  Initialization of IPv4 header [RFC-791, section 3.1]


   STATIC Part:

       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
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |Version|Flags  |  Time to Live |    Protocol   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Source Address                          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Destination Address                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Version could be eliminated but is kept in order to maintain
      byte alignment. Some Flags can be predicted, but it is simpler to
      keep the entire Flag field.

      Note: bits 6 and 7 of the Type of Service field may change often.
      There should be an inexpensive way to pass at least bit 7 in the
      compressed TCP header.


   DYNAMIC Part:

      Type of Service, Identification

   Eliminated:

      IHL               (must be 5)
      Total Length      (inferred in decompressed packets))
      Fragment Offset   (must be 0)
      Header Checksum   (inferred in decompressed packets)
      Options, Padding  (must not be present)
















Degermark                                                      [Page 11]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


2.8.  Minimal Encapsulation header [RFC-2004, section 3.1]


   STATIC Part:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   Protocol    |S|  reserved   |        Header Checksum        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                 Original Destination Address                  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      :            (if present) Original Source Address               :
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   DYNAMIC Part:

      Empty.

   Eliminated:

      Nothing.

   This header is likely to be used by Mobile IP.



























Degermark                                                      [Page 12]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


2.9. Initialization of RTP Header


       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |V=2|P|X|  CC   |M|     PT      |       sequence number         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           timestamp                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           synchronization source (SSRC) identifier            |
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
      |            contributing source (CSRC) identifiers             |
      |                             ....                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   STATIC Part:

      P, X, CC, PT, SSRC, CSRC identifiers.

       0 1 2 3 4 5 6 7
      +-+-+-+-+-+-+-+-+
      |V=2|P|X|  CC   |
      +-+-+-+-+-+-+-+-+
      |M|     PT      |
      +-+-+-+-+-+-+-+-+
      |               |
      +               +
      |               |
      +     SSRC      +
      |               |
      +               +
      |               |
      +-+-+-+-+-+-+-+-+
      :               :
      :   CSRC ids    :
      :               :
      +-+-+-+-+-+-+-+-+













Degermark                                                      [Page 13]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


   DYNAMIC Part:

      M, sequence number, timestamp, timestamp delta.

       0 1 2 3 4 5 6 7
      +-+-+-+-+-+-+-+-+
      |   sequence    |
      +               +
      |    number     |
      +-+-+-+-+-+-+-+-+
      |               |
      +               +
      |               |
      +  timestamp    +
      |               |
      +               +
      |               |
      +-+-+-+-+-+-+-+-+
      |M|  timestamp  |
      +-+             +
      |      delta    |
      +-+-+-+-+-+-+-+-+


   Eliminated:

      Nothing.
























Degermark                                                      [Page 14]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


3.  Conclusions

   The main difference between this proposal and draft-jonsson-rohc-
   profiles-00, is that here we propose to maintain the header structure
   as a chain of subheaders for both the static and dynamic parts of the
   header.  As the header structure is maintained in this chain, new
   header formats need not be invented for each possible combination of
   subheaders. This should make the scheme easier to extend, as new
   header formats need not be invented for each new profile.

   A problem here is that it is not possible to ensure that all data is
   naturally aligned for all subheader combinations. This proposal is
   made under the assumption that it is better to keep the specification
   size small than to strive for optimal implementation efficiency.

   I note that it is possible to limit what subheaders can be part of a
   header. If a decompressor cannot handle for example IPSEC headers or
   tunneling, that could be established at link or channel establishment
   time.  This approach might be preferable to having such subheader
   limitations being communicated by profiles. No matter which way this
   is dealt with, the number of possible limitations should be kept
   small, as an abundance of options becomes difficult to test.

   INIT and REFRESH headers may also need to carry information regarding
   switching to the optimistic or reliable mode. It is not clear (to me)
   at this moment how much information is needed. However, two bits are
   available in the initial part of both headers.

4.  Author's Address

     Mikael Degermark                       Tel: +1 520 621-3498
     Department of Computer Science               Fax: +1 520 621-4246
     The University of Arizona
     PO Box 210077                          EMail: micke@cs.arizona.edu
     Tucson, AZ 85721
     USA

5.  References
   [RFC-768]   J. Postel, User Datagram Protocol, RFC 761, August 1980.

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

   [RFC-793]   J. Postel, Transmission Control Protocol, RFC 793,
               September 1981.

   [RFC-1826]  R. Atkinson, IP Authentication Header, RFC 1826, August
               1995.




Degermark                                                      [Page 15]




INTERNET-DRAFT        ROHC Initialization Headers           Aug 27, 2000


   [RFC-1827]  R. Atkinson, IP Encapsulating Security Protocol (ESP),
               RFC 1827, August 1995.

   [RFC-1828]  Metzger, W. Simpson, IP Authentication using Keyed MD5,
               RFC 1828, August 1995.

   [IPv6]      S. Deering, R. Hinden, Internet Protocol, Version 6
               (IPv6) Specification, RFC 1883, December 1995.

   [ICMPv6]    A. Conta, S. Deering, Internet Control Message Protocol
               (ICMPv6) for the Internet Protocol Version 6 (IPv6), RFC
               1885, December 1995.

   [RFC-2004]  C. Perkins, Minimal Encapsulation within IP, RFC 2004,
               October 1996.





This draft expires February 27, 2001.






























Degermark                                                      [Page 16]