Audio/Video Transport                                          J. Lennox
Internet-Draft                                             Layered Media
Expires: December 21, 2006                                 June 19, 2006


  Marking and Selectively Retransmitting High-Priority Packets in the
                   Real-Time Transport Protocol (RTP)
                draft-lennox-avt-recoverable-packets-00

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   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.

   This Internet-Draft will expire on December 21, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

   In some circumstances, it is useful and desirable for the sender of
   an RTP stream to be able to deliver a subset of its RTP packets
   reliably.  One example of this is a video codec which can encode a
   video stream such that decoder state can be maintained using just a
   subset of the packets encoded.  However, existing RTP reliability
   mechanisms only define mechanisms which retransmit all the packets of
   an RTP stream.




Lennox                  Expires December 21, 2006               [Page 1]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   This document describes a mechanism by which the sender of an RTP
   stream can mark a subset of the packets of an RTP stream as high-
   priority recoverable packets, and by which the receiver of the stream
   can request retransmission of the high-priority packets.


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
   4.  Use of R Packets With Video Streams  . . . . . . . . . . . . .  4
   5.  RTP Header Extension to Indicate R Packets . . . . . . . . . .  5
   6.  RTCP Feedback Messages . . . . . . . . . . . . . . . . . . . .  8
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . .  9
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 10
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
     9.1.  Normative References . . . . . . . . . . . . . . . . . . . 10
     9.2.  Informative References . . . . . . . . . . . . . . . . . . 10
   Appendix A.  Requirements  . . . . . . . . . . . . . . . . . . . . 11
   Appendix B.  Analysis of Alternate Approaches  . . . . . . . . . . 12
     B.1.  Generic NACK . . . . . . . . . . . . . . . . . . . . . . . 12
     B.2.  Generic NACK with Codec knowledge  . . . . . . . . . . . . 12
     B.3.  Codec-Specific NACK  . . . . . . . . . . . . . . . . . . . 13
     B.4.  Multiple streams . . . . . . . . . . . . . . . . . . . . . 13
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 14
   Intellectual Property and Copyright Statements . . . . . . . . . . 15
























Lennox                  Expires December 21, 2006               [Page 2]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


1.  Introduction

   In many circumstances, it is useful to allow a subset of the packets
   in a Real-Time Transport Protocol (RTP) [RFC3550] media stream to be
   transmitted reliably (i.e. that they be retransmitted if they are
   lost).  However, current mechanisms require either that any lost
   packet be retransmitted, or that none are.  There is no way for the
   sender of an RTP stream to select some packets of a stream to be
   retransmittable.

   For example, modern flexible video codecs such as H.264
   [ITU.H264.2005] allow video streams to be encoded flexibly.  Unlike
   in earlier video codecs, inter-picture image prediction may be based
   not just on an immediately preceding picture, but optionally instead
   on earlier pictures transmitted in the video stream.  As a result, it
   is possible for a video encoder to encode its stream such that in
   high packet loss situations, stream state can be maintained or re-
   established using only a fraction of the RTP packets transmitted in
   the stream.  If a media stream experiences transient packet loss, a
   decoder can avoid reporting all lost packets, and an encoder does not
   need to retransmit all the missed packets, in order for the decoder
   to fully re-establish state.

   To achieve this desirable property, however, a decoder must be able
   to determine, based only on the packets it has received, whether a
   packet it has missed was one that it needed to receive reliably to
   reestablish stream state.  This document describes a payload-format
   independent mechanism by which a receiver (or intermediate media-
   aware network entity) can quickly determine whether essential packets
   have been lost and can request their retransmission.

   The mechanism described by this document is also applicable to other
   application scenarios -- for example, DTMF [RFC2833] tones in an
   audio stream -- in which it is useful for some, but not all, of the
   packets in an RTP stream to be transmitted reliably.

   Appendix A lists the requirements for this protocol, and Appendix B
   evaluates some alternate approaches to the problem described.


2.  Terminology

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
   and "OPTIONAL" are to be interpreted as described in RFC 2119
   [RFC2119] and indicate requirement levels for compliant
   implementations.




Lennox                  Expires December 21, 2006               [Page 3]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


3.  Overview

   When sending a stream of RTP packets, a media sender may choose to
   mark a subset of the stream's packets as high-reliability packets.
   This subset of the RTP packets is named "R packets," for
   "recoverable" packets.  Other packets are called "Non-R packets".

   An RTP stream can contain several independent series of R packets.
   (A given R packet can belong to only one series of R packets).  Every
   R packet is identified with an R packet sequence number (RSeq),
   unique (modulo 2^16) within its series.  R packets within a series
   are numbered in order, and a receiver detects missing R packets by
   noting gaps in the R packet sequence numbers.  R packets sequence
   numbers are identified using an RTP header extension element, defined
   in Section 5.

   This header extension element is also used in non-R packets, to
   identify the RTP stream's most recently transmitted R packet in each
   series.  Thus, receivers can detect missing R packets based on non-R
   packets as well as R packets.  Since R packets can be sent at a
   fairly low rate relative to the overall packet sending rate of the
   RTP stream, this allows receivers to detect missing R packets much
   more quickly.  If multiple series of R packets are being sent, R
   packet from one series can also identify the most recently sent R
   packets from the other active series.

   When a receiver detects that it has missed an R packet, it sends an R
   packet NACK message (RNACK), described in Section 6, using the RTCP
   feedback (AVPF) [I-D.ietf-avt-rtcp-feedback] mechanism.  On receiving
   an RNACK message, the sender can then retransmit the missing packet.

   If a sender determines that some R packets, sent in the past, are no
   longer needed by the receiver, it can send a new R packet indicating
   that the earlier ones are no longer needed.  This R packet is called
   a superseding R packet, as receipt of a superseding R packet
   indicates that earlier R packets need not be requested by a receiver.
   The first R packet of an RTP stream is always encoded such that it
   supersedes all the previous (non-existent) R packets in the stream.


4.  Use of R Packets With Video Streams

   For several video formats, it is possible for a video encoder to
   encode and packetize its media so that a subset of the packets of an
   RTP [RFC3550] stream are sufficient for a stream decoder to fully
   reestablish the correct decoding state.

   In order to take advantage of R packets, an encoder periodically



Lennox                  Expires December 21, 2006               [Page 4]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   encodes a frame (or other unit of the media data) in a way that
   either depends on no previous data (an intra-encoded R frame) or that
   depends only on previously transmitted R packets (a P-encoded R
   frame).  Frames transmitted in non-R packets can then reference the
   frames encoded in R packets.  If transient packet loss occurs, a
   decoder need only request retransmission of the R packets it has
   missed in order to re-establish decoder state; missed non-R packets
   can be safely ignored.  Missed R packets are useful (and necessary)
   for maintaining the continuity of the media stream.  In some cases
   even if retransmissions of R packets arrive at the decoder too late
   to be played out, the decoder can "fast-forward" through a subset of
   the stream in order to catch up to the stream's current playout
   point.

   It is not necessary to receive every R packet ever transmitted on a
   media stream in order to reestablish the stream state.  As mentioned,
   while some R packets (P frames) depend on previous data transmitted
   in a stream, others (intra frames) depend on no previous data and
   imply full stream state.  Thus, the R packets carrying intra frames
   are encoded such that they supersede all the R packets prior to the
   first packet of the intra frame.

   Furthermore, when an encoder receives a report about a lost R packet,
   it is possible for it to decide to encode a fresh R frame (based only
   on R frames it believes have been received correctly) rather than
   retransmitting the lost packet.  This frame's R packets are then
   marked as superseding the R packets of the frames which are no longer
   used for dependency tracking.

   In layered encodings, there can be more than one series of required
   packets, e.g. a base-layer I-frame eliminates the need for previous
   base-layer long-term reference frames, but not for enhancement-layer
   long-term reference frames.  In this case, each layer's R frames are
   identified by a different R packet series.


5.  RTP Header Extension to Indicate R Packets

   This section describes the RTP header extension element used to
   indicate R packets.

   In an RTP stream containing R packets, packets are marked with an RTP
   header extension element using the Named RTP Header Extension
   mechanism [I-D.ietf-avt-rtp-hdrext].

   The R packet header extension element identifies both R packets
   themselves and previously-sent R packets.  This header extension
   element has the name "org.ietf.avt.r-packet/200606".  Every R packet



Lennox                  Expires December 21, 2006               [Page 5]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   includes, and every non-R packet SHOULD include, at least one header
   extension element of this form.  It MAY occur multiple times in a
   header extension if multiple R packet series are in use, but MUST
   occur only once for any given series.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  ID   |  len  |R| MBZ |  SER  |  RSEQ                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  SUPERSEDE_START [opt]        |  SUPERSEDE_END [opt]          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 1: R packet header extension element

   The structure of this header extension element is illustrated in
   Figure 1.  Its fields are defined as follows:

   ID: 4 bits The local identifier negotiated for this header extension
      element, as defined in [I-D.ietf-avt-rtp-hdrext].
   Length (len): 4 bits The length minus one of the data bytes of this
      header extension element, not counting the header byte (ID and
      len), as defined in [I-D.ietf-avt-rtp-hdrext].  This will have the
      value 6 if the second word (the superseded range) is present, and
      2 if it is not.  Its value MUST either be 2 or 6.
   R: 1 bit A bit indicating that the packet containing this header
      extension element is an R packet.  If this bit is set (1), this
      header extension element identifies the current packet as an R
      packet in series SER with R sequence number RSEQ.  If it is not
      set (0), this header extension element instead indicates that the
      media stream's most recent R packet in series SER had R sequence
      number RSEQ.  (This latter case is known as a "mark element".)  An
      R packet is a packet where exactly one header extension element
      has the R bit set, whereas a non-R packet is a packet where no
      header header extension element has the R bit set.  If this bit is
      not set, the superseded range SHOULD NOT be present for that
      header extension element (i.e. the len field SHOULD be 2) and MUST
      be ignored if present.
   Reserved, Must Be Zero (MBZ): 3 bits Reserved bits.  These MUST be
      set to zero on transmit and ignored on receive.
   Series ID (SER): 4 bits An identifier of which series of R packets is
      being described by this header extension element.  If a media
      encoder is describing only a single series of R packets, this
      SHOULD have the value 0.







Lennox                  Expires December 21, 2006               [Page 6]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   R Packet Sequence Number (RSEQ): 16 bits An unsigned sequence number
      indicating the number of this R packet within the series SER.
      This value is incremented by 1 (modulo 2^16) for every R packet
      sent in a given series.  RSEQ values for separate series are
      independent.
   Start of Superseded Range (SUPERSEDE_START): 16 bits The R sequence
      number of the earliest R packet, inclusive, superseded by this R
      packet, calculated modulo 2^16.  (Since this value uses modulo
      arithmetic, the value RSEQ + 1 MAY be used for SUPERSEDE_START to
      indicate that all R packets prior to the end of the superseded
      range have been superseded.)  This field is optional, and is only
      present when len=6.
   End of Superseded Range (SUPERSEDE_END): 16 bits The R sequence
      number of the final R packet, inclusive, superseded by this R
      packet, calculated modulo 2^16.  This value MUST lie in the closed
      range [SUPERSEDE_START ..  RSEQ] modulo 2^16.  This field is
      optional, and is only present when len=6.

   An RTP packet MAY contain multiple R packet mark elements, so long as
   each of these elements has a different value for SER.  However, an
   RTP MUST NOT contain more than one of these header extension elements
   with the R bit set, i.e. an R packet may not belong to more than one
   series.

   All RTP packets in a media stream using R packets SHOULD include a
   mark element for all active series.

   When the second word of this header extension element is present, it
   indicates that this R packet supersedes some previously-received R
   packets, meaning that these packets are no longer necessary in order
   to reconstruct stream state.  This second word MUST only appear in a
   header extension element which has its R bit set.

   An R packet can only supersede R packets in the series identified by
   the element's SER field.  R packets cannot supersede packets in other
   series.

   It is valid for a supersede element to have SUPERSEDE_END=RSEQ.  This
   indicates that the R packet supersedes itself, i.e. that this R
   packet immediately becomes irrelevant to the stream state.  The most
   common reason to do this would be to end a series; this can be done
   by sending an empty packet (e.g. an RTP No-op
   [I-D.ietf-avt-rtp-no-op] packet) with the superseded range
   (SUPERSEDE_START, SUPERSEDE_END) = (RSEQ+1, RSEQ), so that the series
   no longer contains any non-superseded packets.

   The first R packet sent in a series SHOULD be sent with a superseded
   range such that SUPERSEDE_START = RSEQ+1, to make it clear that no



Lennox                  Expires December 21, 2006               [Page 7]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   previous R packets are present in the range.

   R packets MAY redundantly include already-superseded packets in their
   range of packets to be superseded.  If a group of superseding R
   packets are sent together (e.g., if a number of packets together
   encode an intra frame), they SHOULD all be marked as superseding the
   same range of R packets.


6.  RTCP Feedback Messages

   This section describes the RTCP feedback message used to indicate
   that R packets have been lost.

   The R Packet Negative Acknowledgement (RNACK) Message is an RTCP
   Feedback (AVPF) [I-D.ietf-avt-rtcp-feedback] message identified by
   PT=RTPFB and FMT=4 (value tentatively chosen).  The FCI field MUST
   contain at least one and MAY contain more than one RNACK.

   The RNACK packet is used to indicate the loss of one or more R
   packets.  The lost packet(s) are identified by means of a packet
   sequence number, the series identifier, and a bit mask.

   The structure and semantics of the RNACK message are similar to that
   of the AVPF Generic NACK message.

   The RNACK Feedback Control Information (FCI) field has the following
   syntax Figure 2:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            RSEQ               | SER   |  BLR                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 2: Feedback Control Information for R Packet Negative
   Acknowledgment (RNACK)

   R Packet Sequence Number (RSEQ): 16 bits The RSEQ field indicates a
      RSEQ value that the receiver has not received.
   Series ID (SER): 4 bits An identifier of which series of R packets is
      being described as being lost by this header extension element.
   Bitmask of following Lost R Packets (BLR): 12 bits The BLR allows for
      reporting losses of any of the 12 R Packets packets immediately
      following the RTP packet indicated by RSEQ.  Denoting the BLP's
      least significant bit as bit 1, and its most significant bit as
      bit 12, then bit i of the bit mask is set to 1 if the receiver has
      not received R packet number (RSEQ+i) in the series SER (modulo



Lennox                  Expires December 21, 2006               [Page 8]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


      2^16) and indicates this packet is lost; bit i is set to 0
      otherwise.  Note that the sender MUST NOT assume that a receiver
      has received an R packet because its bit mask was set to 0.  For
      example, the least significant bit of the BLR would be set to 1 if
      the packet corresponding to RSEQ and the following R packet in the
      series had been lost.  However, the sender cannot infer that
      packets RSEQ+2 through RSEQ+16 have been received simply because
      bits 2 through 15 of the BLR are 0; all the sender knows is that
      the receiver has not reported them as lost at this time.

   When a receiver detects that it has not received a non-superseded R
   packet, it sends an RNACK message as soon as possible, subject to the
   rules of RTCP feedback [I-D.ietf-avt-rtcp-feedback].  (In multipoint
   scenarios, this includes listening for RNACK packets from other
   receivers and not sending an RNACK for a lost R packet that has
   already been reported.)

   When a sender receives an RNACK packet, it checks whether the packet
   has been superseded.  If it has not, it retransmits the packet for
   which an RNACK was sent (using, e.g., the RTP retransmission payload
   [I-D.ietf-avt-rtp-retransmission]).  If the packet has been
   superseded, it retransmits the most recent packet whose R packet
   element indicated a superseded packet range including the packet
   requested.

   A sender MAY choose to generate and send a new R packet superseding
   the one requested in an RNACK, rather than retransmitting a packet
   that has been sent previously.

   If, after some period of time, a receiver has not received either a
   retransmission of the R packet for which an RNACK was sent, or an R
   packet superseding that packet, it SHOULD retransmit the RNACK
   message.  A receiver MUST NOT send RNACK messages more often than
   permitted by AVPF.  It SHOULD perform estimation of the round-trip
   time to the sender, if possible, and SHOULD NOT send RNACK messages
   more often than once per round-trip time.  (If the receiver is also
   acting as an RTP sender, and the sender is sending RTCP reception
   reports for the receiver's stream, round-trip times can be inferred
   from the sender report's LSR and DLSR fields.)  If the round-trip
   time is not available, receivers SHOULD NOT send RNACK messages more
   often than once per 100 milliseconds.  [TODO: this value is a
   complete guess.]


7.  Security Considerations

   All security considerations of RTP [RFC3550] apply here as well.




Lennox                  Expires December 21, 2006               [Page 9]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   A receiver MUST NOT assume that an R packet bitstream it receives
   actually provides complete decoder state; the bitstream MUST still be
   validated.


8.  IANA Considerations

   This document defines an org.ietf RTP header extension element:
   'org.ietf.r-packet/200606'.  Its format is defined in Section 5 .
   This header extension element should be registered by IANA as
   described in [I-D.ietf-avt-rtp-hdrext].

   This document defines an RTCP transport-layer feedback message:
   'RNACK'.  Its format is defined in Section 6.  It should be defined
   in the RTPFB FMT as follows:
   Name: RNACK
   Long name: R Packet Negative Acknowledgment
   Value: 4 (tentatively chosen)
   Reference: RFC XXXX.


9.  References

9.1.  Normative References

   [I-D.ietf-avt-rtcp-feedback]
              Ott, J. and S. Wenger, "Extended RTP Profile for RTCP-
              based Feedback(RTP/AVPF)", draft-ietf-avt-rtcp-feedback-11
              (work in progress), August 2004.

   [I-D.ietf-avt-rtp-hdrext]
              Singer, D., "A general mechanism for RTP Header
              Extensions", draft-ietf-avt-rtp-hdrext-03 (work in
              progress), June 2006.

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

   [RFC3550]  Schulzrinne, H., Casner, S., Frederick, R., and V.
              Jacobson, "RTP: A Transport Protocol for Real-Time
              Applications", STD 64, RFC 3550, July 2003.

9.2.  Informative References

   [I-D.ietf-avt-rtp-no-op]
              Andreasen, F., "A No-Op Payload Format for RTP",
              draft-ietf-avt-rtp-no-op-00 (work in progress), May 2005.




Lennox                  Expires December 21, 2006              [Page 10]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   [I-D.ietf-avt-rtp-retransmission]
              Rey, J., "RTP Retransmission Payload Format",
              draft-ietf-avt-rtp-retransmission-12 (work in progress),
              September 2005.

   [I-D.ietf-avt-ulp]
              Li, A., "RTP Payload Format for Generic Forward Error
              Correction", draft-ietf-avt-ulp-17 (work in progress),
              March 2006.

   [ITU.H264.2005]
              International Telecommunications Union, "Advanced video
              coding for generic audiovisual services", ITU-
              T Recommendation H.264 (2005), ISO Standard 14496-10:2005,
              March 2005.

   [RFC2833]  Schulzrinne, H. and S. Petrack, "RTP Payload for DTMF
              Digits, Telephony Tones and Telephony Signals", RFC 2833,
              May 2000.

   [RFC3984]  Wenger, S., Hannuksela, M., Stockhammer, T., Westerlund,
              M., and D. Singer, "RTP Payload Format for H.264 Video",
              RFC 3984, February 2005.


Appendix A.  Requirements

   This appendix describes the requirements motivating the design of the
   protocol described in the rest of this document.  (This appendix is
   not normative; it thus does not use the formal upper-case versions of
   the RFC 2119 [RFC2119] terms for its requirements.)

   An encoder must be able to indicate a subset of the packets in a
   generated RTP stream as being high-priority (R) packets.

   A decoder must be able to determine when it has lost R packets,
   whenever any packet of the stream is received, and regardless of the
   dependency structure of the encoded stream.

   Similarly, a decoder must be able to determine that it has not lost
   any R packets as of the latest packet that has been received,
   regardless of how many other non-R packets have been lost.

   An encoder must be able to split a frame into any number of R
   packets, either in a codec-aware manner (e.g.  H.264 [ITU.H264.2005]
   slices) or a codec-unaware manner (e.g.  RFC 3984 [RFC3984]
   fragmentation units).




Lennox                  Expires December 21, 2006              [Page 11]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


   An encoder must be able to state that an R packet supersedes previous
   R packets, i.e. that some previous R packets are no longer necessary
   in order to establish the stream state.  This includes both being
   able to state that all R packets before a given one have been
   superseded, and that a range of R packets are superseded.

   It must be possible for an encoder to apply forward error correction
   [I-D.ietf-avt-ulp] to its media stream, either to all packets or
   selectively only to R packets, in a way that allows R packet state to
   be recovered from the FEC stream.

   An encoder must be able to describe multiple separate series of R
   packets, such that an R packet may supersede all previous R packets
   of one series without altering the need for other series.  It must
   also be able to describe the most recent R packet of multiple series.


Appendix B.  Analysis of Alternate Approaches

   This appendix describes some alternate approaches that could be
   considered to provide a reliable substream of a media stream.  It
   describes how they fail to satisfy the requirements listed in
   Appendix A.

B.1.  Generic NACK

   This approach uses the Generic NACK mechanism [I-D.ietf-avt-rtcp-
   feedback].  A receiver of a stream sends a Generic NACK for every RTP
   packet it misses.  The stream sender then re-sends only those packets
   it knows are needed for the reliable subset of the stream.

   In addition to causing many more NACK messages to be sent than are
   necessary for the stream, this approach's primary difficulty is that
   there is no way for a receiver to know when it should stop sending
   NACK messages for those packets which it will not receive.

B.2.  Generic NACK with Codec knowledge

   This approach is like the previous one, except that decoders track
   codec-specific dependency state to infer whether a missed packet was
   an R packet or not, and they only send Generic NACK messages for the
   packets that they conclude were R packets.

   This conclusion is not in general possible, if a receiver misses both
   an R packet and a subsequent non-R packet directly dependent on it.
   Additionally, if an R frame is fragmented or sliced, a decoder can't
   determine which packets were part of the sliced or fragmented R
   frame.



Lennox                  Expires December 21, 2006              [Page 12]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


B.3.  Codec-Specific NACK

   This approach is also like the previous one, except that decoders
   send codec-specific NACK messages (in RPSI messages) listing specific
   parts of frames that have been missed.

   It is not in general possible to tell whether a missed frame was an R
   packet, and the layering mechanisms don't support media-independent
   fragmentation (for example RFC 3984 [RFC3984] fragmentation units).

B.4.  Multiple streams

   In this approach, R packets are sent on a separate RTP session than
   the the non-R packets.  RTP NACK messages are sent for packets on the
   R packet session only.

   This approach has the drawback that receipt of a non-R packet does
   not trigger a NACK request for a missed R packet; only the next R
   packet does that, unless the receiver has knowledge of the sender's
   timing of R packets and thus can pro-actively send a NACK for a
   packet it does not actually know it has missed.  Since R packets tend
   to be spaced far apart, this can greatly delay stream recovery.





























Lennox                  Expires December 21, 2006              [Page 13]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


Author's Address

   Jonathan Lennox
   Layered Media, Inc.
   350 W. Passaic St
   Fourth Floor
   Rochelle Park, NJ  07662
   US

   Email: jonathan at layeredmedia.com









































Lennox                  Expires December 21, 2006              [Page 14]


Internet-Draft    Recoverable High-Priority RTP Packets        June 2006


Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM 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 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Copyright Statement

   Copyright (C) The Internet Society (2006).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.


Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.




Lennox                  Expires December 21, 2006              [Page 15]