RFC 7509
RTP Control Protocol (RTCP) Extended Report (XR) for Post-Repair Loss Count Metrics
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 Notice ๐
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 ๐
- 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
- 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
- ietf: rfc7509 2015-05
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms