rfc8852xml2.original.xml | rfc8852.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | ||||
nsus="true" docName="draft-ietf-avtext-rid-09" indexInclude="true" ipr="trust200 | ||||
902" number="8852" prepTime="2021-01-17T00:08:34" scripts="Common,Latin" sortRef | ||||
s="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml | ||||
:lang="en"> | ||||
<link href="https://datatracker.ietf.org/doc/draft-ietf-avtext-rid-09" rel="pr | ||||
ev"/> | ||||
<link href="https://dx.doi.org/10.17487/rfc8852" rel="alternate"/> | ||||
<link href="urn:issn:2070-1721" rel="alternate"/> | ||||
<front> | ||||
<title abbrev="RtpStreamId SDES">RTP Stream Identifier Source Description (S | ||||
DES)</title> | ||||
<seriesInfo name="RFC" value="8852" stream="IETF"/> | ||||
<author fullname="Adam Roach" initials="A.B." surname="Roach"> | ||||
<organization showOnFrontPage="true">Mozilla</organization> | ||||
<address> | ||||
<email>adam@nostrum.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar"> | ||||
<organization showOnFrontPage="true">Cisco Systems</organization> | ||||
<address> | ||||
<email>snandaku@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Peter Thatcher" initials="P." surname="Thatcher"> | ||||
<organization showOnFrontPage="true">Google</organization> | ||||
<address> | ||||
<email>pthatcher@google.com</email> | ||||
</address> | ||||
</author> | ||||
<date month="01" year="2021"/> | ||||
<keyword>WebRTC</keyword> | ||||
<keyword>Multiplexing</keyword> | ||||
<abstract pn="section-abstract"> | ||||
<t indent="0" pn="section-abstract-1"> | ||||
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.</t> | ||||
</abstract> | ||||
<boilerplate> | ||||
<section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
"exclude" pn="section-boilerplate.1"> | ||||
<name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
> | ||||
<t indent="0" pn="section-boilerplate.1-1"> | ||||
This is an Internet Standards Track document. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.1-2"> | ||||
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. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.1-3"> | ||||
Information about the current status of this document, any | ||||
errata, and how to provide feedback on it may be obtained at | ||||
<eref target="https://www.rfc-editor.org/info/rfc8852" brackets="non | ||||
e"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
ude" pn="section-boilerplate.2"> | ||||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<t indent="0" pn="section-boilerplate.2-1"> | ||||
Copyright (c) 2021 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.2-2"> | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
"/>) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with | ||||
respect to this document. Code Components extracted from this | ||||
document must include Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
</t> | ||||
</section> | ||||
</boilerplate> | ||||
<toc> | ||||
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
n="section-toc.1"> | ||||
<name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
c.1-1"> | ||||
<li pn="section-toc.1-1.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
Introduction</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.2"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | ||||
ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-terminology">T | ||||
erminology</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3"> | ||||
<t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | ||||
at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-usage-of-rtpstreamid-and-re">Usage | ||||
of RtpStreamId and RepairedRtpStreamId in RTP and RTCP</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.3.2"> | ||||
<li pn="section-toc.1-1.3.2.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1">< | ||||
xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3. | ||||
1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-rt | ||||
cp-rtpstreamid-sdes-exten">RTCP "RtpStreamId" SDES Extension</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent= | ||||
"3.2" format="counter" sectionFormat="of" target="section-3.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-rtcp-repairedrtpstream | ||||
id-sd">RTCP "RepairedRtpStreamId" SDES Extension</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent= | ||||
"3.3" format="counter" sectionFormat="of" target="section-3.3"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-rtp-rtpstreamid-and-re | ||||
paire">RTP "RtpStreamId" and "RepairedRtpStreamId" Header Extensions</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.4"> | ||||
<t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
ations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.4.2"> | ||||
<li pn="section-toc.1-1.4.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | ||||
"4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-new-rtpstreamid-sdes-i | ||||
tem">New RtpStreamId SDES Item</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent= | ||||
"4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-new-repairrtpstreamid- | ||||
sdes-">New RepairRtpStreamId SDES Item</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent= | ||||
"4.3" format="counter" sectionFormat="of" target="section-4.3"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-new-rtpstreamid-header | ||||
-exte">New RtpStreamId Header Extension URI</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent= | ||||
"4.4" format="counter" sectionFormat="of" target="section-4.4"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-new-repairrtpstreamid- | ||||
heade">New RepairRtpStreamId Header Extension URI</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-references">References</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.6.2"> | ||||
<li pn="section-toc.1-1.6.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
"6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-normative-references"> | ||||
Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
"6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-informative-references | ||||
">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="" forma | ||||
t="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgemen | ||||
ts</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8"> | ||||
<t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" forma | ||||
t="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addr | ||||
esses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | ||||
<middle> | ||||
<section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn | ||||
="section-1"> | ||||
<name slugifiedName="name-introduction">Introduction</name> | ||||
<t indent="0" pn="section-1-1"> | ||||
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) <xref target="RFC8830" format="default" sectionFormat="of" derivedCont | ||||
ent="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.</t> | ||||
<t indent="0" pn="section-1-2"> | ||||
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).</t> | ||||
<t indent="0" pn="section-1-3"> | ||||
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, RepairedRtpStreamId. This identifier can | ||||
appear only in packets associated with a redundancy RTP stream. They | ||||
carry the same value as the RtpStreamId of the RTP stream that the | ||||
redundant RTP stream is correcting.</t> | ||||
</section> | ||||
<section anchor="terminology" numbered="true" toc="include" removeInRFC="fal | ||||
se" pn="section-2"> | ||||
<name slugifiedName="name-terminology">Terminology</name> | ||||
<t indent="0" pn="section-2-1"> | ||||
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 <xref target="RFC7656" format= | ||||
"default" sectionFormat="of" derivedContent="RFC7656"/>.</t> | ||||
<t indent="0" pn="section-2-2"> | ||||
The following acronyms are also used:</t> | ||||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-3 | ||||
"> | ||||
<li pn="section-2-3.1">CNAME: Canonical Endpoint Identifier, defined in | ||||
<xref target="RFC3550" format="default" sectionFormat="of" derivedContent="RFC35 | ||||
50"/></li> | ||||
<li pn="section-2-3.2">MID: Media Identification, defined in | ||||
<xref target="RFC8843" format="default" sectionFormat="of" derivedContent= | ||||
"RFC8843"/></li> | ||||
<li pn="section-2-3.3">MSID: MediaStream Identification, defined in <xre | ||||
f target="RFC8830" format="default" sectionFormat="of" derivedContent="RFC8830"/ | ||||
></li> | ||||
<li pn="section-2-3.4">RTCP: Real-time Transport Control Protocol, defin | ||||
ed in <xref target="RFC3550" format="default" sectionFormat="of" derivedContent= | ||||
"RFC3550"/></li> | ||||
<li pn="section-2-3.5">RTP: Real-time Transport Protocol, defined in <xr | ||||
ef target="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550" | ||||
/></li> | ||||
<li pn="section-2-3.6">SDES: Source Description, defined in <xref target | ||||
="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550"/></li> | ||||
<li pn="section-2-3.7">SSRC: Synchronization Source, defined in <xref ta | ||||
rget="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550"/></l | ||||
i> | ||||
</ul> | ||||
</section> | ||||
<section anchor="StreamId" numbered="true" toc="include" removeInRFC="false" | ||||
pn="section-3"> | ||||
<name slugifiedName="name-usage-of-rtpstreamid-and-re">Usage of RtpStreamI | ||||
d and RepairedRtpStreamId in RTP and RTCP</name> | ||||
<t indent="0" pn="section-3-1"> | ||||
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.</t> | ||||
<t indent="0" pn="section-3-2"> | ||||
This specification defines two new RTCP SDES items <xref target="RFC3550" for | ||||
mat="default" sectionFormat="of" derivedContent="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 "RepairedRtpStreamId", which can be used in | ||||
redundancy RTP streams to indicate the RTP stream repaired by a | ||||
redundancy RTP stream.</t> | ||||
<t indent="0" pn="section-3-3"> | ||||
To be clear: the value carried in a RepairedRtpStreamId will always | ||||
match the RtpStreamId value from another RTP stream in the same | ||||
session. For example, if a source RTP stream is identified by | ||||
RtpStreamId "A", then any redundancy RTP stream that repairs that | ||||
source RTP stream will contain a RepairedRtpStreamId of "A" (if this | ||||
mechanism is being used to perform such correlation). These | ||||
redundant RTP streams may also contain their own unique RtpStreamId.</t> | ||||
<t indent="0" pn="section-3-4"> | ||||
This specification also uses the RTP header extension for RTCP SDES | ||||
items <xref target="RFC7941" format="default" sectionFormat="of" derivedConte | ||||
nt="RFC7941"/> to allow carrying RtpStreamId | ||||
and RepairedRtpStreamId values in RTP packets. This allows | ||||
correlation at stream startup, or after stream changes where the use | ||||
of RTCP may not be sufficiently responsive. This speed of response | ||||
is necessary since, in many cases, the stream cannot be properly | ||||
processed until it can be identified.</t> | ||||
<t indent="0" pn="section-3-5"> | ||||
RtpStreamId and RepairedRtpStreamId values are scoped by source | ||||
identifier (e.g., CNAME) and by media session. When the media is | ||||
multiplexed using the BUNDLE extension | ||||
<xref target="RFC8843" format="default" sectionFormat="of" derivedContent="RF | ||||
C8843"/>, these values are further | ||||
scoped by their associated MID values. For example: an RtpStreamId | ||||
of "1" may be present in the stream identified with a CNAME of | ||||
"1234@example.com" and may also be present in a stream with a CNAME | ||||
of "5678@example.org", and these would refer to different streams. | ||||
Similarly, an RtpStreamId of "1" may be present with an MID of "A", | ||||
and again with a MID of "B", and also refer to two different streams.</t> | ||||
<t indent="0" pn="section-3-6"> | ||||
Note that the RepairedRtpStreamId mechanism is limited to indicating | ||||
one repaired stream per redundancy stream. If systems require | ||||
correlation for schemes in which a redundancy stream contains | ||||
information used to repair more than one stream, they will have to | ||||
use a more complex mechanism than the one defined in this | ||||
specification.</t> | ||||
<t indent="0" pn="section-3-7"> | ||||
As with all SDES items, RtpStreamId and RepairedRtpStreamId are | ||||
limited to a total of 255 octets in length. RtpStreamId and | ||||
RepairedRtpStreamId are constrained to contain only alphanumeric | ||||
characters. For avoidance of doubt, the only allowed byte values for | ||||
these IDs are decimal 48 through 57, 65 through 90, and 97 through | ||||
122.</t> | ||||
<section anchor="RtpStreamId-ext" numbered="true" toc="include" removeInRF | ||||
C="false" pn="section-3.1"> | ||||
<name slugifiedName="name-rtcp-rtpstreamid-sdes-exten">RTCP "RtpStreamId | ||||
" SDES Extension</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-3.1-1"> | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|RtpStreamId=12 | length | RtpStreamId ... | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ </artwork> | ||||
<t indent="0" pn="section-3.1-2"> | ||||
The RtpStreamId payload is ASCII encoded and is not null terminated. | ||||
</t> | ||||
</section> | ||||
<section anchor="Repaired-ext" numbered="true" toc="include" removeInRFC=" | ||||
false" pn="section-3.2"> | ||||
<name slugifiedName="name-rtcp-repairedrtpstreamid-sd">RTCP "RepairedRtp | ||||
StreamId" SDES Extension</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-3.2-1"> | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
|Repaired...=13 | length | RepairRtpStreamId ... | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ </artwork> | ||||
<t indent="0" pn="section-3.2-2"> | ||||
The RepairedRtpStreamId payload is ASCII encoded and is not null terminated. | ||||
</t> | ||||
</section> | ||||
<section anchor="Header-ext" numbered="true" toc="include" removeInRFC="fa | ||||
lse" pn="section-3.3"> | ||||
<name slugifiedName="name-rtp-rtpstreamid-and-repaire">RTP "RtpStreamId" | ||||
and "RepairedRtpStreamId" Header Extensions</name> | ||||
<t indent="0" pn="section-3.3-1"> | ||||
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 | ||||
RepairedRtpStreamId identifiers in RTP extension headers, using the | ||||
technique described in <xref target="RFC7941" format="default" sectionFormat= | ||||
"of" derivedContent="RFC7941"/>.</t> | ||||
<t indent="0" pn="section-3.3-2"> | ||||
As described in that document, the header extension element can be | ||||
encoded using either the one-byte or two-byte header, and the | ||||
identification-tag payload is ASCII encoded.</t> | ||||
<t indent="0" pn="section-3.3-3"> | ||||
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 | ||||
<xref target="RFC8285" format="default" sectionFormat="of" derivedContent="RF | ||||
C8285"/>.</t> | ||||
<t indent="0" pn="section-3.3-4"> | ||||
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.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn= | ||||
"section-4"> | ||||
<name slugifiedName="name-iana-considerations">IANA Considerations</name> | ||||
<section anchor="New-RtpStreamId" numbered="true" toc="include" removeInRF | ||||
C="false" pn="section-4.1"> | ||||
<name slugifiedName="name-new-rtpstreamid-sdes-item">New RtpStreamId SDE | ||||
S Item</name> | ||||
<t indent="0" pn="section-4.1-1"> | ||||
This document adds the RtpStreamId SDES item to the IANA "RTP SDES Item | ||||
Types" registry as follows:</t> | ||||
<dl spacing="compact" indent="12" newline="false" pn="section-4.1-2"> | ||||
<dt pn="section-4.1-2.1">Value:</dt> | ||||
<dd pn="section-4.1-2.2">12</dd> | ||||
<dt pn="section-4.1-2.3">Abbrev.:</dt> | ||||
<dd pn="section-4.1-2.4">RtpStreamId</dd> | ||||
<dt pn="section-4.1-2.5">Name:</dt> | ||||
<dd pn="section-4.1-2.6">RTP Stream Identifier</dd> | ||||
<dt pn="section-4.1-2.7">Reference:</dt> | ||||
<dd pn="section-4.1-2.8">RFC 8852</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="New-Repair" numbered="true" toc="include" removeInRFC="fa | ||||
lse" pn="section-4.2"> | ||||
<name slugifiedName="name-new-repairrtpstreamid-sdes-">New RepairRtpStre | ||||
amId SDES Item</name> | ||||
<t indent="0" pn="section-4.2-1"> | ||||
This document adds the RepairedRtpStreamId SDES item to the IANA "RTP SDES | ||||
Item Types" registry as follows:</t> | ||||
<dl spacing="compact" indent="12" newline="false" pn="section-4.2-2"> | ||||
<dt pn="section-4.2-2.1">Value:</dt> | ||||
<dd pn="section-4.2-2.2">13</dd> | ||||
<dt pn="section-4.2-2.3">Abbrev.:</dt> | ||||
<dd pn="section-4.2-2.4">RepairedRtpStreamId</dd> | ||||
<dt pn="section-4.2-2.5">Name:</dt> | ||||
<dd pn="section-4.2-2.6">Repaired RTP Stream Identifier</dd> | ||||
<dt pn="section-4.2-2.7">Reference:</dt> | ||||
<dd pn="section-4.2-2.8">RFC 8852</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="New-Str-header" numbered="true" toc="include" removeInRFC | ||||
="false" pn="section-4.3"> | ||||
<name slugifiedName="name-new-rtpstreamid-header-exte">New RtpStreamId H | ||||
eader Extension URI</name> | ||||
<t indent="0" pn="section-4.3-1"> | ||||
This document defines a new extension URI in the "RTP SDES Compact | ||||
Header Extensions" subregistry of the "RTP Compact Header Extensions" | ||||
subregistry, as follows:</t> | ||||
<dl spacing="compact" indent="3" newline="false" pn="section-4.3-2"> | ||||
<dt pn="section-4.3-2.1">Extension URI:</dt> | ||||
<dd pn="section-4.3-2.2">urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | ||||
</dd> | ||||
<dt pn="section-4.3-2.3">Description:</dt> | ||||
<dd pn="section-4.3-2.4">RTP Stream Identifier</dd> | ||||
<dt pn="section-4.3-2.5">Contact:</dt> | ||||
<dd pn="section-4.3-2.6"> | ||||
<t indent="0" pn="section-4.3-2.6.1"><contact fullname="Adam Roach"/ | ||||
> <adam@nostrum.com></t> | ||||
</dd> | ||||
<dt pn="section-4.3-2.7">Reference:</dt> | ||||
<dd pn="section-4.3-2.8">RFC 8852</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="New-Repair-Header" numbered="true" toc="include" removeIn | ||||
RFC="false" pn="section-4.4"> | ||||
<name slugifiedName="name-new-repairrtpstreamid-heade">New RepairRtpStre | ||||
amId Header Extension URI</name> | ||||
<t indent="0" pn="section-4.4-1"> | ||||
This document defines a new extension URI in the "RTP SDES Compact | ||||
Header Extensions" subregistry of the "RTP Compact Header Extensions" | ||||
subregistry, as follows:</t> | ||||
<dl spacing="compact" indent="3" newline="false" pn="section-4.4-2"> | ||||
<dt pn="section-4.4-2.1">Extension URI:</dt> | ||||
<dd pn="section-4.4-2.2">urn:ietf:params:rtp-hdrext:sdes:repaired-rtp- | ||||
stream-id</dd> | ||||
<dt pn="section-4.4-2.3">Description:</dt> | ||||
<dd pn="section-4.4-2.4">RTP Repaired Stream Identifier</dd> | ||||
<dt pn="section-4.4-2.5">Contact:</dt> | ||||
<dd pn="section-4.4-2.6"> | ||||
<t indent="0" pn="section-4.4-2.6.1"><contact fullname="Adam Roach"/ | ||||
> <adam@nostrum.com></t> | ||||
</dd> | ||||
<dt pn="section-4.4-2.7">Reference:</dt> | ||||
<dd pn="section-4.4-2.8">RFC 8852</dd> | ||||
</dl> | ||||
</section> | ||||
</section> | ||||
<section anchor="Security" numbered="true" toc="include" removeInRFC="false" | ||||
pn="section-5"> | ||||
<name slugifiedName="name-security-considerations">Security Considerations | ||||
</name> | ||||
<t indent="0" pn="section-5-1"> | ||||
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-sensitive information. Implementations need to take care | ||||
when generating identifiers so that they do not contain information | ||||
that can identify the user or allow for long-term tracking of the | ||||
device. Following the generation recommendations in <xref target="Header-ext | ||||
" format="default" sectionFormat="of" derivedContent="Section 3.3"/> will | ||||
result in non-instance-specific labels, with only minor | ||||
fingerprinting possibilities in the total number of used RtpStreamIds | ||||
and RepairedRtpStreamIds.</t> | ||||
<t indent="0" pn="section-5-2"> | ||||
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.</t> | ||||
<t indent="0" pn="section-5-3"> | ||||
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.</t> | ||||
<t indent="0" pn="section-5-4"> | ||||
"Options for Securing RTP Sessions" <xref target="RFC7201" format="default" s | ||||
ectionFormat="of" derivedContent="RFC7201"/> discusses options for how | ||||
encryption, integrity, and source authentication can be accomplished.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references pn="section-6"> | ||||
<name slugifiedName="name-references">References</name> | ||||
<references pn="section-6.1"> | ||||
<name slugifiedName="name-normative-references">Normative References</na | ||||
me> | ||||
<reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | ||||
550" quoteTitle="true" derivedAnchor="RFC3550"> | ||||
<front> | ||||
<title>RTP: A Transport Protocol for Real-Time Applications</title> | ||||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Casner" fullname="S. Casner"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Frederick" fullname="R. Frederick"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="V." surname="Jacobson" fullname="V. Jacobson"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2003" month="July"/> | ||||
<abstract> | ||||
<t indent="0">This memorandum describes RTP, the real-time transpo | ||||
rt protocol. RTP provides end-to-end network transport functions suitable for a | ||||
pplications transmitting real-time data, such as audio, video or simulation data | ||||
, over multicast or unicast network services. RTP does not address resource res | ||||
ervation and does not guarantee quality-of- service for real-time services. The | ||||
data transport is augmented by a control protocol (RTCP) to allow monitoring of | ||||
the data delivery in a manner scalable to large multicast networks, and to prov | ||||
ide minimal control and identification functionality. RTP and RTCP are designed | ||||
to be independent of the underlying transport and network layers. The protocol | ||||
supports the use of RTP-level translators and mixers. Most of the text in this | ||||
memorandum is identical to RFC 1889 which it obsoletes. There are no changes in | ||||
the packet formats on the wire, only changes to the rules and algorithms govern | ||||
ing how the protocol is used. The biggest change is an enhancement to the scalab | ||||
le timer algorithm for calculating when to send RTCP packets in order to minimiz | ||||
e transmission in excess of the intended rate when many participants join a sess | ||||
ion simultaneously. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="64"/> | ||||
<seriesInfo name="RFC" value="3550"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3550"/> | ||||
</reference> | ||||
<reference anchor="RFC7656" target="https://www.rfc-editor.org/info/rfc7 | ||||
656" quoteTitle="true" derivedAnchor="RFC7656"> | ||||
<front> | ||||
<title>A Taxonomy of Semantics and Mechanisms for Real-Time Transpor | ||||
t Protocol (RTP) Sources</title> | ||||
<author initials="J." surname="Lennox" fullname="J. Lennox"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="K." surname="Gross" fullname="K. Gross"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Nandakumar" fullname="S. Nandakumar"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Salgueiro" fullname="G. Salgueiro"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Burman" fullname="B. Burman" role="ed | ||||
itor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2015" month="November"/> | ||||
<abstract> | ||||
<t indent="0">The terminology about, and associations among, Real- | ||||
time Transport Protocol (RTP) sources can be complex and somewhat opaque. This | ||||
document describes a number of existing and proposed properties and relationship | ||||
s among RTP sources and defines common terminology for discussing protocol entit | ||||
ies and their relationships.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7656"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7656"/> | ||||
</reference> | ||||
<reference anchor="RFC7941" target="https://www.rfc-editor.org/info/rfc7 | ||||
941" quoteTitle="true" derivedAnchor="RFC7941"> | ||||
<front> | ||||
<title>RTP Header Extension for the RTP Control Protocol (RTCP) Sour | ||||
ce Description Items</title> | ||||
<author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Burman" fullname="B. Burman"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Even" fullname="R. Even"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Zanaty" fullname="M. Zanaty"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2016" month="August"/> | ||||
<abstract> | ||||
<t indent="0">Source Description (SDES) items are normally transpo | ||||
rted in the RTP Control Protocol (RTCP). In some cases, it can be beneficial to | ||||
speed up the delivery of these items. The main case is when a new synchronizat | ||||
ion source (SSRC) joins an RTP session and the receivers need this source's iden | ||||
tity, relation to other sources, or its synchronization context, all of which ma | ||||
y be fully or partially identified using SDES items. To enable this optimizatio | ||||
n, this document specifies a new RTP header extension that can carry SDES items. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7941"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7941"/> | ||||
</reference> | ||||
<reference anchor="RFC8285" target="https://www.rfc-editor.org/info/rfc8 | ||||
285" quoteTitle="true" derivedAnchor="RFC8285"> | ||||
<front> | ||||
<title>A General Mechanism for RTP Header Extensions</title> | ||||
<author initials="D." surname="Singer" fullname="D. Singer"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Desineni" fullname="H. Desineni"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Even" fullname="R. Even" role="editor | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="October"/> | ||||
<abstract> | ||||
<t indent="0">This document provides a general mechanism to use th | ||||
e header extension feature of RTP (the Real-time Transport Protocol). It provid | ||||
es the option to use a small number of small extensions in each RTP packet, wher | ||||
e the universe of possible extensions is large and registration is decentralized | ||||
. The actual extensions in use in a session are signaled in the setup informati | ||||
on for that session. This document obsoletes RFC 5285.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8285"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8285"/> | ||||
</reference> | ||||
<reference anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8 | ||||
843" quoteTitle="true" derivedAnchor="RFC8843"> | ||||
<front> | ||||
<title>Negotiating Media Multiplexing Using the Session Description | ||||
Protocol (SDP)</title> | ||||
<author initials="C" surname="Holmberg" fullname="Christer Holmberg" | ||||
> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H" surname="Alvestrand" fullname="Harald Alvestran | ||||
d"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C" surname="Jennings" fullname="Cullen Jennings"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8843"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8843"/> | ||||
</reference> | ||||
</references> | ||||
<references pn="section-6.2"> | ||||
<name slugifiedName="name-informative-references">Informative References | ||||
</name> | ||||
<reference anchor="RFC7201" target="https://www.rfc-editor.org/info/rfc7 | ||||
201" quoteTitle="true" derivedAnchor="RFC7201"> | ||||
<front> | ||||
<title>Options for Securing RTP Sessions</title> | ||||
<author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2014" month="April"/> | ||||
<abstract> | ||||
<t indent="0">The Real-time Transport Protocol (RTP) is used in a | ||||
large number of different application domains and environments. This heterogene | ||||
ity implies that different security mechanisms are needed to provide services su | ||||
ch as confidentiality, integrity, and source authentication of RTP and RTP Contr | ||||
ol Protocol (RTCP) packets suitable for the various environments. The range of | ||||
solutions makes it difficult for RTP-based application developers to pick the mo | ||||
st suitable mechanism. This document provides an overview of a number of securi | ||||
ty solutions for RTP and gives guidance for developers on how to choose the appr | ||||
opriate security mechanism.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7201"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7201"/> | ||||
</reference> | ||||
<reference anchor="RFC8830" target="https://www.rfc-editor.org/info/rfc8 | ||||
830" quoteTitle="true" derivedAnchor="RFC8830"> | ||||
<front> | ||||
<title>WebRTC MediaStream Identification in the Session Description | ||||
Protocol</title> | ||||
<author initials="H" surname="Alvestrand" fullname="Harald Alvestran | ||||
d"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8830"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8830"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="Ack" numbered="false" toc="include" removeInRFC="false" pn= | ||||
"section-appendix.a"> | ||||
<name slugifiedName="name-acknowledgements">Acknowledgements</name> | ||||
<t indent="0" pn="section-appendix.a-1"> | ||||
Many thanks to <contact fullname="Cullen Jennings"/>, <contact fullname="Magn | ||||
us Westerlund"/>, <contact fullname="Colin Perkins"/>, | ||||
<contact fullname="Jonathan Lennox"/>, and <contact fullname="Paul Kyzivat | ||||
"/> for review and input. <contact fullname="Magnus Westerlund"/> | ||||
provided nearly all of the Security Considerations section.</t> | ||||
</section> | ||||
<section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
="include" pn="section-appendix.b"> | ||||
<name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
<author fullname="Adam Roach" initials="A.B." surname="Roach"> | ||||
<organization showOnFrontPage="true">Mozilla</organization> | ||||
<address> | ||||
<email>adam@nostrum.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar"> | ||||
<organization showOnFrontPage="true">Cisco Systems</organization> | ||||
<address> | ||||
<email>snandaku@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Peter Thatcher" initials="P." surname="Thatcher"> | ||||
<organization showOnFrontPage="true">Google</organization> | ||||
<address> | ||||
<email>pthatcher@google.com</email> | ||||
</address> | ||||
</author> | ||||
</section> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 1 change blocks. | ||||
lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |