| 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/ | ||||