RFC 5725
Post-Repair Loss RLE Report Block Type for RTP Control Protocol (RTCP) Extended Reports (XRs)
RFC 5725: Post-Repair Loss RLE Report Block Type for RTP Control Protocol (RTCP) Extended Reports (XRs) π
Okay bestie, here's the header rundown β¨ This comes from the Internet Engineering Task Force (IETF), and it's Request for Comments: 5725. The authors are A. Begen, D. Hsu, and M. Lague, all from Cisco. It's a Standards Track doc (the real deal π), with ISSN 2070-1721 and a date of February 2010. The header doesn't list anything under obsoletes or updates, so it's a fresh start πΈ
Abstract
okay so this doc defines a brand new report block type inside RTCP Extended Reports (XRs) π¦ One of the first XR block types is the Loss Run Length Encoding (RLE) Report Block, which tells you which individual RTP packets were received and which got lost during the RTCP interval right before the report gets sent. The new one, the Post-repair Loss RLE report, covers just the packets that are still lost after every loss-repair method has been applied π If you compare the receipts and losses from before and after the repair, you can see how well the repair methods worked overall, in an aggregated way β¨ This doc also explains how to signal the Post-repair Loss RLE report in the Session Description Protocol (SDP) π§
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 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 π
For the current status of this document, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc5725 π
Copyright Notice
Copyright (c) 2010 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, because 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 they are provided without warranty as described in the Simplified BSD License π
This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without getting an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English π«Ά
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Requirements Notation . . . . . . . . . . . . . . . . . . . . . 4
3. Post-Repair Loss RLE Report Block . . . . . . . . . . . . . . . 4
4. Session Description Protocol Signaling . . . . . . . . . . . . 6
5. Security Considerations . . . . . . . . . . . . . . . . . . . . 6
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 7
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 8
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8.1. Normative References . . . . . . . . . . . . . . . . . . . 8
8.2. Informative References . . . . . . . . . . . . . . . . . . 8
1. Introduction β¨
okay so RTCP is the out-of-band control protocol for apps using RTP for media delivery and communications [RFC3550] π It lets RTP entities keep an eye on data delivery and gives them a bit of basic control through sender and receiver reports, plus other control packets. [RFC3611] takes RTCP even further by introducing the RTCP Extended Reports (XRs) π
One of the initial XR report block types defined in [RFC3611] is the Loss Run Length Encoding (RLE) Report Block. This report tells you about the individual RTP packet receipt and loss events during the RTCP interval before the report gets sent. But here's the tea π The Loss RLE in an RTCP XR report is usually only collected on the primary source stream before any loss-repair method is applied. Once one or more loss-repair methods, like Forward Error Correction (FEC) [RFC5109] and/or retransmission [RFC4588], get applied, some or all of the lost packets on the primary source stream might be recovered. The pre-repair Loss RLE can't tell you which source packets were recovered and which are still missing, though. So it can't show how well the loss repair actually performed π
This issue can be fixed by generating an additional report block (in the same or a different RTCP XR report) that reflects the packet receipt and loss events after all loss-repair methods have been applied π¦ This block, which we call the post-repair Loss RLE, shows the remaining missing packets, meaning the unrepairable source packets. When you compare the pre-repair and post-repair Loss RLEs, the RTP sender or another third-party entity can evaluate how effective the loss-repair methods were, in an aggregated way. To avoid any ambiguity in that evaluation, it is RECOMMENDED that the post-repair Loss RLE be generated for the source packets that have no further chance of being repaired. If the loss-repair method(s) might still recover one or more missing source packets, the post-repair Loss RLE SHOULD NOT be sent until the loss-recovery process has been completed. Hmm, here's a catch π Sequence-number wrapping in the primary source stream can cause a potential ambiguity. So the Post-repair Loss RLE reports may not be delayed arbitrarily. If there's an ambiguity in the incoming reports, it's the sender's or the monitoring entity's responsibility to figure out which packets the Post-repair Loss RLE report is related to π
Just like the pre-repair Loss RLE, the post-repair Loss RLE shows receipt and loss events at the packet level, and it counts partially repaired packets as unrepaired. So the methods that can partially recover the missing data SHOULD NOT be evaluated based on the information in the Post-repair Loss RLE reports, since that info may underestimate how effective those methods are π
Also, the idea of using pre-repair and post-repair Loss RLEs can be extended further when multiple sequential loss-repair methods are applied to the primary source stream. Reporting the Loss RLEs before and after each loss-repair method can give specific info about how each method performed on its own. But it can be really hard to quantify the specific contribution of each loss-repair method in hybrid systems, where different methods work together to repair the lost source packets. So in this spec, we only consider reporting the Loss RLE after all loss-repair methods have been applied π
This document registers a new report block type to cover the post-repair Loss RLE within the RTCP XR framework. Applications that use one or more loss-repair methods MAY use Post-repair Loss RLE reports for every packet they receive, or for a set of specific packets they have received. In other words, the coverage of the post-repair Loss RLEs may or may not be contiguous π§
2. Requirements Notation π
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 [RFC2119]. π«Ά
3. Post-Repair Loss RLE Report Block π
okay so bestie, this block is basically the little sibling of the Loss RLE Report Block from [RFC3611] π¦ and it's giving "same structure, different vibes." Same layout means implementations can compare pre-repair and post-repair Loss RLEs super efficiently β¨ no cap, that's iconic.
Here's the layout, periodt π :
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BT=10 | rsvd. | T | block length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| begin_seq | end_seq |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| chunk 1 | chunk 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: ... :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| chunk n-1 | chunk n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Format for the Post-repair Loss RLE Report Block
3.1. The Fields π
Let's go through the fields one by one, bestie π§
- block type (BT): 8 bits πΈ A Post-repair Loss RLE Report Block is identified by the constant
10. Main character energy π - rsvd.: 4 bits π«Ά This field is reserved for future definition. Until something gets defined for it, the bits in this field MUST be set to zero and MUST be ignored by the receiver. Be careful with this one, it's a real rule π
- thinning (T): 4 bits π This is how much thinning is done on the sequence-number space. Only packets with sequence numbers
0 mod 2^Tget reported by this block. A value of0means no thinning, so everything gets reported. The max thinning is one packet in every 32,768 (which adds up to two packets within each 16-bit sequence space) π
If you want thinning, it is RECOMMENDED to use the same thinning value in the Pre-repair and Post-repair Loss RLE reports. This makes report processing and correlation way easier π¦ However, depending on what the application or the monitoring entity needs, different thinning values MAY be used for Pre-repair and Post-repair Loss RLE reports. Flexibility, bestie β¨
- block length: 16 bits π The length of this report block, including the header, in 32-bit words minus one.
- SSRC of source: 32 bits π The SSRC of the RTP data packet source that this report block is reporting on.
- begin_seq: 16 bits π The first sequence number that this block reports on.
- end_seq: 16 bits π The last sequence number that this block reports on, plus one.
- chunk i: 16 bits π§ There are three chunk types: run length, bit vector, and terminating null. These are defined in Section 4 of [RFC3611]. If the chunk is all zeroes, it's a terminating null chunk. Otherwise, the left-most bit of the chunk tells you the type:
0for run length and1for bit vector π₯
Quick note π the sequence numbers in the report refer to the primary source stream.
Bandwidth check, bestie π When you use Post-repair Loss RLE reports, think carefully about how much bandwidth the detailed reports eat up. The bandwidth usage rules from [RFC3611] apply to Post-repair Loss RLE reports too.
4. Session Description Protocol Signaling π§
okay so there's a new parameter for the Post-repair Loss RLE Report Block to use with Session Description Protocol (SDP) [RFC4566], written in Augmented Backus-Naur Form (ABNF) [RFC5234]. It goes inside the "rtcp-xr" attribute [RFC3611] and looks like this π¦
pkt-loss-rle-post = "post-repair-loss-rle" ["=" max-size]
max-size = 1*DIGIT ; maximum block size in octets
For the full details and syntax of the "rtcp-xr" attribute, check out Section 5.1 of [RFC3611] β¨ The "pkt-loss-rle-post" parameter is compatible with the "format-ext" definition in the "rtcp-xr" attribute π
5. Security Considerations π
okay bestie, this part is serious but also kind of fascinating π The security considerations of [RFC3611] apply to this document as well. There are some extra ones, briefly covered below π
An attacker who watches the regular Pre-repair Loss RLE reports sent by a group of receivers in the same multicast distribution network may be able to infer network characteristics (Multicast Inference of Network Characteristics). Monitoring the Post-repair Loss RLE reports won't reveal any further information about the network π«Ά And without the regular Pre-repair Loss RLE reports, the Post-repair ones are useless to attackers π ββοΈ Even when used alongside the regular Pre-repair reports, Post-repair Loss RLE reports only reveal how effective the repair process is. This doesn't enable any new attacks, and it doesn't tell an attacker anything they couldn't get by watching the RTP packets fly by, running the repair algorithms, and computing the output themselves π§
An attacker may interfere with the repair process for an RTP stream. If the attacker can see the post-repair Loss RLEs, they may work out whether the attack is effective. If it isn't, they might keep attacking or change the attack π In practice, though, this doesn't pose a real security risk π
An attacker may also put incorrect information in the regular Pre-repair and Post-repair Loss RLE reports. This could affect the proactive decisions the sender makes in the repair process, or the reactive decisions it makes when responding to feedback from the receiver. A sender application should be aware of these risks and take the necessary precautions to minimize the chances of such attacks (or, even better, eliminate them) π‘οΈβ¨
Like other RTCP XR reports, Post-repair Loss RLE reports MAY be protected using the Secure RTP (SRTP) and Secure RTP Control Protocol (SRTCP) [RFC3711] ππ
6. 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] π
This document assigns the block type value 10 in the RTCP XR Block Type Registry to "Post-repair Loss RLE Report Block". It also registers the SDP [RFC4566] parameter "post-repair-loss-rle" for the "rtcp-xr" attribute in the RTCP XR SDP Parameters Registry πΈ
The contact information for these registrations is:
Ali Begen
abegen@cisco.com
170 West Tasman Drive
San Jose, CA 95134 USA
7. Acknowledgments π
The authors would like to thank the members of the VQE Team at Cisco and Colin Perkins for their inputs and suggestions π«Άβ¨
8. References π
8.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.
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008.
8.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.
[RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
Hakenberg, "RTP Retransmission Payload Format", RFC 4588,
July 2006.
[RFC5109] Li, A., "RTP Payload Format for Generic Forward Error
Correction", RFC 5109, December 2007.
Authors' Addresses π§βπ»
Ali Begen
Cisco
170 West Tasman Drive
San Jose, CA 95134
USA
EMail: abegen@cisco.com
Dong Hsu
Cisco
1414 Massachusetts Ave.
Boxborough, MA 01719
USA
EMail: dohsu@cisco.com
Michael Lague
Cisco
1414 Massachusetts Ave.
Boxborough, MA 01719
USA
EMail: mlague@cisco.com
π¦ where this page comes from
- ietf: rfc5725 2010-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms