home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_a_c / draft-ietf-avt-crtp-03.txt < prev    next >
Text File  |  1997-07-15  |  51KB  |  1,181 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Internet Engineering Task Force      Audio/Video Transport Working Group
  8. INTERNET-DRAFT                              S. Casner / Precept Software
  9. draft-ietf-avt-crtp-03.txt                            V. Jacobson / LBNL
  10.                                                            July 11, 1997
  11.                                                           Expires: 12/97
  12.  
  13.  
  14.        Compressing IP/UDP/RTP Headers for Low-Speed Serial Links
  15.  
  16. Status of this Memo
  17.  
  18. This document is an Internet-Draft.  Internet-Drafts are working docu-
  19. ments of the Internet Engineering Task Force (IETF), its areas, and its
  20. working groups.  Note that other groups may also distribute working
  21. documents as Internet-Drafts.
  22.  
  23. Internet-Drafts are draft documents valid for a maximum of six months
  24. and may be updated, replaced, or obsoleted by other documents at any
  25. time.  It is inappropriate to use Internet- Drafts as reference material
  26. or to cite them other than as "work in progress."
  27.  
  28. To learn the current status of any Internet-Draft, please check the
  29. "1id-abstracts.txt" listing contained in the Internet- Drafts Shadow
  30. Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  31. munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  32. ftp.isi.edu (US West Coast).
  33.  
  34. Distribution of this document is unlimited.
  35.  
  36.                                 Abstract
  37.  
  38.      This document describes a method for compressing the headers of
  39.      IP/UDP/RTP datagrams to reduce overhead on low-speed serial links.
  40.      In many cases, all three headers can be compressed to 2-4 bytes.
  41.  
  42. Comments are solicited and should be addressed to the working group
  43. mailing list rem-conf@es.net and/or the author(s).
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.                          Expires December 1997                  [Page 1]
  59.  
  60. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  61.  
  62.  
  63. 1.  Introduction
  64.  
  65. Since the Real-time Transport Protocol was published as an RFC [1],
  66. there has been growing interest in using RTP as one step to achieve
  67. interoperability among different implementations of network audio/video
  68. applications.  However, there is also concern that the 12-byte RTP
  69. header is too large an overhead for 20-byte payloads when operating over
  70. low speed lines such as dial-up modems at 14.4 or 28.8 kb/s.  (Some
  71. existing applications operating in this environment use an application-
  72. specific protocol with a header of a few bytes that has reduced func-
  73. tionality relative to RTP.)
  74.  
  75. Header size may be reduced through compression techniques as has been
  76. done with great success for TCP [2].  In this case, compression might be
  77. applied to the RTP header alone, on an end-to-end basis, or to the com-
  78. bination of IP, UDP and RTP headers on a link-by-link basis.  Compress-
  79. ing the 40 bytes of combined headers together provides substantially
  80. more gain than compressing 12 bytes of RTP header alone because the
  81. resulting size is approximately the same (2-4 bytes) in either case.
  82. Compressing on a link-by-link basis also provides better performance
  83. because the delay and loss rate are lower.  Therefore, the method
  84. defined here is for combined compression of IP, UDP and RTP headers on a
  85. link-by-link basis.
  86.  
  87. This document defines a compression scheme that may be used with IPv4,
  88. IPv6 or packets encapsulated with more than one IP header, though the
  89. initial focus is on IPv4.  The IP/UDP/RTP compression defined here is
  90. intended to fit within the more general compression framework [3] speci-
  91. fied by Mikael Degermark, et. al., for both IPv6 and IPv4.  That frame-
  92. work defines TCP and non-TCP as two classes of transport above IP.  This
  93. specification creates IP/UDP/RTP as a third class extracted from the
  94. non-TCP class.
  95.  
  96. 2.  Assumptions and Tradeoffs
  97.  
  98. The goal of this compression scheme is to reduce the IP/UDP/RTP headers
  99. to two bytes for most packets in the case where no UDP checksums are
  100. being sent, or four bytes with checksums.  It is motivated primarily by
  101. the specific problem of sending audio and video over 14.4 and 28.8
  102. dialup modems.  These links tend to provide full-duplex communication,
  103. so the protocol takes advantage of that fact, though the protocol may
  104. also be used with reduced performance on simplex links.
  105.  
  106. This specification does not address segmentation and preemption of large
  107. packets to reduce the delay across the slow link experienced by small
  108. real-time packets, except to identify in Section 4 some interactions
  109. between segmentation and compression that may occur.  Segmentation
  110. schemes may be defined separately and used in conjunction with the
  111.  
  112.  
  113.  
  114.                          Expires December 1997                  [Page 2]
  115.  
  116. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  117.  
  118.  
  119. compression defined here.
  120.  
  121. It should be noted that implementation simplicity is an important factor
  122. to consider in evaluating a compression scheme.  Communications servers
  123. may need to support compression over perhaps as many as 100 dial-up
  124. modem lines using a single processor.  Therefore, it may be appropriate
  125. to make some simplifications in the design at the expense of generality,
  126. or to produce a flexible design that is general but can be subsetted for
  127. simplicity.  The next sections discuss some of the tradeoffs listed
  128. here.
  129.  
  130. 2.1.  Simplex vs. Full Duplex
  131.  
  132. In the absence of other constraints, a compression scheme that worked
  133. over simplex links would be preferred over one that did not.  However,
  134. operation over a simplex link requires periodic refreshes with an
  135. uncompressed packet header to restore compression state in case of
  136. error.  If an explicit error signal can be returned instead, the delay
  137. to recovery may be shortened substantially.  The overhead in the no-
  138. error case is also reduced.  To gain these performance improvements,
  139. this specification includes an explicit error indication sent on the
  140. reverse path.
  141.  
  142. On a simplex link, it would be possible to use a periodic refresh
  143. instead.  Whenever the decompressor detected an error in a particular
  144. packet stream, it would simply discard all packets in that stream until
  145. an uncompressed header was received for that stream, and then resume
  146. decompression.  The penalty would be the potentially large number of
  147. packets discarded.  The periodic refresh method described in Section 3.3
  148. of [3] applies to IP/UDP/RTP compression on simplex links as well as to
  149. other non-TCP packet streams.
  150.  
  151. 2.2.  Segmentation and Layering
  152.  
  153. Delay induced by the time required to send a large packet over the slow
  154. link is not a problem for one-way audio, for example, because the
  155. receiver can adapt to the variance in delay.  However, for interactive
  156. conversations, minimizing the end-to-end delay is critical.  Segmenta-
  157. tion of large, non-real-time packets to allow small real-time packets to
  158. be transmitted between segments can reduce the delay.
  159.  
  160. This specification deals only with compression and assumes segmentation,
  161. if included, will be handled as a separate layer.  It would be inap-
  162. propriate to integrate segmentation and compression in such a way that
  163. the compression could not be used by itself in situations where segmen-
  164. tation was deemed unnecessary or impractical.  Similarly, one would like
  165. to avoid any requirements for a reservation protocol.  The compression
  166. scheme can be applied locally on the two ends of a link independent of
  167.  
  168.  
  169.  
  170.                          Expires December 1997                  [Page 3]
  171.  
  172. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  173.  
  174.  
  175. any other mechanisms except for the requirements that the link layer
  176. provide some packet type codes, a packet length indication, and good
  177. error detection.
  178.  
  179. Conversely, separately compressing the IP/UDP and RTP layers loses too
  180. much of the compression gain that is possible by treating them together.
  181. Crossing these protocol layer boundaries is appropriate because the same
  182. function is being applied across all layers.
  183.  
  184. 3.  The Compression Algorithm
  185.  
  186. The compression algorithm defined in this document draws heavily upon
  187. the design of TCP/IP header compression as described in RFC 1144 [2].
  188. Readers are referred to that RFC for more information on the underlying
  189. motivations and general principles of header compression.
  190.  
  191. 3.1.  The basic idea
  192.  
  193. In TCP header compression, the first factor-of-two reduction in data
  194. rate comes from the observation that half of the bytes in the IP and TCP
  195. headers remain constant over the life of the connection.  After sending
  196. the uncompressed header once, these fields may be elided from the
  197. compressed headers that follow.  The remaining compression comes from
  198. differential coding on the changing fields to reduce their size, and
  199. from eliminating the changing fields entirely for common cases by calcu-
  200. lating the changes from the length of the packet.  This length is indi-
  201. cated by the link-level protocol.
  202.  
  203. For RTP header compression, some of the same techniques may be applied.
  204. However, the big gain comes from the observation that although several
  205. fields change in every packet, the difference from packet to packet is
  206. often constant and therefore the second-order difference is zero.  By
  207. maintaining both the uncompressed header and the first-order differences
  208. in the session state shared between the compressor and decompressor, all
  209. that must be communicated is an indication that the second-order differ-
  210. ence was zero.  In that case, the decompressor can reconstruct the ori-
  211. ginal header without any loss of information simply by adding the
  212. first-order differences to the saved uncompressed header as each
  213. compressed packet is received.
  214.  
  215. Just as TCP/IP header compression maintains shared state for multiple
  216. simultaneous TCP connections, this IP/UDP/RTP compression must maintain
  217. state for multiple session contexts.  A session context is defined by
  218. the combination of the IP source and destination addresses, the UDP
  219. source and destination ports, and the RTP SSRC field.  A compressor
  220. implementation might use a hash function on these fields to index a
  221. table of stored session contexts.  The compressed packet carries a small
  222. integer, called the session context identifier or CID, to indicate in
  223.  
  224.  
  225.  
  226.                          Expires December 1997                  [Page 4]
  227.  
  228. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  229.  
  230.  
  231. which session context that packet should be interpreted.  The decompres-
  232. sor can use the CID to index its table of stored session contexts
  233. directly.
  234.  
  235. Because the RTP compression is lossless, it may be applied to any UDP
  236. traffic that benefits from it.  Most likely, the only packets that will
  237. benefit are RTP packets, but it is acceptable to use heuristics to
  238. determine whether or not the packet is an RTP packet because no harm is
  239. done if the heuristic gives the wrong answer.  This does require execut-
  240. ing the compression algorithm for all UDP packets, or at least those
  241. with even port numbers (see section 3.4).
  242.  
  243. Most compressor implementations will need to maintain a "negative cache"
  244. of packet streams that have failed to compress as RTP packets for some
  245. number of attempts in order to avoid further attempts.  Failing to
  246. compress means that some fields in the potential RTP header that are
  247. expected to remain constant most of the time, such as the payload type
  248. field, keep changing.  Even if the other such fields remain constant, a
  249. packet stream with a constantly changing SSRC field must be entered in
  250. the negative cache to avoid consuming all of the available session con-
  251. texts.  The negative cache is indexed by the source and destination IP
  252. address and UDP port pairs but not the RTP SSRC field since the latter
  253. may be changing.  When RTP compression fails, the IP and UDP headers may
  254. still be compressed.
  255.  
  256. Fragmented IP Packets that are not initial fragments and packets that
  257. are not long enough to contain a complete UDP header must not be sent as
  258. FULL_HEADER packets.  Furthermore, packets that do not additionally con-
  259. tain at least 12 bytes of UDP data cannot be used to establish RTP con-
  260. text.  If such a packet is sent as a FULL_HEADER packet, it may be fol-
  261. lowed by COMPRESSED_UDP packets but not by COMPRESSED_RTP packets.
  262.  
  263. 3.2.  Header Compression for RTP Data Packets
  264.  
  265. In the IPv4 header, only the total length, packet ID, and header check-
  266. sum fields will normally change.  The total length is redundant with the
  267. length provided by the link layer, and since this compression scheme
  268. must depend upon the link layer to provide good error detection (e.g.,
  269. PPP's CRC), the header checksum may also be elided.  This leaves only
  270. the packet ID, which, assuming no IP fragmentation, would not need to be
  271. communicated.  However, in order to maintain lossless compression,
  272. changes in the packet ID will be transmitted.  The packet ID usually
  273. increments by one or a small number for each packet.  In the IPv6 base
  274. header, there is no packet ID nor header checksum and only the payload
  275. length field changes.
  276.  
  277. In the UDP header, the length field is redundant with the IP total
  278. length field and the length indicated by the link layer.  The UDP
  279.  
  280.  
  281.  
  282.                          Expires December 1997                  [Page 5]
  283.  
  284. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  285.  
  286.  
  287. checksum field will be a constant zero if the source elects not to gen-
  288. erate UDP checksums.  Otherwise, the checksum must be communicated
  289. intact in order to preserve the lossless compression.  Maintaining end-
  290. to-end error detection for applications that require it is an important
  291. principle.
  292.  
  293. In the RTP header, the SSRC identifier is constant in a given context
  294. since that is part of what identifies the particular context.  For most
  295. packets, only the sequence number and the timestamp will change from
  296. packet to packet.  If packets are not lost or misordered, the sequence
  297. number will increment by one for each packet.  For audio packets of con-
  298. stant duration, the timestamp will increment by the number of sample
  299. periods conveyed in each packet.  For video, the timestamp will change
  300. on the first packet of each frame, but then stay constant for any addi-
  301. tional packets in the frame.  If each video frame occupies only one
  302. packet, but the video frames are generated at a constant rate, then
  303. again the change in the timestamp from frame to frame is constant.  Note
  304. that in each of these cases the second-order difference of the sequence
  305. number and timestamp fields is zero, so the next packet header can be
  306. constructed from the previous packet header by adding the first-order
  307. differences for these fields that are stored in the session context
  308. along with the previous uncompressed header.  When the second-order
  309. difference is not zero, the magnitude of the change is usually much
  310. smaller than the full number of bits in the field, so the size can be
  311. reduced by encoding the new first-order difference and transmitting it
  312. rather than the absolute value.
  313.  
  314. The M bit will be set on the first packet of a talkspurt and the last
  315. packet of a video frame.  If it were treated as a constant field such
  316. that each change required sending the full RTP header, this would reduce
  317. the compression significantly.  Therefore, one bit in the compressed
  318. header will carry the M bit explicitly.
  319.  
  320. If the packets are flowing through an RTP mixer, most commonly for
  321. audio, then the CSRC list and CC count will also change.  However, the
  322. CSRC list will typically remain constant during a talkspurt or longer,
  323. so it need be sent only when it changes.
  324.  
  325. 3.3.  The protocol
  326.  
  327. The compression protocol must maintain a collection of shared informa-
  328. tion in a consistent state between the compressor and decompressor.
  329. There is a separate session context for each IP/UDP/RTP packet stream,
  330. as defined by a particular combination of the IP source and destination
  331. addresses, UDP source and destination ports, and the RTP SSRC field.
  332. The number of session contexts to be maintained may be negotiated
  333. between the compressor and decompressor.  Each context is identified by
  334. an 8- or 16-bit identifier, depending upon the number of contexts
  335.  
  336.  
  337.  
  338.                          Expires December 1997                  [Page 6]
  339.  
  340. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  341.  
  342.  
  343. negotiated, so the maximum number is 65536.  Both uncompressed and
  344. compressed packets must carry the context ID and a 4-bit sequence number
  345. used to detect packet loss between the compressor and decompressor.
  346. Each context has its own separate sequence number space so that a single
  347. packet loss need only invalidate one context.
  348.  
  349. The shared information in each context consists of the following items:
  350.  
  351.   o The full IP, UDP and RTP headers for the last packet sent by the
  352.     compressor or reconstructed by the decompressor.
  353.   o The first-order difference for the IPv4 ID field, initialized to 1
  354.     whenever an uncompressed IP header for this context is received and
  355.     updated each time a delta IPv4 ID field is received in a compressed
  356.     packet.
  357.   o The first-order difference for the RTP timestamp field, initialized
  358.     to 0 whenever an uncompressed packet for this context is received
  359.     and updated each time a delta RTP timestamp field is received in a
  360.     compressed packet.
  361.   o The last value of the 4-bit sequence number, which is used to detect
  362.     packet loss between the compressor and decompressor.
  363.   o The current generation number for non-differential coding of UDP
  364.     packets with IPv6(see [3]).  For IPv4, the generation number may be
  365.     set to zero if the COMPRESSED_NON_TCP packet type, defined below, is
  366.     never used.
  367.   o A context-specific delta encoding table (see section 3.3.4) may
  368.     optionally be negotiated for each context.
  369.  
  370. In order to communicate packets in the various uncompressed and
  371. compressed forms, this protocol depends upon the link layer being able
  372. to provide an indication of four new packet formats in addition to the
  373. normal IPv4 and IPv6 packet formats:
  374.  
  375.      FULL_HEADER - communicates the uncompressed IP header plus any fol-
  376.      lowing headers and data to establish the uncompressed header state
  377.      in the decompressor for a particular context.  The FULL-HEADER
  378.      packet also carries the 8- or 16-bit session context identifier and
  379.      the 4-bit sequence number to establish synchronization between the
  380.      compressor and decompressor.  The format is shown in section 3.3.1.
  381.  
  382.      COMPRESSED_UDP - communicates the IP and UDP headers compressed to
  383.      6 or fewer bytes (often 2 if UDP checksums are disabled), followed
  384.      by any subsequent headers (possibly RTP) in uncompressed form, plus
  385.      data.  This packet type is used when there are differences in the
  386.      usually constant fields of the (potential) RTP header.  The RTP
  387.      header includes a potentially changed value of the SSRC field, so
  388.      this packet may redefine the session context.  The format is shown
  389.      in section 3.3.3.
  390.  
  391.  
  392.  
  393.  
  394.                          Expires December 1997                  [Page 7]
  395.  
  396. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  397.  
  398.  
  399.      COMPRESSED_RTP - indicates that the RTP header is compressed along
  400.      with the IP and UDP headers.  The size of this header may still be
  401.      just two bytes, or more if differences must be communicated.  This
  402.      packet type is used when the second-order difference (at least in
  403.      the usually constant fields) is zero.  It includes delta encodings
  404.      for those fields that have changed by other than the expected
  405.      amount to establish the first-order differences after an
  406.      uncompressed RTP header is sent and whenever they change.  The for-
  407.      mat is shown in section 3.3.2.
  408.  
  409.      CONTEXT_STATE - indicates a special packet sent from the decompres-
  410.      sor to the compressor to communicate a list of context IDs for
  411.      which synchronization has or may have been lost.  This packet is
  412.      only sent across the point-to-point link so it requires no IP
  413.      header.  The format is shown in section 3.3.5.
  414.  
  415. When this compression scheme is used with IPv6 as part of the general
  416. header compression framework specified in [3], another packet type may
  417. be used:
  418.  
  419.      COMPRESSED_NON_TCP - communicates the compressed IP and UDP headers
  420.      as defined in [3] without differential encoding.  If it were used
  421.      for IPv4, it would require one or two bytes more than the
  422.      COMPRESSED_UDP form listed above in order to carry the IPv4 ID
  423.      field.  For IPv6, there is no ID field and this non-differential
  424.      compression is more resilient to packet loss.
  425.  
  426. Assignments of numeric codes for these packet formats in the Point-to-
  427. Point Protocol [4] are to be made by the Internet Assigned Numbers
  428. Authority.
  429.  
  430. 3.3.1.  FULL_HEADER (uncompressed) packet format
  431.  
  432. The definition of the FULL_HEADER packet given here is intended to be
  433. the consistent with the definition given in [3].  Full details on design
  434. choices are given there.
  435.  
  436. The format of the FULL_HEADER packet is the same as that of the original
  437. packet.  In the IPv4 case, this is usually an IP header, followed by a
  438. UDP header and UDP payload that may be an RTP header and its payload.
  439. However, the FULL_HEADER packet may also carry IP encapsulated packets,
  440. in which case there would be two IP headers followed by UDP and possibly
  441. RTP.  Or in the case of IPv6, the packet may be built of some combina-
  442. tion of IPv6 and IPv4 headers.  Each successive header is indicated by
  443. the type field of the previous header, as usual.
  444.  
  445. The FULL_HEADER packet differs from the corresponding normal IPv4 or
  446. IPv6 packet in that it must also carry the compression context ID and
  447.  
  448.  
  449.  
  450.                          Expires December 1997                  [Page 8]
  451.  
  452. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  453.  
  454.  
  455. the 4-bit sequence number.  In order to avoid expanding the size of the
  456. header, these values are inserted into length fields in the IP and UDP
  457. headers since the actual length may be inferred from the length provided
  458. by the link layer.  Two 16-bit length fields are needed; these are taken
  459. from the first two available headers in the packet.  That is, for an
  460. IPv4/UDP packet, the first length field is the total length field of the
  461. IPv4 header, and the second is the length field of the UDP header.  For
  462. an IPv4 encapsulated packet, the first length field would come from the
  463. total length field of the first IP header, and the second length field
  464. would come from the total length field of the second IP header.
  465.  
  466. As specified in Sections 5.3.2 of [3], the position of the context ID
  467. (CID) and 4-bit sequence number varies depending upon whether 8- or 16-
  468. bit context IDs have been selected, as shown in the following diagram
  469. (16 bits wide, with the most-significant bit is to the left):
  470.  
  471.         For 8-bit context ID:
  472.  
  473.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  474.         |0|1| Generation|      CID      |  First length field
  475.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  476.  
  477.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  478.         |            0          |  seq  |  Second length field
  479.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  480.  
  481.         For 16-bit context ID:
  482.  
  483.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  484.         |1|1| Generation|   0   |  seq  |  First length field
  485.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  486.  
  487.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  488.         |              CID              |  Second length field
  489.         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  490.  
  491. The first bit in the first length field indicates the length of the CID.
  492. The length of the CID must either be constant for all contexts or two
  493. additional distinct packet types must be provided to separately indicate
  494. COMPRESSED_UDP and COMPRESSED_RTP packet formats with 8- and 16-bit
  495. CIDs.  The second bit in the first length field is 1 to indicate that
  496. the 4-bit sequence number is present, as is always the case for this
  497. IP/UDP/RTP compression scheme.
  498.  
  499. The generation field is used with IPv6 for COMPRESSED_NON_TCP packets as
  500. described in [3].  For IPv4-only implementations that do not use
  501. COMPRESSED_NON_TCP packets, the compressor may set the generation value
  502. to zero.  For consistent operation between IPv4 and IPv6, the generation
  503.  
  504.  
  505.  
  506.                          Expires December 1997                  [Page 9]
  507.  
  508. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  509.  
  510.  
  511. value is stored in the context when it is received by the decompressor,
  512. and the most recent value is returned in the CONTEXT_STATE packet.
  513.  
  514. When a FULL_HEADER packet is received, the complete set of headers is
  515. stored into the context selected by the context ID.  The 4-bit sequence
  516. number is also stored in the context, thereby resynchronizing the
  517. decompressor to the compressor.
  518.  
  519. When COMPRESSED_NON_TCP packets are used, the 4-bit sequence number is
  520. inserted into the "Data Field" of that packet and the D bit is set as
  521. described in Section 6 of [3].  When a COMPRESSED_NON_TCP packet is
  522. received, the generation number must be compared to the value stored in
  523. the context.  If they are not the same, the context is not up to date
  524. and must be refreshed by a FULL_HEADER packet.  If the generation does
  525. match, then the compressed IP and UDP header information, the 4-bit
  526. sequence number, and the (potential) RTP header are all stored into the
  527. saved context.
  528.  
  529. The amount of memory required to store the context will vary depending
  530. upon how many encapsulating headers are included in the FULL_HEADER
  531. packet.  The compressor and decompressor may negotiate a maximum header
  532. size.
  533.  
  534. 3.3.2.  COMPRESSED_RTP packet format
  535.  
  536. When the second-order difference of the RTP header from packet to packet
  537. is zero, the decompressor can reconstruct a packet simply by adding the
  538. stored first-order differences to the stored uncompressed header
  539. representing the previous packet.  All that need be communicated is the
  540. session context identifier and a small sequence number to maintain syn-
  541. chronization and detect packet loss between the compressor and
  542. decompressor.
  543.  
  544. If the second-order difference of the RTP header is not zero for some
  545. fields, the new first-order difference for just those fields is communi-
  546. cated using a compact encoding.  The new first-order difference values
  547. are added to the corresponding fields in the uncompressed header in the
  548. decompressor's session context, and are also stored explicitly in the
  549. context to be added to the corresponding fields again on each subsequent
  550. packet in which the second-order difference is zero.  Each time the
  551. first-order difference changes, it is transmitted and stored in the con-
  552. text.
  553.  
  554. In practice, the only fields for which it is useful to store the first-
  555. order difference are the IPv4 ID field and the RTP timestamp.  For the
  556. RTP sequence number field, the usual increment is 1.  If the sequence
  557. number changes by other than 1, the difference must be communicated but
  558. does not set the expected difference for the next packet.  Instead, the
  559.  
  560.  
  561.  
  562.                          Expires December 1997                 [Page 10]
  563.  
  564. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  565.  
  566.  
  567. expected first-order difference remains fixed at 1 so that the differ-
  568. ence need not be explicitly communicated on the next packet assuming it
  569. is in order.
  570.  
  571. For the RTP timestamp, when a FULL_HEADER, COMPRESSED_NON_TCP or
  572. COMPRESSED_UDP packet is sent to refresh the RTP state, the stored
  573. first-order difference is initialized to zero.  If the timestamp is the
  574. same on the next packet (e.g., same video frame), then the second-order
  575. difference is zero.  Otherwise, the difference between the timestamps of
  576. the two packets is transmitted as the new first-order difference to be
  577. added to the timestamp in the uncompressed header stored in the
  578. decompressor's context and also stored as the first-order difference in
  579. that context.  Each time the first-order difference changes on subse-
  580. quent packets, that difference is again transmitted and used to update
  581. the context.
  582.  
  583. Similarly, since the IPv4 ID field frequently increments by one, the
  584. first-order difference for that field is initialized to one when the
  585. state is refreshed by a FULL_HEADER packet, or when a COMPRESSED_NON_TCP
  586. packet is sent since it carries the ID field in uncompressed form.
  587. Thereafter, whenever the first-order difference changes, it is transmit-
  588. ted and stored in the context.
  589.  
  590. A bit mask will be used to indicate which fields have changed by other
  591. than the expected difference.  In addition to the small link sequence
  592. number, the list of items to be conditionally communicated in the
  593. compressed IP/UDP/RTP header is as follows:
  594.  
  595.   I = IPv4 packet ID (always 0 if no IPv4 header)
  596.   U = UDP checksum
  597.   M = RTP marker bit
  598.   S = RTP sequence number
  599.   T = RTP timestamp
  600.   L = RTP CSRC count and list
  601.  
  602. If 4 bits are needed for the link sequence number to get a reasonable
  603. probability of loss detection, there are too few bits remaining to
  604. assign one bit to each of these items and still fit them all into a sin-
  605. gle byte to go along with the context ID.
  606.  
  607. It is not necessary to explicitly indicate the presence of the UDP
  608. checksum because a source will typically include checksums on all pack-
  609. ets of a session or none of them.  When the session state is initialized
  610. with an uncompressed header, if there is a nonzero checksum present, an
  611. unencoded 16-bit checksum will be inserted into the compressed header in
  612. all subsequent packets until this setting is changed by sending another
  613. uncompressed packet.
  614.  
  615.  
  616.  
  617.  
  618.                          Expires December 1997                 [Page 11]
  619.  
  620. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  621.  
  622.  
  623. Of the remaining items, the CSRC list may be the one least frequently
  624. used.  Rather than dedicating a bit to indicate CSRC change, an unusual
  625. combination of the other bits may be used instead.  This bit combination
  626. is denoted MSTI.  If all four of the bits for the IP packet ID, RTP
  627. marker bit, RTP sequence number and RTP timestamp are set, this as a
  628. special case indicating an extended form of the compressed RTP header
  629. will follow.  That header will include an additional byte containing the
  630. real values of the four bits plus the CC count.  The CSRC list, of
  631. length indicated by the CC count, will be included just as it appears in
  632. the uncompressed RTP header.
  633.  
  634. The following diagram shows the compressed IP/UDP/RTP header with dotted
  635. lines indicating fields that are conditionally present.  The most signi-
  636. ficant bit is numbered 0.  Variable-length fields are sent in network
  637. byte order (most significant byte first).
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.                          Expires December 1997                 [Page 12]
  675.  
  676. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  677.  
  678.  
  679.  
  680.           0   1   2   3   4   5   6   7
  681.         +...............................+
  682.         :   msb of session context ID   :  (if 16-bit CID)
  683.         +-------------------------------+
  684.         |   lsb of session context ID   |
  685.         +---+---+---+---+---+---+---+---+
  686.         | M | S | T | I |    sequence   |
  687.         +---+---+---+---+---+---+---+---+
  688.         :                               :
  689.         +         UDP checksum          +  (if nonzero in context)
  690.         :                               :
  691.         +...............................+
  692.         :                               :
  693.         +        "RANDOM" fields        +  (if encapsulated)
  694.         :                               :
  695.         +...............................+
  696.         : M'| S'| T'| I'|      CC       :  (if MSTI = 1111)
  697.         +...............................+
  698.         :         delta IPv4 ID         :  (if I or I' = 1)
  699.         +...............................+
  700.         :      delta RTP sequence       :  (if S or S' = 1)
  701.         +...............................+
  702.         :      delta RTP timestamp      :  (if T or T' = 1)
  703.         +...............................+
  704.         :                               :
  705.         :           CSRC list           :  (if MSTI = 1111)
  706.         :                               :
  707.         :                               :
  708.         +...............................+
  709.         :                               :
  710.         :      RTP header extension     :  (if X set in context)
  711.         :                               :
  712.         :                               :
  713.         +-------------------------------+
  714.         |            RTP data           |
  715.         :                               :
  716.  
  717. When more than one IPv4 header is present in the context as
  718. initialized by the FULL_HEADER packet, then the IP ID fields of
  719. encapsulating headers must be sent as absolute values as described in
  720. [3].  These fields are identified as "RANDOM" fields.  They are
  721. inserted into the COMPRESSED_RTP packet in the same order as they
  722. appear in the original headers, immediately following the UDP checksum
  723. if present or the MSTI byte if not, as shown in the diagram.  Only if
  724. an IPv4 packet immediately precedes the UDP header will the IP ID of
  725. that header be sent differentially, i.e., potentially with no bits if
  726. the second difference is zero, or as a delta IPv4 ID field if not.  If
  727.  
  728.  
  729.  
  730.                          Expires December 1997                 [Page 13]
  731.  
  732. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  733.  
  734.  
  735. there is not an IPv4 header immediately preceding the UDP header, then
  736. the I bit will be 0 and no delta IPv4 ID field will be present.
  737.  
  738.  
  739. 3.3.3.  COMPRESSED_UDP packet format
  740.  
  741. If there is a change in any of the fields of the RTP header that are
  742. normally constant (such as the payload type field), then an uncompressed
  743. RTP header must be sent.  If the IP and UDP headers do not also require
  744. updating, this RTP header may be carried in a COMPRESSED_UDP packet
  745. rather than a FULL_HEADER packet.  The COMPRESSED_UDP packet has the
  746. same format as the COMPRESSED_RTP packet except that the M, S and T bits
  747. are always 0 and the corresponding delta fields are never included:
  748.  
  749.           0   1   2   3   4   5   6   7
  750.         +...............................+
  751.         :   msb of session context ID   :  (if 16-bit CID)
  752.         +-------------------------------+
  753.         |   lsb of session context ID   |
  754.         +---+---+---+---+---+---+---+---+
  755.         | 0 | 0 | 0 | I |    sequence   |
  756.         +---+---+---+---+---+---+---+---+
  757.         :                               :
  758.         +         UDP checksum          +  (if nonzero in context)
  759.         :                               :
  760.         +...............................+
  761.         :                               :
  762.         +        "RANDOM" fields        +  (if encapsulated)
  763.         :                               :
  764.         +...............................+
  765.         :         delta IPv4 ID         :  (if I = 1)
  766.         +-------------------------------+
  767.         |           UDP data            |
  768.         :   (uncompressed RTP header)   :
  769.  
  770. Note that this constitutes a form of IP/UDP header compression different
  771. from COMPRESSED_NON_TCP packet type defined in [3].  The motivation is
  772. to allow reaching the target of two bytes when UDP checksums are dis-
  773. abled, as IPv4 allows.  The protocol in [3] does not use differential
  774. coding for UDP packets, so in the IPv4 case, two bytes of IP ID, and two
  775. bytes of UDP checksum if nonzero, would always be transmitted in addi-
  776. tion to two bytes of compression prefix.  For IPv6, the
  777. COMPRESSED_NON_TCP packet type may be used instead.
  778.  
  779. 3.3.4.  Encoding of differences
  780.  
  781. The delta fields in the COMPRESSED_RTP and COMPRESSED_UDP packets are
  782. encoded with a variable-length mapping for compactness of the more
  783.  
  784.  
  785.  
  786.                          Expires December 1997                 [Page 14]
  787.  
  788. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  789.  
  790.  
  791. commonly-used values.  A default encoding is specified below, but it is
  792. recommended that implementations use a table-driven delta encoder and
  793. decoder to allow negotiation of a table specific for each session if
  794. appropriate, possibly even an optimal Huffman encoding.  Encodings based
  795. on sequential interpretation of the bit stream, of which this default
  796. table and Huffman encoding are examples, allow a reasonable table size
  797. and may result in an execution speed faster than a non-table-driven
  798. implementation with explicit tests for ranges of values.
  799.  
  800. The default delta encoding is specified in the following table.  This
  801. encoding was designed to efficiently encode the small changes that may
  802. occur in the IP ID and in RTP sequence number when packets are lost
  803. upstream from the compressor, yet still handling most audio and video
  804. deltas in two bytes.  The column on the left is the decimal value to be
  805. encoded, and the column on the right is the resulting sequence of bytes
  806. shown in hexadecimal and in the order in which they are transmitted
  807. (network byte order).  The first and last values in each contiguous
  808. range are shown, with ellipses in between:
  809.  
  810.       Decimal  Hex
  811.  
  812.        -16384  C0 00 00
  813.             :  :
  814.          -129  C0 3F 7F
  815.          -128  80 00
  816.             :  :
  817.            -1  80 7F
  818.             0  00
  819.             :  :
  820.           127  7F
  821.           128  80 80
  822.             :  :
  823.         16383  BF FF
  824.         16384  C0 40 00
  825.             :  :
  826.       4194303  FF FF FF
  827.  
  828. For positive values, a change of zero through 127 is represented
  829. directly in one byte.  If the most significant two bits of the byte are
  830. 10 or 11, this signals an extension to a two- or three-byte value,
  831. respectively.  The least significant six bits of the first byte are com-
  832. bined, in decreasing order of significance, with the next one or two
  833. bytes to form a 14- or 22- bit value.
  834.  
  835. Negative deltas may occur when packets are misordered or in the inten-
  836. tionally out-of-order RTP timestamps on MPEG video.  These events are
  837. less likely, so a smaller range of negative values is encoded using oth-
  838. erwise redundant portions of the positive part of the table.
  839.  
  840.  
  841.  
  842.                          Expires December 1997                 [Page 15]
  843.  
  844. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  845.  
  846.  
  847. A change in the RTP timestamp value less than -16384 or greater than
  848. 4194303 forces the RTP header to be sent uncompressed using a
  849. FULL_HEADER, COMPRESSED_NON_TCP or COMPRESSED_UDP packet type.  The IP
  850. ID and RTP sequence number fields are only 16 bits, so negative deltas
  851. for those fields should be masked to 16 bits and then encoded (as large
  852. positive 16-bit numbers).
  853.  
  854. 3.3.5.  Error Recovery
  855.  
  856. Whenever the 4-bit sequence number for a particular context increments
  857. by other than 1, except when set by a FULL_HEADER or COMPRESSED_NON_TCP
  858. packet, the decompressor must invalidate that context and send a
  859. CONTEXT_STATE packet back to the compressor indicating that the context
  860. has been invalidated.  All packets for the invalid context must be dis-
  861. carded until a FULL_HEADER or COMPRESSED_NON_TCP packet is received for
  862. that context to re-establish consistent state.  Since multiple
  863. compressed packets may arrive in the interim, the decompressor should
  864. not retransmit the CONTEXT_STATE packet for every compressed packet
  865. received, but instead should limit the rate of retransmission to avoid
  866. flooding the reverse channel.
  867.  
  868. When an error occurs on the link, the link layer will usually discard
  869. the packet that was damaged (if any), but may provide an indication of
  870. the error.  Some time may elapse before another packet is delivered for
  871. the same context, and then that packet would have to be discarded by the
  872. decompressor when it is observed to be out of sequence, resulting in at
  873. least two packets lost.  To allow faster recovery if the link does pro-
  874. vide an explicit error indication, the decompressor may optionally send
  875. a CONTEXT_STATE packet listing the last valid sequence number and gen-
  876. eration number for one or more recently active contexts.  For a given
  877. context, if the compressor has sent no compressed packet with a higher
  878. sequence number, no corrective action is required.  Otherwise, the
  879. compressor may mark the context invalid so that the next packet is sent
  880. in FULL_HEADER or COMPRESSED_NON_TCP mode.  If the generation number
  881. does not match the current generation of the COMPRESSED_NON_TCP packet,
  882. then the FULL_HEADER must be sent.
  883.  
  884. The format of the CONTEXT_STATE packet is shown in the following
  885. diagram.  The first byte is a type code to allow the CONTEXT_STATE
  886. packet type to be shared for compression schemes for other protocols
  887. that may be defined in parallel with this one.  For this IP/UDP/RTP
  888. compression scheme that type code has the value 1, and the remainder of
  889. the CONTEXT_STATE packet is structured as a list of blocks to allow the
  890. state for multiple contexts to be indicated, preceded by a one-byte
  891. count of the number of blocks.
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.                          Expires December 1997                 [Page 16]
  899.  
  900. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  901.  
  902.  
  903.  
  904.           0   1   2   3   4   5   6   7
  905.         +---+---+---+---+---+---+---+---+
  906.         |   IP/UDP/RTP compression = 1  |
  907.         +---+---+---+---+---+---+---+---+
  908.         |         context count         |
  909.         +---+---+---+---+---+---+---+---+
  910.         +---+---+---+---+---+---+---+---+
  911.         |        session context        |
  912.         +---+---+---+---+---+---+---+---+
  913.         | I | 0 | 0 | 0 |    sequence   |
  914.         +---+---+---+---+---+---+---+---+
  915.         | 0 | 0 |       generation      |
  916.         +---+---+---+---+---+---+---+---+
  917.                        ...
  918.         +---+---+---+---+---+---+---+---+
  919.         |        session context        |
  920.         +---+---+---+---+---+---+---+---+
  921.         | I | 0 | 0 | 0 |    sequence   |
  922.         +---+---+---+---+---+---+---+---+
  923.         | 0 | 0 |       generation      |
  924.         +---+---+---+---+---+---+---+---+
  925.  
  926. The bit labeled "I" is set to one for contexts that have been marked
  927. invalid and require a FULL_HEADER of COMPRESSED_NON_TCP packet to be
  928. transmitted.  If the I bit is zero, the context state is advisory.
  929.  
  930. Since the CONTEXT_STATE packet itself may be lost, retransmission of one
  931. or more blocks is allowed.  It is expected that retransmission will be
  932. triggered only by receipt of another packet, but if the line is near
  933. idle, retransmission might be triggered by a relatively long timer (on
  934. the order of 1 second).
  935.  
  936. If a CONTEXT_STATE block for a given context is retransmitted, it may
  937. cross paths with the FULL_HEADER or COMPRESSED_NON_TCP packet intended
  938. to refresh that context.  In that case, the compressor may choose to
  939. ignore the error indication.
  940.  
  941. In the case where UDP checksums are being transmitted, the decompressor
  942. could attempt to use the "twice" algorithm described in section 10.1 of
  943. [3].  In this algorithm, the delta is applied more than once on the
  944. assumption that the delta may have been the same on the missing
  945. packet(s) and the one subsequently received.  For the scheme defined
  946. here, the difference in the 4-bit sequence number tells number of times
  947. the delta must be applied.  Note, however, that there is a nontrivial
  948. risk of an incorrect positive indication.  It may be advisable to
  949. request a FULL_HEADER or COMPRESSED_NON_TCP packet even if the "twice"
  950. algorithm succeeds.
  951.  
  952.  
  953.  
  954.                          Expires December 1997                 [Page 17]
  955.  
  956. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  957.  
  958.  
  959. Some errors may not be detected, for example if 16 packets are lost in a
  960. row and the link level does not provide an error indication.  In that
  961. case, the decompressor will generate packets that are not valid.  If UDP
  962. checksums are being transmitted, the receiver will probably detect the
  963. invalid packets and discard them, but the receiver does not have any
  964. means to signal the decompressor.  Therefore, it is recommended that the
  965. decompressor verify the UDP checksum periodically, perhaps one out of 16
  966. packets.  If an error is detected, the decompressor would invalidate the
  967. context and signal the compressor with a CONTEXT_STATE packet.
  968.  
  969. 3.4.  Compression of RTCP Control Packets
  970.  
  971. By relying on the RTP convention that data is carried on an even port
  972. number and the corresponding RTCP packets are carried on the next higher
  973. (odd) port number, one could tailor separate compression schemes to be
  974. applied to RTP and RTCP packets.  For RTCP, the compression could apply
  975. not only to the header but also the "data", that is, the contents of the
  976. different packet types.  The numbers in Sender Report (SR) and Receiver
  977. Report (RR) RTCP packets would not compress well, but the text informa-
  978. tion in the Source Description (SDES) packets could be compressed down
  979. to a bit mask indicating each item that was present but compressed out
  980. (for timing purposes on the SDES NOTE item and to allow the end system
  981. to measure the average RTCP packet size for the interval calculation).
  982.  
  983. However, in the compression scheme defined here, no compression will be
  984. done on the RTCP headers and "data" for several reasons (though compres-
  985. sion should still be applied to the IP and UDP headers).  Since the RTP
  986. protocol specification suggests that the RTCP packet interval be scaled
  987. so that the aggregate RTCP bandwidth used by all participants in a ses-
  988. sion will be no more than 5% of the session bandwidth, there is not much
  989. to be gained from RTCP compression.  Compressing out the SDES items
  990. would require a significant increase in the shared state that must be
  991. stored for each context ID.  And, in order to allow compression when
  992. SDES information for several sources was sent through an RTP "mixer", it
  993. would be necessary to maintain a separate RTCP session context for each
  994. SSRC identifier.  In a session with more than 255 participants, this
  995. would cause perfect thrashing of the context cache even when only one
  996. participant was sending data.
  997.  
  998. Even though RTCP is not compressed, the fraction of the total bandwidth
  999. occupied by RTCP packets on the compressed link remains no more than 5%
  1000. in most cases, assuming that the RTCP packets are sent as COMPRESSED_UDP
  1001. packets.  Given that the uncompressed RTCP traffic consumes no more than
  1002. 5% of the total session bandwidth, then for a typical RTCP packet length
  1003. of 90 bytes, the portion of the compressed bandwidth used by RTCP will
  1004. be no more than 5% if the size of the payload in RTP data packets is at
  1005. least 108 bytes.  If the size of the RTP data payload is smaller, the
  1006. fraction will increase, but is still less than 7% for a payload size of
  1007.  
  1008.  
  1009.  
  1010.                          Expires December 1997                 [Page 18]
  1011.  
  1012. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  1013.  
  1014.  
  1015. 37 bytes.  For large data payloads, the compressed RTCP fraction is less
  1016. than the uncompressed RTCP fraction (for example, 4% at 1000 bytes).
  1017.  
  1018. 3.5.  Compression of non-RTP UDP Packets
  1019.  
  1020. As described earlier, the COMPRESSED_UDP packet may be used to compress
  1021. UDP packets that don't carry RTP.  Whatever data follows the UDP header
  1022. is unlikely to have some constant values in the bits that correspond to
  1023. usually constant fields in the RTP header.  In particular, the SSRC
  1024. field would likely change.  Therefore, it is necessary to keep track of
  1025. the non-RTP UDP packet streams to avoid using up all the context slots
  1026. as the "SSRC field" changes (since that field is part of what identifies
  1027. a particular RTP context).  Those streams may each be given a context,
  1028. but the encoder would set a flag in the context to indicate that the
  1029. changing SSRC field should be ignored and COMPRESSED_UDP packets should
  1030. always be sent instead of COMPRESSED_RTP packets.
  1031.  
  1032. 4.  Interaction With Segmentation
  1033.  
  1034. A segmentation scheme may be used in conjunction with RTP header
  1035. compression to allow small, real-time packets to interrupt large,
  1036. presumably non-real-time packets in order to reduce delay.  It is
  1037. assumed that the large packets bypass the compressor and decompressor
  1038. since the interleaving would modify the sequencing of packets at the
  1039. decompressor and cause the appearance of errors.  Header compression
  1040. should be less important for large packets since the overhead ratio is
  1041. smaller.
  1042.  
  1043. If some packets from an RTP session context are selected for segmenta-
  1044. tion (perhaps based on size) and some are not, there is a possibility of
  1045. re-ordering.  This would reduce the compression efficiency because the
  1046. large packets would appear as lost packets in the sequence space.  How-
  1047. ever, this should not cause more serious problems because the RTP
  1048. sequence numbers should be reconstructed correctly and will allow the
  1049. application to correct the ordering.
  1050.  
  1051. Link errors detected by the segmentation scheme using its own sequencing
  1052. information may be indicated to the compressor with an advisory
  1053. CONTEXT_STATE message just as for link errors detected by the link layer
  1054. itself.
  1055.  
  1056. The context ID byte is placed first in the COMPRESSED_RTP header so that
  1057. this byte may be shared with the segmentation layer if such sharing is
  1058. feasible and has been negotiated.  Since the context ID may have any
  1059. value, it can be set to match context information from the segmentation
  1060. layer.
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.                          Expires December 1997                 [Page 19]
  1067.  
  1068. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  1069.  
  1070.  
  1071. 5.  Negotiating Compression
  1072.  
  1073. The use of IP/UDP/RTP compression over a particular link is a function
  1074. of the link-layer protocol.  It is expected that such negotiation will
  1075. be defined separately for PPP [4], for example.  The following items may
  1076. be negotiated:
  1077.  
  1078.   o The size of the context ID.
  1079.   o The maximum size of the stack of headers in the context.
  1080.   o A context-specific table for decoding of delta values.
  1081.  
  1082. 6.  Acknowledgments
  1083.  
  1084. Several people have contributed to the design of this compression scheme
  1085. and related problems.  Scott Petrack initiated discussion of RTP header
  1086. compression in the AVT working group at Los Angeles in March, 1996.
  1087. Carsten Bormann has developed an overall architecture for compression in
  1088. combination with traffic control across a low-speed link, and made
  1089. several specific contributions to the scheme described here.  David Oran
  1090. independently developed a note based on similar ideas, and suggested the
  1091. use of PPP Multilink protocol for segmentation.  Mikael Degermark has
  1092. contributed advice on integration of this compression scheme with the
  1093. IPv6 compression framework.
  1094.  
  1095. 7.  References:
  1096.  
  1097.  
  1098. [1] H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson, "RTP:
  1099.     A Transport Protocol for real-time applications," RFC 1889.
  1100.  
  1101. [2] V. Jacobson, "TCP/IP Compression for Low-Speed Serial Links,"
  1102.     RFC 1144.
  1103.  
  1104. [3] M. Degermark, B. Nordgren, and S. Pink, "Header Compression for
  1105.     IPv6," work in progress.
  1106.  
  1107. [4] W. Simpson, "The Point-to-Point Protocol (PPP)", RFC 1548.
  1108.  
  1109.  
  1110. 8.  Security Considerations
  1111.  
  1112. Because encryption eliminates the redundancy that this compression
  1113. scheme tries to exploit, there is some inducement to forego encryption
  1114. in order to achieve operation over a low-bandwidth link.  However, for
  1115. those cases where encryption of data and not headers is satisfactory,
  1116. RTP does specify an alternative encryption method in which only the RTP
  1117. payload is encrypted and the headers are left in the clear.  That would
  1118. allow compression to still be applied.
  1119.  
  1120.  
  1121.  
  1122.                          Expires December 1997                 [Page 20]
  1123.  
  1124. Internet Draft         draft-ietf-avt-crtp-03.txt              July 1997
  1125.  
  1126.  
  1127. 9.  Authors' Addresses
  1128.  
  1129.    Stephen L. Casner
  1130.    Precept Software, Inc.
  1131.    1072 Arastradero Road
  1132.    Palo Alto, CA 94304
  1133.    United States
  1134.    EMail: casner@precept.com
  1135.  
  1136.    Van Jacobson
  1137.    MS 46a-1121
  1138.    Lawrence Berkeley National Laboratory
  1139.    Berkeley, CA 94720
  1140.    United States
  1141.    EMail: van@ee.lbl.gov
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.                          Expires December 1997                 [Page 21]
  1179.  
  1180.  
  1181.