RTP Stream Identifier Source Description (SDES)
Extracted elements (21)
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.
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 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.
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.
As with all SDES items, RtpStreamId and RepairedRtpStreamId are limited to a total of 255 octets in length.
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.
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).
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.
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.
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.
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.
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.
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.
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'.
RFC 8852 registers RepairedRtpStreamId (value 13, abbrev. RepairedRtpStreamId, name 'Repaired RTP Stream Identifier') in the IANA 'RTP SDES Item Types' registry.
RFC 8852 registers RtpStreamId (value 12, abbrev. RtpStreamId, name 'RTP Stream Identifier') in the IANA 'RTP SDES Item Types' registry.
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.
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.
Implementors are strongly encouraged to encrypt SDES items — both in RTCP and RTP header extensions — to preserve privacy against third parties.
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.
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.