RFC 6798
RTP Control Protocol (RTCP) Extended Report (XR) Block for Packet Delay Variation Metric Reporting
RFC 6798 ๐
- Title: RTP Control Protocol (RTCP) Extended Report (XR) Block for Packet Delay Variation Metric Reporting ๐ฆ
- Authors: A. Clark (Telchemy) and Q. Wu (Huawei) ๐ซถ
- Category: Standards Track โจ
- Date: November 2012 ๐ธ
- ISSN: 2070-1721
- Obsoletes / Updates: the title block doesn't say it obsoletes or updates anything ๐ง
Abstract ๐
okay so this doc defines an RTP Control Protocol (RTCP) Extended Report (XR) block that lets you report packet delay variation metrics for a whole bunch of RTP apps. it's giving very specific and very useful ๐
Status of This Memo ๐
this one is an Internet Standards Track document, bestie ๐
it's a product of the Internet Engineering Task Force (IETF), so it reflects what the IETF community agreed on. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). if you want more on Internet Standards, check Section 2 of RFC 5741 ๐
for the current status, any errata, or to send feedback, go to http://www.rfc-editor.org/info/rfc6798 ๐
Copyright Notice ๐
Copyright (c) 2012 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) as they stand on the date of publication. please actually read those, because they spell out your rights and restrictions for this doc ๐
any Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions. they come with no warranty, same as described in the Simplified BSD License ๐
Table of Contents ๐ง
1. Introduction ....................................................3
1.1. Packet Delay Variation Metrics Block .......................3
1.2. RTCP and RTCP XR Reports ...................................3
1.3. Performance Metrics Framework ..............................3
1.4. Applicability ..............................................3
2. Terminology .....................................................3
2.1. Requirements Language ......................................3
2.2. Notations ..................................................4
3. Packet Delay Variation Metrics Block ............................4
3.1. Report Block Structure .....................................5
3.2. Definition of Fields in PDV Metrics Block ..................5
3.3. Guidance on Use of PDV Metrics .............................8
3.4. Examples of Use ............................................9
4. SDP Signaling ...................................................9
5. IANA Considerations ............................................10
5.1. New RTCP XR Block Type Value ..............................10
5.2. New RTCP XR SDP Parameter .................................10
5.3. Contact Information for Registrations .....................11
5.4. New Registry of PDV Types .................................11
6. Security Considerations ........................................11
7. Contributors ...................................................12
8. Acknowledgments ................................................12
9. References .....................................................12
9.1. Normative References ......................................12
9.2. Informative References ....................................13
1. Introduction โจ
1.1. Packet Delay Variation Metrics Block ๐ฆ
this doc adds a brand new block type to the ones already defined in [RFC3611], so it works across a range of RTP apps ๐
the new block gives you info on Packet Delay Variation (PDV) using one of several standard metrics. for example, Mean Absolute Packet Delay Variation 2 (MAPDV2) (Clause 6.2.3.2 of [G.1020]) or 2-point PDV (Clause 6.2.4 of [Y.1540]) ๐
these metrics belong to the class of transport metrics defined in [MONARCH] ๐ง
1.2. RTCP and RTCP XR Reports ๐ก
RTCP reporting is defined in [RFC3550]. then [RFC3611] came along with an extensible structure for reporting using an RTCP Extended Report (XR), which was giving flexibility ๐ซถ
this doc defines a new Extended Report block to use with [RFC3550] and [RFC3611] โจ
1.3. Performance Metrics Framework ๐
The Performance Metrics Framework [RFC6390] gives guidance on defining and specifying performance metrics ๐ธ
the RTP monitoring architectures [MONARCH] give guidelines for reporting block format using RTCP XR. the XR block in this doc follows the guidelines in [RFC6390] and [MONARCH], so it's all consistent ๐
1.4. Applicability ๐
these metrics apply to a wide range of RTP apps whose streams are sensitive to delay variation [RFC5481]. it's very main character for jitter-sensitive stuff ๐
for example, apps can use these measurements to help adjust the size of adaptive jitter buffers and improve performance ๐ง
network managers can compare actual delay variation to targets (aka a numerical objective or Service Level Agreement) to help keep real-time app quality on track ๐ฅ
2. Terminology ๐
2.1. Requirements Language ๐
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this doc are to be read as described in RFC 2119 [RFC2119]. iykyk ๐
2.2. Notations ๐ฆ
this report block uses binary fractions. here's the terminology:
Numeric formats S X:Y
where S means a two's complement signed representation, X is the number of bits before the decimal place, and Y is the number of bits after it ๐
so 8:8 is an unsigned number from 0.0 to 255.996, with a granularity of 0.0039. S7:8 covers -127.996 to +127.996. and 0:16 is a proper binary fraction with this range:
0.0 to 1 - 1/65536 = 0.9999847
BUT here's the tea: using flag values at the top of the numeric range slightly lowers that upper limit. if the 16-bit values 0xfffe and 0xffff are used as flags for "over-range" and "unavailable" conditions, a 0:16 quantity has this range instead:
0.0 to 1 - 3/65536 = 0.9999542
๐ญ the flags eat up a little of the range, not gonna lie
3. Packet Delay Variation Metrics Block โจ
metrics in this block report on packet delay variation in the stream arriving at the RTP system. they're measured at the receiving end of the RTP stream ๐ธ
each instance of this metric block points, by synchronization source (SSRC), to the separate auxiliary Measurement Information Block [RFC6776], which holds the measurement intervals ๐ง
this metric block relies on the measurement interval given by the "Measurement Duration (Interval)" field in the Measurement Information Block to show the span of the report. it MUST be sent in the same compound RTCP packet as the Measurement Information Block. if the measurement interval isn't received for this metric block, this metric block MUST be discarded. no exceptions, periodt ๐
3.1. Report Block Structure ๐
PDV metrics block:
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=15 | I |pdvtyp |Rsv| block length=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of Source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pos PDV Threshold/Peak | Pos PDV Percentile |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neg PDV Threshold/Peak | Neg PDV Percentile |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mean PDV | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Report Block Structure ๐
3.2. Definition of Fields in PDV Metrics Block โจ
Okay bestie, this is the field-by-field breakdown ๐ so grab your snacks ๐ and let's go one field at a time.
Block type (BT): 8 bits
Every Packet Delay Variation Metrics Block is identified by the constant 15. ๐ That's its whole personality, no cap.
Interval Metric flag (I): 2 bit
This one answers "which kind of measurement am I?" ๐ค It tells you whether the PDV metrics are Sampled, Interval, or Cumulative metrics [MONARCH]. Do the values cover the most recent measurement interval between successive metrics reports (I=10, the Interval Duration)? Do they cover the accumulation period that cumulative measurements use (I=11, the Cumulative Duration)? Or are they a sampled instantaneous value (I=01, the Sampled Value)?
I=00 is reserved and MUST NOT be used ๐ซ. If a receiver ever gets I=00, the XR block MUST be ignored. Hard pass ๐.
Packet Delay Variation Metric Type (pdvtyp): 4 bits
This field is an enumerated type, read as an unsigned 4-bit integer ๐ข. It identifies which PDV metric type this report block uses, according to this code:
bits 014-011
0: MAPDV2, Clause 6.2.3.2 of [G.1020],
1: 2-point PDV, Clause 6.2.4 of [Y.1540].
Rsv: 2 bits
These bits are reserved for future definition ๐งบ. Until someone defines them, the bits in this field MUST be set to zero and ignored by the receiver.
block length: 16 bits
This counts the length of the report block in 32-bit words, minus one ๐. For the Packet Delay Variation Metrics Block, the block length is equal to 4.
SSRC of source: 32 bits
This one is as defined in Section 4.1 of [RFC3611] ๐ถ, so nothing new to see here.
Positive PDV Threshold/Peak: 16 bits
This field goes with the Positive PDV percentile and is expressed in milliseconds using numeric format S11:4 โฉ. "Positive" just means the packets are arriving later than the expected time.
If the measured value drops below -2047.9375 (the value that would be coded as 0x8001), then 0x8000 SHOULD be reported to flag an over-range negative measurement. If the measured value goes above +2047.8125 (the value that would be coded as 0x7FFD), then 0x7FFE SHOULD be reported to flag an over-range positive measurement. And if the measurement isn't available at all, 0x7FFF MUST be reported ๐ซถ.
Positive PDV Percentile: 16 bits
This field tells you the percentage of packets in the RTP stream whose individual packet delays were less than the Positive PDV Threshold ๐. It's stored in numeric format 8:8, covering values from 0 to the 100th percentile ๐ฏ.
If the measurement is unavailable, 0xFFFF MUST be reported.
Negative PDV Threshold/Peak: 16 bits
This field is paired with the Negative PDV percentile and is also expressed in milliseconds with numeric format S11:4 โช. "Negative" means the packets are arriving earlier than the expected time.
If the measured value is more negative than -2047.9375 (the value that would be coded as 0x8001), then 0x8000 SHOULD be reported to flag an over-range negative measurement. If the measured value is more positive than +2047.8125 (the value that would be coded as 0x7FFD), then 0x7FFE SHOULD be reported to flag an over-range positive measurement. If the measurement is unavailable, 0x7FFF MUST be reported.
Negative PDV Percentile: 16 bits
This field shows the percentage of packets in the RTP stream whose individual packet delays were more than the Negative PDV Threshold ๐. It's expressed in numeric format 8:8, with values from 0 to 100th percentile.
If the measurement is unavailable, 0xFFFF MUST be reported.
Now here's the plot twist ๐ If the PDV Type indicated is 2-point PDV and both the Positive and Negative PDV percentiles are set to 100.0, then the Positive and Negative Threshold/Peak PDV values are the peak values measured during the reporting interval. (For cumulative reports, that might be from the start of the call.) In this case, the gap between the Positive and Negative Threshold/Peak values tells you the range of 2-point PDV ๐ฆ.
Mean PDV: 16 bits
This is the mean PDV value of data packets, expressed in milliseconds with S11:4 numeric format ๐งฎ.
For MAPDV2, this value is generated according to Clause 6.2.3.2 of [G.1020]. For interval reports, the MAPDV2 value gets reset at the start of the interval.
For 2-point PDV, the value reported is the mean of per-packet 2-point PDV values. This metric shows the arrival time of the first media packet of the session compared with the mean of the arrival times of every packet of the session ๐ฌ. A single value (for one session) may not be useful by itself, but averaging it across a bunch of sessions could help diagnose media delay at session startup. For example, that can happen when media packets keep getting stuck behind signaling packets because of head-of-line blocking ๐ง.
If the measured value is more negative than -2047.9375 (the value that would be coded as 0x8001), then 0x8000 SHOULD be reported to flag an over-range negative measurement. If the measured value is more positive than +2047.8125 (the value that would be coded as 0x7FFD), then 0x7FFE SHOULD be reported to flag an over-range positive measurement. If the measurement is unavailable, 0x7FFF MUST be reported.
Reserved: 16 bits
These bits are reserved for future definition ๐ธ. The sender MUST set them to zero, and the receiver MUST ignore them.
3.3. Guidance on Use of PDV Metrics
This subsection is informative ๐ง , so it's just friendly advice on when each PDV metric type might be a good fit.
MAPDV2 (Clause 6.2.3.2 of [G.1020]) is the envelope of instantaneous, per-packet delay compared with the short-term moving average delay ๐. It could help you figure out residual impairment when an RTP end system uses an adaptive de-jitter buffer that tracks the average delay variation. The catch is that the adaptive algorithm's averaging behavior has to be similar to the MAPDV2 algorithm's.
2-point PDV (Clause 6.2.4 of [Y.1540]) reports absolute packet delay variation against a defined reference packet transfer delay ๐ฏ. The reference packet is usually picked as the packet with minimum delay, based on the most common criterion (see Sections 1 and 5.1 of [RFC5481]). In an RTP context, the two "points" are the sender (the synchronization source that applies RTP timestamps) and the receiver ๐ก. The value of this metric for the packet with index j is identical to the quantity D(i,j) defined in Section 6.4.1 of [RFC3550], and the packet index i should be set equal to the index of the reference packet for the metric in practice.
This metric also includes the effect of the frequency offsets of the clocks in both the sender and receiver end systems, so it's mainly useful in networks where synchronization is distributed โฐ. Besides measuring packet delay variation in those networks, it can be used to make sure synchronization is working, for example when the network carries ISDN data traffic over RTP [RFC4040]. This metric is likely to be useful in networks that use fixed de-jitter buffering, since it can determine the length of the required de-jitter buffer, or reveal whether network performance has gotten so bad that existing de-jitter buffers are too small for the observed delay variation ๐ฌ.
3.4. Examples of Use
Let's look at two real-world-ish examples ๐.
(a) To report MAPDV2 [G.1020]:
Pos PDV Threshold = 50.0; Pos PDV Percentile = 95.3; Neg PDV
Threshold = 50.0 (note this implies -50 ms); Neg PDV Percentile
= 98.4; PDV type = 0 (MAPDV2)
This causes average MAPDV2 to be reported in the Mean PDV field ๐
.
Note that implementations either may fix the reported percentile and calculate the associated PDV level, or may fix a threshold PDV level and calculate the associated percentile. From a practical implementation perspective, the second approach is simpler (except, of course, in the extreme case of the 100th percentile) ๐งฉ.
(b) To report 2-point PDV [Y.1540]:
Pos PDV Threshold = 60 (note this implies +60 ms); Pos PDV
Percentile = 96.3; Neg PDV Threshold = 0; Neg PDV Percentile =
0; PDV type = 1 (2-point PDV)
This causes 2-point PDV to be reported in the Mean PDV field โจ.
According to [Y.1540], 2-point PDV is the difference in delay between the current packet and the referenced packet of the stream. If the sending and receiving clocks aren't synchronized, this metric includes the effect of relative timing drift โณ.
4. SDP Signaling ๐ฃ
[RFC3611] defines the use of the Session Description Protocol (SDP) [RFC4566] for signaling the use of XR blocks. XR blocks MAY be used without prior signaling ๐ฆ.
This section augments the SDP [RFC4566] attribute "rtcp-xr" defined in [RFC3611] by adding a new value of "xr-format" that signals the use of the report block defined in this document ๐.
xr-format =/ xr-pdv-block
xr-pdv-block = "pkt-dly-var" [ "," pdvtype ] [ "," nspec "," pspec ]
pdvtype = "pdv=" ( "0" ; MAPDV2 ITU-T G.1020
/ "1" ; 2-point PDV ITU-T Y.1540
/ 1*2DIGIT ) ;Value 2~15 are valid and
;reserved for future use
nspec = ("nthr=" fixpoint) ; negative PDV threshold (ms)
/ ("npc=" fixpoint ) ; negative PDV percentile
pspec = ("pthr=" fixpoint) ; positive PDV threshold (ms)
/ ("ppc=" fixpoint) ; positive PDV percentile
fixpoint = 1*DIGIT "." 1*DIGIT ; fixed point decimal
DIGIT = <as defined in Section 3.4 of [RFC5234]>
When SDP is used in offer/answer, a system sending SDP may request a specific type of PDV measurement ๐. It can also state a specific percentile or threshold value and expect to get the corresponding threshold or percentile metric back, respectively. The system receiving the SDP SHOULD send the PDV metrics requested. But if the metric isn't available, the system receiving the SDP MUST send the metric block with the flag value indicating that the metric is unavailable ๐ฉ.
5. 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] ๐.
5.1. New RTCP XR Block Type Value
This document assigns the block type value 15 in the IANA "RTCP XR Block Type" registry to the "Packet Delay Variation Metrics Block" ๐ท๏ธ.
5.2. New RTCP XR SDP Parameter
This document also registers a new parameter "pkt-dly-var" in the "RTCP XR SDP Parameters" registry ๐งพ.
5.3. Contact Information for Registrations
The contact information for the registrations is:
Qin Wu (sunseawq@huawei.com)
101 Software Avenue, Yuhua District
Nanjing, Jiangsu 210012
China
5.4. New Registry of PDV Types โจ
Okay so this section creates a brand new registry called RTCP XR PDV block - PDV type ๐. It lives as a sub-registry under the "RTP Control Protocol Extended Reports (RTCP XR) Block Type Registry" ๐ฆ. Here are the rules, bestie:
- The info you need for an assignment is an unambiguous definition of the new metric ๐
. That covers the base measurements and how they get processed into the reported metric. This should include the units of measurement, how values of the metric are reported in the three 16-bit fields
Pos PDV Threshold/Peak,Neg PDV Threshold/Peak, andMean PDVwithin the report block, and how the metric uses the two 16-bit fieldsPos PDV PercentileandNeg PDV Percentile. - The review process is "Specification Required," as described in Section 4.1 of [RFC5226] ๐.
- Entries are unsigned 4-bit integers. The valid range is 0 to 15, matching the 4-bit field
pdvtypin the block. Values get recorded in decimal ๐ข. - Initial assignments are:
- 0: MAPDV2, Clause 6.2.3.2 of [G.1020],
- 1: 2-point PDV, Clause 6.2.4 of [Y.1540],
- 2-15: Reserved for future use.
6. Security Considerations ๐
Okay, this part is serious but also kind of iconic ๐ญ. It is believed that this proposed RTCP XR block introduces no new security considerations beyond those described in [RFC3611]. Also, this block does not provide per-packet statistics, so the risk to confidentiality documented in Section 7, paragraph 3, of [RFC3611] does not apply. No cap, that's a big relief ๐ซถ.
7. Contributors ๐ง
Geoff Hunt wrote the initial version of this document ๐ธ.
8. Acknowledgments ๐
The authors gratefully acknowledge reviews and feedback from Bruce Adams, Philip Arden, Amit Arora, Bob Biskner, Kevin Connor, Claus Dahm, Randy Ethier, Roni Even, Jim Frauenthal, Albert Higashi, Tom Hock, Shane Holthaus, Paul Jones, Rajesh Kumar, Keith Lantz, Mohamed Mostafa, Amy Pendleton, Colin Perkins, Mike Ramalho, Ravi Raviraj, Albrecht Schwarz, Tom Taylor, Hideaki Yamada, Jing Zhao, Kevin Gross, Colin Perkins, Charles Eckel, Glen Zorn, Shida Schubert, Benoit Claise, Adrian Farrel, and Pete Resnick. Literally a whole squad ๐โจ.
9. References ๐
9.1. Normative References
- [G.1020] ITU-T Rec. G. 1020, "Performance parameter definitions for quality of speech and other voiceband applications utilizing IP networks", July 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.
- [RFC3611] Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol Extended Reports (RTCP XR)", RFC 3611, November 2003.
- [RFC4040] Kreuter, R., "RTP Payload Format for a 64 kbit/s Transparent Call", RFC 4040, April 2005.
- [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006.
- [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
- [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
- [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.
- [Y.1540] ITU-T Rec. Y.1540, "IP packet transfer and availability performance parameters", November 2007.
9.2. Informative References
- [MONARCH] Wu, W., Hunt, G., and P. Arden, "Guidelines for Use of the RTP Monitoring Framework", Work in Progress, September 2012.
- [RFC5481] Morton, A. and B. Claise, "Packet Delay Variation Applicability Statement", RFC 5481, March 2009.
- [RFC6390] Clark, A. and B. Claise, "Guidelines for Considering New Performance Metric Development", BCP 170, RFC 6390, October 2011.
Authors' Addresses ๐
Alan Clark
Telchemy Incorporated
2905 Premiere Parkway, Suite 280
Duluth, GA 30097
USA
EMail: alan.d.clark@telchemy.com
Qin Wu
Huawei
101 Software Avenue, Yuhua District
Nanjing, Jiangsu 210012
China
EMail: sunseawq@huawei.com
๐ฆ where this page comes from
- ietf: rfc6798 2012-11
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms