Internet Engineering Task Force                                      AVT
Internet Draft                         J.Rosenberg,B.Aboba,H.Schulzrinne
draft-rosenberg-rtpproto-00.txt             Bell Labs/Microsoft/Columbia
March 6, 1998
Expires: September 6, 1998


                    Elevating RTP to Protocol Status

STATUS OF THIS MEMO

   This document is an Internet-Draft. Internet-Drafts are working docu-
   ments of the Internet Engineering Task Force (IETF), its areas, and
   its working groups.  Note that other groups may also distribute work-
   ing 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 mate-
   rial or to cite them other than as ``work in progress''.

   To learn the current status of any Internet-Draft, please check the
   ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
   Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
   munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
   ftp.isi.edu (US West Coast).

   Distribution of this document is unlimited.

1 Abstract

   This document discusses the issues involved in elevating RTP to the
   status of protocol, equivalent to TCP or UDP. This will result in all
   RTP packets being explicitly labeled as such in the packet header.
   This vastly simplifies the problem of classifying real time streams.
   Such classification operations are essential for successful deploy-
   ment of RTP header compression, differentiated services, and traffic
   isolation. We define the format of the RTP protocol header, and dis-
   cuss issues of backwards compatibility.

2 Introduction

   Over the last few years, RTP [1] has gained widespread acceptance as
   the transport protocol for real time services in the Internet. It has
   been adopted by the ITU-T as part of the H.323 protocol suite [2], it


J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 1]


Internet Draft              RTP as Protocol                March 6, 1998

   is used in many commercial and public software packages, and it is
   used extensively on the mbone.  Its success is due in large part to
   the growing presence of real time traffic on the Internet, a trend
   which is likely to continue.

   At the same time, Internet routers and hosts are becoming more aware
   of the traffic that they are carrying. Commerical routers can drop,
   maintain logging records, and isolate in separate queues traffic
   based on UDP and TCP port numbers. The integrated services architec-
   ture [3,4,5], and the recently defined differentiated services , both
   require routers to classify traffic based on fields and parameters
   outside of the IP header.

   Unfortunately, RTP has always been difficult to classify. Its packets
   are encapsulated in UDP, and do not use a single, static port number.
   This makes them very difficult to identify correctly. Hosts have
   resorted to heuristics, such as looking for periodic packets with
   certain byte values remaining static or incrementing predictably.
   These heuristics are both stateful and complex, and do not scale well
   at all.

   Elevating RTP to protocol status, equivalent to TCP and UDP, would
   imply that RTP packets are explicitly labeled as such in the IP
   packet header. Such a change has a wide variety of useful implica-
   tions, but also comes at a cost. This document discusses the motiva-
   tions for such a change, discusses what the format of the new RTP
   would look like, describes implementation approaches, and discusses
   the important issue of backwards compatibility.

3 Motivations

   We see a number of important applications where large scale classifi-
   cation of RTP packets is neccesary. We discuss each in detail, and
   weigh the usefulness of elevating RTP to protocol status as a solu-
   tion.

3.1 Differentiated Services

   Work has recently begun to define differentiated services on the
   Internet. These services generally allow an ISP to mark packets at
   the periphery of the network. Within the network, the packets receive
   special treatment depending on the marking. For example, a premium
   service class has been defined. This service emulates a completely
   unloaded network, giving minimal delays and loss. Such a service is
   ideal for real time applications, for example. An ISP could use the
   premium service to offer improved quality for real time traffic only.
   In order to implement this, packets must be classified at the periph-
   ery so that they can be appropriately marked.

   By having RTP packets clearly identified, the periphery routers of
   the ISP will be able to mark them for premium service within the


J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 2]


Internet Draft              RTP as Protocol                March 6, 1998


   ISP's network. Making RTP a protocol is an efficient way to accom-
   plish this.

   On the other hand, clients could mark their packets as being real
   time by setting bits in other fields of the packet. In fact, the very
   same TOS bits used by diffserv could be used by clients to express
   how they would like the packets to be treated. These bits could then
   be modified at the periphery of the network by the ISP to provide the
   desired level of service.

3.2 Static Router Configuration

   Most commercially available IP routers allow administrators to con-
   figure the router to queue packets separately based on the value of
   the source IP address, destination IP address, source port, destina-
   tion port, protocol tuple. It would be very beneficial to an ISP to
   be able to identify real-time traffic, isolate it from other flows,
   and provide it with some amount of bandwidth. Currently, since RTP
   cannot be classified by 5-tuple, it is placed in the default queue
   with lots of other things that need much different handling compared
   to real time.

   Having RTP be an IP protocol would improve the situation in two ways.
   First, RTP packets could be identified by the protocol field in the
   IP header. Secondly, the payload type field in the RTP header could
   be used to infer information about the codec used for the media com-
   pression. This would allow a router to make a very educated guess
   about the bandwidth and QoS requirements for the flow.

   As with differentiated services, one could simply use a TOS value to
   indicate that the traffic was real time (which may or may not be
   RTP). However, having RTP packets explicitly labeled would allow
   routers to look in RTP-specific header fields for additional informa-
   tion.

3.3 Firewalls

   Having RTP packets be labeled would provide additional information
   that could be used by firewalls. Firewalls could be configured to
   drop or accept all RTP traffic coming into or leaving a domain. Cur-
   rently, RTP traffic cannot be distinguished from other applications
   which use dynamic UDP ports. This would no longer be the case.

   Firewall administrators would also be able to block RTCP traffic,
   while admitting RTP. This is extremely useful for mbone sessions.
   Typically, these will have one sender of data, with hundreds of lis-
   teners, each of which sends only RTCP. These RTCP packets can cause a
   lot of network state (in the form of (S,G) entries) to be created,


J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 3]


Internet Draft              RTP as Protocol                March 6, 1998


   and can also cause significant network traffic (due to flooding in
   DVMRP). Filtering incoming RTCP, but not RTP, would allow a network
   administrator to offer mbone service without needing to worry about
   these RTCP problems.

3.4 RTP Header Compression

   RTP header compression [6] is typically used over dialup modem lines
   where bandwidth is at a premium. Without it, the RTP/UDP/IP headers
   require 10 kbps alone when used with the G.729 speech coder with a
   30ms packetization delay. With it, this rate is reduced to less than
   half a kilobit per second. This reduction can mean the difference
   between transmitting video and having no video at all. The compres-
   sion algorithm itself relies on the compressor classifying RTP pack-
   ets, and maintaining state for the flow. Unfortunately, when the com-
   pression is performed in the downstream direction (from the access
   device to the host), the access device must decide which packets to
   apply compression to. Having RTP packets be explicitly labeled makes
   this process vastly simpler. The compressor could also look at the
   SSRC field to decide to which compression context the packet belongs.

   We observe that the access device could instead decide which packets
   are RTP based on signaling from the host. An additional PPP packet
   type could be created indicating the port number that the host is
   expecting RTP packets on. Hosts would need to send these packets
   after opening a socket for RTP. This would require explicit support
   in the OS, but it is probably no more complicated than the OS support
   required to elevate RTP to protocol status.

4 Alternate Solution: RTP Port Numbers

   One approach to identifying RTP packets could be to assign it a
   static pair of port numbers (one for RTP, one for RTCP). This is not
   acceptable, however. In some cases, a host may run several real time
   applications (such as a voice conferencing tool and a video confer-
   encing tool), each of which may independently require its own ports.
   An alternative would be to assign a block of port numbers to RTP.
   This would allow for multiple simultaneous applications and still
   allow RTP traffic to be identified.

   The weakness of this approach is twofold: (1) it requires a choice of
   an upper bound on the number of simultaneous RTP sessions in a
   client, and (2) other UDP-based applications with dynamic port num-
   bers may randomly choose an RTP-assigned port. The latter problem can
   be made to eventually disappear if new applications are written to
   avoid the UDP space. In the interim (which may be forever), some non
   real time traffic could be mistakenly classified as real time.



J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 4]


Internet Draft              RTP as Protocol                March 6, 1998


5 Solution: RTP as Protocol

   Our proposal would be to have the new RTP protocol have a header
   which is identical to the concatenation of the UDP header and RTP
   header. The new RTP protocol header would then look like:


       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    RTP Source Port            |    RTP Destination Port       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      Length                   |          Checksum             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |V=2|P|X|  CC   |M|     PT      |       sequence number         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           timestamp                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           synchronization source (SSRC) identifier            |
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
      |            contributing source (CSRC) identifiers             |
      |                             ....                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+




   The source port, destination port, length, and checksum have exactly
   the same syntax and semantics as in UDP. Here, however, the port num-
   bers refer to RTP ports.

6 Impact on Network Aware Devices

   Elevation of RTP to protocol status would have an impact on almost
   all network aware devices. This section discusses the implications
   for each.

6.1 Hosts

   When a packet arrives at a host, the operating system typically looks
   at the IP protocol field, and processes the packet based on it. Since
   RTP would become a new protocol, it is important to consider how to
   handle it in operating systems. There seem to be three approaches:

     1.   Long Term. Significant extensions to the standard BSD sockets
          API can be made to support RTP as another socket type. The
          kernel would be upgraded to process RTP and RTCP packets. The
          sockets extensions would provide functions for interacting


J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 5]


Internet Draft              RTP as Protocol                March 6, 1998


          with RTCP, and setting the various fields and parameters in
          the RTP header.  Applications would need to be written to make
          use of the new API.  It is not clear that having RTP in kernel
          space is the most efficient approach, but elevating RTP to
          full protocol makes it a possibility at least.

     2.   Near Term. A small extension to the BSD sockets API can be
          made to define a new protocol type ( IPPROTO_RTP) which can be
          used when creating a socket of type  SOCK_DGRAM. The resulting
          socket is identical to all respects to the standard UDP
          socket, except the value of the protocol field in the IP
          header is set to that of RTP when sending. When receiving,
          packets are sent to the socket only when the IP protocol field
          indicates RTP. When sending data to the socket, the kernel
          would add only the UDP portion of the RTP header. When receiv-
          ing, it would strip only the UDP portion. This means that the
          RTP part of the header would still need to be processed in
          application space, but the UDP portion would be in the kernel.
          This solution requires absolutely minimal changes to existing
          application software, which perform RTP, but not UDP process-
          ing. The kernel modifications are minor.

     3.   Short Term. Before operating systems are changed at all, the
          new RTP protocol can be implemented purely in user space by
          making use of the raw socket. This would require applications
          to implement both the RTP and UDP portions of the protocol.
          The UDP code can easily be lifted from current operating sys-
          tems. Even if it cannot, its implementation is fairly
          straightforward.

We anticipate that implementations would gradually migrate from the
short term solution to the near term. It is not clear whether the long
term solution is practical.

An unfortunate difficulty with the short term solution is that most
operating systems only allow users with root permissions to access the
raw socket. This may be problematic for many applications.

6.2 Routers

   Routers do not need to understand the IP protocol field in order to
   forward packets. However, most routers can be programmed with filters
   that drop or classify packets based on this field. This operation is
   only a problem if the routers cannot be configured to accept new val-
   ues for this field. Routers which accept numeric values should oper-
   ate correctly.

6.3 Firewalls


J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 6]


Internet Draft              RTP as Protocol                March 6, 1998


   In all likelihood, most firewalls currently drop all traffic that is
   not UDP or TCP. This would cause the new RTP packets to be discarded
   ubiquitously by firewalls. To fix the problem, firewalls would need
   to be upgraded to recognize the new protocol type, and accept filter
   rules based on it.

6.4 Tools

   A number of host tools rely on examination of the IP protocol header.
   Most important among these is tcpdump, based on the Berkeley packet
   filter. Tcpdump would not be able to recognize the new RTP, and would
   need to be upgraded in order to do this. This issue is minor, but at
   least worth a mention.

   Other similar tools, such as packet sniffers and network analyzers,
   would also need to eventually be upgraded to recognize the new proto-
   col. In the long run, this would be very advantageous. Network tools
   cannot recognize RTP packets at all. With this change, they would be
   able to recognize and decode RTP packets. They could also recognize
   and decode RTCP packets, which may provide valuable feedback when
   doing network debugging.

6.5 Network Address Translators

   Network Address Port Translation [7] allows for many hosts in a stub
   domain to map their IP addresses (which may be routable or un-
   routable) to a single IP address. NAPT does this by translating the
   source IP address and port number. Many NAPT devices currently only
   support UDP or TCP, and thus would be unable to handle a new protocol
   without an upgrade. In any case, real-time applications present spe-
   cial difficulties for NAT or NAPT implementations, since protocol
   such as SDP require IP addresses to be carried in application packets

7 Backwards Compatibility

   It is important to consider how to handle interoperability between
   end systems using the new RTP protocol and those using the old. We
   can classify RTP applications into two broad types - broadcast and
   interactive. The interoperability issues are different in both cases.

7.1 Interactive

   For interactive applications, there is usually some kind of signaling
   protocol that establishes communications before the media is trans-
   ported using RTP. These signaling protocols usually indicate the var-
   ious codecs that the end systems are capable of decoding and encod-
   ing. The use of the new RTP can be considered as just another capa-
   bility. Both sides express their ability to receive the new RTP.


J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 7]


Internet Draft              RTP as Protocol                March 6, 1998


   Applications implementing the new RTP should be prepared to also
   transmit using the old RTP. As a result, a common RTP version can
   always be found.

   In the case of H.323, this would require the addition of a single new
   ASN.1 element in H.245 [8], which expresses the ability to receive
   the new RTP.

   As an alternative, backwards compatibility can be achieved purely at
   the RTP layer by making use of ICMP errors. Any host implementing the
   new RTP would also be required to implement the old one. Whenever a
   host listens to an RTP socket, the operating system accepts packets
   which are either UDP or the new RTP with the given port number. This
   will allow new RTP implementations to receive packets from both old
   and new without explicit application signaling. This comes at the
   expense of an effective sharing of port space between UDP and RTP.

   When a host implementing the new RTP wishes to send a packet, it
   sends it using the RTP protocol number. Hosts which do not understand
   the new RTP protocol should generate an ICMP protocol unreachable
   error message, and return it back to the source. The sender's operat-
   ing system must then use the old RTP for sending packets on that
   socket from that point forward. This will allow a new RTP implementa-
   tion to talk to either a new or old one, thus achieving full back-
   wards compatibility. The cost is additional smarts in the operating
   system, and potential loss of the first few RTP packets until the
   host switches back to RTP. This approach fails for multicast.

7.2 Broadcast

   For broadcast applications, such as mbone conferences, there is no
   capabilities exchange. However, there is usually some kind of session
   advertisement (using SAP [9] and SDP [10], for example). These
   announcements include the port numbers and multicast group used for
   the media. They could be extended to also indicate whether the new
   RTP protocol is being used. This would allow end systems to know
   whether they can correctly receive the media or not. If a broadcast
   is taking place using the new RTP, and there are old receivers trying
   to listen, they will not be able to receive the media. However, this
   is no different than the case where a broadcast is taking place using
   a codec that some client applications cannot decode. The only solu-
   tion is a software upgrade of the clients.

8 Conclusion

   We have discussed the issues related to elevating RTP to protocol
   status, which would give it its own unique IP protocol number like
   TCP and UDP. The main motivation for this is to allow for


J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 8]


Internet Draft              RTP as Protocol                March 6, 1998


   classification of RTP packets in end systems, routers, and other
   devices. Classification is needed for services such as RTP header
   compression, real time flow isolation, and differentiated services.
   We have proposed that the new RTP protocol have a header which is the
   concatenation of the current UDP and RTP header fields. This simpli-
   fies implementation, and leaves open a smooth migration path for
   deployment. We have also discussed backwards compatibility, and how
   it can be handled for broadcast and interactive applications.

9 Full Copyright Statement

   Copyright (C) The Internet Society (1998). 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 implmentation 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 Soci-
   ety 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 fol-
   lowed, 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 MER-
   CHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."

10 Authors Addresses



   Jonathan Rosenberg
   Bell Laboratories, Lucent Technologies
   101 Crawfords Corner Rd.
   Holmdel, NJ 07733
   email: jdrosen@bell-labs.com



J.Rosenberg,B.Aboba,H.Schulzrinne                             [Page 9]


Internet Draft              RTP as Protocol                March 6, 1998


   Bernard Aboba
   Microsoft Corporation
   One Microsoft Way
   Redmond, WA 98052
   email: aboba@microsoft.com

   Henning Schulzrinne
   Columbia University
   M/S 0401
   1214 Amsterdam Ave.
   New York, NY 10027-7003
   email: schulzrinne@cs.columbia.edu




11 Bibliography

   [1] H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson, RTP: a
   transport protocol for real-time applications, Request for Comments
   (Proposed Standard) 1889, Internet Engineering Task Force, Jan. 1996.

   [2] ITU-T,   Recommendation H.323 - Visual Telephone Systems and
   Equipment for Local Area Networks which Provide Non-Guaranteed Qual-
   ity of Service , February 1996.

   [3] J. Wroclawski, The use of RSVP with IETF integrated services,
   Request for Comments (Proposed Standard) 2210, Internet Engineering
   Task Force, Oct.  1997.

   [4] J. Wroclawski, Specification of the controlled-load network ele-
   ment service, Request for Comments (Proposed Standard) 2211, Internet
   Engineering Task Force, Oct. 1997.

   [5] R. Guerin, C. Partridge, and S. Shenker, Specification of guaran-
   teed quality of service, Request for Comments (Proposed Standard)
   2212, Internet Engineering Task Force, Oct. 1997.

   [6] S. Casner and V. Jacobson, Compressing IP/UDP/RTP headers for
   low-speed serial links, Internet Draft, Internet Engineering Task
   Force, Nov. 1996.  Work in progress.

   [7] P. Srisuresh and K. Egevang, The ip network address translator
   (nat), (internet draft), Internet Engineering Task Force, Sept. 1997.
   Work in Progress.

   [8] International Telecommunication Union, Control protocol for mul-
   timedia communication, Recommendation H.245, Telecommunication


J.Rosenberg,B.Aboba,H.Schulzrinne                            [Page 10]


Internet Draft              RTP as Protocol                March 6, 1998


   Standardization Sector of ITU, Geneva, Switzerland, Mar. 1996.

   [9] M. Handley, SAP: Session announcement protocol, Internet Draft,
   Internet Engineering Task Force, Nov. 1996.  Work in progress.

   [10] M. Handley, SDP: Session description protocol, Internet Draft,
   Internet Engineering Task Force, Nov. 1997.  Work in progress.











































J.Rosenberg,B.Aboba,H.Schulzrinne                            [Page 11]