Robust Header Compression (RoHC) WG                    Akihiro Miyazaki
Internet Draft                                        Hideaki Fukushima
Document: <draft-ietf-rohc-rtp-kw-00.txt>                 Thomas Wiebke
May 23th, 2000                                           Rolf Hakenberg
Expires: November 23th, 2000                         Carsten Burmeister

                                                             Matsushita


            Robust Header Compression using Keyword-Packets


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


1. Abstract

   Header Compression has proven to be essential for using RTP over
   bandwidth limited links. While all of these links have only a
   limited bandwidth, some are additional extremely unreliable, e.g.
   wireless links. It is shown, that existing Header Compression
   schemes, that work well over reliable links, perform very bad, if
   many errors occur.

   This led to the development of a new robust Header Compression
   mechanism, that is introduced in this paper. The core idea is the
   definition of update packets, which are referenced by non-update
   packets. This reduces the interdependency between the packets and
   with this the amount of discarded packets at the decompressor.

   The Header Compression scheme, the used packet formats and the
   decompression algorithm, are described in detail.





Miyazaki             Expires November 23th, 2000                    1

 Header Compression using Keyword Packets                 May 23th, 2000




   Table of Contents

   1.  Abstract
   2.  Conventions used in this document
   3.  Introduction
   4.  The concept of keyword header compression
   4.1   Keyword field, update and non-update packet
   4.2   The use of LSB encoding
   4.3   Refreshing the context by sending update packets
   4.3.1   Minimizing the loss probability of update packets
   4.3.2   Restrict the use of new keywords
   4.4   Loss of update packets
   4.5   Adaptation to the environment
   5.  Profile 1, optimized for sequential IPv4 Identification
   5.1   Full Header packet
   5.2   Basic-Compressed packet
   5.2.1   Basic header
   5.2.2   Changing Field extension
   5.2.3   Default-Delta extension
   5.3   One-Byte-Header or Two-Byte-Header packet
   5.4   Context State packet
   6.  Profile 2, optimized for non-sequential IPv4 Identification
   6.1   Full Header packet
   6.2   Basic-Compressed packet
   6.2.1   Basic header
   6.2.2   Changing Field extension
   6.2.3   Default-Delta extension
   6.3   Two-Byte-Header or Three-Byte-Header packet
   6.4   Context State packet
   7.  Conclusions
   8.  Security considerations
   9.  Intellectual property consideration
   10.  Acknowledgements
   11.  References
   12.  Author's addresses

   Document History

   00  March 01, 2000:   First release.
   01  May 01, 2000:     Two different profiles (sets of packet types)
                         are defined, optimized for different
                         environments. Least Significant Bit (LSB)
                         encoding is used. Some changes in the
                         algorithm.
   00  May 23, 2000:     Submitted as a working group document. Changes
                         include some clarifications of the concept of
                         update packets and their use (Section 4).






Miyazaki             Expires November 23th, 2000                    2

 Header Compression using Keyword Packets                 May 23th, 2000




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 [2].


3. Introduction

   The increasing use of real-time services over the Internet, such as
   voice or video applications, led to a strong demand for a protocol
   to be used to transport data real-time or nearly real-time. The
   Real-time Transport Protocol (RTP) provides the means for such
   services. After the publication as an RFC, more and more
   applications were developed to use RTP.

   Another important development in the last years has been the user's
   demand for mobility, i.e. accessing many services, including video
   and data applications, anytime and anywhere.

   While RTP is commonly used in fixed networks, which is the
   environment it was developed for, using it over mobile networks
   needs some further considerations. A problem that occurs is the
   limited bandwidth in the mobile channel. There is a need to use this
   bandwidth very efficiently to satisfy enough users. Enough users per
   cell are very important to be economically feasible.

   Each of the protocols RTP, UDP and IP adds its own header, which
   sums up to 40 byte in most of the cases, i.e. 12 bytes RTP header, 8
   bytes UDP header and 20 bytes IP version 4 header (If IP version 6
   is used, the amount of overhead is increased by another 20 bytes,
   because of the extended address format).

   To solve the problem of the large amount of overhead header
   compression mechanisms have been developed. CRTP is commonly used
   over reliable links. It compresses the header to a minimum of 2
   bytes. While this works fine over reliable channels, it induces many
   additional errors, when used over unreliable channels. This is
   because the first or second order differences to the previous
   packet, which are efficiently coded, are transmitted. If a packet
   gets lost, due to bit errors over the wireless channel, the
   compressed header of the next packet cannot be decompressed. The
   decompressor must send a request for a packet with a decompressed
   header to resynchronize, but in the meanwhile all received
   compressed packets have to be discarded. This effect is shown in
   detail in [8].

   In this paper we present a header compression mechanism that is more
   robust against packet loss and hence performs better over unreliable
   channels.



Miyazaki             Expires November 23th, 2000                    3

 Header Compression using Keyword Packets                 May 23th, 2000




4. The concept of keyword header compression

   This section describes the concept of the keyword header compression
   proposal and how this concept leads to a better performance, when
   used over unreliable links.


4.1 Keyword field, update and non-update packet

   The problem of CRTP is its interdependency between all packets. If
   one packet gets lost, all following packets, until the next update,
   are lost. This is due to the fact that every packet, that is sent by
   the compressor, updates the context. Hence the context state at the
   decompressor will become invalid, if one of these packets is lost.

   A possibility to solve this problem is to update the context only
   from time to time. However the context that is used has to be
   communicated and it has to be ensured that the decompressor received
   the context correctly.

   The main idea is the definition of a keyword field. The packets with
   the same keyword field value, reference the same context state. The
   context state to be used is defined by sending a update packet, i.e.
   a packet that has a new keyword value and which contents update the
   context to the new context state. The following packets are called
   non-update packets, because they do not update the context.

   Hence, if a non-update packet gets lost, the receiver is able to
   decompress the following packets.


4.2 The use of LSB encoding

   The packets that follow an update packet, are encoded by
   transmitting the Least Significant Bits (LSB) of regular changing
   fields (e.g. RTP Sequence Number). In some cases it might not be
   necessary to transmit the regular changing fields at all, e.g. if
   the timestamp can be calculated from the sequence number it is not
   transmitted. The packets also contain the original values of fields
   that did change since the last update, but are usually assumed to be
   constant (e.g. RTP Marker bit, RTP Payload Type).

   The number of LSB to be used, is defined by the value itself. The
   compressor has to ensure that the decompressor is able to decode the
   value correctly. The decoding is done by simply replacing the
   transmitted LSB with the LSB of the context value that is
   referenced.






Miyazaki             Expires November 23th, 2000                    4

 Header Compression using Keyword Packets                 May 23th, 2000




4.3 Refreshing the context by sending update packets

   From time to time it will be necessary to update the context. There
   are mainly two reasons to do so.

   First, while compressing and transmitting the compressed non-update
   packets, the LSB encoded values may increase and need more coded
   bits in the compressed header. If the header size exceeds a certain
   threshold, a new keyword should be sent in an update packet. This
   enables the compressor to use less LSB in the following non-update
   packets. E.g. after a while the number of LSB to encode the RTP
   sequence number will grow. If this value exceeds 6 bits, it might be
   useful to send an update packet, because the information would not
   fit into an one-byte header packet any more. After the successful
   update the compressor is able to send one-byte header packets again.

   Second, if a value had changed and seems to be stable now, a new
   update packet should be sent. Otherwise the changed value would have
   to be transmitted in all following packets. E.g. after a silent
   period, the timestamp changes by another value than the default
   difference timestamp. From this on it is not possible for the
   decompressor to calculate the timestamp from the RTP sequence
   number. Hence the compressor either sends the LSB of the timestamp
   in every packet, or updates the context, to enable the decompressor
   to calculate the timestamp from the RTP sequence number again.


4.3.1 Minimizing the loss probability of update packets

   Because every packet with a new keyword value, which is not an
   update packet must be discarded, the loss probability of the context
   should be minimized. It might be useful to send several update
   packets with the same keyword value to establish a new context state
   for both sides. The LSB encoded values are transmitted as usual in
   those packets, while one has to take care that the original values
   of the fields that changed irregularly are transmitted in every of
   those update packets. The use of this mechanism reduces the context
   state loss probability, because only one of those update packets has
   to be received correctly.


4.3.2 Restrict the use of new keywords

   The number of different keywords is limited by the number of bits
   used for the keyword field. In this paper we use only one bit, which
   leads to two different keywords. To ensure that consecutive packet
   loss of a few packets does not lead to wrong decompression, the use
   of new keyword values must be limited.





Miyazaki             Expires November 23th, 2000                    5

 Header Compression using Keyword Packets                 May 23th, 2000




   It is only allowed to send a new keyword in an update packet, if N
   non-update packets were sent since the last keyword change. This
   restriction is possible, because one never is forced to send an
   update packet. It is always possible to send all information in a
   non-update packet. Maybe there will be some overhead during this
   period, because all changes have to be transmitted in every packet,
   but if the keywords are used properly, this should only very seldom
   happen.

   To use the keyword properly means that it is only changed if the
   compressor is rather sure that the values will remain constant for
   the next packets. An example of a non-properly used keyword change
   is the definition of a new default delta timestamp value (in an
   update packet), just because it changed for one packet. This might
   be due to a silent period and might change back to the original
   value in the next packet again.

   If the compressor follows this restriction, 2*N consecutive packets
   have to be lost, before the decompressor would not detect the loss
   of the update packet. To avoid even this situation a time-out might
   be applied, after which the decompressor will only accept new update
   packets or Full Header packets.


4.4 Loss of update packets

   Only if the update packets are transmitted correctly, the receiver
   is able to decompress any incoming compressed header. Therefore if
   the update packets are transmitted multiple times, the probability
   that none of this packets is received, is very low. However, packet
   loss may occur while transmitting update packets. In case none of
   the update packets was received and the decompressor received a
   packet with a new keyword that is not an update packet, it must send
   a message to the compressor, to ask for a packet with a header that
   reestablishes its context. This is always an update packet or a Full
   Header packet.


4.5 Adaptation to the environment

   The compressor has a lot of freedom in the compression algorithm.
   Even though the use of new keywords is restricted, the compressor
   decides when the keywords should be changed. Two strategies are
   possible, which are a tradeoff between compression efficiency and
   robustness against packet loss. One possibility is to send a new
   keyword as often as needed and possible. E.g. the keyword is
   changed, if the header size exceeds 1 byte. Another possibility is
   to sent new keywords less frequent. While on the one hand the
   compression efficiency might be better in the first case, the second
   possibility is more robust and less susceptible for packet loss.



Miyazaki             Expires November 23th, 2000                    6

 Header Compression using Keyword Packets                 May 23th, 2000





   Using this freedom the compressor may adapt the compression to the
   environment (i.e. the experienced BER or RTT). Another parameter of
   the environment that should be taken into consideration is the
   assignment of the IPv4 Identification value. While it is possible to
   have a totally random IP Identification, it might also be possible
   that it is increased for every packet by a fixed value (sequential
   IP ID). Different sets of packet types, used for different
   environments might lead to a better performance. This paper defines
   two different packet type sets. The packet formats are optimized for
   different environments. If the IP ID is assigned sequentially,
   increasing by a fixed value for each packet, the header compression
   mechanism should take advantage of it. Anyway, because we cannot
   assume this behavior, another set of packet formats is defined,
   which is optimized for non sequential IPv4 Identification values.

   The two sets of packet formats are called profiles in the remainder
   of this document. How it is decided and negotiated, which profile to
   use is not scope of this document. It should only be shown, that the
   differentiation between these environments might make sense.


5. Profile 1, optimized for sequential IPv4 Identification

   This section shows five different packets that are used to transmit
   the data and signal errors from the receiver to the sender. The
   packet formats are optimised for the use in an environment, where
   the IPv4 Identification is assigned sequentially for the compressed
   packet stream. The format of the packets is described and it is
   explained in detail how the decompressor is able to regenerate the
   complete header from the given information. The exact compression
   behaviour is implementation specific, but it has to be ensured, that
   any decompressor is able to regenerate the complete header in the
   described way.


5.1 Full Header packet

   The Full Header packet is sent at the beginning of the session to
   establish a valid context. It is only sent another time if requested
   by the receiver or a severe error occurred. The receiver must
   request a Full Header packet only if the initial packet was lost, or
   a severe error occurred, that cannot be solved by a Compressed
   Packet.

   To ensure the correct reception of the fields that are only
   transmitted in this packet type, it might be useful to use this
   packet type for several succeeding packets. The next packet type to
   use is always an update packet, which contains a new keyword. The
   decompressor will discard any other received packet and sent a



Miyazaki             Expires November 23th, 2000                    7

 Header Compression using Keyword Packets                 May 23th, 2000




   context state feedback, until it receives an update packet to
   establish a valid context (the keyword is part of the context).

   The format of this packet's header is quite similar to the original
   IP/UDP/RTP header. However, as described in other header compression
   papers, such as CRTP [7], the length fields of the IP and UDP
   packets are redundant. They are usually signalled by the link layer.
   This enables us to use these fields to signal the header compression
   specific session context identifier (CID)as follows:


   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |C-L|                           |   First length field
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     (CID)     |     (CID)     |   Second length field
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   C-L (CID Length):
     00 û no CID
     01 - 8 bit
     10 - 16 bit

   The selection of 0, 8 or 16 bit CIDs enables the compressor to set-
   up enough sessions while keeping the overhead to a minimum.

   Packet type identification might not be done by the link layer. In
   this case another byte is added before the original full header:

   +-+-+-+-+-+-+-+-+
   |1|1|1|0|-|-|-|-|    Packet Type Identification
   +-+-+-+-+-+-+-+-+
   :  RTP/UDP/IP   :
   :    packet     :


















Miyazaki             Expires November 23th, 2000                    8

 Header Compression using Keyword Packets                 May 23th, 2000




5.2 Basic-Compressed packet

   The header of the Basic-Compressed packet is divided into a basic
   header that is transmitted for every packet of this type and header
   extensions that are only used if necessary. Update and non-update
   packets can be sent in Basic-Compressed packet format. The type is
   identified by the new keyword flag, which is set for update packets.

5.2.1 Basic header

   The basic header's format is as follows:
     0   1   2   3   4   5   6   7
   +...+...+...+...+...+...+...+...+
   :      MSB of Session CID       :  if 16 bit CID is used
   +...+...+...+...+...+...+...+...+
   :      LSB of Session CID       :  if 16 or 8 bit CID is used
   +---+---+---+---+---+---+---+---+
   | 1 | 1 | 0 |KW |NKW| M | E | S |
   +---+---+---+---+---+---+---+---+
   :         LSB of RTP SN         :
   +...+...+...+...+...+...+...+...+
   :         MSB of RTP SN         :  if S==1
   +...+...+...+...+...+...+...+...+
   :                               :
   :           Extension(s)        :  if E==1
   :                               :
   +...+...+...+...+...+...+...+...+
   :                               :
   +           UDP Checksum        +  if non-zero in context
   :                               :
   +---+---+---+---+---+---+---+---+
   |           RTP Data            |
   :                               :
   CID:
   The first two bytes can be used for the session CIDs.

   KW (Keyword):
   The Keyword field must be present in every packet. To detect loss of
   update packets, it must be changed at each renewal.

   NKW (New Keyword Indication):
   If this bit is set, the compressor defines this packet as an update
   packet. The context state after decompressing this packet is stored
   and referenced in the following packets. Several successive update
   packets should be sent, each containing the relevant information, to
   ensure the reception at the decompressor.


   M (RTP Marker):
   The M-bit represents the original RTP Marker.



Miyazaki             Expires November 23th, 2000                    9

 Header Compression using Keyword Packets                 May 23th, 2000




   E (Extension):
   This bit indicates that at least one extension is used. The
   different possible extensions, that are used to transmit information
   about irregular changes in the header fields, are described in
   detail in the following sections.

   S (RTP Sequence Number Indication):
   This bit indicates if the LSB of the RTP Sequence Number or the
   original value follows directly.
      S=0: 8 bit LSB RTP Sequence Number
      S=1: 16 bit RTP Sequence Number

   UDP Checksum:
   If the UDP Checksum is enabled, this field contains the 16-bit
   Checksum, else it is not present.


5.2.2 Changing Field Extension

   This extension is sent every time some header fields changed in an
   irregular way and cannot be calculated from the RTP Sequence Number.
   This might be the case e.g. for the RTP Timestamp after a silent
   period, or for the IPv4 Time To Live value. If the NKW-bit is set
   (i.e. the packet is an update packet), the fields transmitted in
   this extension define the new context state to be referenced by the
   following packets. Several successive update packets should be sent,
   each containing the relevant fields, to ensure the reception at the
   decompressor.

   The format of the Changing Field Extension is defined below:

     0   1   2   3   4   5   6   7
   +---+---+---+---+---+---+---+---+
   | 0 |  ID   |TS |TOS|TTL|PT | E |
   +---+---+---+---+---+---+---+---+
   .                               .
   .   (LSB) IPv4 Identification   .  if ID > 0
   .                               .
   +...+...+...+...+...+...+...+...+
   .                               .
   .      (LSB) RTP Timestamp      .  if TS == 1
   .                               .
   +...+...+...+...+...+...+...+...+
   :      IPv4 Type of Service     :  if TOS == 1
   +...+...+...+...+...+...+...+...+
   :      IPv4 Time To Live        :  if TTL == 1
   +...+...+...+...+...+...+...+...+
   :      RTP Payload Type     : - :  if PT == 1
   +...+...+...+...+...+...+...+...+




Miyazaki             Expires November 23th, 2000                   10

 Header Compression using Keyword Packets                 May 23th, 2000




   The first bit (0) indicates the extension that is used.
   ID (IPv4 Identification Indication):
   This bit indicates if the original IPv4 Indication value is
   transmitted in the IPv4 Identification field or the LSB of the
   Identification or nothing.
      ID=0: No IPv4 Identification
      ID=1: 8 bit LSB IPv4 Identification
      ID=2: 16 bit IPv4 Identification
      ID=3: not used

   TS (RTP Timestamp Indication):
   This bit indicates if the RTP Timestamp is transmitted. If it is set
   to one, one of the following fields are used in the (LSB) RTP
   Timestamp field:

      +---+---+---+---+---+---+---+---+
      | 0 |                           |
      +---+  15 LSB of RTP Timestamp  +
      |                               |
      +---+---+---+---+---+---+---+---+

      +---+---+---+---+---+---+---+---+
      | 1 | 0 |                       |
      +---+---+                       +
      |                               |
      +      22 LSB of RTP Timestamp  +
      |                               |
      +---+---+---+---+---+---+---+---+

      +---+---+---+---+---+---+---+---+
      | 1 | 1 | 0 |                   |
      +---+---+---+                   +
      |                               |
      +      29 LSB of RTP Timestamp  +
      |                               |
      +                               +
      |                               |
      +---+---+---+---+---+---+---+---+

      +---+---+---+---+---+---+---+---+
      | 1 | 1 | 1 | 0 | -   -   -   - |
      +---+---+---+---+---+---+---+---+
      |                               |
      +                               +
      |                               |
      +        RTP Timestamp          +
      |                               |
      +                               +
      |                               |
      +---+---+---+---+---+---+---+---+



Miyazaki             Expires November 23th, 2000                   11

 Header Compression using Keyword Packets                 May 23th, 2000




   TOS (IPv4 Type Of Service Indication):
   This bit indicates the transmission of the IPv4 Type Of Service
   value in the IPv4 Type Of Service field.

   TTL (IPv4 Time To Live Indication):
   This bit indicates the transmission of the IPv4 Time To Live value
   in the IPv4 Time To Live field.

   PT (RTP Payload Type Indication):
   This bit indicates the transmission of the RTP Payload Type value in
   the RTP Payload Type field.

   E (Extension):
   This bit indicates that another extension follows this one.


5.2.3 Default Delta Extension

   The compressor will follow the changes in the RTP Timestamp values
   and the IPv4 Identification values, relative to the changes in the
   RTP Sequence Number values. To do this a delta value according to
   the following equation might be used:

   dTS = (TS(n)ûTS(n-1)) / (SN(n)ûSN(n-1)), with

      dTS     : delta Timestamp
      TS(n)   : Timestamp of current packet
      TS(n-1) : Timestamp of previous packet
      SN(n)   : Sequence Number of current packet
      SN(n-1) : Sequence Number of previous packet

   If the compressor detects that for several packets the delta
   timestamp or delta identification value is the same, this delta
   value can be used to calculate the timestamp or identification from
   the sequence number. To do so, the decompressor has to be informed
   about this default delta value. The compressor uses this extension
   to signal default delta timestamp (ddTS) or default delta
   identification (ddID) values to the decompressor. This extension
   should be sent in update packets only. If it is used, a change
   extension, containing the timestamp or respectively the
   identification field must be sent as well.

   The format of the Default Delta Extension is given below:










Miyazaki             Expires November 23th, 2000                   12

 Header Compression using Keyword Packets                 May 23th, 2000




     0   1   2   3   4   5   6   7
   +---+---+---+---+---+---+---+---+
   | 1 | 0 | - | - | ddTL  | ddIDL |
   +---+---+---+---+---+---+---+---+
   :              ddTS             :   if ddTL > 0
   +...+...+...+...+...+...+...+...+
   :              ddTS             :   if ddTL > 1
   +...+...+...+...+...+...+...+...+
   :              ddTS             :   if ddTL > 2
   +...+...+...+...+...+...+...+...+
   :              ddID             :   if ddIDL > 0
   +...+...+...+...+...+...+...+...+
   :              ddID             :   if ddIDL > 1
   +...+...+...+...+...+...+...+...+

   The first four bits identify this extension.

   ddTL (default delta Timestamp Length):
   This field indicates the length of the default delta Timestamp
   field:
      ddTL=0: no default delta Timestamp field present
      ddTL=1: 1 byte
      ddTL=2: 2 byte
      ddTL=3: 3 byte

   ddIDL (default delta Identification Length):
   This field indicates the length of the default delta Identification
   field:
      ddIDL=0: no default delta Identification field present
      ddIDL=1: 1 byte
      ddIDL=2: 2 byte
      ddIDL=3: not used


5.3 One-Byte-Header or Two-Byte-Header packet

   Packets of these two types are always non-update packets. They
   reference the last update packet and carry the same keyword value.

   If the compressor communicated the default delta values to the
   decompressor and all changes are regular, the decompressor should be
   able to recalculate the identification and timestamp value from the
   sequence number. Hence it is not necessary to transmit these values
   in all packets.

   The One-Byte-Header or Two-Bytes-Header packets cannot be used if
   other fields than the sequence number, timestamp and identification
   changed. The timestamp and identification also have to change
   according to the following equations:




Miyazaki             Expires November 23th, 2000                   13

 Header Compression using Keyword Packets                 May 23th, 2000




   TS(n) = TS(n-1) + (SN(n) û SN(n-1)) * ddTS
   ID(n) = ID(n-1) + (SN(n) û SN(n-1)) * ddID

      ddTS    : default delta Timestamp
      ddID    : default delta Identification
      TS(n)   : Timestamp of current packet
      TS(n-1) : Timestamp of previous packet
      SN(n)   : Sequence Number of current packet
      SN(n-1) : Sequence Number of previous packet
      ID(n)   : Identification of current packet
      ID(n-1) : Identification of previous packet

   In this state the compressor might use the One-Byte-Header or Two-
   Byte-Header packet. These packets contain only the LSB of the RTP
   Sequence Number and the keyword, which is enough information for the
   decompressor to regenerate the original header.

   The packet format for the One-Byte-Header packet is given below:

     0   1   2   3   4   5   6   7
   +...+...+...+...+...+...+...+...+
   :      MSB of Session CID       :  if 16 bit CID is used
   +...+...+...+...+...+...+...+...+
   :      LSB of Session CID       :  if 16 or 8 bit CID is used
   +---+---+---+---+---+---+---+---+
   | 0 |KW |LSB RTP Sequence Number|
   +---+---+---+---+---+---+---+---+

   The packet format for the Two-Byte-Header packet is given below:

     0   1   2   3   4   5   6   7
   +...+...+...+...+...+...+...+...+
   :      MSB of Session CID       :  if 16 bit CID is used
   +...+...+...+...+...+...+...+...+
   :      LSB of Session CID       :  if 16 or 8 bit CID is used
   +---+---+---+---+---+---+---+---+
   | 1 | 0 |KW |                   |
   +---+---+---+
   |      LSB RTP Sequence Number  |
   +---+---+---+---+---+---+---+---+

   The decision which of these packets is to be used should be done
   according the context RTP sequence number. The not transmitted MSB
   of the RTP sequence number must not change.


5.4 Context State packet

   This header compression proposal is aimed to perform good, even if
   used over an unreliable channel. Hence bit errors can occur quite



Miyazaki             Expires November 23th, 2000                   14

 Header Compression using Keyword Packets                 May 23th, 2000




   frequently and packets will get lost. If the lost packet was a non-
   update packet, this does not effect the decompressor at all, but
   reception of a non-update packet with a new keyword, without
   receiving an corresponding update packet invalidates the
   decompressor's context. From this moment on any compressed packet,
   even if it was received correctly, cannot be decompressed, until the
   context is updated correctly again.

   To minimize the probability of this situation, several successive
   update packets should be sent (with the same keyword). But even all
   of these packets might get lost. Hence a mechanism is needed to
   inform the compressor about a lost context, to request an update
   packet.

   To request a context update, the decompressor must send immediately
   after detecting an invalid context, a Context State packet. This
   packet contains the last correctly received keyword and RTP Sequence
   Number. The compressor knows at reception of such a Context State
   packet, what information it has to send in the update extension, to
   update the decompressor's context correctly.

   Another error, that could occur, is the loss of the first packet,
   i.e. the Full Header packet. Since most of the header information,
   e.g. addresses and ports, are transmitted only in this packet, it is
   essential for the decompressor to establish a valid context to
   receive this packet. If the decompressor receives a Compressed
   packet, with a new session CID, that was not initialized, by a Full
   Header packet, this Full Header packet must have been lost. In this
   case the decompressor must request a new Full Header packet, by the
   means of the Context State packet.

   The format of the Context State packet is as follows:

   +...+...+...+...+...+...+...+...+
   :      MSB of Session CID       :  if 16 bit CID is used
   +...+...+...+...+...+...+...+...+
   :      LSB of Session CID       :  if 8 or 12 bit CID is used
   +---+---+---+---+---+---+---+---+
   |FHL|KW |                       |
   +---+---+---+---+---+---+---+---+
   :                               :
   +      RTP Sequence Number      +  if FHL == 0
   :                               :
   +...+...+...+...+...+...+...+...+

   CID:
   The first two bytes can be used for the session CID.






Miyazaki             Expires November 23th, 2000                   15

 Header Compression using Keyword Packets                 May 23th, 2000




   FHL (Full Header Lost):
   If this bit is set to one, the first Full Header packet was lost, no
   context was established and a new Full Header packet is requested.
   If it is set to zero a context update is required and the RTP
   Sequence Number of the last correctly decompressed packet is
   transmitted as well.


6. Profile 2, optimized for non-sequential IPv4 Identification

   This section shows five different packets that are used to transmit
   the data from the sender to the receiver and signal errors from the
   receiver to the sender. The packet formats are optimised for the use
   in an environment, where the IPv4 Identification is not assigned
   strictly sequentially for the compressed packet stream. The
   identification value is expected to increase by a small random
   number (e.g. smaller than 64). The format of the packets is
   described and it is explained in detail how the decompressor is able
   to regenerate the complete header from the given information. The
   exact compression behaviour is implementation specific, but it has
   to be ensured, that any decompressor is able to regenerate the
   complete header in the described way.

6.1 Full Header packet

   The Full Header packet is sent at the beginning of the session to
   establish a valid context. It is used exactly as in profile 1 and
   has the same format (see section 5.1 for details).

6.2 Basic-Compressed packet

   The header of the Basic-Compressed packet is divided into a basic
   header that is transmitted for every packet of this type and header
   extensions that are only used if necessary. As described for the
   previous profile, this packet tyoe can be used for update packets
   (new-keyword flag set to one) or non-update packets.

6.2.1 Basic header

   The basic header's format is as follows:













Miyazaki             Expires November 23th, 2000                   16

 Header Compression using Keyword Packets                 May 23th, 2000




     0   1   2   3   4   5   6   7
   +...+...+...+...+...+...+...+...+
   :      MSB of Session CID       :  if 16 bit CID is used
   +...+...+...+...+...+...+...+...+
   :      LSB of Session CID       :  if 16 or 8 bit CID is used
   +---+---+---+---+---+---+---+---+
   | 1 | 1 | 0 |KW |NKW| M | E |S/I|
   +---+---+---+---+---+---+---+---+
   : Type  :                       :
   +...+...+  Sequence Number &    +  if S/I==1
   :          Identification       :
   +...+...+...+...+...+...+...+...+
   :                               :
   :           Extension(s)        :  if E==1
   :                               :
   +...+...+...+...+...+...+...+...+
   :                               :
   +           UDP Checksum        +  if non-zero in context
   :                               :
   +---+---+---+---+---+---+---+---+
   |           RTP Data            |
   :                               :

   CID:
   The first two bytes can be used for the session CIDs.

   KW (Keyword):
   The Keyword field must be present in every packet. To detect loss of
   update packets, it must be changed at each update.

   NKW (New Keyword Indication):
   If this bit is set, the compressor defines this packet as an update
   packet. The context state after decompressing this packet is stored
   and referenced in the following packets. Several successive update
   packets should be sent, each containing the relevant information, to
   ensure the reception at the decompressor.

   M (RTP Marker):
   The M-bit represents the original RTP Marker.

   E (Extension):
   This bit indicates that at least one extension is used. The
   different possible extensions, that are used to transmit information
   about irregular changes in the header fields, are described in
   detail in the following sections.

   S/I (RTP Sequence Number & Identification Indication):
   This bit signals that the LSB of the RTP Sequence Number and IPv4
   Identification follow directly.




Miyazaki             Expires November 23th, 2000                   17

 Header Compression using Keyword Packets                 May 23th, 2000




   Type:
   These two bits indicate how the following bytes are used for the
   Sequence Number and Identification:
     Type = 0:
       7 bit RTP Sequence Number
       7 bit IPv4 Identification
     Type = 1:
       6 bit RTP Sequence Number
       16 bit IPv4 Identification
     Type = 2:
       8 bit RTP Sequence Number
       14 bit IPv4 Identification
     Type = 3:
       10 bit RTP Sequence Number
       12 bit IPv4 Identification

   UDP Checksum:
   If the UDP Checksum is enabled, this field contains the 16-bit
   Checksum, else it is not present.

6.2.2 Changing Field Extension

   This extension is used similar as in profile one and also has the
   same format. For details see section 5.2.2.

6.2.3 Default Delta Extension

   This extension is used similar as in profile one and also has the
   same format. For details see section 5.2.3.

6.3 Two-Byte-Header or Three-Byte-Header packet

   These two packet types can only be used for non-update packets. They
   reference the last update packet and therefore carry the same
   keyword value.

   If the compressor communicated the default delta values to the
   decompressor, the decompressor should be able to recalculate the
   timestamp value from the sequence number. Hence it is not necessary
   to transmit this value in all packets.

   These packets cannot be used if other fields than the sequence
   number, timestamp and identification changed. The timestamp also has
   to change according to the following equations:

   TS(n) = TS(n-1) + (SN(n) û SN(n-1)) * ddTS

      ddTS    : delta Timestamp
      TS(n)   : Timestamp of current packet
      TS(n-1) : Timestamp of previous packet



Miyazaki             Expires November 23th, 2000                   18

 Header Compression using Keyword Packets                 May 23th, 2000




      SN(n)   : Sequence Number of current packet
      SN(n-1) : Sequence Number of previous packet

   In this state the compressor might use the Two-Byte-Header or Three-
   Byte-Header packet. These packets contain only the LSB of the RTP
   Sequence Number, LSB of IPv4 Identification and the keyword, which
   is enough information for the decompressor to regenerate the
   original header.

   The packet format for the Two-Byte-Header packet is given below:

     0   1   2   3   4   5   6   7
   +...+...+...+...+...+...+...+...+
   :      MSB of Session CID       :  if 16 bit CID is used
   +...+...+...+...+...+...+...+...+
   :      LSB of Session CID       :  if 16 or 8 bit CID is used
   +---+---+---+---+---+---+---+---+
   | 0 |KW |LSB RTP Sequence Number|
   +---+---+---+---+---+---+---+---+
   |    LSB IPv4 Identification    |
   +---+---+---+---+---+---+---+---+


   The packet format for the Three-Byte-Header packet is given below:

     0   1   2   3   4   5   6   7
   +...+...+...+...+...+...+...+...+
   :      MSB of Session CID       :  if 16 bit CID is used
   +...+...+...+...+...+...+...+...+
   :      LSB of Session CID       :  if 16 or 8 bit CID is used
   +---+---+---+---+---+---+---+---+
   | 1 | 0 |KW | T |               |
   +---+---+---+---+               +
   |      LSB RTP Sequence Number  |
   +               &               +
   |      LSB IPv4 Identification  |
   +---+---+---+---+---+---+---+---+

   The T-bit indicates how the next bits are used to transport the RTP
   Sequence Number and the IPv4 Identification:
      T=0:
        10 bit RTP Sequence Number
        10 bit IPv4 Identification

      T=1:
        8 bit RTP Sequence Number
        12 bit IPv4 Identification

   The decision which of these packets is to be used should be done
   according to the number of packets already sent after the last



Miyazaki             Expires November 23th, 2000                   19

 Header Compression using Keyword Packets                 May 23th, 2000




   update packet (or the first update packet of a set of update packets
   sent successively). The not transmitted MSB of these values must not
   have changed.


6.4 Context State packet

   The use and format of the context state packet is similar to profile
   1, see section 5.3 for details.


7. Conclusions

   It was stated that CRTP induces too many additional errors, when
   used over unreliable links. A new solution, keyword header
   compression, was described, which reduces the number of additional
   errors.

   The solution is split into two different profiles, optimized for
   different scenarios. The average header size is reduced compared to
   CRTP as well as the number of additional errors. If used in a
   cautious way, e.g. sending several succeeding keyword packets, the
   amount of additional errors should be near zero.


8. Security Considerations

   Security issues are not considered in this memo.


9. Intellectual property considerations

   Matsushita has filed patent applications that might possibly have
   technical relation to this contribution.
   If part(s) of the contribution by Matsushita employee is (are)
   included in a standard and Matsushita has patents and/or patent
   application(s) that are essential to implementation of such included
   part(s) in said standard, Matsushita is prepared to grant - on the
   basis of reciprocity (grantback) - a license on such included
   part(s) on reasonable, non-discriminatory terms and conditions (in
   according with paragraph 10.3.3 of the RFC 2026).


10. Acknowledgements

   This proposal combines several ideas of other papers and introduces
   some new features and mechanisms. The main inspiration for some of
   these mechanisms came from discussions on the 47th IETF Meeting in
   Adelaide, the discussions on the ROHC mailing list and the Internet
   Drafts [7], [8], [11], [12], [13] and [14].



Miyazaki             Expires November 23th, 2000                   20

 Header Compression using Keyword Packets                 May 23th, 2000




11. References


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

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

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

   4  Postel, J.,"User Datagram Protocol", STD 6, RFC 768, August 1980.

   5  Postel, J.,"Internet Protocol", STD 5, RFC 791, September 1981.

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

   7  Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP Headers for
      Low-Speed Serial Links", RFC 2508, February 1999.

   8  Mikael Degermark, Hans Hannu, Lars-Erik Jonsson, Krister Svanbro,
      "CRTP over cellular radio links", Internet Draft (work in
      progress), June 1999.

   9  Homepage of 3GPP: http://www.3gpp.org

   10 "Procedure for Evaluation of Transmission Technologies for
      FPLMTS", ITU-R TG8-1, 8-1/TEMP/233-E, September 1995.

   11 Martensson, Einarsson, Jonsson,"ROCCO Conversational Video
      Profiles", Internet Draft (work in progress), March 2000.

   12 Le, Clanton, Liu, Zheng,"Adaptive Header Compression (ACE) for
      Real-Time Multimedia", Internet Draft (work in progress),
      March 2000.

   13 Jonsson, Degermark, Hannu, Svanbro," RObust Checksum-based header
      COmpression (ROCCO)", Internet Draft (work in progress),
      March 2000.

   14 Svanbro,"Lower Layer Guidelines for Robust Header Compression",
      Internet Draft (work in progress), March 2000.








Miyazaki             Expires November 23th, 2000                   21

 Header Compression using Keyword Packets                 May 23th, 2000





12. Author's Addresses

   Akihiro Miyazaki
   Matsushita Electric Industrial Co., Ltd
   1006, Kadoma, Kadoma City, Osaka, Japan
   Tel.  +81-6-6900-9192
   Fax.  +81-6-6900-9193
   Mail  akihiro@isl.mei.co.jp

   Hideaki Fukushima
   Matsushita Electric Industrial Co., Ltd
   1006, Kadoma, Kadoma City, Osaka, Japan
   Tel.  +81-6-6900-9192
   Fax.  +81-6-6900-9193
   Mail  fukusima@isl.mei.co.jp

   Thomas Wiebke
   Panasonic European Laboratories GmbH
   Monzastr. 4c, 63225 Langen, Germany
   Tel.  +49-(0)6103-766-161
   Fax.  +49-(0)6103-766-166
   Mail  wiebke@panasonic.de

   Rolf Hakenberg
   Panasonic European Laboratories GmbH
   Monzastr. 4c, 63225 Langen, Germany
   Tel.  +49-(0)6103-766-162
   Fax.  +49-(0)6103-766-166
   Mail  hakenberg@panasonic.de

   Carsten Burmeister
   Panasonic European Laboratories GmbH
   Monzastr. 4c, 63225 Langen, Germany
   Tel.  +49-(0)6103-766-263
   Fax.  +49-(0)6103-766-166
   Mail  burmeister@panasonic.de
















Miyazaki             Expires November 23th, 2000                   22

 Header Compression using Keyword Packets                 May 23th, 2000





Full Copyright Statement

   "Copyright (C) The Internet Society (2000). 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.




































Miyazaki             Expires November 23th, 2000                   23