RTP Control Protocol Extended Reports (RTCP XR)
Extracted elements (27)
Loss RLE per-packet accounting deliberately avoids sender-validity thresholds and sequence-number-validity filtering used by standard RTP (RFC 3550 Appendix A.1), because leaving interpretation to report observers—rather than filtering at the receiver—better serves network monitoring applications that need raw data including stray packets.
XR blocks are defined as a new RTCP packet type rather than profile-specific SR/RR extensions because the extended statistics are useful across multiple RTP profiles (e.g., multicast MINC tomography and VoIP monitoring), making profile-specific carriage inappropriate.
Conversational quality metrics (R factor, MOS-CQ) in the VoIP Metrics Report Block are defined only for one-to-one or one-to-many voice sessions; these metrics SHOULD be identified as unavailable (value 127) in multicast conferencing applications.
XR packets are backwards compatible with existing RTCP receiver implementations that do not recognize them: the standard RTCP length field allows unknown implementations to skip past XR packets without parsing their contents.
A terminating null chunk MUST appear at the end of a Loss RLE Report Block if the number of run-length plus bit-vector chunks is odd; bits in a bit-vector chunk that extend beyond the last reported sequence number MUST be set to zero and MUST be ignored.
An implementation SHOULD ignore incoming XR report blocks whose types are not relevant or unknown to it; additional block types MUST be registered with IANA before use.
For Packet Receipt Times blocks, at least one packet MUST have been received for each reported sequence number; if duplicate packets with differing receipt times exist, any time other than the earliest MUST NOT be reported.
For per-packet accounting in Loss RLE blocks, the next arriving sequence number MUST be judged to fall no more than 32,768 packets ahead or behind the most recently received one; when both choices are equally distant the one that does not require a rollover MUST be chosen.
Gmin MUST NOT be zero, MUST be provided, and MUST remain constant across all VoIP Metrics Report Blocks for the duration of an RTP session.
If SDP signaling is used for XR blocks it MUST be used exactly as defined in Section 5; a media-level rtcp-xr specification MUST replace any session-level specification for that media block.
Reserved fields in the XR packet header and in all report block headers MUST be set to zero by the sender and MUST be ignored by the receiver.
VoIP Metrics Report Block implementations MUST provide values for all defined fields; when a value is undefined or unknown, the specified default or unknown sentinel value (commonly 127 for 8-bit metrics) MUST be used.
A burst is defined as the longest sequence starting and ending with a lost/discarded packet that contains no run of Gmin or more consecutively received packets; a gap is any period between bursts. The recommended Gmin value is 16.
Non-senders calculate RTT by sending a Receiver Reference Time Report Block and receiving DLRR blocks in reply; RTT = A - LRR - DLRR, mirroring the SR/DLSR mechanism already defined in RTCP for data senders.
The Duplicate RLE Report Block (BT=2) uses an identical format to the Loss RLE block but inverts the semantics: 0 indicates a duplicate was received for that sequence number, 1 indicates no duplicate.
The thinning parameter T (4 bits) restricts Loss RLE and related blocks to report only packets whose sequence numbers are multiples of 2^T (T=0 means every packet; T=15 means one in 32,768), limiting block size at the cost of coverage granularity.
This document registers RTCP packet type 207 (PT=XR) with IANA and creates the RTCP XR Block Type Registry for the 8-bit BT field, with block types 1–7 defined here; future block types require IANA registration.
This document registers the SDP attribute 'rtcp-xr' with IANA; it is both a session-level and media-level attribute and is defined in ABNF in Section 5.1.
XR packets convey detailed reception statistics (loss, jitter, delay, signal quality) that could reveal network topology or user behavior to passive eavesdroppers; the same profile-specific confidentiality mechanisms used to protect RTP and RTCP data SHOULD be applied to XR packets.
An XR packet begins with a two-word header: V=2 (2 bits), P (1 bit), reserved (5 bits), PT=XR=207 (8 bits), length (16 bits, in 32-bit words minus one), followed by SSRC (32 bits) and zero or more report blocks.
Each extended report block begins with a common header: block type BT (8 bits), type-specific (8 bits), and block length (16 bits, in 32-bit words minus one). The type-specific block contents MUST be a multiple of 32 bits.
The DLRR Report Block (BT=5) contains one or more 3-word sub-blocks each holding SSRC_n (32 bits), last RR timestamp LRR (32 bits, middle 32 bits of the received NTP timestamp), and delay since last RR DLRR (32 bits, in 1/65536 seconds).
The Loss RLE Report Block (BT=1) encodes packet loss/receipt as 16-bit chunks: a run-length chunk (C=0, R=1 bit, 14-bit length), a bit-vector chunk (C=1, 15-bit vector), or a terminating null chunk (all zeros). Fields include SSRC, begin_seq, end_seq (each 16 bits), and a 4-bit thinning factor T.
The Packet Receipt Times Report Block (BT=3) lists per-packet 32-bit receipt timestamps in RTP timestamp units for each sequence number from begin_seq to end_seq-1, with a thinning field T to limit block size.
The Receiver Reference Time Report Block (BT=4, block length=2) carries a 64-bit NTP timestamp (most and least significant 32-bit words) allowing non-senders to publish a wallclock reference for round-trip time estimation.
The Statistics Summary Report Block (BT=6, block length=9) includes flag bits L, D, J, ToH in the header, then SSRC, begin_seq, end_seq, lost_packets (32 bits), dup_packets (32 bits), min/max/mean/dev jitter (each 32 bits), and min/max/mean/dev TTL or Hop Limit (each 8 bits).
The VoIP Metrics Report Block (BT=7, block length=8) is seven 32-bit words encoding loss rate, discard rate, burst/gap density/duration, round-trip delay, end system delay, signal level, noise level, RERL, Gmin, R factor, ext. R factor, MOS-LQ, MOS-CQ, RX config, JB nominal/maximum/abs max.