<?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-mmusic-mux-exclusive-12" indexInclude="true" ipr="trust200902" number="8858" prepTime="2021-01-17T23:29:24" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" updates="5761" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-mmusic-mux-exclusive-12" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8858" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Exclusive RTP/RTCP Mux">Indicating Exclusive Support of RTP and RTP Control Protocol (RTCP) Multiplexing Using the Session Description Protocol (SDP)</title>
    <seriesInfo name="RFC" value="8858" stream="IETF"/>
    <author fullname="Christer Holmberg" initials="C." surname="Holmberg">
      <organization abbrev="Ericsson" showOnFrontPage="true">Ericsson</organization>
      <address>
        <postal>
          <street>Hirsalantie 11</street>
          <city>Jorvas</city>
          <code>02420</code>
          <country>Finland</country>
        </postal>
        <phone/>
        <email>christer.holmberg@ericsson.com</email>
      </address>
    </author>
    <date month="01" year="2021"/>
    <area>Transport</area>
    <keyword>RTP</keyword>
    <keyword>RTCP</keyword>
    <keyword>SDP</keyword>
    <keyword>OFFER</keyword>
    <keyword>ANSWER</keyword>
    <keyword>MUX</keyword>
    <keyword>MULTIPLEX</keyword>
    <keyword>RTCWEB</keyword>
    <keyword>WebRTC</keyword>
    <keyword>JSEP</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
            This document defines a new Session Description Protocol (SDP)
            media-level attribute, 'rtcp-mux-only', that can be used
            by an endpoint to indicate exclusive support of RTP
            and RTP Control Protocol (RTCP) multiplexing. The document also updates RFC
            5761 by clarifying that an offerer can use a mechanism to indicate
            that it is not able to send and receive RTCP on separate ports.
      </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/rfc8858" 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-conventions">Conventions</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" 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-sdp-rtcp-mux-only-attribute">SDP 'rtcp-mux-only' Attribute</xref></t>
          </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-sdp-offer-answer-procedures">SDP Offer/Answer Procedures</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-general">General</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-generating-the-initial-sdp-">Generating the Initial SDP Offer</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-generating-the-answer">Generating the Answer</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-offerer-processing-of-the-s">Offerer Processing of the SDP Answer</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.5">
                <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent="4.5" format="counter" sectionFormat="of" target="section-4.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-modifying-the-session">Modifying the Session</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-update-to-rfc-5761">Update to RFC 5761</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-general-2">General</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-update-to-4th-paragraph-of-">Update to 4th Paragraph of Section 5.1.1</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-update-to-2nd-paragraph-of-">Update to 2nd Paragraph of Section 5.1.3</xref></t>
              </li>
            </ul>
          </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-ice-considerations">ICE Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <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.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.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.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
            <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/> defines how to multiplex
            RTP and RTCP on a single IP address and port, referred to as
            RTP/RTCP multiplexing.  <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/>
            also defines an SDP <xref target="RFC4566" format="default" sectionFormat="of" derivedContent="RFC4566"/>
            attribute, 'rtcp-mux', that can be used by entities to indicate
            support of RTP/RTCP multiplexing and negotiate usage of it.
      </t>
      <t indent="0" pn="section-1-2">
            As defined in <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/>, if
            the peer endpoint does not support RTP/RTCP multiplexing, both endpoints should
            use separate ports for sending and receiving of RTCP (referred to as fallback
            to usage of separate ports for RTP and RTCP).
      </t>
      <t indent="0" pn="section-1-3">
            Some newer applications that do not require backward compatibility
            with peers that cannot multiplex RTCP might choose not to
            implement separation of RTP and RTCP. Examples of such
            applications are W3C WebRTC applications <xref target="WebRTC" format="default" sectionFormat="of" derivedContent="WebRTC"/>, which are not required to interoperate with
            non-WebRTC clients. For such applications, this document defines
            an SDP attribute to signal intent to require multiplexing.  The
            use of this attribute in SDP offers <xref format="default" target="RFC3264" sectionFormat="of" derivedContent="RFC3264"/> may harm the interoperability of entities that
            ever need to interoperate with peers that do not support RTC/RTCP
            multiplexing.  Also, while the SDP answerer <xref format="default" target="RFC3264" sectionFormat="of" derivedContent="RFC3264"/> might support, and prefer usage of, fallback to
            nonmultiplex, the attribute indicates that fallback to
            nonmultiplex cannot be enabled. One example of where nonmultiplex
            is preferred is where an endpoint is connected to a radio
            interface and wants to use different bearers (possibly with
            different quality characteristics) for RTP and RTCP. Another
            example is where one endpoint is acting as a gateway to a network
            where RTP/RTCP multiplexing cannot be used.  In such a case, the
            endpoint may also prefer nonmultiplexing towards the other
            network. Otherwise, the endpoint would have to perform
            demultiplexing of RTP and RTCP.
      </t>
      <t indent="0" pn="section-1-4">
            This document defines a new SDP media-level attribute,
            'rtcp-mux-only', that can be used by an endpoint to indicate
            exclusive support of RTP/RTCP multiplexing. The document also
            updates <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/> by clarifying
            that an offerer can use a mechanism to indicate that it is not
            able to send and receive RTCP on separate ports.
      </t>
      <t indent="0" pn="section-1-5">
            This document also describes the Interactive Connectivity Establishment (ICE)
            <xref target="RFC8445" format="default" sectionFormat="of" derivedContent="RFC8445"/> considerations when indicating exclusive
            support of RTP/RTCP multiplexing.
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-conventions">Conventions</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
      </t>
    </section>
    <section anchor="sec-dcon-attr" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-sdp-rtcp-mux-only-attribute">SDP 'rtcp-mux-only' Attribute</name>
      <t indent="0" pn="section-3-1">This section defines a new SDP media-level attribute, 'rtcp-mux-only'.
      </t>
      <ul empty="true" bare="false" indent="3" spacing="normal" pn="section-3-2">
        <li pn="section-3-2.1">
          <dl indent="3" newline="false" spacing="normal" pn="section-3-2.1.1">
            <dt pn="section-3-2.1.1.1">Name:</dt>
            <dd pn="section-3-2.1.1.2">rtcp-mux-only</dd>
            <dt pn="section-3-2.1.1.3">Value:</dt>
            <dd pn="section-3-2.1.1.4">N/A</dd>
            <dt pn="section-3-2.1.1.5">Usage Level:</dt>
            <dd pn="section-3-2.1.1.6">media</dd>
            <dt pn="section-3-2.1.1.7">Charset Dependent:</dt>
            <dd pn="section-3-2.1.1.8">no</dd>
            <dt pn="section-3-2.1.1.9">Syntax:</dt>
            <dd pn="section-3-2.1.1.10">rtcp-mux-only</dd>
            <dt pn="section-3-2.1.1.11">Example:</dt>
            <dd pn="section-3-2.1.1.12">a=rtcp-mux-only</dd>
          </dl>
        </li>
      </ul>
      <t indent="0" pn="section-3-3">
            In an SDP offer, the offerer uses the SDP 'rtcp-mux-only' attribute to
            indicate exclusive support of RTP/RTCP multiplexing for the RTP-based
            media associated with the SDP media description ("m=" line).
      </t>
      <t indent="0" pn="section-3-4">
            In an SDP answer, the 'rtcp-mux' attribute <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/> indicates that the answerer
            supports, and accepts usage of, RTP/RTCP multiplexing for the RTP-based media
            associated with the SDP media description ("m=" line).
      </t>
      <t indent="0" pn="section-3-5">
            The usage of the 'rtcp-mux-only' attribute in an SDP answer is forbidden.
      </t>
      <t indent="0" pn="section-3-6">
            The usage of the SDP 'rtcp-mux-only' attribute is only defined for RTP-based
            media.
      </t>
      <t indent="0" pn="section-3-7">
            The mux category <xref target="RFC8859" format="default" sectionFormat="of" derivedContent="RFC8859"/>
            for the 'rtcp-mux-only' attribute is "IDENTICAL", which means that the
            attribute, if used within a BUNDLE group <xref target="RFC8843" format="default" sectionFormat="of" derivedContent="RFC8843"/>,
            must be associated with all multiplexed RTP-based media descriptions
            within the BUNDLE group.
      </t>
      <t indent="0" pn="section-3-8">
            The 'rtcp-mux-only' attribute applies to the whole associated
            media description. The attribute <bcp14>MUST NOT</bcp14> be defined per source (using the
            SDP 'ssrc' attribute <xref format="default" target="RFC5576" sectionFormat="of" derivedContent="RFC5576"/>).
      </t>
      <t indent="0" pn="section-3-9">
            The SDP offer/answer procedures <xref format="default" target="RFC3264" sectionFormat="of" derivedContent="RFC3264"/> associated with the attribute
	    are defined in <xref target="sec-oa" format="default" sectionFormat="of" derivedContent="Section 4"/>.
      </t>
    </section>
    <section anchor="sec-oa" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-sdp-offer-answer-procedures">SDP Offer/Answer Procedures</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-general">General</name>
        <t indent="0" pn="section-4.1-1">
                This section defines the SDP offer/answer procedures <xref format="default" target="RFC3264" sectionFormat="of" derivedContent="RFC3264"/> for
		indicating exclusive support of RTP/RTCP multiplexing and
		negotiating usage of it.
        </t>
        <t indent="0" pn="section-4.1-2">
                The procedures in this section apply to individual RTP-based
                SDP media descriptions ("m=" lines).
        </t>
      </section>
      <section anchor="sec-of-ini-off" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-generating-the-initial-sdp-">Generating the Initial SDP Offer</name>
        <t indent="0" pn="section-4.2-1">
                When sending the initial offer, if the offerer wants to indicate
                exclusive RTP/RTCP multiplexing for RTP-based media, it <bcp14>MUST</bcp14> associate
                an SDP 'rtcp-mux-only' attribute with the associated SDP media description
                ("m=" line).
        </t>
        <t indent="0" pn="section-4.2-2">
                In addition, if the offerer associates an SDP 'rtcp-mux-only' attribute with
                an SDP media description ("m=" line), the offerer <bcp14>MUST</bcp14> also associate
		an SDP 'rtcp-mux' attribute with the same SDP media
		description ("m=" line), following
                the procedures in <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/>.
        </t>
        <t indent="0" pn="section-4.2-3">
                If the offerer associates an SDP 'rtcp' attribute <xref target="RFC3605" format="default" sectionFormat="of" derivedContent="RFC3605"/>
                with an SDP media description ("m=" line), and if the offerer also associates an
                SDP 'rtcp-mux-only' attribute with the same SDP media description ("m=" line), the address and port
                values of the SDP 'rtcp' attribute <bcp14>MUST</bcp14> match the corresponding values for RTP.
        </t>
        <t indent="0" pn="section-4.2-4">
                NOTE: This specification does not mandate the usage of the SDP 'rtcp' attribute for RTP/RTCP multiplexing.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-generating-the-answer">Generating the Answer</name>
        <t indent="0" pn="section-4.3-1">
                When an answerer receives an offer that contains an SDP
  'rtcp-mux-only' attribute associated with
                an RTP-based SDP media description ("m=" line), then if the
  answerer accepts the usage of RTP/RTCP multiplexing, it <bcp14>MUST</bcp14>
  associate an SDP 'rtcp-mux' attribute with
                the corresponding SDP media description ("m=") in the
  associated answer, following the procedures in
                <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/>. If
		the answerer does not accept the usage of RTP/RTCP
		multiplexing, it <bcp14>MUST</bcp14> either reject the SDP media
		description ("m=")
                by setting the port value to zero in the associated answer, or reject the whole offer,
                following the procedures in <xref target="RFC3264" format="default" sectionFormat="of" derivedContent="RFC3264"/>.
        </t>
        <t indent="0" pn="section-4.3-2">
                The answerer <bcp14>MUST NOT</bcp14> associate an SDP 'rtcp-mux-only' attribute with an
                SDP media description ("m=" line) in the answer.
        </t>
      </section>
      <section anchor="sec-of-off-ans" numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-offerer-processing-of-the-s">Offerer Processing of the SDP Answer</name>
        <t indent="0" pn="section-4.4-1">
                If an offerer associated an SDP 'rtcp-mux-only' attribute with
                an RTP-based SDP media description ("m=" line) in an offer,
                and if the corresponding SDP media description ("m=" line) in
                the associated answer contains an SDP 'rtcp-mux' attribute,
                the offerer <bcp14>MUST</bcp14> apply the RTP/RTCP
                multiplexing procedures <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/> to the associated RTP-based media. If the
                corresponding SDP media description ("m=" line) in the
                associated answer does not contain an SDP 'rtcp-mux'
                attribute, the offerer <bcp14>MUST</bcp14> either take
                appropriate actions in order to disable the associated
                RTP-based media -- e.g., send a new offer with a zero port
                value associated with the SDP media description ("m=" line) --
                or send a new offer without associating an SDP 'rtcp-mux-only'
                attribute with the SDP media description ("m=" line).
        </t>
        <t indent="0" pn="section-4.4-2">
                NOTE: This document does not mandate specific actions on how to terminate the RTP media.
                The offerer might, for example, terminate the RTP media by
		sending a new offer in which the port value of the SDP
                media description is set to zero.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.5">
        <name slugifiedName="name-modifying-the-session">Modifying the Session</name>
        <t indent="0" pn="section-4.5-1">
                When an offerer sends a subsequent offer, if the offerer and
                answerer have previously negotiated usage of exclusive
                RTP/RTCP multiplexing for the media associated with an
                RTP-based SDP media description ("m=" line), the offerer
                <bcp14>SHOULD</bcp14> associate an SDP 'rtcp-mux-only' with
                the corresponding SDP media description ("m=" line).
        </t>
        <t indent="0" pn="section-4.5-2">
                In addition, if the offerer associates an SDP 'rtcp-mux-only'
                attribute with an SDP media description ("m=" line), the
                offerer <bcp14>MUST</bcp14> also associate an SDP 'rtcp-mux'
                attribute with the same SDP media description ("m=" line),
                following the procedures in <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/>.
        </t>
        <t indent="0" pn="section-4.5-3">
                If the offerer does not associate the attributes with the
		corresponding SDP media description ("m=" line), it is an
		indication that the offerer no longer wants to use RTP/RTCP
		multiplexing and instead <bcp14>MUST</bcp14> fall back to usage of separate
		ports for RTP and RTCP once the offer has been accepted
                by the answerer.
        </t>
        <t indent="0" pn="section-4.5-4">
                When an offerer sends a subsequent offer, if the offerer and
                answerer have not previously negotiated usage of RTP/RTCP
                multiplexing for the media associated with an RTP-based SDP
                media description ("m=" line), the offerer <bcp14>MAY</bcp14>
                indicate exclusive support of RTP/RTCP multiplexing, following
                the procedures in <xref target="sec-of-ini-off" format="default" sectionFormat="of" derivedContent="Section 4.2"/>.  The offerer <bcp14>MUST</bcp14> process
                the associated answer following the procedures in <xref target="sec-of-off-ans" format="default" sectionFormat="of" derivedContent="Section 4.4"/>.
        </t>
        <t indent="0" pn="section-4.5-5">
                It is <bcp14>RECOMMENDED</bcp14> to not switch between usage of RTP/RTCP
		multiplexing and usage of separate ports for RTP and RTCP in a
		subsequent offer, unless there is a use case that mandates it.
        </t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-update-to-rfc-5761">Update to RFC 5761</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-general-2">General</name>
        <t indent="0" pn="section-5.1-1">
            This section updates Sections <xref target="RFC5761" section="5.1.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5761#section-5.1.1" derivedContent="RFC5761"/> and <xref target="RFC5761" section="5.1.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5761#section-5.1.3" derivedContent="RFC5761"/> of <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/> by clarifying that an offerer can use a
            mechanism to indicate that it is not able to send and receive RTCP
            on separate ports, and that the offerer shall terminate the
            affected streams if the answerer does not indicate support of
            RTP/RTCP multiplexing. It also clarifies that, when the offerer is
            not able to send and receive RTCP on separate ports, the offerer
            will not provide an SDP 'candidate' attribute for RTCP, nor will
            the offerer provide a fallback port for RTCP (using the SDP 'rtcp'
            attribute).
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-update-to-4th-paragraph-of-">Update to 4th Paragraph of Section 5.1.1</name>
        <t indent="0" pn="section-5.2-1">
                NOTE: <xref target="RFC8035" format="default" sectionFormat="of" derivedContent="RFC8035"/> also updates
                <xref target="RFC5761" sectionFormat="of" section="5.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5761#section-5.1.1" derivedContent="RFC5761"/>. While the paragraph updated in this
                document is not updated by <xref target="RFC8035" format="default" sectionFormat="of" derivedContent="RFC8035"/>, the location of the paragraph within
                Section 5.1.1 is moved.
        </t>
        <t indent="0" pn="section-5.2-2">OLD TEXT:</t>
        <blockquote pn="section-5.2-3">
    If the answer does not contain an "a=rtcp-mux" attribute, the offerer
   <bcp14>MUST NOT</bcp14> multiplex RTP and RTCP packets on a single port.  Instead,
   it should send and receive RTCP on a port allocated according to the
   usual port-selection rules (either the port pair, or a signalled port
   if the "a=rtcp:" attribute [10] is also included).  This will occur
   when talking to a peer that does not understand the "a=rtcp-mux"
   attribute.</blockquote>
        <t indent="0" pn="section-5.2-4">NEW TEXT:</t>
        <blockquote pn="section-5.2-5">If the answer does not contain an "a=rtcp-mux" attribute, the offerer
   <bcp14>MUST NOT</bcp14> multiplex RTP and RTCP packets on a single port.  Instead,
   it should send and receive RTCP on a port allocated according to the
   usual port-selection rules (either the port pair, or a signaled port
   if the "a=rtcp:" attribute [10] is also included).  This will occur
   when talking to a peer that does not understand the "a=rtcp-mux"
   attribute.  However, if the offerer indicated in the offer that it is
   not able to send and receive RTCP on a separate port, the offerer
   <bcp14>MUST</bcp14> disable the media streams associated with the attribute.  The
   mechanism for indicating that the offerer is not able to send and
   receive RTCP on a separate port is outside the scope of this
   specification.</blockquote>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-update-to-2nd-paragraph-of-">Update to 2nd Paragraph of Section 5.1.3</name>
        <t indent="0" pn="section-5.3-1">OLD TEXT:</t>
        <blockquote pn="section-5.3-2">If it is desired to use both ICE and multiplexed RTP and RTCP, the
   initial offer <bcp14>MUST</bcp14> contain an "a=rtcp-mux" attribute to indicate that
   RTP and RTCP multiplexing is desired and <bcp14>MUST</bcp14> contain "a=candidate:"
   lines for both RTP and RTCP along with an "a=rtcp:" line indicating a
   fallback port for RTCP in the case that the answerer does not support
   RTP and RTCP multiplexing.  This <bcp14>MUST</bcp14> be done for each media where
   RTP and RTCP multiplexing is desired.</blockquote>
        <t indent="0" pn="section-5.3-3">NEW TEXT:</t>
        <blockquote pn="section-5.3-4">If it is desired to use both ICE and multiplexed RTP and RTCP, the
   initial offer <bcp14>MUST</bcp14> contain an "a=rtcp-mux" attribute to indicate that
   RTP and RTCP multiplexing is desired and <bcp14>MUST</bcp14> contain "a=candidate:"
   lines for both RTP and RTCP along with an "a=rtcp:" line indicating a
   fallback port for RTCP in the case that the answerer does not support
   RTP and RTCP multiplexing.  This <bcp14>MUST</bcp14> be done for each media where
   RTP and RTCP multiplexing is desired.  However, if the offerer
   indicates in the offer that it is not able to send and receive RTCP
   on a separate port, the offerer <bcp14>MUST NOT</bcp14> include "a=candidate:"
   lines for RTCP and <bcp14>MUST NOT</bcp14> provide a fallback port for
   RTCP using the "a=rtcp:" line.</blockquote>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-ice-considerations">ICE Considerations</name>
      <t indent="0" pn="section-6-1">
            As defined in <xref target="RFC8445" format="default" sectionFormat="of" derivedContent="RFC8445"/>, if an entity is aware that the
            remote peer supports, and is willing to use, RTP/RTCP multiplexing,
            the entity will only provide RTP candidates (component ID 1).
            However, only providing RTP candidates does not, as such, imply
            exclusive support of RTP/RTCP multiplexing. RTCP candidates also
            would not be provided in cases where RTCP is not supported
            at all. Therefore, additional information is needed in order
            to indicate support of exclusive RTP/RTCP multiplexing. This
            document defines such a mechanism using the SDP 'rtcp-mux-only'
            attribute.
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-7-1">
            This document does not introduce new security considerations
            beyond those specified in <xref target="RFC3605" format="default" sectionFormat="of" derivedContent="RFC3605"/> and <xref target="RFC5761" format="default" sectionFormat="of" derivedContent="RFC5761"/>.
</t>
    </section>
    <section anchor="section.iana" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">

            This document updates the "Session Description Protocol Parameters" registry
            as specified in <xref target="RFC4566" sectionFormat="of" section="8.2.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4566#section-8.2.4" derivedContent="RFC4566"/>.
            Specifically, it adds the SDP 'rtcp-mux-only' attribute to the table for SDP
            media-level attributes.
      </t>
      <ul empty="true" bare="false" indent="3" spacing="normal" pn="section-8-2">
        <li pn="section-8-2.1">
          <dl indent="3" newline="false" spacing="normal" pn="section-8-2.1.1">
            <dt pn="section-8-2.1.1.1">Attribute name:</dt>
            <dd pn="section-8-2.1.1.2">rtcp-mux-only</dd>
            <dt pn="section-8-2.1.1.3">Type of attribute:</dt>
            <dd pn="section-8-2.1.1.4">media-level</dd>
            <dt pn="section-8-2.1.1.5">Subject to charset:</dt>
            <dd pn="section-8-2.1.1.6">no</dd>
            <dt pn="section-8-2.1.1.7">Purpose:</dt>
            <dd pn="section-8-2.1.1.8">Indicate exclusive support of RTP/RTCP multiplexing</dd>
            <dt pn="section-8-2.1.1.9">Appropriate Values:</dt>
            <dd pn="section-8-2.1.1.10">N/A</dd>
            <dt pn="section-8-2.1.1.11">Contact name:</dt>
            <dd pn="section-8-2.1.1.12">
              <t indent="0" pn="section-8-2.1.1.12.1"><contact fullname="Christer Holmberg"/> (christer.holmberg@ericsson.com)</t>
            </dd>
            <dt pn="section-8-2.1.1.13">Mux Category:</dt>
            <dd pn="section-8-2.1.1.14">IDENTICAL</dd>
          </dl>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3264" quoteTitle="true" derivedAnchor="RFC3264">
          <front>
            <title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
            <author initials="J." surname="Rosenberg" fullname="J. Rosenberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2002" month="June"/>
            <abstract>
              <t indent="0">This document defines a mechanism by which two entities can make use of the Session Description Protocol (SDP) to arrive at a common view of a multimedia session between them.  In the model, one participant offers the other a description of the desired session from their perspective, and the other participant answers with the desired session from their perspective.  This offer/answer model is most useful in unicast sessions where information from both participants is needed for the complete view of the session.  The offer/answer model is used by protocols like the Session Initiation Protocol (SIP).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3264"/>
          <seriesInfo name="DOI" value="10.17487/RFC3264"/>
        </reference>
        <reference anchor="RFC4566" target="https://www.rfc-editor.org/info/rfc4566" quoteTitle="true" derivedAnchor="RFC4566">
          <front>
            <title>SDP: Session Description Protocol</title>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Jacobson" fullname="V. Jacobson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Perkins" fullname="C. Perkins">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="July"/>
            <abstract>
              <t indent="0">This memo defines the Session Description Protocol (SDP).  SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4566"/>
          <seriesInfo name="DOI" value="10.17487/RFC4566"/>
        </reference>
        <reference anchor="RFC5761" target="https://www.rfc-editor.org/info/rfc5761" quoteTitle="true" derivedAnchor="RFC5761">
          <front>
            <title>Multiplexing RTP Data and Control Packets on a Single Port</title>
            <author initials="C." surname="Perkins" fullname="C. Perkins">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Westerlund" fullname="M. Westerlund">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="April"/>
            <abstract>
              <t indent="0">This memo discusses issues that arise when multiplexing RTP data packets and RTP Control Protocol (RTCP) packets on a single UDP port. It updates RFC 3550 and RFC 3551 to describe when such multiplexing is and is not appropriate, and it explains how the Session Description Protocol (SDP) can be used to signal multiplexed sessions.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5761"/>
          <seriesInfo name="DOI" value="10.17487/RFC5761"/>
        </reference>
        <reference anchor="RFC8035" target="https://www.rfc-editor.org/info/rfc8035" quoteTitle="true" derivedAnchor="RFC8035">
          <front>
            <title>Session Description Protocol (SDP) Offer/Answer Clarifications for RTP/RTCP Multiplexing</title>
            <author initials="C." surname="Holmberg" fullname="C. Holmberg">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="November"/>
            <abstract>
              <t indent="0">This document updates RFC 5761 by clarifying the SDP offer/answer negotiation of RTP and RTP Control Protocol (RTCP) multiplexing.  It makes it clear that an answerer can only include an "a=rtcp-mux" attribute in a Session Description Protocol (SDP) answer if the associated SDP offer contained the attribute.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8035"/>
          <seriesInfo name="DOI" value="10.17487/RFC8035"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8445" target="https://www.rfc-editor.org/info/rfc8445" quoteTitle="true" derivedAnchor="RFC8445">
          <front>
            <title>Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal</title>
            <author initials="A." surname="Keranen" fullname="A. Keranen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Holmberg" fullname="C. Holmberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Rosenberg" fullname="J. Rosenberg">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="July"/>
            <abstract>
              <t indent="0">This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based communication.  This protocol is called Interactive Connectivity Establishment (ICE).  ICE makes use of the Session Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using Relay NAT (TURN).</t>
              <t indent="0">This document obsoletes RFC 5245.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8445"/>
          <seriesInfo name="DOI" value="10.17487/RFC8445"/>
        </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>
        <reference anchor="RFC8859" target="https://www.rfc-editor.org/info/rfc8859" quoteTitle="true" derivedAnchor="RFC8859">
          <front>
            <title>A Framework for Session Description Protocol (SDP) Attributes When Multiplexing</title>
            <author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="January" year="2021"/>
          </front>
          <seriesInfo name="RFC" value="8859"/>
          <seriesInfo name="DOI" value="10.17487/RFC8859"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC3605" target="https://www.rfc-editor.org/info/rfc3605" quoteTitle="true" derivedAnchor="RFC3605">
          <front>
            <title>Real Time Control Protocol (RTCP) attribute in Session Description Protocol (SDP)</title>
            <author initials="C." surname="Huitema" fullname="C. Huitema">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2003" month="October"/>
            <abstract>
              <t indent="0">The Session Description Protocol (SDP) is used to describe the parameters of media streams used in multimedia sessions.  When a session requires multiple ports, SDP assumes that these ports have consecutive numbers.  However, when the session crosses a network address translation device that also uses port mapping, the ordering of ports can be destroyed by the translation.  To handle this, we propose an extension attribute to SDP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3605"/>
          <seriesInfo name="DOI" value="10.17487/RFC3605"/>
        </reference>
        <reference anchor="RFC5576" target="https://www.rfc-editor.org/info/rfc5576" quoteTitle="true" derivedAnchor="RFC5576">
          <front>
            <title>Source-Specific Media Attributes in the Session Description Protocol (SDP)</title>
            <author initials="J." surname="Lennox" fullname="J. Lennox">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Ott" fullname="J. Ott">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Schierl" fullname="T. Schierl">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="June"/>
            <abstract>
              <t indent="0">The Session Description Protocol (SDP) provides mechanisms to describe attributes of multimedia sessions and of individual media streams (e.g., Real-time Transport Protocol (RTP) sessions) within a multimedia session, but does not provide any mechanism to describe individual media sources within a media stream.  This document defines a mechanism to describe RTP media sources, which are identified by their synchronization source (SSRC) identifiers, in SDP, to associate attributes with these sources, and to express relationships among sources.  It also defines several source-level attributes that can be used to describe properties of media sources.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5576"/>
          <seriesInfo name="DOI" value="10.17487/RFC5576"/>
        </reference>
        <reference anchor="WebRTC" target="https://www.w3.org/TR/webrtc/" quoteTitle="true" derivedAnchor="WebRTC">
          <front>
            <title>WebRTC 1.0: Real-time Communication Between Browsers</title>
            <author initials="C" surname="Jennings" fullname="Cullen Jennings">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H" surname="Boström" fullname="Henrik Boström">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J-I" surname="Bruaroey" fullname="Jan-Ivar Bruaroey">
              <organization showOnFrontPage="true"/>
            </author>
          </front>
          <refcontent>W3C Proposed Recommendation</refcontent>
        </reference>
      </references>
    </references>
    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">
            Thanks to <contact fullname="Roman Shpount"/>, <contact fullname="Paul Kyzivat"/>, <contact fullname="Ari Keränen"/>,
            <contact fullname="Bo Burman"/>, <contact fullname="Tomas Frankkila"/>, and <contact fullname="Martin Thomson"/> for their comments and input on the
            document. Thanks to <contact fullname="Francis Dupont"/> for the
            GENART review.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author fullname="Christer Holmberg" initials="C." surname="Holmberg">
        <organization abbrev="Ericsson" showOnFrontPage="true">Ericsson</organization>
        <address>
          <postal>
            <street>Hirsalantie 11</street>
            <city>Jorvas</city>
            <code>02420</code>
            <country>Finland</country>
          </postal>
          <phone/>
          <email>christer.holmberg@ericsson.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
