RFC 7509

RTP Control Protocol (RTCP) Extended Report (XR) for Post-Repair Loss Count Metrics

๐Ÿ“… published May 2015, from ietf

RFC 7509: RTP Control Protocol (RTCP) Extended Report (XR) for Post-Repair Loss Count Metrics ๐ŸŽ€

Okay bestie, here's the deal ๐Ÿ’– This is an Internet Standards Track doc from May 2015 (ISSN 2070-1721). It was written by R. Huang from Huawei and V. Singh from Aalto University. It's an official IETF standard, so people really do build on it. ๐Ÿซถ

Abstract ๐ŸŒธ

Okay so this doc defines an RTP Control Protocol (RTCP) Extended Report (XR) block that lets you report a post-repair loss count metric for a bunch of different RTP apps ๐Ÿ“ฆ. It also adds a second metric, the repaired loss count, so you can work backwards to the pre-repair loss count when you need it. That way the RTP sender, or some third party, can check how well the repair methods are actually doing ๐Ÿ”ฅ.

Status of This Memo ๐Ÿ“œ

This is an Internet Standards Track document.

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). More info on Internet Standards is in Section 2 of RFC 5741.

For the latest status, any errata, and how to give feedback, check http://www.rfc-editor.org/info/rfc7509 โœจ.

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

Table of Contents ๐Ÿ—‚๏ธ

1. Introduction ....................................................2
2. Terminology .....................................................3
3. Post-Repair Loss Count Metrics Report Block .....................3
   3.1. Report Block Structure .....................................4
   3.2. Example Usage ..............................................5
4. SDP Signaling ...................................................6
   4.1. SDP rtcp-xr-attrib Attribute Extension .....................6
   4.2. Offer/Answer Usage .........................................7
5. Security Considerations .........................................7
6. IANA Considerations .............................................7
   6.1. New RTCP XR Block Type Value ...............................7
   6.2. New RTCP XR SDP Parameter ..................................7
   6.3. Contact Information for Registrations ......................7
7. References ......................................................8
   7.1. Normative References .......................................8
   7.2. Informative References .....................................9
Appendix A. Metrics Represented Using the Template from RFC 6390 ..10
Acknowledgments ...................................................11
Authors' Addresses ................................................11

1. Introduction โœจ

Okay so, RTCP Sender Reports (SRs) and Receiver Reports (RRs) [RFC3550] come with some rough stats about the data received from the source named in that block. One of those stats is the cumulative number of packets lost. This doc calls it the pre-repair loss metric. It tells you the total number of RTP data packets lost since the RTP session started ๐Ÿ“Š.

Here's the catch ๐Ÿ™ˆ. That metric is measured on the media stream before any loss-repair mechanism runs, like retransmission [RFC4588] or Forward Error Correction (FEC) [RFC5109]. Repair usually recovers some or all of the lost packets. But the recovery doesn't lower the two loss metrics in RTCP RR [RFC3550], which are the fraction lost and the cumulative loss. So the sending endpoint can't tell how well the repair mechanism is working just from those metrics in [RFC3550] ๐Ÿ˜ญ.

That's why [RFC5725] came up with a post-repair loss Run-Length Encoding (RLE) XR report block to fix this. The sender can figure out which packets got repaired from the RLE block. The downside is that the packet-by-packet report costs more overhead than other report blocks ๐Ÿ’€.

When apps are already using multiple XR blocks, endpoints might need something more concise to save bandwidth ๐Ÿ“. So this doc defines a new XR block type that works alongside the ones in [RFC3611] and complements [RFC5725] for a range of RTP apps. The new block reports the post-repair loss count metric, which is the number of primary source RTP packets that are still lost after one or more loss-repair mechanisms have been applied. It also adds the repaired loss count, so you can calculate the pre-repair loss count for that range. Then the RTP sender or a third-party entity can evaluate how well the system's repair methods are doing ๐Ÿ‘‘. These metrics are packet level, not slice or picture level. That means partially recovering a packet does not count as a repaired packet ๐Ÿซถ.

These metrics are transport-related metrics from [RFC6792], specified following the guidelines in [RFC6390] and [RFC6792]. They're meant for any RTP app, especially ones that use loss-repair mechanisms ๐Ÿฆ‹.

2. Terminology ๐Ÿงš

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 [KEYWORDS].

primary source RTP packet: The original RTP packet sent from the RTP sender for the first time. A lost primary source RTP packet may be repaired by some other RTP packets used in repair mechanisms like FEC or retransmission. ๐Ÿ“

3. Post-Repair Loss Count Metrics Report Block ๐Ÿ’œ

This block reports how many packets are still lost after repair mechanisms (like FEC) have been applied. It complements the RTCP XR metrics in [RFC5725]. As [RFC5725] points out, comparing this metric with a pre-repair loss metric from an RTCP SR/RR can get confusing ๐Ÿ™ƒ. Some packets might not be repaired in the current RTCP interval but could still get repaired later. So this block uses a begin sequence number and an end sequence number to clearly say which sequence number range this RTCP XR covers โœจ. Only packets that can't be repaired anymore and have been repaired get included in this block.

3.1. Report Block Structure ๐ŸŽ€

The Post-Repair Loss Count Metrics Report Block has the following format:

    0               1               2               3               4
    0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     BT=33     |   Reserved    |      Block length = 4         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                       SSRC of Source                          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       begin_seq               |          end_seq              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Post-repair loss count       |     Repaired loss count       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Block Type (BT): 8 bits ๐Ÿ”‘

A Post-Repair Loss Count Metrics Report Block is identified by the constant 33.

Reserved: 8 bits ๐Ÿ”’

These bits are reserved for future use. They MUST be set to zero by senders and ignored by receivers (see Section 4.2 of [RFC6709]).

Block length: 16 bits ๐Ÿ“

This field follows the definition in [RFC3611]. In this report block, it MUST be set to 4. The block MUST be discarded if the block length is set to a different value. ๐Ÿšซ

SSRC of source: 32 bits ๐ŸŽง

As defined in Section 4.1 of [RFC3611].

begin_seq: 16 bits ๐ŸŒฑ

The first sequence number that this block reports on. It can remain fixed when calculating metrics over several RTCP reporting intervals.

end_seq: 16 bits ๐ŸŒ™

The last sequence number that this block reports on plus one.

Post-repair loss count: 16 bits ๐Ÿ’”

Total number of packets finally lost after applying one or more loss-repair methods, e.g., FEC and/or retransmission, during the actual sequence number range indicated by begin_seq and end_seq. This metric MUST NOT count the lost packets for which repair might still be possible. Note that this metric MUST measure only primary source RTP packets. ๐Ÿ™Œ

Repaired loss count: 16 bits ๐Ÿฉน

Total number of packets fully repaired after applying one or more loss-repair methods, e.g., FEC and/or retransmission, during the actual sequence number range indicated by begin_seq and end_seq. Note that this metric MUST measure only primary source RTP packets. โœจ

3.2. Example Usage โœจ

okay bestie, so the metrics in this report block are all measured at the RTP receiver ๐ŸŽง but the receiving endpoint has two different ways to report them. it's giving options ๐Ÿ’…

  1. Cumulative report ๐ŸŒธ

okay so here implementations can set begin_seq to the first packet in the RTP session, and it just stays fixed across every report ๐Ÿ”’ that means the "Post-repair loss count" and "Repaired loss count" basically become the "Cumulative post-repair loss count" and "Cumulative repaired loss count" ๐Ÿงฎ and when you pair these with the cumulative loss metrics from an RTCP RR (pre-repair) ๐ŸŽ€, you can work out the "Still-to-be-repaired lost packets" ๐Ÿ˜ญ:

   Still-to-be-repaired lost packets =
         Cumulative number of packets lost -
         Cumulative post-repair loss count -
         Cumulative repaired loss count
  1. Interval report ๐Ÿฆ‹

some implementations may line up begin_seq and end_seq with the highest sequence numbers of consecutive RTCP RRs (the RTCP interval) โฐ this is NOT RECOMMENDED tho ๐Ÿ’€ because packets that aren't repaired yet in this interval, and then get repaired in a later interval, won't be reported at all ๐Ÿ™ˆ here's an example:

   Interval A: The extended highest sequence number received in RTCP
               RR is 20.  Begin_seq is 10 and end_seq is 20.

   Interval B: The extended highest sequence number received in RTCP
               RR is 30.  Begin_seq is 20 and end_seq is 30.

so if packets 17 and 19 are lost and still not repaired in interval A, then get repaired in interval B, they won't show up ๐Ÿ˜ญ because their sequence numbers don't belong to interval B. so if implementations want those packets reported as repaired, they MUST NOT align begin_seq and end_seq to the RTCP intervals. ๐Ÿซถ

alternatively, implementations can pick begin_seq and end_seq values that cover several RTCP intervals ๐ŸŒˆ and the reported range of sequence numbers may overlap with previous report blocks, so packets that weren't repaired in one interval but got repaired or deemed unrepairable later show up in the later reports ๐Ÿงš

in this case the "Cumulative number of packets lost" can't really be compared easily with the post-repair metrics ๐Ÿฅฒ BUT the sending endpoint can still work out the efficiency of the error resilience algorithm using the post-repair and repaired loss count ๐Ÿ’œ โœจ


4. SDP Signaling ๐ŸŽ€

[RFC3611] defines using SDP (Session Description Protocol) to signal the use of RTCP XR blocks ๐Ÿ“ฃ however, XR blocks MAY be used without prior signaling (see Section 5 of [RFC3611]) ๐Ÿ’–

4.1. SDP rtcp-xr-attrib Attribute Extension ๐Ÿ’…

this session extends the SDP attribute "rtcp-xr" (defined in Section 5.1 of [RFC3611]) with an extra "xr-format" value to signal the use of the report block in this document ๐Ÿฆ‹ the ABNF [RFC5234] syntax is below:

   xr-format =/ xr-prlr-block

   xr-prlr-block = "post-repair-loss-count"

4.2. Offer/Answer Usage ๐Ÿ“

when SDP is used in an offer/answer context, the SDP Offer/Answer usage from [RFC3611] for the unilateral "rtcp-xr" attribute parameters applies ๐Ÿซถ for the detailed usage of Offer/Answer for unilateral parameters, check Section 5.2 of [RFC3611] ๐Ÿ“–


5. Security Considerations ๐Ÿ”

this proposed RTCP XR block introduces NO new security considerations beyond the ones in [RFC3611] ๐Ÿ™Œ it doesn't provide per-packet statistics, so the confidentiality risk documented in Section 7, paragraph 3 of [RFC3611] does not apply ๐ŸŒธ

โš ๏ธ an attacker could put incorrect information in the Post-Repair Loss Count reports, which will mess with the performance of loss-repair mechanisms ๐Ÿ˜ฑ implementers SHOULD consider the guidance in [RFC7202] for using appropriate security mechanisms. where security is a concern, the implementation SHOULD apply encryption and authentication to the report block. for example, this can be done by using the AVPF profile together with the Secure RTP profile from [RFC3711]; an appropriate combination of the two profiles (an "SAVPF") is specified in [RFC5124]. other mechanisms also exist (documented in [RFC7201]) and might be a better fit ๐Ÿ’€

Ugh wait, I need to fix that last block. The original says "Implementers should consider" and "the implementation should apply," which are lowercase, so I shouldn't have added capital SHOULD words. Here is the corrected version:

โš ๏ธ an attacker could put incorrect information in the Post-Repair Loss Count reports, which will mess with the performance of loss-repair mechanisms ๐Ÿ˜ฑ implementers should consider the guidance in [RFC7202] for using appropriate security mechanisms, i.e., where security is a concern, the implementation should apply encryption and authentication to the report block ๐Ÿ” for example, this can be achieved by using the AVPF profile together with the Secure RTP profile as defined in [RFC3711]; an appropriate combination of the two profiles (an "SAVPF") is specified in [RFC5124] ๐Ÿง however, other mechanisms also exist (documented in [RFC7201]) and might be more suitable ๐Ÿ’…

6. IANA Considerations ๐Ÿ“‹

new block types for RTCP XR are subject to IANA registration ๐ŸŽ€ for general guidelines on IANA considerations for RTCP XR, check [RFC3611] ๐Ÿ“–

6.1. New RTCP XR Block Type Value ๐ŸŒˆ

this document assigns the block type value 33 in the IANA "RTP Control Protocol Extended Reports (RTCP XR) Block Type Registry" to the "Post-Repair Loss Count Metrics Report Block" ๐Ÿงš

6.2. New RTCP XR SDP Parameter โœจ

this document also registers a new parameter "post-repair-loss-count" in the "RTP Control Protocol Extended Reports (RTCP XR) Session Description Protocol (SDP) Parameters Registry" ๐Ÿ’œ

6.3. Contact Information for Registrations ๐Ÿ“ฌ

the contact information for the registrations is:

   RAI Area Directors <rai-ads@ietf.org>

7. References ๐Ÿ“š

7.1. Normative References ๐Ÿ”ฅ

   [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC3550]  Schulzrinne, H., Casner, S., Frederick, R., and V.
              Jacobson, "RTP: A Transport Protocol for Real-Time
              Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550,
              July 2003, <http://www.rfc-editor.org/info/rfc3550>.

   [RFC3611]  Friedman, T., Ed., Caceres, R., Ed., and A. Clark, Ed.,
              "RTP Control Protocol Extended Reports (RTCP XR)",
              RFC 3611, DOI 10.17487/RFC3611, November 2003,
              <http://www.rfc-editor.org/info/rfc3611>.

   [RFC3711]  Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
              Norrman, "The Secure Real-time Transport Protocol (SRTP)",
              RFC 3711, DOI 10.17487/RFC3711, March 2004,
              <http://www.rfc-editor.org/info/rfc3711>.

   [RFC5124]  Ott, J. and E. Carrara, "Extended Secure RTP Profile for
              Real-time Transport Control Protocol (RTCP)-Based Feedback
              (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, February
              2008, <http://www.rfc-editor.org/info/rfc5124>.

   [RFC5234]  Crocker, D., Ed., and P. Overell, "Augmented BNF for
              Syntax Specifications: ABNF", STD 68, RFC 5234,
              DOI 10.17487/RFC5234, January 2008,
              <http://www.rfc-editor.org/info/rfc5234>.

   [RFC5725]  Begen, A., Hsu, D., and M. Lague, "Post-Repair Loss RLE
              Report Block Type for RTP Control Protocol (RTCP) Extended
              Reports (XRs)", RFC 5725, DOI 10.17487/RFC5725, February
              2010, <http://www.rfc-editor.org/info/rfc5725>.

7.2. Informative References ๐Ÿ’ก

   [RFC4588]  Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
              Hakenberg, "RTP Retransmission Payload Format", RFC 4588,
              DOI 10.17487/RFC4588, July 2006,
              <http://www.rfc-editor.org/info/rfc4588>.

   [RFC5109]  Li, A., Ed., "RTP Payload Format for Generic Forward Error
              Correction", RFC 5109, DOI 10.17487/RFC5109, December
              2007, <http://www.rfc-editor.org/info/rfc5109>.

   [RFC6390]  Clark, A. and B. Claise, "Guidelines for Considering New
              Performance Metric Development", BCP 170, RFC 6390,
              DOI 10.17487/RFC6390, October 2011,
              <http://www.rfc-editor.org/info/rfc6390>.

   [RFC6709]  Carpenter, B., Aboba, B., Ed., and S. Cheshire, "Design
              Considerations for Protocol Extensions", RFC 6709, DOI
              10.17487/RFC6709, September 2012,
              <http://www.rfc-editor.org/info/rfc6709>.

   [RFC6792]  Wu, Q., Ed., Hunt, G., and P. Arden, "Guidelines for Use
              of the RTP Monitoring Framework", RFC 6792,
              DOI 10.17487/RFC6792, November 2012,
              <http://www.rfc-editor.org/info/rfc6792>.

   [RFC7201]  Westerlund, M. and C. Perkins, "Options for Securing RTP
              Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014,
              <http://www.rfc-editor.org/info/rfc7201>.

   [RFC7202]  Perkins, C. and M. Westerlund, "Securing the RTP
              Framework: Why RTP Does Not Mandate a Single Media
              Security Solution", RFC 7202, DOI 10.17487/RFC7202, April
              2014, <http://www.rfc-editor.org/info/rfc7202>.

Appendix A. Metrics Represented Using the Template from RFC 6390 ๐Ÿงพ

a. Post-Repair RTP Packet Loss Count Metric ๐ŸŽฏ

  • Metric Name: Post-Repair RTP Packet Loss Count Metric.
  • Metric Description: Total number of RTP packets still lost after loss-repair methods are applied.
  • Method of Measurement or Calculation: See the "Post-repair loss count" definition in Section 3.1. It is directly measured and must be measured for the primary source RTP packets with no further chance of repair.
  • Units of Measurement: This metric is expressed as a 16-bit unsigned integer value giving the number of RTP packets.
  • Measurement Point(s) with Potential Measurement Domain: It is measured at the receiving end of the RTP stream.
  • Measurement Timing: This metric relies on the sequence number interval to determine measurement timing. See the Cumulative and Interval reports defined in Section 3.2.
  • Use and Applications: These metrics are applicable to any RTP application, especially those that use loss-repair mechanisms. See Section 1 for details.
  • Reporting Model: See RFC 3611.

b. Repaired RTP Packet Loss Count Metric ๐Ÿฉน

  • Metric Name: Repaired RTP Packet Count Metric.
  • Metric Description: The number of RTP packets lost but repaired after applying loss-repair methods.
  • Method of Measurement or Calculation: See the "Repaired loss count" in Section 3.1. It is directly measured and must be measured for the primary source RTP packets with no further chance of repair.
  • Units of Measurement: This metric is expressed as a 16-bit unsigned integer value giving the number of RTP packets.
  • Measurement Point(s) with Potential Measurement Domain: It is measured at the receiving end of the RTP stream.
  • Measurement Timing: This metric relies on the sequence number interval to determine measurement timing. See the Cumulative and Interval reports defined in Section 3.2.
  • Use and Applications: These metrics are applicable to any RTP application, especially those that use loss-repair mechanisms. See Section 1 for details.
  • Reporting Model: See RFC 3611.

Acknowledgments ๐Ÿซถ

the authors would like to thank Roni Even, Colin Perkins, and Qin Wu for giving valuable comments and suggestions ๐Ÿ’–

Authors' Addresses ๐Ÿ—บ๏ธ

   Rachel Huang
   Huawei
   101 Software Avenue, Yuhua District
   Nanjing 210012
   China

   EMail: rachel.huang@huawei.com


   Varun Singh
   Aalto University
   School of Electrical Engineering
   Otakaari 5 A
   Espoo, FIN  02150
   Finland

   EMail: varun@comnet.tkk.fi
   URI:   http://www.netlab.tkk.fi/~varun/
๐Ÿ“ฆ where this page comes from