RFC 7243

RTP Control Protocol (RTCP) Extended Report (XR) Block for the Bytes Discarded Metric

πŸ“… published May 2014, from ietf

RFC 7243: RTP Control Protocol (RTCP) Extended Report (XR) Block for the Bytes Discarded Metric ✨

okay bestie, this one is RFC 7243 πŸ“œπŸŽ€. It's a Standards Track doc from the IETF stream, dated May 2014, with ISSN 2070-1721. The authors are V. Singh, Ed., J. Ott (Aalto University) and I. Curcio (Nokia Research Center). The title block doesn't list anything it obsoletes or updates, so there's no drama there πŸ’….


Abstract πŸ¦‹

RTCP works alongside RTP to give you all kinds of reception stats, both short-term and long-term πŸ“Š. The reports can cover longer stretches of time or single packets. This doc defines a report that counts the bytes thrown out of the de-jitter buffer after they were successfully received πŸ’–.

Status of This Memo 🌸

This is an Internet Standards Track document πŸ”₯.

It's a product of the Internet Engineering Task Force (IETF), so it reflects IETF community consensus. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG) ✨. For more on Internet Standards, check Section 2 of RFC 5741.

Want the current status, errata, or a way to send feedback? Head to http://www.rfc-editor.org/info/rfc7243 🧚.

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

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they were on the publication date. Read those carefully, because they spell out your rights and restrictions 🫢. Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License ⚠️.

Table of Contents πŸ“

1. Introduction ....................................................3
2. Terminology .....................................................4
3. Bytes Discarded Report Block ....................................4
4. Protocol Operation ..............................................6
   4.1. Reporting Node (Receiver) ..................................6
   4.2. Media Sender ...............................................6
5. SDP Signaling ...................................................7
6. Security Considerations .........................................7
7. IANA Considerations .............................................8
   7.1. XR Report Block Registration ...............................8
   7.2. SDP Parameter Registration .................................8
   7.3. Contact Information for IANA Registrations .................8
8. Acknowledgments .................................................8
9. References ......................................................9
   9.1. Normative References .......................................9
   9.2. Informative References .....................................9
Appendix A. Metrics Represented Using the Template from RFC 6390 ..11

1. Introduction ✨

okay so [RFC3550] gives RTP its transport for real-time media like audio and video 🎧. Tucked alongside it is RTCP, which sends periodic feedback about the media streams in a given time window. RTCP can also send timely feedback about individual events, like packet loss [RFC4585] πŸ‘€. Both the long-term and short-term feedback let a media sender tweak its transmission and/or encoding on the fly so it fits the path it's actually using πŸ¦‹.

[RFC3611] introduced RTCP Extended Reports, a detailed reporting framework that does way more than the coarse Receiver Report (RR) stats πŸ’…. The extra detail can help a media sender respond better to network conditions, because those conditions get described more accurately. The tradeoff is extra overhead, though πŸ™ˆ.

Besides lost packets, [RFC3611] also defines "discarded" packets. These are packets that arrived but got dropped from the de-jitter buffer, either because they were too early (for buffering) or too late (for playout) πŸ“. The "discard rate" metric lives in the VoIP metrics report block, even though it isn't only for audio. It's defined as the fraction of discarded packets since the start of the session. See Section 4.7.1 of [RFC3611]. The discard metric is believed to apply to a big class of RTP applications that use a de-jitter buffer [RFC5481] πŸ’œ.

A few extensions to XR reporting have been proposed to beef up the discard metric πŸ”₯:

  • Reporting the number of discarded packets in a measurement interval, either the last reporting interval or since the beginning of the session. A flag in the suggested XR report indicates which one [RFC7002]. If an endpoint needs to report packet discard for reasons other than early and late arrival (like duplication, redundancy, and so on), then it should consider using the Discarded Packets Report Block [RFC7002].
  • Reporting gaps and bursts of discarded packets during a measurement interval, meaning the last reporting interval or the length of the session [RFC7003] 🌈.
  • Reporting a run-length encoding of discarded packets during a measurement interval, meaning between a set of sequence numbers [RFC7097] 🧚.

But none of these let a receiver report exactly how many RTP payload bytes were discarded 😭. You could in theory work it out from high-frequency reporting on discarded packet counts [RFC7002], or from the Discard RLE (Run Length Encoding) report [RFC7097]. But neither looks feasible. The first would need an unreasonably high amount of reporting, and it still might not be enough because RTCP packet scheduling isn't deterministic. The second adds a lot of complexity (it has to store a map of sequence numbers and packet sizes) plus reporting overhead πŸ’€.

So this doc defines an XR block that reports the number of RTP payload bytes discarded, either per interval or for the whole session, just like the other XR blocks do πŸŽ€.

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 BCP 14, [RFC2119] πŸ”‘.

The terminology defined in RTP [RFC3550] and in the extensions for XR reporting [RFC3611] applies here too πŸ“š.

3. Bytes Discarded Report Block πŸ’–

The Bytes Discarded Report Block uses the format below. It follows the model of the framework for performance metric development [RFC6390] 🧁.

 0               1               2               3
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     BT=26     | I |E|Reserved |       Block length=2          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        SSRC of source                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Number of RTP payload bytes discarded             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 1: XR Bytes Discarded Report Block πŸ–ΌοΈ

Block Type (BT): 8 bits. A Bytes Discarded Packets Report Block is identified by the constant 26 πŸ”’.

Interval Metric flag (I): 2 bits. This tells you whether the discard metric is an Interval or a Cumulative metric. I=10 means the reported value covers the most recent measurement interval between successive reports (the Interval Duration). I=11 means it covers the accumulation period that cumulative measurements use (the Cumulative Duration) πŸ—“οΈ. Bytes discarded aren't measured at one moment in time. They build up over one or several reporting intervals, so the metric MUST NOT be reported as a Sampled Metric (I=01) 🚫. The value I=00 is reserved, so it MUST NOT be sent. If it shows up when received, it MUST be discarded β›”.

Early bit (E): This bit tells apart packets discarded for arriving early from packets discarded for arriving late πŸ•. The E bit is set to '1' when the block reports bytes discarded due to early arrival, and set to '0' when it reports bytes discarded due to late arrival. Duplicate packets that get received and discarded are ignored and not reported πŸ™ˆ. If both early and late discarded packets shall be reported, two Bytes Discarded report blocks MUST be included πŸ‘―.

Reserved: 5 bits. This field is reserved for future definition. Until something gets defined, the bits in this field MUST be set to zero, and the receiver MUST ignore them 🧊.

Block length: 16 bits. This MUST be set to 2, matching how [RFC3611] defines this field. If the block length has any other value, the block MUST be discarded πŸ—‘οΈ.

Number of RTP payload bytes discarded: This is a 32-bit unsigned integer with the total number of bytes discarded 🎯. The 'bytes discarded' count matches the RTP payload size of every RTP packet that gets discarded (due to early or late arrival). So it leaves out the size of any RTP header extensions and any padding bits βœ‚οΈ. Also, a discarded packet gets tied to the interval it was discarded in, not the interval when it was expected ⏱️.

If the Interval Metric flag is I=11, the field holds the number of RTP payload bytes discarded since the start of the session. If the flag is I=10, it holds the number of bytes discarded in the most recent reporting interval πŸ“ˆ.

If the XR block follows a Measurement Information Block [RFC6776] in the same RTCP compound packet, then the cumulative (I=11) or interval (I=10) for this report block lines up with the "measurement duration" values in that Measurement Information Block 🧩.

If the receiver sends the Bytes Discarded Report Block without a Measurement Information Block, then the Bytes Discarded Report Block MUST be sent together with an RTCP Receiver Report (RR) as a compound RTCP packet πŸ“¦.

4. Protocol Operation πŸŽ€

This section describes how the reporting node (aka the media receiver) and the media sender behave πŸ’….

Stay tuned, because Section 4 keeps going in the next part 🧚✨

4.1. Reporting Node (Receiver) πŸŽ€

Okay bestie, the media receiver MAY send the Bytes Discarded Reports as part of the regularly scheduled RTCP packets, as per RFC 3550 πŸ“¦. It MAY also pop Bytes Discarded Reports into immediate or early feedback packets, as per [RFC4585] ⚑.

Sending the RTCP XR Bytes Discarded Report is totally up to the media receiver's discretion, and so is the reporting granularity πŸ’…. Still, it is RECOMMENDED that the media receiver signals the bytes discarded packets using the method defined in this document 🫢. When several metrics go in one RTCP packet, their report intervals are synchronized, so the media receiver may choose to additionally send the Discarded Packets [RFC7002] or Discard RLE [RFC7097] Report Block 🧚. That helps the media sender match the bytes discarded to the packets discarded in that particular interval ✨.

If every packet in a reporting period was discarded, the media receiver MAY use the Discarded Packets Report Block [RFC7002] instead πŸ’€.

4.2. Media Sender πŸ¦‹

Bestie, the media sender MUST be prepared to operate without receiving any Bytes Discarded reports 😭. If the media receiver generates Bytes Discarded reports, the media sender cannot rely on all of them arriving, and it also cannot count on a regular generation pattern from the media receiver πŸ™ˆ.

BUT if the media sender gets any RTCP reports with no Bytes Discarded report blocks, and it knows the media receiver supports Bytes Discarded report blocks, it MAY assume that no packets were discarded by the media receiver 🌸.

The media sender SHOULD accept the Bytes Discarded Report Block only if it arrives in a compound RTCP receiver report, or if it is preceded by a Measurement Information Block [RFC6776] πŸŽ€. In every other situation, it MUST ignore the block 🚫.

5. SDP Signaling πŸ’œ

A participant in a media session MAY use SDP to signal its support for the report block specified in this document. Or it can just use them without any prior signaling (see Section 5 of [RFC3611]) πŸ¦‹.

For signaling in SDP, the RTCP XR attribute as defined in [RFC3611] MUST be used πŸ’…. The SDP [RFC4566] attribute 'xr-format' defined in RFC 3611 gets augmented to indicate the Bytes Discarded metric. Here's the ABNF [RFC5234] for it 🧚:

rtcp-xr-attrib = "a=" "rtcp-xr" ":" [xr-format *(SP xr-format)]
                 CRLF   ; defined in [RFC3611]

xr-format       =/ xr-discard-bytes

xr-discard-bytes = "discard-bytes"

The parameter 'discard-bytes' that indicates support for the Bytes Discarded Report Block is defined in Section 3 ✨.

When SDP is used in the offer/answer context, the mechanism defined in [RFC3611] for unilateral "rtcp-xr" attribute parameters applies (see Section 5.2 of [RFC3611]) 🌈.

6. Security Considerations πŸ’€πŸ”

Okay, this section is serious, so let's get into it. The Bytes Discarded block does not provide per-packet statistics, so the risk to confidentiality documented in Section 7, paragraph 3 of [RFC3611] does not apply πŸ™Œ. BUT returning very detailed error information (for example, over-range measurement or measurement unavailable) using this report block can give an attacker insight into the security processing πŸ‘€.

Here's the scary example 😱. Say the attacker sends a packet with a stale timestamp (meaning a time in the past) to the receiver. If the receiver then sends a discard report with the same number of bytes as the payload of the injected packet, the attacker can infer that no security processing was performed. On the flip side, if the attacker doesn't receive a discard report, it can equivalently assume that the security procedures were performed on the packet. Yikes πŸ’”.

So implementers should consider the guidance in [RFC7202] for using appropriate security mechanisms. In other words, 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] 🫢. Other mechanisms also exist (documented in [RFC7201]) and might be more suitable πŸ’….

The Bytes Discarded report is used by the sender for congestion control, typically to calculate goodput (throughput that is useful) πŸ“Š. In these cases, an attacker MAY drive the endpoint to lower its sending rate and under-utilize the link. So media senders should choose appropriate security measures to mitigate such attacks πŸ›‘οΈ.

Lastly, the security considerations of [RFC3550], [RFC3611], and [RFC4585] apply too 🌸.

7. IANA Considerations 🧾

New block types for RTCP XR are subject to IANA registration. For general guidelines on IANA considerations for RTCP XR, refer to [RFC3611] πŸ“.

7.1. XR Block Registration

This document registers a new value in the IANA "RTP Control Protocol Extended Reports (RTCP XR) Block Type Registry": 26 for BDR (Bytes Discarded Report) πŸ”’.

7.2. SDP Parameter Registration

This document registers a new parameter for the Session Description Protocol (SDP), "discard-bytes", in the "RTP Control Protocol Extended Reports (RTCP XR) Session Description Protocol (SDP) Parameters Registry" πŸŽ€.

7.3. Contact Information for IANA Registrations

Reach out to the RAI Area Directors at rai-ads@tools.ietf.org πŸ’Œ.

8. Acknowledgments 🫢

The authors want to thank Benoit Claise, Alan Clark, Roni Even, Vijay Gurbani, Sam Hartman, Vinayak Hegde, Jeffrey Hutzelman, Barry Leiba, Colin Perkins, Dan Romascanu, Dan Wing, and Qin Wu for giving valuable feedback on this document during its development πŸ’–. Iconic squad πŸ‘‘.

9. References πŸ“š

9.1. Normative References

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

[RFC3611]  Friedman, T., Caceres, R., and A. Clark, "RTP Control
           Protocol Extended Reports (RTCP XR)", RFC 3611, November
           2003.

[RFC4566]  Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
           Description Protocol", RFC 4566, July 2006.

[RFC4585]  Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey,
           "Extended RTP Profile for Real-time Transport Control
           Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, July
           2006.

[RFC5234]  Crocker, D., Ed., and P. Overell, "Augmented BNF for
           Syntax Specifications: ABNF", STD 68, RFC 5234, January
           2008.

[RFC6390]  Clark, A. and B. Claise, "Guidelines for Considering New
           Performance Metric Development", BCP 170, RFC 6390,
           October 2011.

[RFC6776]  Clark, A. and Q. Wu, "Measurement Identity and Information
           Reporting Using a Source Description (SDES) Item and an
           RTCP Extended Report (XR) Block", RFC 6776, October 2012.

[RFC7002]  Clark, A., Zorn, G., and Q. Wu, "RTP Control Protocol
           (RTCP) Extended Report (XR) Block for Discard Count Metric
           Reporting", RFC 7002, September 2013.

9.2. Informative References

[RFC3711]  Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
           Norrman, "The Secure Real-time Transport Protocol (SRTP)",
           RFC 3711, March 2004.

[RFC5124]  Ott, J. and E. Carrara, "Extended Secure RTP Profile for
           Real-time Transport Control Protocol (RTCP)-Based Feedback
           (RTP/SAVPF)", RFC 5124, February 2008.

[RFC5481]  Morton, A. and B. Claise, "Packet Delay Variation
           Applicability Statement", RFC 5481, March 2009.

[RFC7003]  Clark, A., Huang, R., and Q. Wu, "RTP Control Protocol
           (RTCP) Extended Report (XR) Block for Burst/Gap Discard
           Metric Reporting", RFC 7003, September 2013.

[RFC7097]  Ott, J., Singh, V., and I. Curcio, "RTP Control Protocol
           (RTCP) Extended Report (XR) for RLE of Discarded Packets",
           RFC 7097, January 2014.

[RFC7201]  Westerlund, M. and C. Perkins, "Options for Securing RTP
           Sessions", RFC 7201, April 2014.

[RFC7202]  Perkins, C. and M. Westerlund, "Securing the RTP
           Framework: Why RTP Does Not Mandate a Single Media
           Security Solution", RFC 7202, April 2014.

Appendix A. Metrics Represented Using the Template from RFC 6390 πŸ“‹

  • a. RTP Payload Bytes Discarded Metric πŸ’–
    • Metric Name: RTP Payload Bytes Discarded Metric
    • Metric Description: Total number of RTP payload bytes discarded over the period covered by this report.
    • Method of Measurement or Calculation: See the definition of "Number of RTP payload bytes discarded" in Section 3.
    • Units of Measurement: See the definition of "Number of RTP payload bytes discarded" in Section 3.
    • Measurement Point(s) with Potential Measurement Domain: See the first paragraph of Section 3.
    • Measurement Timing: See the last three paragraphs of Section 3 for measurement timing and for the Interval Metric flag.
    • Use and applications: See the third paragraph of Section 1.
    • Reporting model: See RFC 3611.

Authors' Addresses ✨

Varun Singh (editor)
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/


Joerg Ott
Aalto University
School of Electrical Engineering
Otakaari 5 A
Espoo, FIN  02150
Finland

EMail: jo@comnet.tkk.fi


Igor D.D. Curcio
Nokia Research Center
P.O. Box 1000 (Visiokatu 3)
Tampere, FIN  33721
Finland

EMail: igor.curcio@nokia.com

That's the whole spec, bestie! πŸŒˆπŸ¦‹πŸ‘‘ Every single detail is in there, slay.

πŸ“¦ where this page comes from