<?xml version="1.0" encoding="iso-8859-1"?>
<!-- comment -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[]>
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc sortrefs="no" ?>
<rfc ipr="trust200902" category="info" docName="draft-holmberg-mmusic-mux-exclusive-02" updates="5761" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="Exclusive RTP/RTCP Mux">
		Indicating Exclusive Support of RTP/RTCP Multiplexing using SDP
	</title>
    <author fullname="Christer Holmberg" initials="C.H." surname="Holmberg">
      <organization abbrev="Ericsson">Ericsson</organization>
      <address>
        <postal>
          <street>Hirsalantie 11</street>
          <city>Jorvas</city>
          <region></region>
          <code>02420</code>
          <country>Finland</country>
        </postal>
        <phone></phone>
        <email>christer.holmberg@ericsson.com</email>
      </address>
    </author> 
    	
    <date year="2015" />
    <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>
        <t>
            This document defines how an endpoint can indicate exclusive support of
            RTP/RTCP multiplexing using the Session Description Protocol (SDP).
        </t>
        <t>
            The document updates RFC 5761, by defining how the SDP 'rtcp' attribute
            is used, together with the SDP 'rtcp-mux' attribute, to indicate exclusive
            support of RTP/RTCP multiplexing.
        </t>
    </abstract>
</front>

<middle>
    <section title="Introduction">
		<t>
            <xref target="RFC5761" pageno="false" format="default"/> defines how to
            multiplex RTP and RTCP on a single port, referred to as RTP/RTCP multiplexing.
            <xref target="RFC5761" pageno="false" format="default"/> also defines an
            Session Description Protocol (SDP) <xref target="RFC4566" pageno="false" 
            format="default"/> attribute, 'rtcp-mux' that can be used by entities
            to indicate support of RTP/RTCP multiplexing.
        </t>
        <t>
            As defined in <xref target="RFC5761" pageno="false" format="default"/>, if
            the peer endpoint does not support RTP/RTCP multiplexing, there must be a
            fallback to usage of separate ports for RTP and RTCP. However, the RTCWEB
            WG have defined that support of the fallback is optional.
            Therefore, there needs to be a mechanism for an endpoint to be able to indicate 
            exclusive support of RTP/RTCP multiplexing, i.e. to be able to indicate that 
            the endpoint only supports RTP/RTCP multiplexing and is not able to fallback
            to usage of separate ports for receiving RTP and RTCP.
        </t>
        <t>
            This document describes a mechanism, how the SDP 'rtcp-mux' attribute
            <xref target="RFC5761" pageno="false" format="default"/> and the SDP 'rtcp' 
            attribute <xref target="RFC3605" pageno="false" format="default"/> can
            be used to indicate exclusive support of RTP/RTCP multiplexing. The document
            updates sections 5.1.1 and 5.1.3 of <xref target="RFC5761" pageno="false" 
            format="default"/> in order to enable usage of the mechanism.
        </t>
        <t>
            The document also describes the Interactive Connectivity Establishment (ICE) 
            <xref target="I-D.ietf-ice-rfc5245bis"/> considerations when indicating exclusive
            support of RTP/RTCP multiplexing.        
        </t>
    </section>
		
    <section title="Conventions">
		<t>
			The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
			"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
			document are to be interpreted as described in <xref target="RFC2119"></xref>.
		</t>
    </section>
    <section title="Mechanism">
			<t>
                As as described in <xref target="RFC5761" pageno="false" 
                format="default"/>, when an offerer sends an offer, and wants
                to indicate support of RTP/RTCP multiplexing, it must associate
                an SDP 'rtcp-mux' attribute with each RTP-based SDP media
                description ("m=" line) for which support of multiplexing is indicated.
                In addition, the offerer may assign an SDP 'rtcp' attribute, in 
                order to provide a fallback port for RTCP in case the answerer
                does not support (or is not willing to use) RTP/RTCP multiplexing.
            </t>
            <t>
                When an offerer sends an offer, and wants to indicate exclusive
                support of RTP/RTCP multiplexing it MUST, in addition to the
                SDP 'rtcp-attribute, associate an SDP 'rtcp' attribute with each
                SDP media description for which exclusive support of RTP/RTCP 
                multiplexing is indicated. The offerer MUST assign a port value identical
                to the port value of the associated SDP media description to the
                'rtcp' attribute. The offerer MAY assign the optional IP address
                part to the 'rtcp' attribute. If assigned, the IP address part value MUST
                be identical to the value of the associated connection address ("c=" line).
            </t>
	</section>
    <section title="Update to RFC 5761">
        <section title="General">
			<t>
                This section updates sections 5.1.1 and 5.1.3 of 
                <xref target="RFC5761" pageno="false" format="default"/>,
                by adding a new paragraph in section 5.1.1 after the 
                second paragraph, and by modifying the second paragraph
                in section 5.1.3.
            </t>
        </section>
        <section title="RFC 5761 Section 5.1.1 Update">
            <figure>
                <artwork align="left" alt="" height="" name="" type="" width="" xml:space="preserve"><![CDATA[

NEW PARAGRAPH:
      
   If the offerer is not able to use different ports
   for RTP and RTCP, the SDP offer MUST also include the "a=rtcp"
   attribute [10] with an attribute value identical to the associated
   port value for RTP. For example:

       v=0
       o=csp 1153134164 1153134164 IN IP6 2001:DB8::211:24ff:fea3:7a2e
       s=-
       c=IN IP6 2001:DB8::211:24ff:fea3:7a2e
       t=1153134164 1153137764
       m=audio 49170 RTP/AVP 97
       a=rtpmap:97 iLBC/8000
       a=rtcp-mux
       a=rtcp: 49170

                ]]></artwork>
            </figure>
        </section>
        <section title="RFC 5761 Section 5.1.3 Update">
            <figure>
                <artwork align="left" alt="" height="" name="" type="" width="" xml:space="preserve"><![CDATA[

OLD TEXT:

   If it is desired to use both ICE and multiplexed RTP and RTCP, the
   initial offer MUST contain an "a=rtcp-mux" attribute to indicate that
   RTP and RTCP multiplexing is desired and MUST 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 MUST be done for each media where
   RTP and RTCP multiplexing is desired.


NEW TEXT:

   If it is desired to use both ICE and multiplexed RTP and RTCP, the
   initial offer MUST contain an "a=rtcp-mux" attribute to indicate that
   RTP and RTCP multiplexing is desired. If the offerer supports
   a fallback port for RTCP in the case that the answerer does not
   support RTP and RTCP multiplexing, the initial offer MUST contain
   "a=candidate:" lines for both RTP and RTCP along with an "a=rtcp:" 
   line indicating a fallback port for RTCP. If the offerer is not
   able to use separate ports for RTP and RTCP the offer MUST NOT
   contain "a=candidate:" lines for RTCP, and the "a=rtcp:" line
   MUST indicate the RTP port. If the "a=rtcp:" line indicates the
   RTP port, and if the "a=rtcp:" line also contains the optional
   IP address part, the IP address part value MUST be identical to
   the value of the associated "c=" line. The This MUST be done for 
   each media where RTP and RTCP multiplexing is desired.
 
                ]]></artwork>
            </figure>
        </section>
        <section title="Issues And TBDs">
            <t>
                ISSUE #1: We may want to specify an explicit procedure for the
                answerer too, saying that it must select mux if it receives
                rtcp-mux and rtcp with the RTP port value.
            </t>
            <t>
                ISSUE #2: We may want to specify something about the case when
                the answerer only supports mux, and receives an offer without mux.
            </t>
        </section>
	</section>

	<section title="ICE Considerations">
		<t>
            As defined in <xref target="I-D.ietf-ice-rfc5245bis"/>, 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
            would not be provided also 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 mechanism using the SDP 'rtcp-mux' and 'rtcp'
            attributes.
        </t>
	</section>
	
	<section title="Security Considerations">
		<t>
            This document does not introduce new security considerations
            in additions to those specified in <xref target="RFC3605" 
            pageno="false" format="default"/> and <xref target="RFC5761" 
            pageno="false" format="default"/>.
		</t>
	</section>

	<section anchor="section.iana" title="IANA Considerations">
        <t>
            This document makes no requests from IANA.
        </t>
	</section>
                   
	<section title="Acknowledgments">
		<t>
            Thanks to Roman Shpount, Paul Kyzivat, Ari Keränen, Bo Burman and 
            Tomas Frankkila for their comments and input on the draft.
		</t>
	</section>
		
	<section title="Change Log">	
		<t>[RFC EDITOR NOTE: Please remove this section when publishing]</t>
        <t>
			Changes from draft-holmberg-mmusic-mux-exclusive-01
			<list style="symbols">
				<t>
                    Clarified that the SDP rtcp attribute may contain the
                    optional IP address part.
                </t>
			</list>
		</t>			
        <t>
			Changes from draft-holmberg-mmusic-mux-exclusive-00
			<list style="symbols">
				<t>
                    Additional updates to Section 5.1.1 of RFC 5761.
                </t>
                <t>
                    ICE considerations added.
                </t>
			</list>
		</t>			
	</section>
</middle>

<back>
    <references title="Normative References">
		<?rfc include="reference.RFC.2119"?>
		<?rfc include="reference.RFC.3264"?>
        <?rfc include="reference.RFC.3605"?>
        <?rfc include="reference.RFC.4566"?>
        <?rfc include="reference.RFC.5761"?>
        <?rfc include="reference.I-D.draft-ietf-ice-rfc5245bis-00"?>
    </references>
</back>
</rfc>