<?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="trust200811" category="std" docName="draft-holmberg-mmusic-sdp-mmt-negotiation-00.txt" obsoletes="" extends="" submissionType="IETF" xml:lang="en">
<front>
    <title abbrev="Multiplexed media types">
		Multiplexed Media Types (MMT) Using Session Description Protocol (SDP) Port Numbers
	</title>
    <author initials="C.H." surname="Holmberg" fullname="Christer Holmberg">
		<organization>Ericsson</organization>
		<address>
			<postal>
				<street>Hirsalantie 11</street>
				<code>02420</code>
				<city>Jorvas</city>
				<country>Finland</country>
			</postal>
        <email>christer.holmberg@ericsson.com</email>
		</address>
    </author>

	<author fullname="Harald Tveit Alvestrand" surname="Alvestrand" initials="H.T.">
		<organization>Google</organization>
		<address>
			<postal>
				<street>Kungsbron 2</street>
				<city>Stockholm</city>          
				<code>11122</code>
				<country>Sweden</country>
			</postal>
        <email>harald@alvestrand.no</email>
		</address>
    </author>
	
	<author initials='J.L' surname='Lennox' fullname='Jonathan Lennox'>
        <organization abbrev='Vidyo'>Vidyo, Inc.</organization>
        <address>
            <postal>
                <street>433 Hackensack Avenue</street>
                <street>Seventh Floor</street>
                <city>Hackensack</city> <region>NJ</region>
                <code>07601</code>
                <country>US</country>
            </postal>
            <email>jonathan@vidyo.com</email>
        </address>
    </author>

    <date year="2012" />
    <area>Transport</area>
    <workgroup>MMUSIC Working Group</workgroup>
    <keyword>RTP</keyword>
    <keyword>SDP</keyword>
	<keyword>MMT</keyword>
	<keyword>anymedia</keyword>
	<keyword>mmtype</keyword>
    <keyword>Multiplexing</keyword>
    <keyword>RTCWEB</keyword>
	<keyword>CLUE</keyword>
	<keyword>RTCWEB</keyword>
	<keyword>MMUSIC</keyword>
	<keyword>AVT</keyword>
    <keyword>WEB</keyword>
    <keyword>Browser</keyword>

    <abstract>
		<t>
			This specification defines a new SDP Grouping Framework SDP grouping framework extension, 
			"MMT", and a new SDP media type, "anymedia". Together they can be used with the Session 
			Description Protocol (SDP) Offer/Answer mechanism to negotiate the usage of multiplexed media types, 
			which refers to the usage of a single 5-tuple for different media types.
		</t>
		<t>
			This specification also defined a new SDP attribute, "mmtype", which can be used 
			within a "anymedia" SDP Media Description to map PT (Payload Type) values to a specific 
			media type.
		</t>
    </abstract>
</front>

<middle>
    <section title="Introduction" toc="default">
		<t>
			In the IETF RTCWEB WG, a need to use a single 5-tuple for sending and receiving media 
			associated with multiple SDP Media Descriptions <xref format="default" pageno="false" 
			target="RFC4566"/> has been identified. This would e.g. allow the usage of a single 
			set of Interactive Connectivity Establishment (ICE) <xref format="default" pageno="false" 
			target="RFC5245"/> candidates for multiple media descriptions. Normally different media 
			types (audio, video etc) will be described using different SDP Media Descriptions.			
		</t>		
		<t>
			As defined in RFC 4566 <xref format="default" pageno="false" target="RFC4566"/>, the 
			semantics of using the same port number for multiple SDP Media Descriptions is undefined. 
			Therefore, in order to be able to use the same port value for multiple media types, it must 
			be possible to describe multiple media types within a single SDP Media Description.
		</t>
		<t>
			This specification defines a new SDP Grouping Framework SDP grouping framework <xref 
			format="default" pageno="false" target="RFC5888"/> extension, "MMT", and a new
			SDP media type, "anymedia". Together they can be used with the Session Description Protocol 
			(SDP) Offer/Answer mechanism <xref format="default" pageno="false" target="RFC3264"/> to 
			negotiate the usage of multiplexed media types, which refers to the usage of a single 5-tuple for 
			different media types.
		</t>
		<t>
			This specification also defined a new SDP attribute, "mmtype", which can be used 
			within a "anymedia" SDP Media Description to map PT (Payload Type) values to a specific 
			media type.
		</t>
		<t>
			When an endpoint generates an SDP Offer or SDP Answer, which includeds one or more "MMT" 
			groups, each group will contain one "anymedia" SDP Media Description and one or more SDP
			Media Descriptions for specific media types (audio, video, etc).
		</t>
		<t>
			When media is transported using the Real-Time Protocol (RTP) <xref format="default" 
			pageno="false" target="RFC3550"/>, each SDP Media Description is assumed to form a separate
			RTP Session <xref format="default" pageno="false" target="RFC3550"/>. The same applies to
			media associated with a "anymedia" SDP Media Description, ie all media types associated with
			a "anymedia" SDP Media Description is by default assumed to form a single RTP Session.
		</t>
		<t>
			The mechanism is backward compatible. Entities that do not support (or, for a given session,
			are not willing to use) the "MMT" grouping extension and the "anymedia" media type, are 
			expected to generate an SDP Answer, which does not contain a "MMT" group, and where the 
			"anymedia" SDP Media Description is rejected.
		</t>	  
    </section>
	
	<section title="Terminology" toc="default">
		<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 RFC 2119  <xref target="RFC2119" pageno="false" 
			format="default"/>.
		</t>
		<t>
			5-tuple: A collection of the following values: source address, source port, 
			destination address, destination port and protocol.
		</t>
		<t>
			Multiplexed media types: Two or more RTP streams, possibly of different media types, 
			using a single 5-tuple. The RTCP streams associated with the RTP streams also use a 
			single 5-tuple, which might be the same, but can also be different, as the one used 
			by the RTP streams.
		</t>
	</section>

    <section title="Conventions" toc="default">
		<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 BCP 14, RFC 2119 <xref
			format="default" pageno="false" target="RFC2119" />.
		</t>
    </section>

    <section title="Applicability Statement" toc="default">
		<t>
			The mechanism in this specification only applies to the Session Description Protocol (SDP)
			<xref format="default" pageno="false" target="RFC4566"/>, when used together with the 
			SDP Offer/Answer mechanism <xref format="default" pageno="false" target="RFC3264"/>.
		</t>		
    </section>

	<section title="SDP Grouping Framework MMT Extension Semantics" toc="default">
		<section title="General" toc="default">
			<t>
				This section defines a new SDP Grouping Framework extension, "MMT".
			</t>
			<t>
				The "MMT" extension can be indicated using a "group" SDP session-level
				attribute. Each SDP Media Description ("m=" line) that is grouped together, 
				using a "mid" SDP media-level attribute, is part of a specific "MMT" 
				group.
			</t>
			<t>
				A "MMT" group is not usable standalone. It MUST be used together with
				a "anymedia" SDP Media Description.
			</t>
		</section>
		<section title="Usage" toc="default">
			<section title="General" toc="default">
				<t>
					A "MMT" group MUST contain a "anymedia" SDP Media Description, and at 
					least one SDP Media Description for a specific SDP Media Type (audio, video, etc).
				</t>
				<t>
					An SDP Offerer <xref format="default" pageno="false" target="RFC3264"/> uses the "MMT" 
					group to offer at least one SDP Media Description for specific SDP Media Types, and a 
					"anymedia" SDP Media Description, which can contain multiple SDP Media Types sharing a 
					single SDP Media Description. From a "MMT" group the SDP Answerer 
					<xref format="default" pageno="false" target="RFC3264"/> will accept either 
					the SDP Media Descriptions for the specific SDP Media Types, or the "anymedia" SDP Media 
					Description.
				</t>
				<t>
					It is RECOMMENDED that the capabilities of the "anymedia" SDP Media Description 
					match the capabilities (codecs, RTCP multiplexing etc) of the SDP Media 
					Descriptions for the specific SDP Media Types, in order to provide the same
					capabilities no matter whether SDP Media Descriptions for specific SDP Media
					Types, or the "anymedia" SDP Media Description, is used to establish the session.
				</t>
				<t>
					NOTE: An SDP Message Body can contain multiple "MMT" groups.				
				</t>
			</section>			
			<section title="SDP Offer/Answer Usage" toc="default">
				<section title="SDP Offererer Procedures" toc="default">
					<t>
						When an SDP Offerer generates an SDP Offer, which contains one or more "MMT" groups, for 
						each "MMT" group the SDP Offerer MUST:
					</t>
					<t>
						1) Include a "anymedia" SDP Media Description; and
					</t>
					<t>
						2) Include at least one SDP Media Description for a specific media type (audio, video, etc).
					</t>
				</section>
				<section title="SDP Answerer Procedures" toc="default">								
					<t>
						When an SDP Answerer generates an SDP Answer, for each "MMT" group in the 
						associated SDP Offer it MUST either:
					</t>
					<t>
						1) Accept the "anymedia" SDP Media Description, and reject all other SDP Media 
						Descriptions associated with the "MMT" group; or
					</t>
					<t>
						2) Reject the "anymedia" SDP Media Description, and accept some or all of the 
						other SDP Media Descriptions associated with the MMT group.
					</t>
					<t>
						NOTE: As described in <xref format="default" pageno="false" 
						target="RFC3264"/>, an SDP Media Description can be rejected by 
						setting the port value of the associated m- line to zero in the SDP Answer.
					</t>
					<t>
						NOTE: As described in <xref format="default" pageno="false" 
						target="RFC3264"/> the SDP Answer must contain the same number 
						of SDP Media Descriptions as the associated SDP Offer.
					</t>	
				</section>
			</section>
		</section>
    </section>

	
	<section title="anymedia SDP Media Type" toc="default">
		<section title="General" toc="default">
			<t>
				This section describes a new SDP media type <xref format="default" pageno="false" target="RFC4566"/>, 
				"anymedia", for SDP Media Descriptions <xref format="default" pageno="false" target="RFC4566"/>. 
				"anymedia" does not refer to a specific media type, but allows multiple media types (audio, video etc) to be
				associated with a single SDP Media Description. All media associated with a "anymedia" SDP Media
				Description will share the same IP address+port, protocol (e.g. RTP/AVP) and other information (e.g. 
				ICE candidates) associated with the SDP Media Description. It allows, if both endpoints support the mechanism,
				multiple media typex to be multiplexed on a single 5-tuple. PT (Payload Type) values will be listed in a 
				normal fashion in the format list of the SDP Media Description. The SDP rtpmap attribute <xref format="default" 
				pageno="false" target="RFC4566"/> will be used in a normal fashion to map each PT to a codec, and the SDP 
				mmtype attribute will be used to map each PT to a specific media type (e.g. audio, video, etc).
			</t>		
			<t>
				Within a "anymedia" SDP Media Description, each PT value SHOULD be described using an "rtpmap" SDP 
				Attribute <xref format="default" pageno="false" target="RFC4566"/>, even if the PT value is static. 
				In addition, as it might not always be possible to retreive the media type from the "rtpmap" SDP 
				Attribute value, each PT value MUST be mapped to a specific media type, using the "mmtype" SDP Attribute.
			</t>
		</section>
		<section title="SDP Extensions" toc="default">
			<t>
				OPEN ISSUE: Which, if any, SDP Extensions shall we require support of?
			</t>
		</section>
		<section title="SDP Attributes" toc="default">
			<t>
				In a normal fashion, any media level SDP Attribute (e.g. the directionality attributes) associated 
				with the "anymedia" SDP Media Description applies to all media associated with the SDP Media Description.
			</t>
			<t>
				NOTE: Additional extensions are needed in order to specify SDP Attribute values for individual media
				types, or individual media sources, associated with the "anymedia" SDP Media Description.
			</t>
		</section>
		<section title="Bandwidth" toc="default">
			<t>
				The SDP bandwidth parameter, b=, is used in a normal fashion, as described in 
				<xref format="default" pageno="false" target="RFC4566"/>
			</t>
			<t>
				NOTE: Additional extensions are needed in order to specify SDP Bandwidth values for individual media
				types, and for a specific media direction.
			</t>
		</section>
		<section title="ICE Usage" toc="default">
			<t>
				ICE <xref format="default" pageno="false" target="RFC5245"/>, if supported, will be used in a 
				normal fashion, and the ICE Candidate information will apply to all media types associated with 
				the "anymedia" SDP Media Description.
			</t>
		</section>
		<section title="RTP Sessions" toc="default">
			<t>
				By default, all media associated with a "anymedia" SDP Media Description is considered to be 
				part of a single RTP Session <xref format="default" pageno="false" target="RFC3550"/>.
			</t>
		</section>
	</section>

	<section title="mmtype SDP attribute" toc="default">
		<section title="General" toc="default">
			<t>
				This section defines a new SDP media level attribute <xref format="default" pageno="false" 
				target="RFC4566"/>, "mmtype" (Multiplexed Media Type). The attribute is used within "anymedia" SDP 
				Media Descriptions to indicate the media type associated with a specific PT value.
			</t>
		</section>
		<section title="Syntax" toc="default">
			<t>
				a=mmtype: format media
			</t>
			<t>
				format and media as defined in <xref format="default" pageno="false" target="RFC4566"/>.
			</t>		
		</section>
		<section title="Usage" toc="default">
			<section title="General" toc="default">
				<t>
					The attribute is used within "anymedia" SDP Media Descriptions to indicate the 
					media type associated with a specific PT value. This specification does not define 
					the usage of the attribute within other types of SDP Media Descriptions.
				</t>
				<t>
					For each instance of the "mmtype" attribute, the associated PT value MUST also be 
					listed in the format list of the associated SDP m- line. Within a given SDP Media 
					Description, there MUST only be one 'mmtype' attribute associated with a given PT 
					value. An entity MUST either reject or discard an SDP Media Description that contains 
					'mmtype' attributes with PT values not listed in the associated m- line. An entity 
					MUST either reject or discard an SDP Media Description that contains multiple 'mmtype' 
					attributes for the same PT value.
				</t>
			</section>
			<section title="SDP Offer/Answer Usage" toc="default">
				<t>
					There are no SDP Offer/Answer specific procedures defined for the "mmtype" SDP attribute. 						
				</t>
			</section>				
		</section>						
	</section>
	
	

    <section anchor="sec-security" title="Security Considerations" toc="default">
		<t>
			TBA
		</t>
    </section>

	
    <section anchor="sec-example" title="Example" toc="default">
		<t>
			The example below shows an SDP Offer, where multiplexed media types is offered. The example also 
			shows two SDP Answer alternatives: one where multiplexed media types is accepted, and one where
			multiplexed media types is rejected (or, not even supported) by the SDP Answerer.
		</t>
		<figure>
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve"><![CDATA[
SDP Offer (multiplexed media types offered)

    v=0
    o=alice 2890844526 2890844526 IN IP4 host.atlanta.com
    s=
    c=IN IP4 host.atlanta.com
    t=0 0
    a=group:MMT foo bar zoe
    m=audio 10000 RTP/AVP 0 8 97
    a=mid:foo
    b=AS:200
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:97 iLBC/8000
    m=video 20000 RTP/AVP 31 32
    a=mid:bar
    b=AS:1000
    a=rtpmap:31 H261/90000
    a=rtpmap:32 MPV/90000
    m=anymedia 30000 RTP/AVP 0 8 97 31 32
    a=mid:zoe 
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:97 iLBC/8000
    a=rtpmap:31 H261/90000
    a=rtpmap:32 MPV/90000
    a=mmtype: 0 audio
    a=mmtype: 8 audio
    a=mmtype: 97 audio
    a=mmtype: 31 video
    a=mmtype: 32 video
		 
SDP Answer (multiplexed media types accepted)

    v=0
    o=bob 2808844564 2808844564 IN IP4 host.biloxi.com
    s=
    c=IN IP4 host.biloxi.com
    t=0 0
    a=group:MMT foo bar
    m=audio 0 RTP/AVP 0
    a=mid:foo
    a=rtpmap:0 PCMU/8000
    m=video 0 RTP/AVP 32
    a=mid:bar    
    a=rtpmap:32 MPV/90000
    m=anymedia 60000 RTP/AVP 0 32
    a=mid:zoe 
    a=rtpmap:0 PCMU/8000
    a=rtpmap:32 MPV/90000
    a=mmtype: 0 audio
    a=mmtype: 32 video

		 
SDP Answer (multiplexed media types not accepted)

    v=0
    o=bob 2808844564 2808844564 IN IP4 host.biloxi.com
    s=
    c=IN IP4 host.biloxi.com
    t=0 0
    a=group:MMT foo bar
    m=audio 40000 RTP/AVP 0
    a=mid:foo
    a=rtpmap:0 PCMU/8000
    m=video 50000 RTP/AVP 32
    a=mid:bar    
    a=rtpmap:32 MPV/90000
    m=anymedia 0 RTP/AVP 0 32
    a=mid:zoe 
		 

SDP Offer with ICE (multiplexed media types offered)

    v=0
    o=alice 2890844526 2890844526 IN IP4 host.atlanta.com
    s=
    c=IN IP4 host.atlanta.com
    t=0 0
    a=group:MMT foo bar zoe
    m=audio 10000 RTP/AVP 0 8 97
    a=mid:foo
    b=AS:200
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:97 iLBC/8000
    a=candidate:1 1 UDP 1694498815 host.atlanta.com 10000 typ host
    m=video 20000 RTP/AVP 31 32
    a=mid:bar
    b=AS:1000
    a=rtpmap:31 H261/90000
    a=rtpmap:32 MPV/90000
    a=candidate:1 1 UDP 1694498815 host.atlanta.com 20000 typ host
    m=anymedia 30000 RTP/AVP 0 8 97 31 32
    a=mid:zoe 
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:97 iLBC/8000
    a=rtpmap:31 H261/90000
    a=rtpmap:32 MPV/9000
    a=mmtype: 0 audio
    a=mmtype: 8 audio
    a=mmtype: 97 audio
    a=mmtype: 31 video
    a=mmtype: 32 video
    a=candidate:1 1 UDP 1694498815 host.atlanta.com 30000 typ host
		 
]]></artwork>
        </figure>
    </section>

	
	
    <section title="IANA Considerations" toc="default">
		<t>
			This document requests IANA to register the new SDP Grouping semantic
			extension called MMT.
		</t>
    </section>
		
    <section anchor="sec-acks" title="Acknowledgements" toc="default">
		<t>
			The usage of the SDP grouping mechanism is based on a similar alternative
			proposed by Harald Alvestrand. The SDP examples are also modified versions 
			from the ones in the Alvestrand proposal.
		</t>
		<t>
			The usage of a dedicated SDP media type to described multiplexed media types
			types is based on input from Jonathan Lennox.
		</t>
    </section>

    <section title="Change Log">
		<t>[RFC EDITOR NOTE: Please remove this section when publishing]</t>
		<t>Changes from draft-holmberg-mmusic-sdp-mmt-negotiation-xx
			<list style="symbols">
				<t>Add change.</t>
			</list>
		</t>
    </section>
</middle>

<back>
    <references title="Normative References">
		<?rfc include="reference.RFC.2119"?>		
		<?rfc include="reference.RFC.3264"?>
		<?rfc include="reference.RFC.4566"?>
		<?rfc include="reference.RFC.5888"?>
    </references>

    <references title="Informative References">
		<?rfc include="reference.RFC.3550"?>
		<?rfc include="reference.RFC.5245"?>
    </references>
  </back>
</rfc>
