Audio/Video Transport Working Group                       Steve Casner
Internet Draft                                            Tmima Koren
October 22, 1999                                          Patrick Ruddy
Expires April 2000                                        Bruce Thompson
draft-koren-avt-crtp-enhance-00.txt                       Alex Tweedly
                                                          Dan Wing
                                                          Cisco Systems


             Extensions to CRTP

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. Internet Drafts may be updated, replaced, or obsolete by
   other documents at any time. It is not appropriate 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.txt

   This draft is being submitted as a possible work item to the IETF
   Audio/Video Transport working group.  To subscribe to the mailing
   list send a message to rem-conf-request@es.net with the line
   "subscribe" in the body of the message.  Archives are available from
   ftp://ftp.es.net/pub/mail-archive/rem-conf

Copyright Notice

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



Abstract

   This document describes 3 different extensions to CRTP, the compression
algorithm for RTP streams described in [RFC2508]. Each extension addresses
issues with RFC 2508 in different deployment scenarios.  Each section below
provides an introduction that includes the scenario where the proposed extension
is useful and the justification for its use.

Each of these extensions should be evaluated separately as each one addresses
issues associated with RFC 2508 under different deployment scenarios.




1. COMPRESSED_UDP packet "T bit"

As RTP header compression becomes more widely deployed, it is being used in
scenarios where a compressed link could both extend over a long physical
distance and experience significant packet loss. An example of this is RTP
transport over ATM AAL-5. In situations such as this, the "link" would actually
traverse through multiple layer 2 switching points on the path from the CRTP
transmitter to the CRTP receiver. Links such as this could have a significant
amount of packet loss and also have round trip transmission delays well beyond
what would be considered acceptable for the use of CONTEXT_STATE messages.
In scenarios such as this, it is useful for the CRTP compressor to periodically
refresh the state of the CRTP decompressor to avoid having the decompressor send
CONTEXT_STATE messages in the case of unrecoverable packet loss.

There are currently 2 packet types that can be used to periodically refresh the
context of an IPV4 CRTP decompressor. They are a FULL_HEADER packet and a
COMPRESSED_UDP packet. While sending FULL_HEADER packets will fully synchronize
compressor and decompressor state, it is more effective to simply refresh those
portions of the state which are likely to change.

The COMPRESSED_UDP packet currently always sets the deltaT value of the
decompressor to 0. This means that a COMPRESSED_UDP packet refreshes some of the
state of a decompressor and resets the deltaT value. The makes the COMPRESSED_UDP
packet ineffective for fully synchronizing the states of the compressor and decompressor.

 The extension proposed is to allow the T bit to be set in the COMPRESSED_UDP packet.
This allows the deltaT in the CRTP header of the COMPRESSED_UDP packet to specify the
new deltaT to be used. This eliminates the need to include the deltaT in the
COMPRESSED_RTP packet that follows the COMPRESSED_UDP packet.
A COMPRESSED_UDP packet that includes the deltaT restores all RTP related parameters
at the decompressor since it includes the full RTP header and the
new deltaT to be used for subsequent packets.

   If a COMPRESSED_UDP packet is received without the T bit set, the decompressor MUST
set the deltaT to 0. If a COMPRESSED_UDP packet is received with the T bit set,
the deltaT specified in the packet becomes the new deltaT for this stream.

   The new COMPRESSED_UDP packet format:

             0   1   2   3   4   5   6   7
           +...............................+
           :   msb of session context ID   :  (if 16-bit CID)
           +-------------------------------+
           |   lsb of session context ID   |
           +---+---+---+---+---+---+---+---+
           | 0 | 0 | T | I | link sequence |
           +---+---+---+---+---+---+---+---+
           :                               :
           +         UDP checksum          +  (if nonzero in context)
           :                               :
           +...............................+
           :                               :
           +        "RANDOM" fields        +  (if encapsulated)
           :                               :
           +...............................+
           :         delta IPv4 ID         :  (if I = 1)
           +...............................+
           :      delta RTP timestamp      :  (if T = 1)
           +...............................+
           |           UDP data            |
           :   (uncompressed RTP header)   :



Multiple COMPRESSED_UDP packets may be sent by the compressor when changes in the
compressor state need to be synchronized. Sending multiple packets will increase the
probability of delivery of the synchronized state in the event of packet loss.



2. The NON-RTP stream flag

Some compressor implementations may be able
to discern if a compressed stream is, in fact, an RTP stream or a non-RTP stream.
If they can make this distinction, they MAY set a flag in the FULL_HEADER packet
to indicate that the stream is a non-RTP stream. We suggest setting the right next
to the CRTP sequence number.


   Here is the new FULL_HEADER length fields format:

           For 8-bit context ID:

           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |0|1| Generation|      CID      |  First length field
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |            0        |U|  seq  |  Second length field
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  U=1 indicates a non-RTP stream


           For 16-bit context ID:

           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |1|1| Generation|   0 |U|  seq  |  First length field
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  U=1 indicates a non-RTP stream

           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |              CID              |  Second length field
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+






3. Acknowledgement to a new compressed stream

In a point to point link the two hosts can agree on the number of
compressed sessions they dedicate for this link.
In an end-to-end scheme a host may have compressed sessions with many
hosts and eventually may run out of resources. An ACCEPT reassures the
compressor that the stream is being decompressed successfully at the
moment. A REJECT tells the compressor to stop compressing this stream.
The compressor may decide to wait for a while before attempting to
compress additional streams destined to that host.
The compressor starts a compression of a stream by sending a FULL_HEADER packet.
If the decompressor has insufficient resources to decompress the new stream, the
decompressor can send a CONTEXT_STATE packet to invalidate the newly compressed
stream. The compressor does not know the reason for the invalidation: usually
this happens when the decompressor gets out of synchronization due to packet loss.
The compressor will most likely reattempt to compress this stream by sending
another FULL_HEADER.
We propose that the decompressor MAY ACCEPT or REJECT the compression of a stream
by sending a message to the compressor.
The format of the message packet can be similar to the CONTEXT_STATE packet.
The first byte will indicate that this is an ACCEPT/REJECT message.
We suggest using the following opcodes:

   3: accept/reject new 8-bit CID
   4: accept/reject new 16-bit CID



Here is the packet format for the new CONTEXT_STATE options:
             0   1   2   3   4   5   6   7
           +---+---+---+---+---+---+---+---+
           |3=Accept/Reject new 8-bit CID  |
           +---+---+---+---+---+---+---+---+
           |         context count         |
           +---+---+---+---+---+---+---+---+
           |       session context ID      |
           +---+---+---+---+---+---+---+---+
           | A | 0 | 0 | 0 |    sequence   |   A - acknowledgement bit
           +---+---+---+---+---+---+---+---+
           | 0 | 0 |       generation      |
           +---+---+---+---+---+---+---+---+
           . . .


             0   1   2   3   4   5   6   7
           +---+---+---+---+---+---+---+---+
           |4=Accept/Reject new 16-bit CID |
           +---+---+---+---+---+---+---+---+
           |         context count         |
           +---+---+---+---+---+---+---+---+
           |                               |
           +       session context ID      +
           |                               |
           +---+---+---+---+---+---+---+---+
           | A | 0 | 0 | 0 |    sequence   |   A - acknowledgement bit
           +---+---+---+---+---+---+---+---+
           | 0 | 0 |       generation      |
           +---+---+---+---+---+---+---+---+
           . . .

   A is the acknowledgement bit:
   A = 1 :   ACCEPT
       0 :   REJECT


   It is up to the compressor to decide whether to reattempt to compress
   this stream and how long to wait.

   The session CID, sequence and generation are taken from the FULL_HEADER.


4. Acknowledgements
   The authors would like to thank the authors of RFC2508, Stephen Casner
   and Van Jacobson, and the authors of RFC2507, Mikael Degermark, Bjorn
   Nordgren, and Stephen Pink.
   The authors would also like to thank Dana Blair, Francois Le Faucheur,
   Tim Gleeson, Matt Madison, Hussein Salama, Mallik Tatipamula, Mike
   Thomas, and Herb Wildfeuer.

5. References

   [CRTP] S. Casner, V. Jacobson, "Compressing IP/UDP/RTP Headers for
   Low-Speed Serial Links", RFC2508, February 1999.

   [H.245] ITU-T Recommendation H.245 (1998), "Control of communications
   between Visual Telephone Systems and Terminal Equipment".

   [IPHCOMP] M. Degermark, B. Nordgren, S. Pink, "IP Header Compression",
   RFC2507, February 1999.

   [KEYW] S. Bradner, "Key words for use in RFCs to Indicate
   Requirement Levels", RFC2119, BCP 14, March 1997.

   [RTP] H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson, "RTP: A
   Transport Protocol for Real-Time Applications", RFC1889, January 1996.

6. Authors' Addresses
   Stephen L. Casner
   Cisco Systems, Inc.
   170 West Tasman Drive
   San Jose, CA 95134-1706
   United States of America

   EMail: casner@cisco.com

   Tmima Koren
   Cisco Systems, Inc.
   170 West Tasman Drive
   San Jose, CA  95134-1706
   United States of America
   Email: tmima@cisco.com


   Patrick Ruddy
   Cisco Systems, Inc.
   3rd Floor, 96 Commercial Street
   Edinburgh
   EH6 6LX
   Scotland

   Email: pruddy@cisco.com


   Bruce Thompson
   Cisco Systems, Inc.
   170 West Tasman Drive
   San Jose, CA  95134-1706
   United States of America

   Email: brucet@cisco.com


   Alex Tweedly
   Cisco Systems, Inc.
   3 The Square, Stockley Park
   Uxbridge, Middlesex
   UB11 1BN
   United Kingdom

   Email: agt@cisco.com


   Dan Wing
   Cisco Systems, Inc.
   170 West Tasman Drive
   San Jose, CA  95134-1706
   United States of America

   Email: dwing@cisco.com

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

















Casner, Koren, Ruddy, Thompson, Tweedly, Wing       Expires Apr 2000