David Leon
   Internet Draft                                          Viktor Varsa
   Document: draft-ietf-avt-rtp-retransmission-                   Nokia
   00.txt
   Expires: September 2002                                   March 2002


                       RTP retransmission framework


   Status of this Memo

   This document is an Internet-Draft and is in full conformance
   with all provisions of Section 10 of RFC2026.


   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other documents
   at any time.  It is inappropriate to use Internet-Drafts as
   reference material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
        http://www.ietf.org/ietf/1id-abstracts.txt
   The list of Internet-Draft Shadow Directories can be accessed at
        http://www.ietf.org/shadow.html.


Abstract

   RTP retransmission is an effective packet loss recovery scheme for
   real-time applications with relaxed delay bounds.

   This document describes an RTP retransmission framework. It defines
   a payload format for retransmitted packets and recommends rules for
   sending these packets. Retransmitted RTP packets are sent in a
   separate stream from the original RTP stream. It is assumed that
   feedback from receivers to senders indicating the occurred packet
   losses is available by some means not defined here.


Main changes since draft-leon-rtp-retransmission-02.txt

   The previous version of the draft described the use of the
   redundancy payload format (RFC 2198) in order to send retransmission
   data and original data in the same stream. At IETF #53, it was
   concluded that RFC 2198 was not intended to such a use. Piggybacking
   retransmitted packets was thus removed from the draft.



   Leon, Varsa   IETF draft - Expires September 2002                1
                     RTP retransmission framework           March 2002



Table of Contents


   Abstract...........................................................1
   Main changes since draft-leon-rtp-retransmission-02.txt............1
   1. Introduction....................................................2
   2. Terminology.....................................................2
   3. Retransmission framework basic principles.......................3
   4. Retransmission payload format...................................4
   5. Use with the Extended RTP profile for RTCP-based feedback.......5
   6. Congestion control..............................................7
   7. Example scenario of unicast streaming...........................8
   8. SDP usage.......................................................8
   9. FEC for retransmission..........................................9
   10. Security consideration........................................10
   11. References....................................................10
   Author's Addresses................................................11


1. Introduction

   Packet losses between an RTP sender and receiver may significantly
   degrade the quality of the received signal. Several techniques, such
   as forward error correction (FEC), retransmissions or adaptation of
   application layer (e.g. video) error resilience techniques based on
   back-channel messages may be considered to increase the robustness
   to packet loss. RFC-2354 [1] discusses the different options.

   When choosing a technique for a particular system, the tolerable
   latency of the application has to be taken into account. In the case
   of multimedia conferencing, the end-to-end delay has to be at most a
   few hundred milliseconds in order to guarantee interactivity, which
   usually excludes the use of retransmission. On the other hand, in
   the case of multimedia streaming, the user can tolerate an initial
   latency as part of the session setup and thus an end-to-end delay of
   several seconds is possible. Retransmission may thus be considered
   for such applications.

   This document proposes a retransmission framework. It defines a
   payload format for retransmitted RTP packets and retransmission
   rules. This RTP retransmission scheme requires frequent packet loss
   indication feedback to the RTP entity performing retransmission. The
   AV profile [2] does not provide this feature and could therefore not
   be used. However, the retransmission scheme could be run under the
   extended RTP profile for RTCP-based feedback[3] which defines a NACK
   message that can be sent as part of a compound RTCP packet.


2. Terminology



   Leon, Varsa         - Expires September 2002                     2
                     RTP retransmission framework           March 2002


   The following terms are used in this document:

   Original packet: refers to an RTP packet sent by an RTP sender as
   part of an RTP stream.

   Original stream: refers to the stream of original packets.

   Retransmission packet: refers to an RTP packet whose payload
   includes the payload of an already sent original packet. Such a
   retransmission packet is said to be associated with the original RTP
   packet whose payload is included in the retransmission packet.

   Retransmission request: a means by which an RTP receiver is able to
   request that the RTP sender send a retransmission packet associated
   with a given original packet. In [3], a retransmission request is
   sent as a packet loss indication in a NACK message.

   Retransmission stream: the stream of retransmission packets
   associated to with an original stream.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in
   this document are to be interpreted as described in RFC-2119 [4].


3. Retransmission framework basic principles

   Retransmission packets MUST NOT share the RTP Sequence Number (SN)
   space with the original stream. The retransmission stream SHOULD use
   a different RTP session (as defined in RTP [5]) from that of the
   original stream. Since a separate session is used, the original and
   retransmission streams are sent to different multicast group/unicast
   addresses and/or port numbers. The retransmission stream has then
   its own SN space..

   There are several reasons why the SN space must not be shared:

   Since retransmission packets do not share the SN space with the
   original packets, the receiver is able to distinguish between the
   loss of original packets and retransmission packets. Otherwise,
   reliable data loss detection would not be possible. Reliable data
   loss detection is mandated for example in RTP conversational text
   [6].

   RTP Timestamp (TS) estimation of missing original packets is
   necessary at the receiver in order to decide whether a
   retransmission is useful or not. A retransmission is useful if the
   retransmission packet as a response to the retransmission request is
   estimated to arrive at the receiver before the time it is used for
   playback (playout time). The missing original packet TS can be
   estimated from TS of packets preceding and following the SN gap
   caused by the missing packet in the original stream.


   Leon, Varsa         - Expires September 2002                     3
                     RTP retransmission framework           March 2002


   The fact that RTP streams for original and retransmission packets do
   not share the same SN space guarantees that the RTP timestamp
   estimation method is reliable. Reliability would be sacrificed if
   original and retransmission packets were sent in the same RTP
   stream. The TS estimate for a lost retransmission packet ,when
   calculated as above, would then be incorrect. This is because the
   retransmission packet usually has a smaller "out-of-order" TS than
   the TS of the consecutive original packets.

   There are no modifications to the payload format of the original
   packets. Retransmission can thus work with any existing payload
   format.

   When the retransmission stream is sent to a multicast RTP session,
   receivers may choose to subscribe or not to subscribe to the RTP
   session carrying the retransmission stream. Thus, a multicast
   streaming application can use retransmission and still be backwards
   compatible as receivers which do not implement the retransmission
   payload format only join the RTP session carrying the original
   stream. A scenario where the original session is multicast and
   separate unicast sessions carry the retransmission stream to each
   participant, is also possible. In this scenario, a receiver can
   receive retransmission packets only for original packets that it has
   itself requested, and not the retransmission packets that are sent
   as responses to retransmission requests from other receivers.

    Mixers, translators and packet caches may be able to separate
   retransmission packets from original packets at an RTP session level
   and process them differently if necessary.

    As a consequence of having separate RTP sessions for original and
   retransmission streams, there are also separate RTCP streams and
   statistics for these two sessions. There is thus no corruption of
   the original stream RTCP statistics. The RTP sender is able to know
   the packet loss and jitter of the original stream. It can thus
   estimate what the quality of the received signal would be without
   the use of retransmission.


4. Retransmission payload format

   The payload format of a retransmission packet is shown below.

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         RTP Header                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |E|   OPT       |            OSN                |               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               |
   |                  Original RTP Packet Payload                  |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



   Leon, Varsa         - Expires September 2002                     4
                     RTP retransmission framework           March 2002




   RTP header usage:
   The same SSRC value SHOULD be used for the original stream and the
   retransmission stream. In the RTP header, SN has the standard
   definition, i.e. it MUST be one higher than the SN of the preceding
   retransmission packet. The payload type is dynamic and indicates the
   use of the retransmission payload format. All other fields of the
   RTP header have the same value as in the original RTP packet.

   The retransmission packet payload carries an E bit, an OPT field (7
   bits) and an OSN field (2 bytes) followed by the original RTP packet
   payload. The E bit is an extension bit for future-proofing. It MUST
   be set to zero. The OPT field is the payload type of the original
   packet payload that is being retransmitted. The OSN field is the SN
   of the original packet that originally carried the same payload.


5. Use with the Extended RTP profile for RTCP-based feedback

   When the Extended RTP profile for RTCP-based feedback [4] is used,
   it is RECOMMENDED that receivers send retransmission requests
   according to the rules in this section. The rules described
   hereafter aim at limiting the maximum delay before a retransmission
   request can be sent and are compliant to the more general rules
   described in the profile itself.


5.1 Sending rules for RTCP-based feedback

   The minimum RTCP report interval is computed according to the
   allowed RTCP bandwidth of a given session (obtained explicitly or
   calculated as a percentage of the RTP session bandwidth). The NACK
   message format defined in the profile is used. Early RTCP packets
   SHOULD NOT be used, and the NACK message SHOULD always be appended
   to a regularly scheduled compound RTCP packet that is sent at every
   RTCP report interval T_rr.

   Any other rules to send feedback MAY be used as long as they are
   compliant with the profile in use. In particular, a receiver MAY
   send NACK messages in early RTCP packets. However, in that case the
   time when the next RTCP packet following this early RTCP packet can
   be sent could be too late to report a loss occurring right after the
   early RTCP packet was sent. Sending RTCP packets at regular
   intervals guarantees that the delay between detecting an original
   packet loss and being able to send a NACK message for that packet is
   no longer than the regular RTCP interval.

   A receiver should compute an estimate of the delay D to receive a
   retransmission packet after a NACK message has been sent. This
   estimate may be obtained from past observations, RTCP report round-
   trip time if available or any other means.


   Leon, Varsa         - Expires September 2002                     5
                     RTP retransmission framework           March 2002


   The minimum receiver buffering delay B (i.e. the time between a
   packet is received and its payload is used at the receiver) is the
   RTCP reporting interval added to the delay estimate, which
   guarantees that a retransmission packet as a response to a sent
   retransmission request can be received before its payload is used.
   i.e.
   B>T_rr+D

   It can be seen that the needed receiver buffering delay is dependent
   on the amount of RTCP traffic allowed in the session. It is
   illustrated in Section 7 that moderate RTCP feedback traffic is
   enough to perform retransmission with reasonable receiver buffering
   delay.


5.2 Receiver algorithm for generating retransmission requests

   A receiver needs to maintain a list of missing original packet
   sequence numbers (SN) since its last sent RTCP packet. A receiver
   needs also to store for each missing original packet an estimated
   RTP timestamp (TS) as described in Section 3.

   At the next scheduled RTCP packet time, the receiver estimates based
   on the estimated TS of the missing original packet if a
   retransmission packet as a response to a NACK message that would be
   sent in the current RTCP packet could arrive at the receiver before
   its playout time or not. If not, it removes the packet SN from its
   list of missing packets. The receiver then sends retransmission
   requests for the missing original packets by adding the SNs of the
   missing original packets to a NACK message in the scheduled RTCP
   compound packet (see usage of the PID and BLP fields of the NACK
   message format in [4]). If needed for signalling of multiple missing
   SN, multiple NACK messages can be added to the RTCP compound
   packet..

   If the retransmission stream is sent to a multicast session, the
   receiver SHOULD listen to NACK messages from other receivers. If a
   NACK message for the SN of a missing packet at the receiver has been
   sent by another receiver, the receiver SHOULD ignore that SN in its
   list of missing packets and refrain from sending a retransmission
   request for that SN.

   The same retransmission request may be resent by the receiver if no
   retransmission packet with OSN equal to the missing original packet
   SN was received after an estimated retransmission reception time.
   This increases robustness to the loss of a NACK message or of a
   retransmission packet. The repeated retransmission request may be
   sent at the earliest at the next RTCP report scheduled time.
   Repeated retransmission requests  MUST be sent in the original RTP
   session and not in the retransmission RTP session. The number of
   repeated retransmission requests that may be sent for a given
   missing original packet SN depends on the ratio of the receiver
   buffering delay and RTCP session bandwidth.

   Leon, Varsa         - Expires September 2002                     6
                     RTP retransmission framework           March 2002



   The receiver should upon reception of a retransmission packet remove
   the SN corresponding to the original packet (OSN in the
   retransmission payload format) from the list of missing SNs.



5.3 RTCP sending rules in the retransmission RTP session

   Since the original stream and the retransmission stream are carried
   in separate RTP sessions, the retransmission stream has its own RTCP
   stream as well. The amount of RTCP sent for the retransmission
   stream is computed as a fraction of the retransmission RTP session
   bandwidth. Since the retransmission traffic is limited, the overhead
   caused by the additional RTCP packets in the retransmission RTP
   session is moderate. For example, assuming a 64 kbps original RTP
   session and on average 3% packet loss and all lost original packets
   retransmitted once, the bandwidth of the retransmission RTP session
   would be about 2 kbps. In this case the recommended RTCP traffic for
   the retransmission RTP session would be 0.1 kbps.

   Early RTCP packets and RTCP feedback messages SHOULD NOT be used in
   the retransmission RTP session.


6. Congestion control


   RTP retransmission poses a risk of increased network congestion. In
   a best-effort environment, packet loss is caused by congestion.
   Reacting to loss by retransmitting older packets in addition to the
   current data would thus further increase congestion. Implementations
   SHOULD follow the recommendations below in order to use
   retransmission.

   The RTP profile under which the retransmission scheme is used
   defines an appropriate congestion control mechanism in different
   environments. Following the rules under this profile, an RTP
   application can determine its acceptable bitrate and packet rate in
   order to be fair to other applications such as TCP flows and other
   RTP flows.

   If an RTP application uses retransmission, the acceptable packet
   rate and bitrate SHOULD include both the original and retransmitted
   data. This will guarantee that an application using retransmission
   should be fair to any other RTP or TCP flows. Such a rule would
   translate in practice into the following actions:

   If enhanced service is used it should made sure that the total
   bitrate and packet rate do not exceed that of the requested service.
   It should be further monitored that the requested services are
   actually delivered. In a best-effort environment, the sender SHOULD
   NOT send retransmission packets without reducing the packet rate and

   Leon, Varsa         - Expires September 2002                     7
                     RTP retransmission framework           March 2002


   bitrate of the original stream (for example by encoding the data at
   a lower rate).

   In addition, the sender MAY retransmit only the packets that it
   deems important and ignore NACK messages for other packets in order
   to limit the bitrate

   These congestion control mechanisms should keep the congestion level
   under an acceptable limit. This would in turn guarantee that the
   packet loss should be moderate. Too high a packet loss would mean
   that congestion is not kept under control and retransmission should
   then not be used.

7. Example scenario of unicast streaming

   Let us assume that the RTP session bandwidth is 64 kbps and the
   receiver buffering delay is 3 seconds. The network round trip time
   is 500 ms and Receiver RTCP packets are sent at 2-second intervals
   from the receiver including NACK messages for missing original
   packet SNs. With these time limitations, when the receiver algorithm
   for generating retransmission requests described in Section 5.2 is
   followed, only one NACK message but no repeated NACK messages can be
   sent for the same original packet loss. Let us assume an original
   packet rate of 50 packets per second (1 packet every 20 ms). At this
   packet rate in a packet loss distribution worst case scenario where
   every 17th original packet is lost (i.e. 5.88% uniform packet loss),
   a maximum of 6 NACK messages need to be appended to the RTCP
   compound packet that is sent every 2 seconds. The 6 NACK messages
   can report any packet losses in an SN range of 6*17=102, thus the
   number of required NACK messages would not increase with higher
   packet loss rates. The overhead required per RTCP compound packet
   for the 6 NACK messages is 36 bytes which carries 6 PID and 6 BLP
   fields in addition to the feedback message headers.

   The total compound RTCP packets size is thus: IPv4 (20) + UDP (8)+
   RR(header 8 + report 24)+ CNAME(12)+ NACK (36) = 108 bytes. The
   needed receiver RTCP bandwidth would then be 0.432 kbps. This RTCP
   bandwidth is well below the maximum allowed RTCP bandwidth that
   would be allowed when using [4]. From the receiver to the sender the
   RTCP bandwidth limit in an RTP session with 64 kbps is about 0.25*64
   = 1.6 kbps.


8. SDP usage

   The binding to the payload type number is indicated by an rtpmap
   attribute. The name used in the binding is "RTX"..


   c=IN IP4 113.3.12.11
   m=video 49170 RTP/AVPF 96
   a=rtpmap:96 H263-1998/90000
   a=fmtp:96 rtcp-fb nack

   Leon, Varsa         - Expires September 2002                     8
                     RTP retransmission framework           March 2002


   m=video 49172 RTP/AVPF 97
   a=rtpmap:97 RTX/90000


9. FEC for retransmission

   It is possible to retransmit the payload of an original packet by
   sending a FEC packet as defined in [7] instead of using the
   retransmission payload format. The base SN of the FEC header is the
   sequence number of the original packet that carried the same payload
   and the mask is set to zero. There are some advantages in using the
   FEC payload format in particular in multicast sessions as a single
   FEC packet may repair the loss of different packets at different
   receivers. In a multicast session, FEC may be combined with
   retransmission requests as described in [8] in order to achieve
   scalable reliable multicast transmission.

   There are however some motivations to define the retransmission
   payload format in order to perform retransmission instead of using
   the FEC payload format:

   *The retransmission payload format has reduced overhead (3 bytes
   instead of 12 bytes).

   *In the retransmission payload format, the RTP header TS is the
   actual TS of the (retransmitted) media carried in the packets. This
   is in line with RTP [5] specifications. This is useful in particular
   for RTP mixers/translators which process the TS. On the other hand,
   the FEC payload format uses the RTP transmission time (as the FEC
   packet should be computed over data with different TS).

   *Assuming that no retransmission payload format were defined, the
   FEC payload format would then be used in different ways: sending
   computed FEC packets proactively for correction of lost packets at
   the receiver without requiring NACK messages (referred hereafter as
   proactive FEC) or sending retransmitted data upon receipt of a NACK
   message from the receiver.
   Although they could use the same payload format, these two repair
   mechanisms are different. For a given amount of overhead, they offer
   a different residual packet loss vs. latency trade-off.
   Retransmission provides higher packet loss recovery at the expense
   of higher delay. If a sender uses proactive FEC and none of the
   packets protected by a given FEC packet is lost, there is then no
   use of the FEC packet at the receiver. On the other hand, data which
   are retransmitted are known to have been lost.
   Therefore, a receiver may wish to use only retransmission and not
   receive any proactive FEC from the sender in order to trade-off
   itself the buffering delay, the data-loss rate and the overhead.
   There is thus a motivation to let the receiver decide at session
   setup whether the sender may send proactive FEC or retransmission
   only.
   If the same payload format were used for these different purposes,
   the receiver would not know at session establishment which repair

   Leon, Varsa         - Expires September 2002                     9
                     RTP retransmission framework           March 2002


   mechanism is used by the sender (without defining out-of-band
   signalling). The sender would decide by itself whether FEC or
   retransmission (or both) is used and the receiver would not know
   until receiving the FEC packets whether proactive FEC or
   retransmission is used.
   On the other hand, having different payload formats or at least
   different out of band signalling for these two repair mechanisms
   (e.g. through defining the binding name 'RTX' SDP rtpmap attribute)
   would allow the receiver to choose which mechanism to use (among
   those supported by the sender). The receiver would then have an
   explicit way to tell the sender not to send proactive FEC.
   Furthermore, if the receiver did not know at session establishment
   whether it will receive FEC packets or retransmission, it would have
   to be prepared to receive FEC and thus be able to perform FEC packet
   recovery operations. Implementers could thus not choose to implement
   only a FEC or retransmission scheme.


10. Security consideration

   The security considerations of the profile under which the
   retransmission scheme is used should be applied.


11. References

   1  Perkins, C., Hodson, O., "Options for Repair of Streaming Media",
      RFC 2354, June 1998.

   2  Schulzrinne, H and Casner, S. " RTP Profile for Audio and
      VideoConferences with Minimal Control," Internet Draft draft-
      ietf-avt-profile-new-12.txt, November 2001.

   3  J Ott, S Wenger, S Fukunaga, N Sato, K Yano, M Akihiro, H Koichi,
      R Hakenberg, C. Burmeister "Extended RTP profile for RTCP-based
      feedback", November 2001

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

   5  Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP:
      A Transport Protocol for Real-Time Applications", Internet Draft
      draft-ietf-avt-rtp-new-11.txt, November 2001.

   6  Hellstrom, J, "RTP for conversational text", RFC 2793, May 2000

   7  Rosenberg, J. and Schulzrinne, H., " An RTP Payload Format for
      Generic Forward Error Correction", RFC 2733, December 1999.

   8  Nonnenmacher, Biersack, E, Towsley, D,. "Parity-based loss
      recovery for reliable multicast transmission", ACM SIGCOMM'97,
      Cannes, France, September 1997


   Leon, Varsa         - Expires September 2002                    10
                     RTP retransmission framework           March 2002




Author's Addresses

   David Leon
   Nokia Research Center
   6000 Connection Drive            Phone:  1-972-374-1860
   Irving, TX. USA                  Email:  david.leon@nokia.com

   Viktor Varsa
   Nokia Research Center
   6000 Connection Drive            Phone:  1-972-374-1861
   Irving, TX. USA                  Email:  viktor.varsa@nokia.com









































   Leon, Varsa         - Expires September 2002                    11