<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-avtext-rid-09" indexInclude="true" ipr="trust200902" number="8852" prepTime="2021-01-17T00:08:34" scripts="Common,Latin" sortRefs="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="prev"/>
  <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 (SDES)</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="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" 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" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="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 derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="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="section-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-rtcp-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 derivedContent="" format="title" sectionFormat="of" target="name-rtcp-repairedrtpstreamid-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 derivedContent="" format="title" sectionFormat="of" target="name-rtp-rtpstreamid-and-repaire">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" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-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 derivedContent="" format="title" sectionFormat="of" target="name-new-rtpstreamid-sdes-item">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 derivedContent="" 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 derivedContent="" 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 derivedContent="" 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" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="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" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-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 derivedContent="" 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 derivedContent="" 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="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</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" derivedContent="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="false" 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="RFC3550"/></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 <xref target="RFC8830" format="default" sectionFormat="of" derivedContent="RFC8830"/></li>
        <li pn="section-2-3.4">RTCP: Real-time Transport Control Protocol, defined in <xref target="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550"/></li>
        <li pn="section-2-3.5">RTP: Real-time Transport Protocol, defined in <xref 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 target="RFC3550" format="default" sectionFormat="of" derivedContent="RFC3550"/></li>
      </ul>
    </section>
    <section anchor="StreamId" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-usage-of-rtpstreamid-and-re">Usage of RtpStreamId 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" format="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" derivedContent="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="RFC8843"/>, 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" removeInRFC="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 "RepairedRtpStreamId" 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="false" 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="RFC8285"/>.</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" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-new-rtpstreamid-sdes-item">New RtpStreamId SDES 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="false" pn="section-4.2">
        <name slugifiedName="name-new-repairrtpstreamid-sdes-">New RepairRtpStreamId 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 Header 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"/> &lt;adam@nostrum.com&gt;</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" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-new-repairrtpstreamid-heade">New RepairRtpStreamId 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"/> &lt;adam@nostrum.com&gt;</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" sectionFormat="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</name>
        <reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3550" 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 transport protocol.  RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over multicast or unicast network services.  RTP does not address resource reservation 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 provide 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 governing how the protocol is used. The biggest change is an enhancement to the scalable timer algorithm for calculating when to send RTCP packets in order to minimize transmission in excess of the intended rate when many participants join a session 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/rfc7656" quoteTitle="true" derivedAnchor="RFC7656">
          <front>
            <title>A Taxonomy of Semantics and Mechanisms for Real-Time Transport 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="editor">
              <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 relationships among RTP sources and defines common terminology for discussing protocol entities 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/rfc7941" quoteTitle="true" derivedAnchor="RFC7941">
          <front>
            <title>RTP Header Extension for the RTP Control Protocol (RTCP) Source 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 transported 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 synchronization source (SSRC) joins an RTP session and the receivers need this source's identity, relation to other sources, or its synchronization context, all of which may be fully or partially identified using SDES items.  To enable this optimization, 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/rfc8285" 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 the header extension feature of RTP (the Real-time Transport Protocol).  It provides the option to use a small number of small extensions in each RTP packet, where the universe of possible extensions is large and registration is decentralized.  The actual extensions in use in a session are signaled in the setup information 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/rfc8843" 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 Alvestrand">
              <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/rfc7201" 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 heterogeneity implies that different security mechanisms are needed to provide services such as confidentiality, integrity, and source authentication of RTP and RTP Control Protocol (RTCP) packets suitable for the various environments.  The range of solutions makes it difficult for RTP-based application developers to pick the most suitable mechanism.  This document provides an overview of a number of security solutions for RTP and gives guidance for developers on how to choose the appropriate 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/rfc8830" quoteTitle="true" derivedAnchor="RFC8830">
          <front>
            <title>WebRTC MediaStream Identification in the Session Description Protocol</title>
            <author initials="H" surname="Alvestrand" fullname="Harald Alvestrand">
              <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="Magnus 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>