rfc-8852

RTP Stream Identifier Source Description (SDES)

A.B. Roach, S. Nandakumar, P. Thatcher
date2021-01 streamIETF areaart wgavtext statusPROPOSED STANDARD pages8 canonicalhttps://www.rfc-editor.org/rfc/rfc8852 doi10.17487/RFC8852
This document defines and registers two new Real-time Transport Control Protocol (RTCP) Stream Identifier Source Description (SDES) items. One, named RtpStreamId, is used for unique identification of RTP streams. The other, RepairedRtpStreamId, can be used to identify which stream is to be repaired using a redundancy RTP stream.

Extracted elements (21)

design-rationale §1

Existing identifiers (CNAMEs, MSID, payload types) lack the proper ordinality to refer to an individual RTP stream — they can appear in more than one stream simultaneously — and payload type space is inadequate for complex simulcast/layered scenarios, motivating the new RtpStreamId.

rtp, realtime, webrtc

design-rationale §3.3

Implementations are encouraged to use a simple scheme starting with ASCII digit '1' and incrementing by one for each subsequent identifier, to avoid identification of specific implementations based on their pattern of tag generation.

rtp, realtime, privacy

design-rationale §3.3

RTP header extensions for these SDES items are necessary because recipients typically need to identify streams immediately upon receipt, and RTCP delivery may not be sufficiently responsive at stream startup or after stream changes.

rtp, realtime

interoperability-note §3

The RepairedRtpStreamId mechanism is limited to indicating one repaired stream per redundancy stream; systems requiring correlation for schemes where a redundancy stream repairs more than one stream must use a more complex mechanism.

rtp, realtime

normative-requirement §3 MUST

As with all SDES items, RtpStreamId and RepairedRtpStreamId are limited to a total of 255 octets in length.

rtp, realtime

normative-requirement §3.3 MUST NOT

Implementors are warned not to include any information in the identifier that is derived from potentially user-identifying information, such as user ID or IP address.

rtp, realtime, privacy

normative-requirement §3 MUST

RtpStreamId and RepairedRtpStreamId values MUST be constrained to contain only alphanumeric characters; the only allowed byte values are decimal 48–57 (digits), 65–90 (uppercase letters), and 97–122 (lowercase letters).

rtp, realtime

normative-requirement §3.3 MUST

The RTP header extension's size needs to be taken into account when encoding media to avoid MTU issues, and the set of header extensions must be padded to the next 32-bit boundary per RFC 8285.

rtp, realtime

privacy-consideration §5

Following the generation recommendations (start with '1', increment by one) results in non-instance-specific labels with only minor fingerprinting possibilities in the total number of used RtpStreamIds and RepairedRtpStreamIds.

rtp, privacy, realtime

protocol-element §3

RepairedRtpStreamId is a new RTCP SDES item (value 13) that appears only in redundancy RTP streams and carries the same value as the RtpStreamId of the source RTP stream being repaired, enabling correlation between source and repair streams.

rtp, realtime, webrtc

protocol-element §3.3

RtpStreamId and RepairedRtpStreamId can be carried in RTP header extensions using the technique from RFC 7941, allowing stream identification at startup or after stream changes when RTCP may not be sufficiently responsive.

rtp, realtime, webrtc

protocol-element §3

RtpStreamId and RepairedRtpStreamId values are scoped by source identifier (e.g., CNAME) and by media session; when multiplexed with BUNDLE (RFC 8843), they are further scoped by their associated MID values.

rtp, realtime, webrtc

protocol-element §3

RtpStreamId is a new RTCP SDES item (value 12) that uniquely identifies a single RTP stream, enabling differentiation among simultaneous encodings of a source stream (simulcast) and dependent streams from layered codecs.

rtp, realtime, webrtc

registry §4.4

RFC 8852 registers extension URI 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id' (RTP Repaired Stream Identifier) in the 'RTP SDES Compact Header Extensions' subregistry of 'RTP Compact Header Extensions'.

rtp, registry, realtime

registry §4.2

RFC 8852 registers RepairedRtpStreamId (value 13, abbrev. RepairedRtpStreamId, name 'Repaired RTP Stream Identifier') in the IANA 'RTP SDES Item Types' registry.

rtp, registry, realtime

registry §4.1

RFC 8852 registers RtpStreamId (value 12, abbrev. RtpStreamId, name 'RTP Stream Identifier') in the IANA 'RTP SDES Item Types' registry.

rtp, registry, realtime

security-consideration §5

Although constrained to alphanumeric characters, SDES items could still carry privacy-sensitive information; implementations must ensure identifiers do not contain user-identifying information or allow long-term device tracking.

rtp, security, privacy, realtime

security-consideration §5

An attacker or malicious RTP middlebox that removes or changes RtpStreamId/RepairedRtpStreamId values can severely impact the application, including failure to decode media or incorrect attribution of media to a source; integrity and source authentication are needed to prevent this.

rtp, security, realtime

security-consideration §5

Implementors are strongly encouraged to encrypt SDES items — both in RTCP and RTP header extensions — to preserve privacy against third parties.

rtp, security, privacy, realtime

wire-format §3.2

The RepairedRtpStreamId SDES item has a 1-byte type field (value 13), a 1-byte length field, followed by the RepairedRtpStreamId payload encoded as ASCII (not null-terminated), up to 255 octets total.

rtp, realtime

wire-format §3.1

The RtpStreamId SDES item has a 1-byte type field (value 12), a 1-byte length field, followed by the RtpStreamId payload encoded as ASCII (not null-terminated), up to 255 octets total.

rtp, realtime