RFC 8852: RTP Stream Identifier Source Description (SDES)
- A.B. Roach,
- S. Nandakumar,
- P. Thatcher
Abstract
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,
Repaired
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 has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2021 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
(https://
1. Introduction
RTP sessions frequently consist of multiple streams, each of which is identified at any given time by its synchronization source (SSRC); however, the SSRC associated with a stream is not guaranteed to be stable over its lifetime. Within a session, these streams can be tagged with a number of identifiers, including CNAMEs and MediaStream Identification (MSID) [RFC8830]. Unfortunately, none of these have the proper ordinality to refer to an individual stream; all such identifiers can appear in more than one stream at a time. While approaches that use unique payload types (PTs) per stream have been used in some applications, this is a semantic overloading of that field, and one for which its size is inadequate: in moderately complex systems that use PT to uniquely identify every potential combination of codec configuration and unique stream, it is possible to simply run out of values.¶
To address this situation, we define a new RTCP Stream Identifier Source Description (SDES) identifier, RtpStreamId, that uniquely identifies a single RTP stream. A key motivator for defining this identifier is the ability to differentiate among different encodings of a single source stream that are sent simultaneously (i.e., simulcast). This need for unique identification extends to dependent streams (e.g., where layers used by a layered codec are transmitted on separate streams).¶
At the same time, when redundancy RTP streams are in use, we also
need an identifier that connects such streams to the RTP stream for
which they are providing redundancy. For this purpose, we define an
additional SDES identifier, Repaired
2. Terminology
In this document, the terms "source stream", "RTP stream", "source RTP stream", "dependent stream", "received RTP stream", and "redundancy RTP stream" are used as defined in [RFC7656].¶
The following acronyms are also used:¶
3. Usage of RtpStreamId and RepairedRtpStreamId in RTP and RTCP
The RTP fixed header includes the payload type number and the SSRC values of the RTP stream. RTP defines how to demultiplex streams within an RTP session; however, in some use cases, applications need further identifiers in order to effectively map the individual RTP streams to their equivalent payload configurations in the SDP.¶
This specification defines two new RTCP SDES items [RFC3550]. The
first item is "RtpStreamId", which is used to carry RTP stream
identifiers within RTCP SDES packets. This makes it possible for a
receiver to associate received RTP packets (identifying the RTP
stream) with a media description having the format constraint
specified. The second is "Repaired
To be clear: the value carried in a Repaired
This specification also uses the RTP header extension for RTCP SDES
items [RFC7941] to allow carrying RtpStreamId
and Repaired
RtpStreamId and Repaired
Note that the Repaired
As with all SDES items, RtpStreamId and Repaired
3.1. RTCP "RtpStreamId" SDES Extension
The RtpStreamId payload is ASCII encoded and is not null terminated.¶
3.2. RTCP "RepairedRtpStreamId" SDES Extension
The Repaired
3.3. RTP "RtpStreamId" and "RepairedRtpStreamId" Header Extensions
Because recipients of RTP packets will typically need to know which
streams they correspond to immediately upon receipt, this
specification also defines a means of carrying RtpStreamId and
Repaired
As described in that document, the header extension element can be
encoded using either the one-byte or two-byte header, and the
identification
As the identifier is included in an RTP header extension, there should be some consideration given to the packet expansion caused by the identifier. To avoid Maximum Transmission Unit (MTU) issues for the RTP packets, the header extension's size needs to be taken into account when encoding media. Note that the set of header extensions included in the packet needs to be padded to the next 32-bit boundary [RFC8285].¶
In many cases, a one-byte identifier will be sufficient to distinguish streams in a session; implementations are strongly encouraged to use the shortest identifier that fits their purposes. Implementors are warned, in particular, not to include any information in the identifier that is derived from potentially user- identifying information, such as user ID or IP address. To avoid identification of specific implementations based on their pattern of tag generation, implementations are encouraged to use a simple scheme that starts with the ASCII digit "1", and increments by one for each subsequent identifier.¶
4. IANA Considerations
4.1. New RtpStreamId SDES Item
This document adds the RtpStreamId SDES item to the IANA "RTP SDES Item Types" registry as follows:¶
4.2. New RepairRtpStreamId SDES Item
This document adds the Repaired
4.3. New RtpStreamId Header Extension URI
This document defines a new extension URI in the "RTP SDES Compact Header Extensions" subregistry of the "RTP Compact Header Extensions" subregistry, as follows:¶
4.4. New RepairRtpStreamId Header Extension URI
This document defines a new extension URI in the "RTP SDES Compact Header Extensions" subregistry of the "RTP Compact Header Extensions" subregistry, as follows:¶
5. Security Considerations
Although the identifiers defined in this document are limited to be
strictly alphanumeric, SDES items have the potential to carry any
string. As a consequence, there exists a risk that they might carry
privacy
Even if the SDES items are generated to convey as little information as possible, implementors are strongly encouraged to encrypt SDES items -- both in RTCP and RTP header extensions -- so as to preserve privacy against third parties.¶
As the SDES items are used for identification of the RTP streams for different application purposes, it is important that the intended values are received. An attacker, either a third party or malicious RTP middlebox, that removes or changes the values for these SDES items can severely impact the application. The impact can include failure to decode or display the media content of the RTP stream. It can also result in incorrectly attributing media content to identifiers of the media source, such as incorrectly identifying the speaker. To prevent this from occurring due to third-party attacks, integrity and source authentication is needed.¶
"Options for Securing RTP Sessions" [RFC7201] discusses options for how encryption, integrity, and source authentication can be accomplished.¶
6. References
6.1. Normative References
- [RFC3550]
-
Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10
.17487 , , <https:///RFC3550 www >..rfc -editor .org /info /rfc3550 - [RFC7656]
-
Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources", RFC 7656, DOI 10
.17487 , , <https:///RFC7656 www >..rfc -editor .org /info /rfc7656 - [RFC7941]
-
Westerlund, M., Burman, B., Even, R., and M. Zanaty, "RTP Header Extension for the RTP Control Protocol (RTCP) Source Description Items", RFC 7941, DOI 10
.17487 , , <https:///RFC7941 www >..rfc -editor .org /info /rfc7941 - [RFC8285]
-
Singer, D., Desineni, H., and R. Even, Ed., "A General Mechanism for RTP Header Extensions", RFC 8285, DOI 10
.17487 , , <https:///RFC8285 www >..rfc -editor .org /info /rfc8285 - [RFC8843]
-
Holmberg, C., Alvestrand, H., and C. Jennings, "Negotiating Media Multiplexing Using the Session Description Protocol (SDP)", RFC 8843, DOI 10
.17487 , , <https:///RFC8843 www >..rfc -editor .org /info /rfc8843
6.2. Informative References
- [RFC7201]
-
Westerlund, M. and C. Perkins, "Options for Securing RTP Sessions", RFC 7201, DOI 10
.17487 , , <https:///RFC7201 www >..rfc -editor .org /info /rfc7201 - [RFC8830]
-
Alvestrand, H., "WebRTC MediaStream Identification in the Session Description Protocol", RFC 8830, DOI 10
.17487 , , <https:///RFC8830 www >..rfc -editor .org /info /rfc8830
Acknowledgements
Many thanks to Cullen Jennings, Magnus Westerlund, Colin Perkins, Jonathan Lennox, and Paul Kyzivat for review and input. Magnus Westerlund provided nearly all of the Security Considerations section.¶