rfc9143.original.xml | rfc9143.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docNa | ||||
me="draft-ietf-mmusic-rfc8843bis-09" indexInclude="true" ipr="pre5378Trust200902 | <!DOCTYPE rfc [ | |||
" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" to | <!ENTITY nbsp " "> | |||
cDepth="3" tocInclude="true" obsoletes="8843" updates="3264, 5888, 7941" xml:lan | <!ENTITY zwsp "​"> | |||
g="en"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" docName="draft-ietf- | ||||
mmusic-rfc8843bis-05" number="9143" ipr="pre5378Trust200902" sortRefs="true" sub | ||||
missionType="IETF" category="std" consensus="true" symRefs="true" tocDepth="3" t | ||||
ocInclude="true" obsoletes="8843" updates="3264, 5888, 7941" xml:lang="en" scrip | ||||
ts="Common,Latin" indexInclude="true"> | ||||
<front> | <front> | |||
<title abbrev="Bundled Media">Negotiating Media Multiplexing Using the Sessi on Description Protocol (SDP)</title> | <title abbrev="Bundled Media">Negotiating Media Multiplexing Using the Sessi on Description Protocol (SDP)</title> | |||
<seriesInfo name="RFC" value="8843" stream="IETF"/> | <seriesInfo name="RFC" value="9143"/> | |||
<author initials="C." surname="Holmberg" fullname="Christer Holmberg"> | <author initials="C." surname="Holmberg" fullname="Christer Holmberg"> | |||
<organization showOnFrontPage="true">Ericsson</organization> | <organization>Ericsson</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Hirsalantie 11</street> | <street>Hirsalantie 11</street> | |||
<code>02420</code> | <code>02420</code> | |||
<city>Jorvas</city> | <city>Jorvas</city> | |||
<country>Finland</country> | <country>Finland</country> | |||
</postal> | </postal> | |||
<email>christer.holmberg@ericsson.com</email> | <email>christer.holmberg@ericsson.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Harald Tveit Alvestrand" initials="H." surname="Alvestrand "> | <author fullname="Harald Tveit Alvestrand" initials="H." surname="Alvestrand "> | |||
<organization showOnFrontPage="true">Google</organization> | <organization>Google</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Kungsbron 2</street> | <street>Kungsbron 2</street> | |||
<city>Stockholm</city> | <city>Stockholm</city> | |||
<code>11122</code> | <code>11122</code> | |||
<country>Sweden</country> | <country>Sweden</country> | |||
</postal> | </postal> | |||
<email>harald@alvestrand.no</email> | <email>harald@alvestrand.no</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Cullen Jennings" initials="C." surname="Jennings"> | <author fullname="Cullen Jennings" initials="C." surname="Jennings"> | |||
<organization showOnFrontPage="true">Cisco</organization> | <organization>Cisco</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>400 3rd Avenue SW, Suite 350</street> | <street>400 3rd Avenue SW</street> | |||
<extaddr>Suite 350</extaddr> | ||||
<city>Calgary</city> | <city>Calgary</city> | |||
<region>AB</region> | <region>AB</region> | |||
<code>T2P 4H2</code> | <code>T2P 4H2</code> | |||
<country>Canada</country> | <country>Canada</country> | |||
</postal> | </postal> | |||
<email>fluffy@iii.ca</email> | <email>fluffy@iii.ca</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date day="05" month="12" year="2021"/> | <date month="February" year="2022"/> | |||
<area>Transport</area> | <area>Transport</area> | |||
<workgroup>MMUSIC Working Group</workgroup> | <workgroup>MMUSIC Working Group</workgroup> | |||
<keyword>RTP</keyword> | <keyword>RTP</keyword> | |||
<keyword>SDP</keyword> | <keyword>SDP</keyword> | |||
<keyword>Bundle</keyword> | <keyword>Bundle</keyword> | |||
<keyword>Multiplexing</keyword> | <keyword>Multiplexing</keyword> | |||
<keyword>RTCWEB</keyword> | <keyword>RTCWEB</keyword> | |||
<keyword>CLUE</keyword> | <keyword>CLUE</keyword> | |||
<keyword>RTCWEB</keyword> | <keyword>RTCWEB</keyword> | |||
<keyword>MMUSIC</keyword> | <keyword>MMUSIC</keyword> | |||
<keyword>AVT</keyword> | <keyword>AVT</keyword> | |||
<keyword>WEB</keyword> | <keyword>WEB</keyword> | |||
<keyword>Browser</keyword> | <keyword>Browser</keyword> | |||
<abstract pn="section-abstract"> | <abstract> | |||
<t indent="0" pn="section-abstract-1"> | <t> | |||
This specification defines a new Session Description | This specification defines a new Session Description | |||
Protocol (SDP) Grouping Framework extension called 'BUNDLE'. | Protocol (SDP) Grouping Framework extension called 'BUNDLE'. | |||
The extension can be used with the SDP offer/answer mechanism | The extension can be used with the SDP offer/answer mechanism | |||
to negotiate the usage of a single transport (5-tuple) for | to negotiate the usage of a single transport (5-tuple) for | |||
sending and receiving media described by multiple SDP media descriptions | sending and receiving media described by multiple SDP media descriptions | |||
("m=" sections). Such transport is referred to as a BUNDLE transport, | ("m=" sections). Such transport is referred to as a "BUNDLE transport", | |||
and the media is referred to as bundled media. The "m=" sections that | and the media is referred to as "bundled media". The "m=" sections that | |||
use the BUNDLE transport form a BUNDLE group. | use the BUNDLE transport form a BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-abstract-2"> | <t> | |||
This specification defines a new RTP Control Protocol (RTCP) Source | This specification defines a new RTP Control Protocol (RTCP) Source | |||
Description (SDES) item and a new RTP header extension.</t> | Description (SDES) item and a new RTP header extension.</t> | |||
<t indent="0" pn="section-abstract-3"> | <t> | |||
This specification updates RFCs 3264, 5888, and 7941. | This specification updates RFCs 3264, 5888, and 7941. | |||
</t> | </t> | |||
<t indent="0" pn="section-abstract-4"> | <t> | |||
This specification obsoletes RFC 8843. | This specification obsoletes RFC 8843. | |||
</t> | </t> | |||
</abstract> | </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/rfc8843" brackets="non | ||||
e"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
ude" pn="section-boilerplate.2"> | ||||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<t indent="0" pn="section-boilerplate.2-1"> | ||||
Copyright (c) 2021 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.2-2"> | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
"/>) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with | ||||
respect to this document. Code Components extracted from this | ||||
document must include Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.2-3"> | ||||
This document may contain material from IETF Documents or IETF | ||||
Contributions published or made publicly available before November | ||||
10, 2008. The person(s) controlling the copyright in some of this | ||||
material may not have granted the IETF Trust the right to allow | ||||
modifications of such material outside the IETF Standards Process. | ||||
Without obtaining an adequate license from the person(s) | ||||
controlling the copyright in such materials, this document may not | ||||
be modified outside the IETF Standards Process, and derivative | ||||
works of it may not be created outside the IETF Standards Process, | ||||
except to format it for publication as an RFC or to translate it | ||||
into languages other than English. | ||||
</t> | ||||
</section> | ||||
</boilerplate> | ||||
<toc> | ||||
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
n="section-toc.1"> | ||||
<name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
c.1-1"> | ||||
<li pn="section-toc.1-1.1"> | ||||
<t indent="0" pn="section-toc.1-1.1.1"><xref derivedContent="1" form | ||||
at="counter" sectionFormat="of" target="section-1"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-introduction">Introduction</xref>< | ||||
/t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.1.2"> | ||||
<li pn="section-toc.1-1.1.2.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1">< | ||||
xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1. | ||||
1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-ba | ||||
ckground">Background</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.1.2.2"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1">< | ||||
xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1. | ||||
2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-bu | ||||
ndle-mechanism">BUNDLE Mechanism</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.1.2.3"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.3.1">< | ||||
xref derivedContent="1.3" format="counter" sectionFormat="of" target="section-1. | ||||
3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-pr | ||||
otocol-extensions">Protocol Extensions</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.1.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.1.2.4.1"><xref derivedContent= | ||||
"1.4" format="counter" sectionFormat="of" target="section-1.4"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="sec-changes-8843">Changes f | ||||
rom RFC 8843</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.2"> | ||||
<t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" form | ||||
at="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" f | ||||
ormat="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" form | ||||
at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-conventions">Conventions</xref></t | ||||
> | ||||
</li> | ||||
<li pn="section-toc.1-1.4"> | ||||
<t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-applicability-statement">Applicabi | ||||
lity Statement</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-sdp-grouping-framework-bund">SDP G | ||||
rouping Framework BUNDLE Extension</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-sdp-bundle-only-attribute">SDP 'bu | ||||
ndle-only' Attribute</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-sdp-offer-answer-procedures">SDP O | ||||
ffer/Answer Procedures</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.7.2"> | ||||
<li pn="section-toc.1-1.7.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent= | ||||
"7.1" format="counter" sectionFormat="of" target="section-7.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-generic-sdp-considerat | ||||
ions">Generic SDP Considerations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.7.2.1.2"> | ||||
<li pn="section-toc.1-1.7.2.1.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.1.2.1.1"><xref derived | ||||
Content="7.1.1" format="counter" sectionFormat="of" target="section-7.1.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-connection | ||||
-data-c">Connection Data ("c=")</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.1.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.1.2.2.1"><xref derived | ||||
Content="7.1.2" format="counter" sectionFormat="of" target="section-7.1.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-bandwidth- | ||||
b">Bandwidth ("b=")</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.1.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.1.2.3.1"><xref derived | ||||
Content="7.1.3" format="counter" sectionFormat="of" target="section-7.1.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-attributes | ||||
-a">Attributes ("a=")</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent= | ||||
"7.2" format="counter" sectionFormat="of" target="section-7.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-generating-the-initial | ||||
-bundle-">Generating the Initial BUNDLE offer</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.7.2.2.2"> | ||||
<li pn="section-toc.1-1.7.2.2.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.2.2.1.1"><xref derived | ||||
Content="7.2.1" format="counter" sectionFormat="of" target="section-7.2.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-suggesting | ||||
-the-offerer-tagg">Suggesting the Offerer-Tagged 'm=' Section</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.2.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.2.2.2.1"><xref derived | ||||
Content="7.2.2" format="counter" sectionFormat="of" target="section-7.2.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-example-in | ||||
itial-bundle-offer">Example: Initial BUNDLE offer</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent= | ||||
"7.3" format="counter" sectionFormat="of" target="section-7.3"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-generating-the-sdp-ans | ||||
wer">Generating the SDP Answer</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.7.2.3.2"> | ||||
<li pn="section-toc.1-1.7.2.3.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.3.2.1.1"><xref derived | ||||
Content="7.3.1" format="counter" sectionFormat="of" target="section-7.3.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-answerer-s | ||||
election-of-tagge">Answerer Selection of Tagged 'm=' Sections</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.3.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.3.2.2.1"><xref derived | ||||
Content="7.3.2" format="counter" sectionFormat="of" target="section-7.3.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-moving-a-m | ||||
edia-description-">Moving a Media Description Out of a BUNDLE Group</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.3.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.3.2.3.1"><xref derived | ||||
Content="7.3.3" format="counter" sectionFormat="of" target="section-7.3.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-rejecting- | ||||
a-media-descripti">Rejecting a Media Description in a BUNDLE Group</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.3.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.3.2.4.1"><xref derived | ||||
Content="7.3.4" format="counter" sectionFormat="of" target="section-7.3.4"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-example-sd | ||||
p-answer">Example: SDP Answer</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.3.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.3.2.5.1"><xref derived | ||||
Content="7.3.5" format="counter" sectionFormat="of" target="section-7.3.5"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="sec-sdp-oa-ans- | ||||
8843">RFC 8843 Considerations</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent= | ||||
"7.4" format="counter" sectionFormat="of" target="section-7.4"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-offerer-processing-of- | ||||
the-s">Offerer Processing of the SDP Answer</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.7.2.4.2"> | ||||
<li pn="section-toc.1-1.7.2.4.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.4.2.1.1"><xref derived | ||||
Content="7.4.1" format="counter" sectionFormat="of" target="section-7.4.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="sec-sdp-oa-off- | ||||
8843">RFC 8843 Considerations</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.5.1"><xref derivedContent= | ||||
"7.5" format="counter" sectionFormat="of" target="section-7.5"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-modifying-the-session" | ||||
>Modifying the Session</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.7.2.5.2"> | ||||
<li pn="section-toc.1-1.7.2.5.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.5.2.1.1"><xref derived | ||||
Content="7.5.1" format="counter" sectionFormat="of" target="section-7.5.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-adding-a-m | ||||
edia-description-">Adding a Media Description to a BUNDLE Group</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.5.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.5.2.2.1"><xref derived | ||||
Content="7.5.2" format="counter" sectionFormat="of" target="section-7.5.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-moving-a-m | ||||
edia-description-o">Moving a Media Description Out of a BUNDLE Group</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.5.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.5.2.3.1"><xref derived | ||||
Content="7.5.3" format="counter" sectionFormat="of" target="section-7.5.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-disabling- | ||||
a-media-descripti">Disabling a Media Description in a BUNDLE Group</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.6"> | ||||
<t indent="0" pn="section-toc.1-1.7.2.6.1"><xref derivedContent= | ||||
"7.6" format="counter" sectionFormat="of" target="section-7.6"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="sec-sdp-oa-sip">SIP Conside | ||||
rations</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.8"> | ||||
<t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-protocol-identification">Protocol | ||||
Identification</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.8.2"> | ||||
<li pn="section-toc.1-1.8.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent= | ||||
"8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-stun-dtls-and-srtp">ST | ||||
UN, DTLS, and SRTP</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.9"> | ||||
<t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-rtp-considerations">RTP Considerat | ||||
ions</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-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 derived | ||||
Content="" format="title" sectionFormat="of" target="name-single-rtp-session">Si | ||||
ngle RTP Session</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.9.2.1.2"> | ||||
<li pn="section-toc.1-1.9.2.1.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.9.2.1.2.1.1"><xref derived | ||||
Content="9.1.1" format="counter" sectionFormat="of" target="section-9.1.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-payload-ty | ||||
pe-pt-value-reuse">Payload Type (PT) Value Reuse</xref></t> | ||||
</li> | ||||
</ul> | ||||
</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 derived | ||||
Content="" format="title" sectionFormat="of" target="name-associating-rtp-rtcp-s | ||||
tream">Associating RTP/RTCP Streams with the Correct SDP Media Description</xref | ||||
></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.9.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.9.2.3.1"><xref derivedContent= | ||||
"9.3" format="counter" sectionFormat="of" target="section-9.3"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-rtp-rtcp-multiplexing" | ||||
>RTP/RTCP Multiplexing</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.9.2.3.2"> | ||||
<li pn="section-toc.1-1.9.2.3.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.9.2.3.2.1.1"><xref derived | ||||
Content="9.3.1" format="counter" sectionFormat="of" target="section-9.3.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-sdp-offer- | ||||
answer-procedures-2">SDP Offer/Answer Procedures</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.10"> | ||||
<t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | ||||
rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-ice-considerations">ICE Consider | ||||
ations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.11"> | ||||
<t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" fo | ||||
rmat="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-dtls-considerations">DTLS Consid | ||||
erations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12"> | ||||
<t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" fo | ||||
rmat="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-rtp-header-extensions-consi">RTP | ||||
Header Extensions Consideration</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13"> | ||||
<t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="13" fo | ||||
rmat="counter" sectionFormat="of" target="section-13"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-update-to-rfc-3264">Update to RF | ||||
C 3264</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.13.2"> | ||||
<li pn="section-toc.1-1.13.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.1.1"><xref derivedContent | ||||
="13.1" format="counter" sectionFormat="of" target="section-13.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-original-text-from- | ||||
rfc-3264">Original Text from RFC 3264, Section 5.1, 2nd Paragraph</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.2.1"><xref derivedContent | ||||
="13.2" format="counter" sectionFormat="of" target="section-13.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-new-text-replacing- | ||||
rfc-3264">New Text Replacing RFC 3264, Section 5.1, 2nd Paragraph</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.3.1"><xref derivedContent | ||||
="13.3" format="counter" sectionFormat="of" target="section-13.3"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-original-text-from- | ||||
rfc-3264-">Original Text from RFC 3264, Section 8.4, 6th Paragraph</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.4.1"><xref derivedContent | ||||
="13.4" format="counter" sectionFormat="of" target="section-13.4"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-new-text-replacing- | ||||
rfc-3264-">New Text Replacing RFC 3264, Section 8.4, 6th Paragraph</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.14"> | ||||
<t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="14" fo | ||||
rmat="counter" sectionFormat="of" target="section-14"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-update-to-rfc-5888">Update to RF | ||||
C 5888</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.14.2"> | ||||
<li pn="section-toc.1-1.14.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.14.2.1.1"><xref derivedContent | ||||
="14.1" format="counter" sectionFormat="of" target="section-14.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-original-text-from- | ||||
rfc-5888">Original Text from RFC 5888, Section 9.2, 3rd Paragraph</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.14.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.14.2.2.1"><xref derivedContent | ||||
="14.2" format="counter" sectionFormat="of" target="section-14.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-new-text-replacing- | ||||
rfc-5888">New Text Replacing RFC 5888, Section 9.2, 3rd Paragraph</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.15"> | ||||
<t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="15" fo | ||||
rmat="counter" sectionFormat="of" target="section-15"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-rtp-rtcp-extensions-for-ide">RTP | ||||
/RTCP Extensions for identification-tag Transport</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.15.2"> | ||||
<li pn="section-toc.1-1.15.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.15.2.1.1"><xref derivedContent | ||||
="15.1" format="counter" sectionFormat="of" target="section-15.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-rtcp-mid-sdes-item" | ||||
>RTCP MID SDES Item</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.15.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.15.2.2.1"><xref derivedContent | ||||
="15.2" format="counter" sectionFormat="of" target="section-15.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-rtp-sdes-header-ext | ||||
ension-f">RTP SDES Header Extension For MID</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.16"> | ||||
<t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="16" fo | ||||
rmat="counter" sectionFormat="of" target="section-16"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-iana-considerations">IANA Consid | ||||
erations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.16.2"> | ||||
<li pn="section-toc.1-1.16.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.16.2.1.1"><xref derivedContent | ||||
="16.1" format="counter" sectionFormat="of" target="section-16.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-new-sdes-item">New | ||||
SDES Item</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.16.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.16.2.2.1"><xref derivedContent | ||||
="16.2" format="counter" sectionFormat="of" target="section-16.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-new-rtp-sdes-header | ||||
-extensi">New RTP SDES Header Extension URI</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.16.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.16.2.3.1"><xref derivedContent | ||||
="16.3" format="counter" sectionFormat="of" target="section-16.3"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-new-sdp-attribute"> | ||||
New SDP Attribute</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.16.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.16.2.4.1"><xref derivedContent | ||||
="16.4" format="counter" sectionFormat="of" target="section-16.4"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-new-sdp-group-seman | ||||
tics">New SDP Group Semantics</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.17"> | ||||
<t indent="0" pn="section-toc.1-1.17.1"><xref derivedContent="17" fo | ||||
rmat="counter" sectionFormat="of" target="section-17"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-security-considerations">Securit | ||||
y Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.18"> | ||||
<t indent="0" pn="section-toc.1-1.18.1"><xref derivedContent="18" fo | ||||
rmat="counter" sectionFormat="of" target="section-18"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-examples">Examples</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.18.2"> | ||||
<li pn="section-toc.1-1.18.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.18.2.1.1"><xref derivedContent | ||||
="18.1" format="counter" sectionFormat="of" target="section-18.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-example-tagged-m-se | ||||
ction-se">Example: Tagged "m=" Section Selections</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.18.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.18.2.2.1"><xref derivedContent | ||||
="18.2" format="counter" sectionFormat="of" target="section-18.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-example-bundle-grou | ||||
p-reject">Example: BUNDLE Group Rejected</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.18.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.18.2.3.1"><xref derivedContent | ||||
="18.3" format="counter" sectionFormat="of" target="section-18.3"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-example-offerer-add | ||||
s-a-medi">Example: Offerer Adds a Media Description to a BUNDLE Group</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.18.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.18.2.4.1"><xref derivedContent | ||||
="18.4" format="counter" sectionFormat="of" target="section-18.4"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-example-offerer-mov | ||||
es-a-med">Example: Offerer Moves a Media Description Out of a BUNDLE Group</xref | ||||
></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.18.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.18.2.5.1"><xref derivedContent | ||||
="18.5" format="counter" sectionFormat="of" target="section-18.5"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-example-offerer-dis | ||||
ables-a-">Example: Offerer Disables a Media Description within a BUNDLE Group</x | ||||
ref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.19"> | ||||
<t indent="0" pn="section-toc.1-1.19.1"><xref derivedContent="19" fo | ||||
rmat="counter" sectionFormat="of" target="section-19"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-references">References</xref></t | ||||
> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.19.2"> | ||||
<li pn="section-toc.1-1.19.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.1"><xref derivedContent | ||||
="19.1" format="counter" sectionFormat="of" target="section-19.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
s">Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.19.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.2.1"><xref derivedContent | ||||
="19.2" format="counter" sectionFormat="of" target="section-19.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
ces">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.20"> | ||||
<t indent="0" pn="section-toc.1-1.20.1"><xref derivedContent="Append | ||||
ix A" format="default" sectionFormat="of" target="section-appendix.a"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-design-consider | ||||
ations">Design Considerations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.20.2"> | ||||
<li pn="section-toc.1-1.20.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.20.2.1.1"><xref derivedContent | ||||
="A.1" format="counter" sectionFormat="of" target="section-a.1"/>. <xref derive | ||||
dContent="" format="title" sectionFormat="of" target="name-ua-interoperability"> | ||||
UA Interoperability</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.20.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.20.2.2.1"><xref derivedContent | ||||
="A.2" format="counter" sectionFormat="of" target="section-a.2"/>. <xref derive | ||||
dContent="" format="title" sectionFormat="of" target="name-usage-of-port-number- | ||||
value-">Usage of Port Number Value Zero</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.20.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.20.2.3.1"><xref derivedContent | ||||
="A.3" format="counter" sectionFormat="of" target="section-a.3"/>. <xref derive | ||||
dContent="" format="title" sectionFormat="of" target="name-b2bua-and-proxy-inter | ||||
operab">B2BUA and Proxy Interoperability</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.20.2.3.2"> | ||||
<li pn="section-toc.1-1.20.2.3.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.20.2.3.2.1.1"><xref derive | ||||
dContent="A.3.1" format="counter" sectionFormat="of" target="section-a.3.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-traffic-p | ||||
olicing">Traffic Policing</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.20.2.3.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.20.2.3.2.2.1"><xref derive | ||||
dContent="A.3.2" format="counter" sectionFormat="of" target="section-a.3.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-bandwidth | ||||
-allocation">Bandwidth Allocation</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.20.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.20.2.4.1"><xref derivedContent | ||||
="A.4" format="counter" sectionFormat="of" target="section-a.4"/>. <xref derive | ||||
dContent="" format="title" sectionFormat="of" target="name-candidate-gathering"> | ||||
Candidate Gathering</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.20.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.20.2.5.1"><xref derivedContent | ||||
="" format="none" sectionFormat="of" target="section-a.5"/><xref derivedContent= | ||||
"" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgem | ||||
ents</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.21"> | ||||
<t indent="0" pn="section-toc.1-1.21.1"><xref derivedContent="" form | ||||
at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
resses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-1"> | <section> | |||
<name slugifiedName="name-introduction">Introduction</name> | <name>Introduction</name> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-1.1 | <section> | |||
"> | <name>Background</name> | |||
<name slugifiedName="name-background">Background</name> | <t> | |||
<t indent="0" pn="section-1.1-1"> | When the SDP offer/answer mechanism <xref target="RFC3264"/> | |||
When the SDP offer/answer mechanism <xref format="default" target="RFC32 | ||||
64" sectionFormat="of" derivedContent="RFC3264"/> | ||||
is used to negotiate the establishment of multimedia communication sessi ons, if separate | is used to negotiate the establishment of multimedia communication sessi ons, if separate | |||
transports (5-tuples) are negotiated for each individual media stream, e ach transport consumes | transports (5-tuples) are negotiated for each individual media stream, e ach transport consumes | |||
additional resources (especially when Interactive Connectivity Establish ment (ICE) | additional resources (especially when Interactive Connectivity Establish ment (ICE) | |||
<xref format="default" target="RFC8445" sectionFormat="of" derivedConten t="RFC8445"/> is used). | <xref target="RFC8445"/> is used). | |||
For this reason, it is attractive to use a single transport for multiple media streams. | For this reason, it is attractive to use a single transport for multiple media streams. | |||
</t> | </t> | |||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-1.2 | <section> | |||
"> | <name>BUNDLE Mechanism</name> | |||
<name slugifiedName="name-bundle-mechanism">BUNDLE Mechanism</name> | <t> | |||
<t indent="0" pn="section-1.2-1"> | ||||
This specification defines a way to use a single transport (BUNDLE trans port) | This specification defines a way to use a single transport (BUNDLE trans port) | |||
for sending and receiving media (bundled media) described by multiple SD P media descriptions | for sending and receiving media (bundled media) described by multiple SD P media descriptions | |||
("m=" sections). The address:port combination used by an endpoint for se nding and receiving | ("m=" sections). The address:port combination used by an endpoint for se nding and receiving | |||
bundled media is referred to as the BUNDLE address:port. The set of SDP | bundled media is referred to as the "BUNDLE address:port". The set of SD | |||
attributes that are | P attributes that are | |||
applied to each "m=" section within a BUNDLE group is referred to as BUN | applied to each "m=" section within a BUNDLE group is referred to as "BU | |||
DLE attributes. | NDLE attributes". | |||
The same BUNDLE transport is used for sending and receiving bundled medi a, which | The same BUNDLE transport is used for sending and receiving bundled medi a, which | |||
means that the symmetric Real-time Transport Protocol (RTP) mechanism <x ref format="default" target="RFC4961" sectionFormat="of" derivedContent="RFC4961 "/> is always used for RTP-based bundled media. | means that the symmetric Real-time Transport Protocol (RTP) mechanism <x ref target="RFC4961"/> is always used for RTP-based bundled media. | |||
</t> | </t> | |||
<t indent="0" pn="section-1.2-2"> | <t> | |||
This specification defines a new SDP Grouping Framework <xref format="de | This specification defines a new SDP Grouping Framework <xref target="RF | |||
fault" target="RFC5888" sectionFormat="of" derivedContent="RFC5888"/> extension | C5888"/> extension called 'BUNDLE'. The extension can be used with the Session D | |||
called 'BUNDLE'. The extension can be used with the Session Description | escription | |||
Protocol (SDP) offer/answer mechanism <xref format="default" target="RFC | Protocol (SDP) offer/answer mechanism <xref target="RFC3264"/> | |||
3264" sectionFormat="of" derivedContent="RFC3264"/> | ||||
to negotiate which "m=" sections will become part of a BUNDLE group. In addition, the offerer and | to negotiate which "m=" sections will become part of a BUNDLE group. In addition, the offerer and | |||
answerer <xref format="default" target="RFC3264" sectionFormat="of" deri vedContent="RFC3264"/> use the BUNDLE extension to negotiate | answerer <xref target="RFC3264"/> use the BUNDLE extension to negotiate | |||
the BUNDLE addresses:ports (offerer BUNDLE address:port and answerer BUN DLE address:port) and the | the BUNDLE addresses:ports (offerer BUNDLE address:port and answerer BUN DLE address:port) and the | |||
set of BUNDLE attributes (offerer BUNDLE attributes and answerer BUNDLE attributes) that will be applied to | set of BUNDLE attributes (offerer BUNDLE attributes and answerer BUNDLE attributes) that will be applied to | |||
each "m=" section within the BUNDLE group. | each "m=" section within the BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-1.2-3"> | <t> | |||
The use of a BUNDLE transport allows the usage of a single set of | The use of a BUNDLE transport allows the usage of a single set of | |||
ICE <xref format="default" target="RFC8445" sectionFormat="of" derivedCo ntent="RFC8445"/> candidates for the whole BUNDLE group. | ICE candidates <xref target="RFC8445"/> for the whole BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-1.2-4"> | <t> | |||
A given BUNDLE address:port <bcp14>MUST</bcp14> only be associated with a single BUNDLE group. If an SDP offer | A given BUNDLE address:port <bcp14>MUST</bcp14> only be associated with a single BUNDLE group. If an SDP offer | |||
or SDP answer (hereafter referred to as "offer" and "answer") contains m ultiple BUNDLE groups, the procedures in this specification apply to each | or SDP answer (hereafter referred to as "offer" and "answer") contains m ultiple BUNDLE groups, the procedures in this specification apply to each | |||
group independently. All RTP-based bundled media associated with a given BUNDLE group belong to a single | group independently. All RTP-based bundled media associated with a given BUNDLE group belong to a single | |||
RTP session <xref format="default" target="RFC3550" sectionFormat="of" d erivedContent="RFC3550"/>. | RTP session <xref target="RFC3550"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-1.2-5"> | <t> | |||
The BUNDLE extension is backward compatible. Endpoints that do not suppo rt the extension | The BUNDLE extension is backward compatible. Endpoints that do not suppo rt the extension | |||
are expected to generate offers and answers without an SDP 'group:BUNDLE ' attribute and | are expected to generate offers and answers without an SDP 'group:BUNDLE ' attribute and | |||
assign a unique address:port to each "m=" section within an offer and an swer, according | assign a unique address:port to each "m=" section within an offer and an swer, according | |||
to the procedures in | to the procedures in | |||
<xref format="default" target="RFC3264" sectionFormat="of" derivedContent ="RFC3264"/> and <xref format="default" target="RFC4566" sectionFormat="of" deri vedContent="RFC4566"/>. | <xref target="RFC3264"/> and <xref target="RFC4566"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-1.3 | <section> | |||
"> | <name>Protocol Extensions</name> | |||
<name slugifiedName="name-protocol-extensions">Protocol Extensions</name | <t> | |||
> | ||||
<t indent="0" pn="section-1.3-1"> | ||||
In addition to defining the new SDP Grouping Framework extension, this s pecification defines | In addition to defining the new SDP Grouping Framework extension, this s pecification defines | |||
the following protocol extensions and RFC updates. This specification: | the following protocol extensions and makes the following updates to RFC s. This specification: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1 | <ul> | |||
.3-2"> | <li> | |||
<li pn="section-1.3-2.1"> | ||||
defines a new SDP attribute, 'bundle-only', which can be used to | defines a new SDP attribute, 'bundle-only', which can be used to | |||
request that a specific "m=" section (and the associated media) be use d only if kept | request that a specific "m=" section (and the associated media) be use d only if kept | |||
within a BUNDLE group. | within a BUNDLE group. | |||
</li> | </li> | |||
<li pn="section-1.3-2.2"> | <li> | |||
updates RFC 3264 <xref format="default" target="RFC3264" sectionFormat | updates RFC 3264 <xref target="RFC3264"/> to also allow assigning a ze | |||
="of" derivedContent="RFC3264"/>, to also allow assigning a zero port value to a | ro port value to an "m=" section | |||
n "m=" section | ||||
in cases where the media described by the "m=" section is not disabled or rejected. | in cases where the media described by the "m=" section is not disabled or rejected. | |||
</li> | </li> | |||
<li pn="section-1.3-2.3"> | <li> | |||
defines a new RTCP <xref format="default" target="RFC3550" sectionForm | defines a new RTCP <xref target="RFC3550"/> SDES item, Media Identific | |||
at="of" derivedContent="RFC3550"/> SDES item, 'MID', and a new RTP SDES header | ation ('MID'), and a new RTP SDES header | |||
extension that can be used to associate RTP streams with "m=" sections . | extension that can be used to associate RTP streams with "m=" sections . | |||
</li> | </li> | |||
<li pn="section-1.3-2.4"> | <li> | |||
updates <xref format="default" target="RFC7941" sectionFormat="of" der | updates <xref target="RFC7941"/> by adding an exception, | |||
ivedContent="RFC7941"/> by adding an exception, | ||||
for the MID RTP header extension, to the requirement regarding protect ion | for the MID RTP header extension, to the requirement regarding protect ion | |||
of an SDES RTP header extension carrying an SDES item for the MID RTP | of an SDES RTP header extension carrying an SDES item for the MID RTP | |||
header extension. | header extension. | |||
</li> | </li> | |||
<li pn="section-1.3-2.5"> | <li> | |||
updates <xref format="default" target="RFC5888" sectionFormat="of" der | updates <xref target="RFC5888"/> by allowing an SDP 'group' | |||
ivedContent="RFC5888"/> by allowing an SDP 'group' | ||||
attribute to contain an identification-tag that identifies an "m=" sec tion with the port value set to zero. | attribute to contain an identification-tag that identifies an "m=" sec tion with the port value set to zero. | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="sec-changes-8843" numbered="true" removeInRFC="false" toc | <section anchor="sec-changes-8843"> | |||
="include" pn="section-1.4"> | <name>Changes from RFC 8843</name> | |||
<name slugifiedName="name-contradiction-regarding-bun">Changes from RFC | ||||
8843</name> | <t> | |||
<t indent="0" pn="section-1.4-1"> | When <xref target="RFC8843"/> and <xref target="RFC8829"/> | |||
When RFC 8843 and <xref format="default" target="RFC8829" sectionFormat="of" d | were published, an inconsistency between the specifications was identified. Th | |||
erivedContent="RFC8829"/> | e procedures regarding assigning | |||
were published an inconsistency between the specifications was identified. The | ||||
procedures regarding assigning | ||||
the port value to a bundled "m=" section in an answer (initial or subsequent) and a subsequent offer | the port value to a bundled "m=" section in an answer (initial or subsequent) and a subsequent offer | |||
were inconsistent. This specification removes the inconsistency by aligning th e port value assignment | were inconsistent. This specification removes the inconsistency by aligning th e port value assignment | |||
procedure with the procedure in RFC 8829. | procedure with the procedure in <xref target="RFC8829"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-1.4-2"> | <t> | |||
In addition, this document implements the following erratas: 6431, 6437 | In addition, this document implements changes from the following errata report | |||
s: <xref target="Err6431"/>, <xref target="Err6437"/>. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-term" toc="include" numbered="true" removeInRFC="false" | <section anchor="sec-term"> | |||
pn="section-2"> | <name>Terminology</name> | |||
<name slugifiedName="name-terminology">Terminology</name> | <dl> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="section-2-1" | <dt>"m=" section:</dt> | |||
> | <dd> SDP bodies contain one or more media descriptions, referred to | |||
<li pn="section-2-1.1"> | ||||
<dl newline="false" spacing="normal" indent="3" pn="section-2-1.1.1"> | ||||
<dt pn="section-2-1.1.1.1">"m=" section:</dt> | ||||
<dd pn="section-2-1.1.1.2"> SDP bodies contain one or more media des | ||||
criptions, referred to | ||||
as "m=" sections. Each "m=" section is represented by an SDP "m=" line and zero or more | as "m=" sections. Each "m=" section is represented by an SDP "m=" line and zero or more | |||
SDP attributes associated with the "m=" line. A local address:port combina tion is | SDP attributes associated with the "m=" line. A local address:port combina tion is | |||
assigned to each "m=" section.</dd> | assigned to each "m=" section.</dd> | |||
<dt pn="section-2-1.1.1.3">5-tuple:</dt> | <dt>5-tuple:</dt> | |||
<dd pn="section-2-1.1.1.4">A collection of the following values: sou | <dd>A collection of the following values: source address, source | |||
rce address, source | ||||
port, destination address, destination port, and transport-layer | port, destination address, destination port, and transport-layer | |||
protocol.</dd> | protocol.</dd> | |||
<dt pn="section-2-1.1.1.5">Unique address:port:</dt> | <dt>Unique address:port:</dt> | |||
<dd pn="section-2-1.1.1.6">An address:port combination that is assig | <dd>An address:port combination that is assigned to | |||
ned to | ||||
only one "m=" section in an offer or answer.</dd> | only one "m=" section in an offer or answer.</dd> | |||
<dt pn="section-2-1.1.1.7">Offerer BUNDLE-tag:</dt> | <dt>Offerer BUNDLE-tag:</dt> | |||
<dd pn="section-2-1.1.1.8">The first identification-tag in a given | <dd>The first identification-tag in a given | |||
SDP 'group:BUNDLE' attribute identification-tag list in an offer.</dd> | SDP 'group:BUNDLE' attribute identification-tag list in an offer.</dd> | |||
<dt pn="section-2-1.1.1.9">Answerer BUNDLE-tag:</dt> | <dt>Answerer BUNDLE-tag:</dt> | |||
<dd pn="section-2-1.1.1.10">The first identification-tag in a given | <dd>The first identification-tag in a given | |||
SDP 'group:BUNDLE' attribute identification-tag list in an answer.</dd> | SDP 'group:BUNDLE' attribute identification-tag list in an answer.</dd> | |||
<dt pn="section-2-1.1.1.11"> Suggested offerer-tagged "m=" section:< | <dt> Suggested offerer-tagged "m=" section:</dt> | |||
/dt> | <dd> The bundled "m=" section identified by the offerer BUNDLE-tag i | |||
<dd pn="section-2-1.1.1.12"> The bundled "m=" section identified by | n an initial BUNDLE offer, | |||
the offerer BUNDLE-tag in an initial BUNDLE offer, | ||||
before a BUNDLE group has been negotiated.</dd> | before a BUNDLE group has been negotiated.</dd> | |||
<dt pn="section-2-1.1.1.13">Offerer-tagged "m=" section:</dt> | <dt>Offerer-tagged "m=" section:</dt> | |||
<dd pn="section-2-1.1.1.14">The bundled "m=" section identified by t | <dd>The bundled "m=" section identified by the offerer BUNDLE-tag in | |||
he offerer BUNDLE-tag in a subsequent offer. | a subsequent offer. | |||
The "m=" section contains characteristics (offerer BUNDLE address:port and offerer BUNDLE attributes) that are applied to | The "m=" section contains characteristics (offerer BUNDLE address:port and offerer BUNDLE attributes) that are applied to | |||
each "m=" section within the BUNDLE group.</dd> | each "m=" section within the BUNDLE group.</dd> | |||
<dt pn="section-2-1.1.1.15">Answerer-tagged "m=" section:</dt> | <dt>Answerer-tagged "m=" section:</dt> | |||
<dd pn="section-2-1.1.1.16">The bundled "m=" section identified by t | <dd>The bundled "m=" section identified by the answerer BUNDLE-tag i | |||
he answerer BUNDLE-tag in an answer | n an answer | |||
(initial BUNDLE answer or subsequent). The "m=" section contains character istics (answerer BUNDLE address:port and answerer BUNDLE attributes) | (initial BUNDLE answer or subsequent). The "m=" section contains character istics (answerer BUNDLE address:port and answerer BUNDLE attributes) | |||
that are applied to each "m=" section within the BUNDLE group.</dd> | that are applied to each "m=" section within the BUNDLE group.</dd> | |||
<dt pn="section-2-1.1.1.17">BUNDLE address:port:</dt> | <dt>BUNDLE address:port:</dt> | |||
<dd pn="section-2-1.1.1.18">An address:port combination that an endp | <dd>An address:port combination that an endpoint uses for sending an | |||
oint uses for sending and receiving | d receiving | |||
bundled media.</dd> | bundled media.</dd> | |||
<dt pn="section-2-1.1.1.19">Offerer BUNDLE address:port:</dt> | <dt>Offerer BUNDLE address:port:</dt> | |||
<dd pn="section-2-1.1.1.20">The address:port combination used by the | <dd>The address:port combination used by the offerer | |||
offerer | ||||
for sending and receiving media.</dd> | for sending and receiving media.</dd> | |||
<dt pn="section-2-1.1.1.21">Answerer BUNDLE address:port:</dt> | <dt>Answerer BUNDLE address:port:</dt> | |||
<dd pn="section-2-1.1.1.22">The address:port combination used by the | <dd>The address:port combination used by the answerer | |||
answerer | ||||
for sending and receiving media.</dd> | for sending and receiving media.</dd> | |||
<dt pn="section-2-1.1.1.23">BUNDLE attributes:</dt> | <dt>BUNDLE attributes:</dt> | |||
<dd pn="section-2-1.1.1.24"> IDENTICAL and TRANSPORT multiplexing ca | <dd> IDENTICAL and TRANSPORT multiplexing category SDP | |||
tegory SDP | ||||
attributes. Once a BUNDLE group has been created, the attribute values app ly | attributes. Once a BUNDLE group has been created, the attribute values app ly | |||
to each bundled "m=" section within the BUNDLE group.</dd> | to each bundled "m=" section within the BUNDLE group.</dd> | |||
<dt pn="section-2-1.1.1.25">Offerer BUNDLE attributes:</dt> | <dt>Offerer BUNDLE attributes:</dt> | |||
<dd pn="section-2-1.1.1.26">IDENTICAL and TRANSPORT multiplexing cat | <dd>IDENTICAL and TRANSPORT multiplexing category SDP | |||
egory SDP | ||||
attributes included in the offerer-tagged "m=" section. </dd> | attributes included in the offerer-tagged "m=" section. </dd> | |||
<dt pn="section-2-1.1.1.27">Answerer BUNDLE attributes:</dt> | <dt>Answerer BUNDLE attributes:</dt> | |||
<dd pn="section-2-1.1.1.28">IDENTICAL and TRANSPORT multiplexing cat | <dd>IDENTICAL and TRANSPORT multiplexing category SDP | |||
egory SDP | ||||
attributes included in the answerer-tagged "m=" section.</dd> | attributes included in the answerer-tagged "m=" section.</dd> | |||
<dt pn="section-2-1.1.1.29">BUNDLE transport:</dt> | <dt>BUNDLE transport:</dt> | |||
<dd pn="section-2-1.1.1.30">The transport (5-tuple) used by all medi | <dd>The transport (5-tuple) used by all media described by the | |||
a described by the | ||||
"m=" sections within a BUNDLE group.</dd> | "m=" sections within a BUNDLE group.</dd> | |||
<dt pn="section-2-1.1.1.31">BUNDLE group:</dt> | <dt>BUNDLE group:</dt> | |||
<dd pn="section-2-1.1.1.32">A set of bundled "m=" sections, created | <dd>A set of bundled "m=" sections, created using an SDP offer/answe | |||
using an SDP offer/answer | r | |||
exchange, that uses a single BUNDLE transport, and a single set of BUNDLE | exchange, that uses a single BUNDLE transport and a single set of BUNDLE a | |||
attributes, | ttributes | |||
for sending and receiving all media (bundled media) described by the set o f "m=" sections. | for sending and receiving all media (bundled media) described by the set o f "m=" sections. | |||
The same BUNDLE transport is used for sending and receiving bundled media. </dd> | The same BUNDLE transport is used for sending and receiving bundled media. </dd> | |||
<dt pn="section-2-1.1.1.33">Bundled "m=" section:</dt> | <dt>Bundled "m=" section:</dt> | |||
<dd pn="section-2-1.1.1.34">An "m=" section, whose identification-ta | <dd>An "m=" section, whose identification-tag | |||
g | ||||
is placed in an SDP 'group:BUNDLE' attribute identification-tag list | is placed in an SDP 'group:BUNDLE' attribute identification-tag list | |||
in an offer or answer.</dd> | in an offer or answer.</dd> | |||
<dt pn="section-2-1.1.1.35">Bundle-only "m=" section:</dt> | <dt>Bundle-only "m=" section:</dt> | |||
<dd pn="section-2-1.1.1.36">A bundled "m=" section that contains an | <dd>A bundled "m=" section that contains an | |||
SDP 'bundle-only' attribute.</dd> | SDP 'bundle-only' attribute.</dd> | |||
<dt pn="section-2-1.1.1.37">Bundled media:</dt> | <dt>Bundled media:</dt> | |||
<dd pn="section-2-1.1.1.38">All media associated with a given BUNDLE | <dd>All media associated with a given BUNDLE group.</dd> | |||
group.</dd> | <dt>Initial BUNDLE offer:</dt> | |||
<dt pn="section-2-1.1.1.39">Initial BUNDLE offer:</dt> | <dd>The first offer, within an SDP session (e.g., a SIP dialog | |||
<dd pn="section-2-1.1.1.40">The first offer, within an SDP session ( | when SIP <xref target="RFC3261"/> is used to carry SDP), in which | |||
e.g., a SIP dialog | ||||
when SIP <xref format="default" target="RFC3261" sectionFormat="of" derive | ||||
dContent="RFC3261"/> is used to carry SDP), in which | ||||
the offerer indicates that it wants to negotiate a given BUNDLE group.</dd > | the offerer indicates that it wants to negotiate a given BUNDLE group.</dd > | |||
<dt pn="section-2-1.1.1.41">Initial BUNDLE answer:</dt> | <dt>Initial BUNDLE answer:</dt> | |||
<dd pn="section-2-1.1.1.42">The answer to an initial BUNDLE offer in | <dd>The answer to an initial BUNDLE offer in which the offerer indic | |||
which the offerer indicates that it wants to negotiate | ates that it wants to negotiate | |||
a BUNDLE group, and the answerer accepts the creation of the BUNDLE group. The BUNDLE group is | a BUNDLE group, and the answerer accepts the creation of the BUNDLE group. The BUNDLE group is | |||
created once the answerer sends the initial BUNDLE answer.</dd> | created once the answerer sends the initial BUNDLE answer.</dd> | |||
<dt pn="section-2-1.1.1.43">Subsequent offer:</dt> | <dt>Subsequent offer:</dt> | |||
<dd pn="section-2-1.1.1.44">An offer that contains a BUNDLE group th | <dd>An offer that contains a BUNDLE group that | |||
at | ||||
has been created as part of a previous offer/answer exchange.</dd> | has been created as part of a previous offer/answer exchange.</dd> | |||
<dt pn="section-2-1.1.1.45">Subsequent answer:</dt> | <dt>Subsequent answer:</dt> | |||
<dd pn="section-2-1.1.1.46">An answer to a subsequent offer.</dd> | <dd>An answer to a subsequent offer.</dd> | |||
<dt pn="section-2-1.1.1.47">Identification-tag:</dt> | <dt>Identification-tag:</dt> | |||
<dd pn="section-2-1.1.1.48">A unique token value that is used to ide | <dd>A unique token value that is used to identify an | |||
ntify an | "m=" section. The SDP 'mid' attribute <xref target="RFC5888"/> in an "m=" | |||
"m=" section. The SDP 'mid' attribute <xref format="default" target="RFC58 | section carries the unique identification-tag | |||
88" sectionFormat="of" derivedContent="RFC5888"/> in an "m=" section carries the | ||||
unique identification-tag | ||||
assigned to that "m=" section. The session-level SDP 'group' attribute | assigned to that "m=" section. The session-level SDP 'group' attribute | |||
<xref format="default" target="RFC5888" sectionFormat="of" derivedContent= "RFC5888"/> carries a list of | <xref target="RFC5888"/> carries a list of | |||
identification-tags, identifying the "m=" sections associated with that | identification-tags, identifying the "m=" sections associated with that | |||
particular 'group' attribute.</dd> | particular 'group' attribute.</dd> | |||
</dl> | </dl> | |||
</li> | ||||
</ul> | ||||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-3"> | <section> | |||
<name slugifiedName="name-conventions">Conventions</name> | <name>Conventions</name> | |||
<t indent="0" pn="section-3-1"> | <t> | |||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ", | |||
"<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
to be interpreted as described in BCP 14 <xref target="RFC2119" format="defa | be | |||
ult" sectionFormat="of" derivedContent="RFC2119"/> | interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | |||
<xref target="RFC8174" format="default" sectionFormat="of" derivedConten | target="RFC8174"/> when, and only when, they appear in all capitals, as | |||
t="RFC8174"/> when, and only when, they appear in all capitals, | shown here. | |||
as shown here. | </t> | |||
</t> | ||||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-4"> | <section> | |||
<name slugifiedName="name-applicability-statement">Applicability Statement | <name>Applicability Statement</name> | |||
</name> | <t> | |||
<t indent="0" pn="section-4-1"> | The mechanism in this specification only applies to SDP <xref target="RFC4 | |||
The mechanism in this specification only applies to SDP <xref format="defa | 566"/>, when used together with the SDP offer/answer | |||
ult" target="RFC4566" sectionFormat="of" derivedContent="RFC4566"/>, when used t | mechanism <xref target="RFC3264"/>. | |||
ogether with the SDP offer/answer | ||||
mechanism <xref format="default" target="RFC3264" sectionFormat="of" deriv | ||||
edContent="RFC3264"/>. | ||||
Declarative usage of SDP is out of scope of this document and is | Declarative usage of SDP is out of scope of this document and is | |||
thus undefined. | thus undefined. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-group" toc="include" numbered="true" removeInRFC="false | <section anchor="sec-group"> | |||
" pn="section-5"> | <name>SDP Grouping Framework BUNDLE Extension</name> | |||
<name slugifiedName="name-sdp-grouping-framework-bund">SDP Grouping Framew | <t> | |||
ork BUNDLE Extension</name> | This section defines a new SDP Grouping Framework <xref target="RFC5888"/ | |||
<t indent="0" pn="section-5-1"> | > extension, 'BUNDLE'. The BUNDLE extension can be used with the SDP | |||
This section defines a new SDP Grouping Framework <xref format="default" | ||||
target="RFC5888" sectionFormat="of" derivedContent="RFC5888"/> extension, 'BUNDL | ||||
E'. The BUNDLE extension can be used with the SDP | ||||
offer/answer mechanism to negotiate a set of "m=" sections that will beco me part of a BUNDLE | offer/answer mechanism to negotiate a set of "m=" sections that will beco me part of a BUNDLE | |||
group. Within a BUNDLE group, each "m=" section uses a BUNDLE transport f or sending and | group. Within a BUNDLE group, each "m=" section uses a BUNDLE transport f or sending and | |||
receiving bundled media. Each endpoint uses a single address:port combina tion for sending and | receiving bundled media. Each endpoint uses a single address:port combina tion for sending and | |||
receiving the bundled media. | receiving the bundled media. | |||
</t> | </t> | |||
<t indent="0" pn="section-5-2"> | <t> | |||
The BUNDLE extension is indicated using an SDP 'group' attribute with a s emantics value | The BUNDLE extension is indicated using an SDP 'group' attribute with a s emantics value | |||
<xref format="default" target="RFC5888" sectionFormat="of" derivedContent ="RFC5888"/> of "BUNDLE". | <xref target="RFC5888"/> of "BUNDLE". | |||
An identification-tag is assigned to each bundled | An identification-tag is assigned to each bundled | |||
"m=" section, and each identification-tag is listed in the SDP 'group:BUN DLE' | "m=" section, and each identification-tag is listed in the SDP 'group:BUN DLE' | |||
attribute identification-tag list. Each "m=" section whose identification -tag | attribute identification-tag list. Each "m=" section whose identification -tag | |||
is listed in the identification-tag list is associated with a given | is listed in the identification-tag list is associated with a given | |||
BUNDLE group. | BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-5-3"> | <t> | |||
SDP bodies can contain multiple BUNDLE groups. Any given bundled "m=" | SDP bodies can contain multiple BUNDLE groups. Any given bundled "m=" | |||
section <bcp14>MUST NOT</bcp14> be associated with more than one BUNDLE g roup at any given | section <bcp14>MUST NOT</bcp14> be associated with more than one BUNDLE g roup at any given | |||
time. | time. | |||
</t> | </t> | |||
<t indent="0" pn="section-5-4"> | ||||
<t> | ||||
NOTE: The order of the "m=" sections listed in the SDP 'group:BUNDLE' att ribute | NOTE: The order of the "m=" sections listed in the SDP 'group:BUNDLE' att ribute | |||
identification-tag list does not have to be the same as the order in whic h | identification-tag list does not have to be the same as the order in whic h | |||
the "m=" sections occur in the SDP. | the "m=" sections occur in the SDP. | |||
</t> | </t> | |||
<t indent="0" pn="section-5-5"> | <t> | |||
The multiplexing category <xref target="RFC8859" format="default" section | The multiplexing category <xref target="RFC8859"/> for the 'group:BUNDLE' | |||
Format="of" derivedContent="RFC8859"/> for the 'group:BUNDLE' | ||||
attribute is 'NORMAL'. | attribute is 'NORMAL'. | |||
</t> | </t> | |||
<t indent="0" pn="section-5-6"> | <t> | |||
<xref target="sec-sdp-oa" format="default" sectionFormat="of" derivedCont | <xref target="sec-sdp-oa"/> defines the | |||
ent="Section 7"/> defines the | ||||
detailed SDP offer/answer procedures for the BUNDLE extension. | detailed SDP offer/answer procedures for the BUNDLE extension. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-bundle-only" toc="include" numbered="true" removeInRFC= | <section anchor="sec-bundle-only"> | |||
"false" pn="section-6"> | <name>SDP 'bundle-only' Attribute</name> | |||
<name slugifiedName="name-sdp-bundle-only-attribute">SDP 'bundle-only' Att | <t> | |||
ribute</name> | This section defines a new SDP media-level attribute <xref target="RFC4566 | |||
<t indent="0" pn="section-6-1"> | "/>, 'bundle-only'. 'bundle-only' is a property attribute | |||
This section defines a new SDP media-level attribute <xref target="RFC4566 | <xref target="RFC4566"/>; hence, it has no value. | |||
" format="default" sectionFormat="of" derivedContent="RFC4566"/>, 'bundle-only'. | ||||
'bundle-only' is a property attribute | ||||
<xref target="RFC4566" format="default" sectionFormat="of" derivedContent= | ||||
"RFC4566"/> and hence has no value. | ||||
</t> | </t> | |||
<t indent="0" pn="section-6-2"> | <t> | |||
In order to ensure that an answerer that does not support the BUNDLE exten sion always | In order to ensure that an answerer that does not support the BUNDLE exten sion always | |||
rejects a bundled "m=" section in an offer, the offerer can assign a zero port value to the "m=" | rejects a bundled "m=" section in an offer, the offerer can assign a zero port value to the "m=" | |||
section. According to <xref target="RFC3264" format="default" sectionForma t="of" derivedContent="RFC3264"/>, an answerer | section. According to <xref target="RFC3264"/>, an answerer | |||
will reject such an "m=" section. | will reject such an "m=" section. | |||
By including an SDP 'bundle-only' attribute in a bundled "m=" section, the offerer can | By including an SDP 'bundle-only' attribute in a bundled "m=" section, the offerer can | |||
request that the answerer accepts the "m=" section only if the answerer su pports the BUNDLE | request that the answerer accept the "m=" section only if the answerer sup ports the BUNDLE | |||
extension and if the answerer keeps the "m=" section within the associated BUNDLE group. | extension and if the answerer keeps the "m=" section within the associated BUNDLE group. | |||
</t> | </t> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="section-6-3" | <dl> | |||
> | <dt>Name:</dt> | |||
<li pn="section-6-3.1"> | <dd>bundle-only</dd> | |||
<dl newline="false" spacing="normal" indent="3" pn="section-6-3.1.1"> | <dt>Value:</dt> | |||
<dt pn="section-6-3.1.1.1">Name:</dt> | <dd>N/A</dd> | |||
<dd pn="section-6-3.1.1.2">bundle-only</dd> | <dt>Usage Level:</dt> | |||
<dt pn="section-6-3.1.1.3">Value:</dt> | <dd>media</dd> | |||
<dd pn="section-6-3.1.1.4">N/A</dd> | <dt>Charset Dependent:</dt> | |||
<dt pn="section-6-3.1.1.5">Usage Level:</dt> | <dd>no</dd> | |||
<dd pn="section-6-3.1.1.6">media</dd> | <dt>Example:</dt> | |||
<dt pn="section-6-3.1.1.7">Charset Dependent:</dt> | <dd>a=bundle-only</dd> | |||
<dd pn="section-6-3.1.1.8">no</dd> | ||||
<dt pn="section-6-3.1.1.9">Example:</dt> | ||||
<dd pn="section-6-3.1.1.10">a=bundle-only</dd> | ||||
</dl> | </dl> | |||
</li> | <t> | |||
</ul> | ||||
<t indent="0" pn="section-6-5"> | ||||
The usage of the 'bundle-only' attribute is only defined for a | The usage of the 'bundle-only' attribute is only defined for a | |||
bundled "m=" section with a zero port value. Other usage is | bundled "m=" section with a zero port value. Other usage is | |||
unspecified. If an offerer or answerer receives a ‘bundle-only’ | unspecified. If an offerer or answerer receives a 'bundle-only' | |||
attribute in a non-bundled "m=" section the offerer or answerer | attribute in a non-bundled "m=" section, the offerer or answerer | |||
MUST discard the attribute. | <bcp14>MUST</bcp14> discard the attribute. | |||
</t> | </t> | |||
<t indent="0" pn="section-6-6"> | <t> | |||
<xref target="sec-sdp-oa" format="default" sectionFormat="of" derivedConte | <xref target="sec-sdp-oa"/> defines the detailed SDP | |||
nt="Section 7"/> defines the detailed SDP | ||||
offer/answer procedures for the 'bundle-only' attribute. | offer/answer procedures for the 'bundle-only' attribute. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa" toc="include" numbered="true" removeInRFC="fals | <section anchor="sec-sdp-oa"> | |||
e" pn="section-7"> | <name>SDP Offer/Answer Procedures</name> | |||
<name slugifiedName="name-sdp-offer-answer-procedures">SDP Offer/Answer Pr | <t> | |||
ocedures</name> | This section describes the SDP offer/answer <xref target="RFC3264"/> pro | |||
<t indent="0" pn="section-7-1"> | cedures for: | |||
This section describes the SDP offer/answer <xref format="default" targe | ||||
t="RFC3264" sectionFormat="of" derivedContent="RFC3264"/> procedures for: | ||||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7-2 | <ul> | |||
"> | <li> | |||
<li pn="section-7-2.1"> | ||||
Negotiating a BUNDLE group; | Negotiating a BUNDLE group; | |||
</li> | </li> | |||
<li pn="section-7-2.2"> | <li> | |||
Suggesting and selecting the tagged "m=" sections (offerer-tagged "m =" section and answerer-tagged "m=" section); | Suggesting and selecting the tagged "m=" sections (offerer-tagged "m =" section and answerer-tagged "m=" section); | |||
</li> | </li> | |||
<li pn="section-7-2.3"> | <li> | |||
Adding an "m=" section to a BUNDLE group; | Adding an "m=" section to a BUNDLE group; | |||
</li> | </li> | |||
<li pn="section-7-2.4"> | <li> | |||
Moving an "m=" section out of a BUNDLE group; and | Moving an "m=" section out of a BUNDLE group; and | |||
</li> | </li> | |||
<li pn="section-7-2.5"> | <li> | |||
Disabling an "m=" section within a BUNDLE group. | Disabling an "m=" section within a BUNDLE group. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7-3"> | <t> | |||
The generic rules and procedures defined in <xref format="default" targe | The generic rules and procedures defined in <xref target="RFC3264"/> and | |||
t="RFC3264" sectionFormat="of" derivedContent="RFC3264"/> and <xref format="defa | <xref target="RFC5888"/> | |||
ult" target="RFC5888" sectionFormat="of" derivedContent="RFC5888"/> | ||||
also apply to the BUNDLE extension. For example, if an offer is rejected | also apply to the BUNDLE extension. For example, if an offer is rejected | |||
by the answerer, the previously negotiated addresses:ports, SDP paramete rs, and characteristics | by the answerer, the previously negotiated addresses:ports, SDP paramete rs, and characteristics | |||
(including those associated with a BUNDLE group) apply. Hence, if an off erer | (including those associated with a BUNDLE group) apply. Hence, if an off erer | |||
generates an offer in order to negotiate a BUNDLE group, | generates an offer in order to negotiate a BUNDLE group | |||
and the answerer rejects the offer, the BUNDLE group is not created. | and the answerer rejects the offer, the BUNDLE group is not created. | |||
</t> | </t> | |||
<t indent="0" pn="section-7-4"> | <t> | |||
The procedures in this section are independent of the media type or | The procedures in this section are independent of the media type or | |||
"m=" line proto value assigned to a bundled "m=" section. <xref format=" default" target="sec-bundle-only" sectionFormat="of" derivedContent="Section 6"/ > defines | "m=" line proto value assigned to a bundled "m=" section. <xref target=" sec-bundle-only"/> defines | |||
additional considerations for the usage of the SDP 'bundle-only' attribu te. | additional considerations for the usage of the SDP 'bundle-only' attribu te. | |||
<xref format="default" target="sec-rtp" sectionFormat="of" derivedConten t="Section 9"/> defines additional | <xref target="sec-rtp"/> defines additional | |||
considerations for RTP-based media. | considerations for RTP-based media. | |||
<xref format="default" target="sec-ice" sectionFormat="of" derivedConten | <xref target="sec-ice"/> defines additional | |||
t="Section 10"/> defines additional | considerations for the usage of the ICE mechanism | |||
considerations for the usage of the ICE | <xref target="RFC8445"/>. | |||
<xref format="default" target="RFC8445" sectionFormat="of" derivedConten | ||||
t="RFC8445"/> mechanism. | ||||
</t> | </t> | |||
<t indent="0" pn="section-7-5"> | <t> | |||
Offers and answers can contain multiple BUNDLE groups. The procedures in this | Offers and answers can contain multiple BUNDLE groups. The procedures in this | |||
section apply independently to a given BUNDLE group. | section apply independently to a given BUNDLE group. | |||
</t> | </t> | |||
<section anchor="sec-sdp-cons" toc="include" numbered="true" removeInRFC=" | <section anchor="sec-sdp-cons"> | |||
false" pn="section-7.1"> | <name>Generic SDP Considerations</name> | |||
<name slugifiedName="name-generic-sdp-considerations">Generic SDP Consid | <t> | |||
erations</name> | ||||
<t indent="0" pn="section-7.1-1"> | ||||
This section describes generic restrictions associated with the usage of | This section describes generic restrictions associated with the usage of | |||
SDP parameters within a BUNDLE group. It also describes how to calcula te a | SDP parameters within a BUNDLE group. It also describes how to calcula te a | |||
value for the whole BUNDLE group, when parameter and attribute values have been assigned | value for the whole BUNDLE group, when parameter and attribute values have been assigned | |||
to each bundled "m=" section. | to each bundled "m=" section. | |||
</t> | </t> | |||
<section anchor="sec-sdp-cons-c" toc="include" numbered="true" removeInR | <section anchor="sec-sdp-cons-c"> | |||
FC="false" pn="section-7.1.1"> | <name>Connection Data ("c=")</name> | |||
<name slugifiedName="name-connection-data-c">Connection Data ("c=")</n | <t> | |||
ame> | The "c=" line nettype value <xref target="RFC4566"/> associated with | |||
<t indent="0" pn="section-7.1.1-1"> | a bundled "m=" section <bcp14>MUST</bcp14> be 'IN'. | |||
The "c=" line nettype value <xref format="default" target="RFC4566" | ||||
sectionFormat="of" derivedContent="RFC4566"/> associated with a bundled "m=" sec | ||||
tion <bcp14>MUST</bcp14> be 'IN'. | ||||
</t> | </t> | |||
<t indent="0" pn="section-7.1.1-2"> | <t> | |||
The "c=" line addrtype value <xref format="default" target="RFC4566" | The "c=" line addrtype value <xref target="RFC4566"/> associated wit | |||
sectionFormat="of" derivedContent="RFC4566"/> associated with a bundled "m=" se | h a bundled "m=" section <bcp14>MUST</bcp14> be 'IP4' or | |||
ction <bcp14>MUST</bcp14> be 'IP4' or | ||||
'IP6'. The same value <bcp14>MUST</bcp14> be associated with each "m =" section. | 'IP6'. The same value <bcp14>MUST</bcp14> be associated with each "m =" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.1.1-3"> | ||||
<t indent="3"> | ||||
NOTE: Extensions to this specification can specify usage of the BUND LE | NOTE: Extensions to this specification can specify usage of the BUND LE | |||
mechanism for other nettype and addrtype values than the ones listed above. | mechanism for other nettype and addrtype values than the ones listed above. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-cons-b" toc="include" numbered="true" removeInR | <section anchor="sec-sdp-cons-b"> | |||
FC="false" pn="section-7.1.2"> | <name>Bandwidth ("b=")</name> | |||
<name slugifiedName="name-bandwidth-b">Bandwidth ("b=")</name> | <t> | |||
<t indent="0" pn="section-7.1.2-1"> | ||||
An offerer and answerer <bcp14>MUST</bcp14> use the rules and restri ctions defined | An offerer and answerer <bcp14>MUST</bcp14> use the rules and restri ctions defined | |||
in <xref target="RFC8859" format="default" sectionFormat="of" derive dContent="RFC8859"/> for | in <xref target="RFC8859"/> for | |||
associating the SDP bandwidth ("b=") line with bundled "m=" sections . | associating the SDP bandwidth ("b=") line with bundled "m=" sections . | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-cat" toc="include" numbered="true" removeInR | <section anchor="sec-sdp-oa-cat"> | |||
FC="false" pn="section-7.1.3"> | <name>Attributes ("a=")</name> | |||
<name slugifiedName="name-attributes-a">Attributes ("a=")</name> | <t> | |||
<t indent="0" pn="section-7.1.3-1"> | ||||
An offerer and answerer <bcp14>MUST</bcp14> include SDP attributes i n every bundled "m=" section where applicable, | An offerer and answerer <bcp14>MUST</bcp14> include SDP attributes i n every bundled "m=" section where applicable, | |||
following the normal offer/answer procedures for each attribute, wit h the following exceptions: | following the normal offer/answer procedures for each attribute, wit h the following exceptions: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.1.3-2"> | <li> | |||
<li pn="section-7.1.3-2.1"> | ||||
In the initial BUNDLE offer, the offerer <bcp14>MUST NOT</bcp14> | In the initial BUNDLE offer, the offerer <bcp14>MUST NOT</bcp14> | |||
include IDENTICAL and TRANSPORT multiplexing category SDP | include IDENTICAL and TRANSPORT multiplexing category SDP | |||
attributes (BUNDLE attributes) in bundle-only "m=" sections. The | attributes (BUNDLE attributes) in bundle-only "m=" sections. The | |||
offerer <bcp14>MUST</bcp14> include such attributes in all other | offerer <bcp14>MUST</bcp14> include such attributes in all other | |||
bundled "m=" sections. In the initial BUNDLE offer, each bundled | bundled "m=" sections. In the initial BUNDLE offer, each bundled | |||
"m=" line can contain a different set of BUNDLE attributes and | "m=" line can contain a different set of BUNDLE attributes and | |||
attribute values. Once the offerer-tagged "m=" section has been | attribute values. Once the offerer-tagged "m=" section has been | |||
selected, the BUNDLE attributes contained in the offerer-tagged | selected, the BUNDLE attributes contained in the offerer-tagged | |||
"m=" section will apply to each bundled "m=" section within the | "m=" section will apply to each bundled "m=" section within the | |||
BUNDLE group. | BUNDLE group. | |||
</li> | </li> | |||
<li pn="section-7.1.3-2.2"> | <li> | |||
In a subsequent offer, or in an answer (initial or subsequent), | In a subsequent offer or in an answer (initial or subsequent), | |||
the offerer and answerer <bcp14>MUST</bcp14> include IDENTICAL | the offerer and answerer <bcp14>MUST</bcp14> include IDENTICAL | |||
and TRANSPORT multiplexing category SDP attributes (BUNDLE | and TRANSPORT multiplexing category SDP attributes (BUNDLE | |||
attributes) only in the tagged "m=" section (offerer-tagged "m=" | attributes) only in the tagged "m=" section (offerer-tagged "m=" | |||
section or answerer-tagged "m=" section). The offerer and | section or answerer-tagged "m=" section). The offerer and | |||
answerer <bcp14>MUST NOT</bcp14> include such attributes in any | answerer <bcp14>MUST NOT</bcp14> include such attributes in any | |||
other bundled "m=" section. The BUNDLE attributes contained in | other bundled "m=" section. The BUNDLE attributes contained in | |||
the tagged "m=" section will apply to each bundled "m=" section | the tagged "m=" section will apply to each bundled "m=" section | |||
within the BUNDLE group. | within the BUNDLE group. | |||
</li> | </li> | |||
<li pn="section-7.1.3-2.3"> | <li> | |||
In an offer (initial BUNDLE offer or subsequent), or in an | In an offer (initial BUNDLE offer or subsequent) or in an | |||
answer (initial BUNDLE answer or subsequent), the offerer and | answer (initial BUNDLE answer or subsequent), the offerer and | |||
answerer <bcp14>MUST</bcp14> include SDP attributes from | answerer <bcp14>MUST</bcp14> include SDP attributes from | |||
categories other than IDENTICAL and TRANSPORT in each bundled | categories other than IDENTICAL and TRANSPORT in each bundled | |||
"m=" section that a given attribute applies to. Each bundled | "m=" section that a given attribute applies to. Each bundled | |||
"m=" line can contain a different set of such attributes, and | "m=" line can contain a different set of such attributes and | |||
attribute values, as such attributes only apply to the given | attribute values, as such attributes only apply to the given | |||
bundled "m=" section in which they are included. | bundled "m=" section in which they are included. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.1.3-3"> | <t indent="3"> | |||
NOTE: A consequence of the rules above is that media-specific | NOTE: A consequence of the rules above is that media-specific | |||
IDENTICAL and TRANSPORT multiplexing category SDP attributes that | IDENTICAL and TRANSPORT multiplexing category SDP attributes that | |||
are applicable only to some of the bundled "m=" sections within | are applicable only to some of the bundled "m=" sections within | |||
the BUNDLE group might appear in the tagged "m=" section for which | the BUNDLE group might appear in the tagged "m=" section for which | |||
they are not applicable. For instance, the tagged "m=" section | they are not applicable. For instance, the tagged "m=" section | |||
might contain an SDP 'rtcp-mux' attribute even if the tagged "m=" | might contain an SDP 'rtcp-mux' attribute even if the tagged "m=" | |||
section does not describe RTP-based media (but another bundled | section does not describe RTP-based media (but another bundled | |||
"m=" section within the BUNDLE group does describe RTP-based | "m=" section within the BUNDLE group does describe RTP-based | |||
media). | media). | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-ino" toc="include" numbered="true" removeInRFC | <section anchor="sec-sdp-oa-ino"> | |||
="false" pn="section-7.2"> | <name>Generating the Initial BUNDLE Offer</name> | |||
<name slugifiedName="name-generating-the-initial-bundle-">Generating the | <t> | |||
Initial BUNDLE offer</name> | The procedures in this section apply to the first offer within an SDP | |||
<t indent="0" pn="section-7.2-1"> | session (e.g., a SIP | |||
The procedures in this section apply to the first offer, within an SDP | dialog when SIP <xref target="RFC3261"/> is used to carry SDP) in whic | |||
session (e.g., a SIP | h the | |||
dialog when SIP <xref target="RFC3261" format="default" sectionFormat= | ||||
"of" derivedContent="RFC3261"/> is used to carry SDP), in which the | ||||
offerer indicates that it wants to negotiate a given BUNDLE group. Thi s could occur in the | offerer indicates that it wants to negotiate a given BUNDLE group. Thi s could occur in the | |||
initial offer, or in a subsequent offer, of the SDP session. | initial offer, or in a subsequent offer, of the SDP session. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.2-2"> | <t> | |||
When an offerer generates an initial BUNDLE offer, in order to negotia te a | When an offerer generates an initial BUNDLE offer, in order to negotia te a | |||
BUNDLE group, it <bcp14>MUST</bcp14>: | BUNDLE group, it <bcp14>MUST</bcp14>: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7 | <ul> | |||
.2-3"> | <li> | |||
<li pn="section-7.2-3.1"> | Assign a unique address:port to each bundled "m=" section | |||
Assign a unique address:port to each bundled "m=" section, | following the procedures in <xref target="RFC3264"/>, excluding an | |||
following the procedures in <xref target="RFC3264" format="default | y bundle-only "m=" sections (see below); | |||
" sectionFormat="of" derivedContent="RFC3264"/>, excluding any bundle-only "m=" | ||||
sections (see below); | ||||
</li> | </li> | |||
<li pn="section-7.2-3.2"> | <li> | |||
Pick a bundled "m=" section as the suggested offerer-tagged "m=" ( | Pick a bundled "m=" section as the suggested offerer-tagged "m=" ( | |||
<xref target="sec-sdp-oa-ino-req" format="default" sectionFormat="of" derivedCon | <xref target="sec-sdp-oa-ino-req"/>); | |||
tent="Section 7.2.1"/>); | ||||
</li> | </li> | |||
<li pn="section-7.2-3.3"> | <li> | |||
Include SDP attributes in the bundled "m=" sections following the rules | Include SDP attributes in the bundled "m=" sections following the rules | |||
in <xref target="sec-sdp-oa-cat" format="default" sectionFormat="o f" derivedContent="Section 7.1.3"/>; | in <xref target="sec-sdp-oa-cat"/>; | |||
</li> | </li> | |||
<li pn="section-7.2-3.4"> | <li> | |||
Include an SDP 'group:BUNDLE' attribute in the offer; and | Include an SDP 'group:BUNDLE' attribute in the offer; and | |||
</li> | </li> | |||
<li pn="section-7.2-3.5"> | <li> | |||
Place the identification-tag of each bundled "m=" section in the | Place the identification-tag of each bundled "m=" section in the | |||
SDP 'group:BUNDLE' attribute identification-tag list. The offerer BUNDLE-tag | SDP 'group:BUNDLE' attribute identification-tag list. The offerer BUNDLE-tag | |||
indicates the suggested offerer-tagged "m=" section. | indicates the suggested offerer-tagged "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.2-4"> | <t indent="3"> | |||
NOTE: When the offerer assigns unique addresses:ports to multiple bund led "m=" sections, the offerer needs to be prepared | NOTE: When the offerer assigns unique addresses:ports to multiple bund led "m=" sections, the offerer needs to be prepared | |||
to receive bundled media on each unique address:port, until it receive s the associated answer and finds out which | to receive bundled media on each unique address:port until it receives the associated answer and finds out which | |||
bundled "m=" section (and associated address:port combination) the ans werer has selected as the offerer-tagged "m=" section. | bundled "m=" section (and associated address:port combination) the ans werer has selected as the offerer-tagged "m=" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.2-5"> | <t> | |||
If the offerer wants to request that the answerer accepts a given bund | If the offerer wants to request that the answerer accept a given bundl | |||
led "m=" section only if | ed "m=" section only if | |||
the answerer keeps the "m=" section within the negotiated BUNDLE group , the offerer <bcp14>MUST</bcp14>: | the answerer keeps the "m=" section within the negotiated BUNDLE group , the offerer <bcp14>MUST</bcp14>: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7 | <ul> | |||
.2-6"> | <li> | |||
<li pn="section-7.2-6.1"> | Include an SDP 'bundle-only' attribute (<xref target="sec-sdp-oa-i | |||
Include an SDP 'bundle-only' attribute (<xref target="sec-sdp-oa-i | no-req"/>) in the "m=" section, and | |||
no-req" format="default" sectionFormat="of" derivedContent="Section 7.2.1"/>) in | ||||
the "m=" section, and | ||||
</li> | </li> | |||
<li pn="section-7.2-6.2"> | <li> | |||
Assign a zero port value to the "m=" section. | Assign a zero port value to the "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.2-7"> | <t indent="3"> | |||
NOTE: If the offerer assigns a zero port value to a bundled "m=" secti | NOTE: If the offerer assigns a zero port value to a bundled "m=" secti | |||
on, but does not include an | on but does not include an | |||
SDP 'bundle-only' attribute in the "m=" section, it is an indication t hat the offerer wants | SDP 'bundle-only' attribute in the "m=" section, it is an indication t hat the offerer wants | |||
to disable the "m=" section (<xref target="sec-sdp-oa-mod-dis" format= "default" sectionFormat="of" derivedContent="Section 7.5.3"/>). | to disable the "m=" section (<xref target="sec-sdp-oa-mod-dis"/>). | |||
</t> | </t> | |||
<t indent="0" pn="section-7.2-8"> | <t> | |||
Sections <xref target="sec-sdp-oa-ino-ex" format="counter" sectionForm | Sections <xref target="sec-sdp-oa-ino-ex" format="counter"/> and <xref | |||
at="of" derivedContent="7.2.2"/> and <xref target="sec-example-add" format="coun | target="sec-example-add" format="counter"/> show | |||
ter" sectionFormat="of" derivedContent="18.1"/> show | ||||
an example of an initial BUNDLE offer. | an example of an initial BUNDLE offer. | |||
</t> | </t> | |||
<section anchor="sec-sdp-oa-ino-req" toc="include" numbered="true" remov | <section anchor="sec-sdp-oa-ino-req"> | |||
eInRFC="false" pn="section-7.2.1"> | <name>Suggesting the Offerer-Tagged "m=" Section</name> | |||
<name slugifiedName="name-suggesting-the-offerer-tagg">Suggesting the | <t> | |||
Offerer-Tagged 'm=' Section</name> | ||||
<t indent="0" pn="section-7.2.1-1"> | ||||
In the initial BUNDLE offer, the bundled "m=" section indicated by the offerer BUNDLE-tag is the suggested offerer-tagged "m=" section. | In the initial BUNDLE offer, the bundled "m=" section indicated by the offerer BUNDLE-tag is the suggested offerer-tagged "m=" section. | |||
The address:port combination associated with the "m=" section will be used by the offerer for sending and receiving bundled | The address:port combination associated with the "m=" section will be used by the offerer for sending and receiving bundled | |||
media if the answerer selects the "m=" section as the offerer-tagged " m=" section (<xref target="sec-sdp-oa-ans-off" format="default" sectionFormat="o f" derivedContent="Section 7.3.1"/>). In addition, if the answerer selects the " m=" section as the offerer-tagged "m=" section, | media if the answerer selects the "m=" section as the offerer-tagged " m=" section (<xref target="sec-sdp-oa-ans-off"/>). In addition, if the answerer selects the "m=" section as the offerer-tagged "m=" section, | |||
the BUNDLE attributes included in the "m=" section will be applied to each "m=" section within the negotiated BUNDLE group. | the BUNDLE attributes included in the "m=" section will be applied to each "m=" section within the negotiated BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.2.1-2"> | <t> | |||
The offerer <bcp14>MUST NOT</bcp14> suggest a bundle-only "m=" section as the offerer-tagged "m=" section. | The offerer <bcp14>MUST NOT</bcp14> suggest a bundle-only "m=" section as the offerer-tagged "m=" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.2.1-3"> | <t> | |||
It is <bcp14>RECOMMENDED</bcp14> that the suggested offerer-tagged "m= " section be a bundled "m=" section | It is <bcp14>RECOMMENDED</bcp14> that the suggested offerer-tagged "m= " section be a bundled "m=" section | |||
that the offerer believes is unlikely that the answerer will reject or | which the offerer believes is unlikely to be rejected or moved out of | |||
move out of the BUNDLE group. | the BUNDLE group by the answerer. | |||
How such assumption is made is outside the scope of this document. | How such an assumption is made is outside the scope of this document. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-ino-ex" numbered="true" toc="include" remove | <section anchor="sec-sdp-oa-ino-ex"> | |||
InRFC="false" pn="section-7.2.2"> | <name>Example: Initial BUNDLE Offer</name> | |||
<name slugifiedName="name-example-initial-bundle-offer">Example: Initi | <t> | |||
al BUNDLE offer</name> | ||||
<t indent="0" pn="section-7.2.2-1"> | ||||
The following example shows an initial BUNDLE offer. The offer include s two | The following example shows an initial BUNDLE offer. The offer include s two | |||
"m=" sections in the offer and suggests that both "m=" sections are in cluded in a BUNDLE group. | "m=" sections in the offer and suggests that both "m=" sections be inc luded in a BUNDLE group. | |||
The audio "m=" section is the suggested offerer-tagged "m=" section, i ndicated by placing the | The audio "m=" section is the suggested offerer-tagged "m=" section, i ndicated by placing the | |||
identification-tag associated with the "m=" section (offerer BUNDLE-ta g) first in the SDP group:BUNDLE | identification-tag associated with the "m=" section (offerer BUNDLE-ta g) first in the SDP 'group:BUNDLE' | |||
attribute identification-id list. | attribute identification-id list. | |||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-7.2.2-2">SDP Offer</t> | <t keepWithNext="true">SDP Offer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-7.2.2-3"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 940 ¶ | skipping to change at line 617 ¶ | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 10002 RTP/AVP 31 32 | m=video 10002 RTP/AVP 31 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
<t indent="0" pn="section-7.2.2-4"> | <t> | |||
The following example shows an initial BUNDLE offer. The offer include s two | The following example shows an initial BUNDLE offer. The offer include s two | |||
"m=" sections in the offer and suggests that both "m=" sections are in cluded in a BUNDLE group. | "m=" sections in the offer and suggests that both "m=" sections are in cluded in a BUNDLE group. | |||
The offerer includes an SDP 'bundle-only' attribute in the video "m=" | The offerer includes an SDP 'bundle-only' attribute in the video "m=" | |||
section, to request that the | section to request that the | |||
answerer accepts the "m=" section only if the answerer supports the BU | answerer accept the "m=" section only if the answerer supports the BUN | |||
NDLE extension and if the | DLE extension and if the | |||
answerer keeps the "m=" section within the associated BUNDLE group. | answerer keeps the "m=" section within the associated BUNDLE group. | |||
The audio "m=" section is the suggested offerer-tagged "m=" section, i ndicated by placing the | The audio "m=" section is the suggested offerer-tagged "m=" section, i ndicated by placing the | |||
identification-tag associated with the "m=" section (offerer BUNDLE-ta g) first in the SDP group:BUNDLE | identification-tag associated with the "m=" section (offerer BUNDLE-ta g) first in the SDP 'group:BUNDLE' | |||
attribute identification-id list. | attribute identification-id list. | |||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-7.2.2-5">SDP Offer</t> | <t keepWithNext="true">SDP Offer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-7.2.2-6"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 978 ¶ | skipping to change at line 656 ¶ | |||
m=video 0 RTP/AVP 31 32 | m=video 0 RTP/AVP 31 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=bundle-only | a=bundle-only | |||
a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-ans" toc="include" numbered="true" removeInRFC | <section anchor="sec-sdp-oa-ans"> | |||
="false" pn="section-7.3"> | <name>Generating the SDP Answer</name> | |||
<name slugifiedName="name-generating-the-sdp-answer">Generating the SDP | <t> | |||
Answer</name> | ||||
<t indent="0" pn="section-7.3-1"> | ||||
When an answerer generates an answer (initial BUNDLE answer or subsequ ent) that contains a BUNDLE group, the following general | When an answerer generates an answer (initial BUNDLE answer or subsequ ent) that contains a BUNDLE group, the following general | |||
SDP Grouping Framework restrictions, defined in <xref target="RFC5888" format="default" sectionFormat="of" derivedContent="RFC5888"/>, also apply to t he BUNDLE group: | SDP Grouping Framework restrictions, defined in <xref target="RFC5888" />, also apply to the BUNDLE group: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7 | <ul> | |||
.3-2"> | <li> | |||
<li pn="section-7.3-2.1"> | ||||
The answerer is only allowed to include a BUNDLE group in an | The answerer is only allowed to include a BUNDLE group in an | |||
initial BUNDLE answer if the offerer requested the BUNDLE group | initial BUNDLE answer if the offerer requested the BUNDLE group | |||
to be created in the corresponding initial BUNDLE offer; | to be created in the corresponding initial BUNDLE offer; | |||
</li> | </li> | |||
<li pn="section-7.3-2.2"> | <li> | |||
The answerer is only allowed to include a BUNDLE group in a | The answerer is only allowed to include a BUNDLE group in a | |||
subsequent answer if the corresponding subsequent offer contains | subsequent answer if the corresponding subsequent offer contains | |||
a previously negotiated BUNDLE group; | a previously negotiated BUNDLE group; | |||
</li> | </li> | |||
<li pn="section-7.3-2.3"> | <li> | |||
The answerer is only allowed to include a bundled "m=" section | The answerer is only allowed to include a bundled "m=" section | |||
in an answer if the "m=" section was indicated as bundled in the | in an answer if the "m=" section was indicated as bundled in the | |||
corresponding offer; and | corresponding offer; and | |||
</li> | </li> | |||
<li pn="section-7.3-2.4"> | <li> | |||
The answerer is only allowed to include a bundled "m=" section | The answerer is only allowed to include a bundled "m=" section | |||
in the same BUNDLE group as the bundled "m=" line in the | in the same BUNDLE group as the bundled "m=" line in the | |||
corresponding offer. | corresponding offer. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.3-3"> | <t> | |||
In addition, when an answerer generates an answer (initial BUNDLE | In addition, when an answerer generates an answer (initial BUNDLE | |||
answer or subsequent) that contains a BUNDLE group, the answerer | answer or subsequent) that contains a BUNDLE group, the answerer | |||
<bcp14>MUST</bcp14>: | <bcp14>MUST</bcp14>: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7 | <ul> | |||
.3-4"> | <li> | |||
<li pn="section-7.3-4.1"> | ||||
In case of an initial BUNDLE answer, select the offerer-tagged | In case of an initial BUNDLE answer, select the offerer-tagged | |||
"m=" section using the procedures in <xref target="sec-sdp-oa-ans- off" format="default" sectionFormat="of" derivedContent="Section 7.3.1"/>. In ca se of a | "m=" section using the procedures in <xref target="sec-sdp-oa-ans- off"/>. In case of a | |||
subsequent answer, the offerer-tagged "m=" section is indicated | subsequent answer, the offerer-tagged "m=" section is indicated | |||
in the corresponding subsequent offer and <bcp14>MUST NOT</bcp14> be changed by the answerer; | in the corresponding subsequent offer and <bcp14>MUST NOT</bcp14> be changed by the answerer; | |||
</li> | </li> | |||
<li pn="section-7.3-4.2"> | <li> | |||
Select the answerer-tagged "m=" section (<xref target="sec-sdp-oa- | Select the answerer-tagged "m=" section (<xref target="sec-sdp-oa- | |||
ans-off" format="default" sectionFormat="of" derivedContent="Section 7.3.1"/>); | ans-off"/>); | |||
</li> | </li> | |||
<li pn="section-7.3-4.3"> | <li> | |||
Assign the answerer BUNDLE address:port to the answerer-tagged | Assign the answerer BUNDLE address:port to the answerer-tagged | |||
"m=" section, and to every other bundled "m=" section within the BU NDLE | "m=" section and to every other bundled "m=" section within the BUN DLE | |||
group; | group; | |||
</li> | </li> | |||
<li pn="section-7.3-4.5"> | <li> | |||
Include SDP attributes in the bundled "m=" sections following the rules | Include SDP attributes in the bundled "m=" sections following the rules | |||
in <xref target="sec-sdp-oa-cat" format="default" sectionFormat="o f" derivedContent="Section 7.1.3"/>; | in <xref target="sec-sdp-oa-cat"/>; | |||
</li> | </li> | |||
<li pn="section-7.3-4.6"> | <li> | |||
Include an SDP 'group:BUNDLE' attribute in the answer; and | Include an SDP 'group:BUNDLE' attribute in the answer; and | |||
</li> | </li> | |||
<li pn="section-7.3-4.7"> | <li> | |||
Place the identification-tag of each bundled "m=" section in the | Place the identification-tag of each bundled "m=" section in the | |||
SDP 'group:BUNDLE' attribute identification-tag list. The answerer BUNDLE-tag | SDP 'group:BUNDLE' attribute identification-tag list. The answerer BUNDLE-tag | |||
indicates the answerer-tagged "m=" section (<xref target="sec-sdp- oa-ans-off" format="default" sectionFormat="of" derivedContent="Section 7.3.1"/> ). | indicates the answerer-tagged "m=" section (<xref target="sec-sdp- oa-ans-off"/>). | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.3-5"> | <t> | |||
If the answerer does not want to keep an "m=" section within a BUNDLE group, it <bcp14>MUST</bcp14>: | If the answerer does not want to keep an "m=" section within a BUNDLE group, it <bcp14>MUST</bcp14>: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7 | <ul> | |||
.3-6"> | <li> | |||
<li pn="section-7.3-6.1"> | Move the "m=" section out of the BUNDLE group (<xref target="sec-s | |||
Move the "m=" section out of the BUNDLE group (<xref target="sec-s | dp-oa-ans-mov"/>); or | |||
dp-oa-ans-mov" format="default" sectionFormat="of" derivedContent="Section 7.3.2 | ||||
"/>); or | ||||
</li> | </li> | |||
<li pn="section-7.3-6.2"> | <li> | |||
Reject the "m=" section (<xref target="sec-sdp-oa-ans-rej" format= | Reject the "m=" section (<xref target="sec-sdp-oa-ans-rej"/>). | |||
"default" sectionFormat="of" derivedContent="Section 7.3.3"/>). | ||||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.3-7"> | <t> | |||
The answerer can modify the answerer BUNDLE address:port, add and remo ve SDP attributes, or modify | The answerer can modify the answerer BUNDLE address:port, add and remo ve SDP attributes, or modify | |||
SDP attribute values in a subsequent answer. Changes to the answerer B UNDLE address:port | SDP attribute values in a subsequent answer. Changes to the answerer B UNDLE address:port | |||
and the answerer BUNDLE attributes will be applied to each bundled "m= " section within the BUNDLE group. | and the answerer BUNDLE attributes will be applied to each bundled "m= " section within the BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.3-8"> | <t indent="3"> | |||
NOTE: If a bundled "m=" section in an offer contains a zero port value , but the "m=" section | NOTE: If a bundled "m=" section in an offer contains a zero port value , but the "m=" section | |||
does not contain an SDP 'bundle-only' attribute, it is an indication t hat the offerer wants | does not contain an SDP 'bundle-only' attribute, it is an indication t hat the offerer wants | |||
to disable the "m=" section (<xref target="sec-sdp-oa-mod-dis" format= "default" sectionFormat="of" derivedContent="Section 7.5.3"/>). | to disable the "m=" section (<xref target="sec-sdp-oa-mod-dis"/>). | |||
</t> | </t> | |||
<section anchor="sec-sdp-oa-ans-off" toc="include" numbered="true" remov | <section anchor="sec-sdp-oa-ans-off"> | |||
eInRFC="false" pn="section-7.3.1"> | <name>Answerer Selection of Tagged "m=" Sections</name> | |||
<name slugifiedName="name-answerer-selection-of-tagge">Answerer Select | <t> | |||
ion of Tagged 'm=' Sections</name> | ||||
<t indent="0" pn="section-7.3.1-1"> | ||||
When selecting the offerer-tagged "m=" section, the answerer <bcp14>MU ST</bcp14> | When selecting the offerer-tagged "m=" section, the answerer <bcp14>MU ST</bcp14> | |||
first check whether the "m=" section fulfills the following criteria | first check whether the "m=" section fulfills the following criteria | |||
<xref target="sec-sdp-oa-ino-req" format="default" sectionFormat="of" derivedContent="Section 7.2.1"/>: | (<xref target="sec-sdp-oa-ino-req"/>): | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.3.1-2"> | <li> | |||
<li pn="section-7.3.1-2.1"> | ||||
The answerer will not move the "m=" section out of the BUNDLE grou p | The answerer will not move the "m=" section out of the BUNDLE grou p | |||
(<xref target="sec-sdp-oa-ans-mov" format="default" sectionFormat= "of" derivedContent="Section 7.3.2"/>); | (<xref target="sec-sdp-oa-ans-mov"/>); | |||
</li> | </li> | |||
<li pn="section-7.3.1-2.2"> | <li> | |||
The answerer will not reject the "m=" section (<xref target="sec-s | The answerer will not reject the "m=" section (<xref target="sec-s | |||
dp-oa-ans-rej" format="default" sectionFormat="of" derivedContent="Section 7.3.3 | dp-oa-ans-rej"/>); and | |||
"/>); and | ||||
</li> | </li> | |||
<li pn="section-7.3.1-2.3"> | <li> | |||
The "m=" section does not contain a zero port value. | The "m=" section does not contain a zero port value. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.3.1-3"> | <t> | |||
If all of the criteria above are fulfilled, the answerer <bcp14>MUST</ bcp14> select | If all of the criteria above are fulfilled, the answerer <bcp14>MUST</ bcp14> select | |||
the "m=" section as the offerer-tagged "m=" section and <bcp14>MUST</b cp14> also mark | the "m=" section as the offerer-tagged "m=" section and <bcp14>MUST</b cp14> also mark | |||
the corresponding "m=" section in the answer as the answerer-tagged "m =" section. | the corresponding "m=" section in the answer as the answerer-tagged "m =" section. | |||
In the answer, the answerer BUNDLE-tag indicates the answerer-tagged " m=" section. | In the answer, the answerer BUNDLE-tag indicates the answerer-tagged " m=" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.3.1-4"> | <t> | |||
If one or more of the criteria are not fulfilled, the answerer <bcp14> MUST</bcp14> pick the next | If one or more of the criteria are not fulfilled, the answerer <bcp14> MUST</bcp14> pick the next | |||
identification-tag in the identification-tag list in the offer and per form the same criteria | identification-tag in the identification-tag list in the offer and per form the same criteria | |||
check for the "m=" section indicated by that identification-tag. If th ere are no | check for the "m=" section indicated by that identification-tag. If th ere are no | |||
more identification-tags in the identification-tag list, the answerer <bcp14>MUST NOT</bcp14> | more identification-tags in the identification-tag list, the answerer <bcp14>MUST NOT</bcp14> | |||
create the BUNDLE group. In addition, unless the answerer rejects the whole offer, | create the BUNDLE group. In addition, unless the answerer rejects the whole offer, | |||
the answerer <bcp14>MUST</bcp14> apply the answerer procedures for mov ing an "m=" section out of a | the answerer <bcp14>MUST</bcp14> apply the answerer procedures for mov ing an "m=" section out of a | |||
BUNDLE group (<xref target="sec-sdp-oa-ans-mov" format="default" secti | BUNDLE group (<xref target="sec-sdp-oa-ans-mov"/>) or | |||
onFormat="of" derivedContent="Section 7.3.2"/>) or | rejecting an "m=" section within a BUNDLE group (<xref target="sec-sdp | |||
rejecting an "m=" section within a BUNDLE group (<xref target="sec-sdp | -oa-ans-rej"/>) to every bundled "m=" section in the offer when | |||
-oa-ans-rej" format="default" sectionFormat="of" derivedContent="Section 7.3.3"/ | ||||
>) to every bundled "m=" section in the offer when | ||||
creating the answer. | creating the answer. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.3.1-5"> | <t> | |||
<xref target="sec-example-add" format="default" sectionFormat="of" der | <xref target="sec-example-add"/> shows an | |||
ivedContent="Section 18.1"/> shows an | ||||
example of an offerer BUNDLE address:port selection. | example of an offerer BUNDLE address:port selection. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.3.1-6"> | <t> | |||
Sections <xref target="sec-sdp-oa-ans-ex" format="counter" sectionForm | Sections <xref target="sec-sdp-oa-ans-ex" format="counter"/> and | |||
at="of" derivedContent="7.3.4"/> and | <xref target="sec-example-add" format="counter"/> show an example of a | |||
<xref target="sec-example-add" format="counter" sectionFormat="of" der | n | |||
ivedContent="18.1"/> show an example of an | ||||
answerer-tagged "m=" section selection. | answerer-tagged "m=" section selection. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-ans-mov" toc="include" numbered="true" remov | <section anchor="sec-sdp-oa-ans-mov"> | |||
eInRFC="false" pn="section-7.3.2"> | <name>Moving a Media Description Out of a BUNDLE Group</name> | |||
<name slugifiedName="name-moving-a-media-description-">Moving a Media | <t> | |||
Description Out of a BUNDLE Group</name> | When an answerer generates the answer, the answerer <bcp14>MUST</bcp14 | |||
<t indent="0" pn="section-7.3.2-1"> | > first check the following criteria if it wants to move a bundled "m=" section | |||
When an answerer generates the answer, if the answerer wants to move a | out of | |||
bundled "m=" section out of | the negotiated BUNDLE group: | |||
the negotiated BUNDLE group, the answerer <bcp14>MUST</bcp14> first ch | ||||
eck the following criteria: | ||||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.3.2-2"> | <li> | |||
<li pn="section-7.3.2-2.1"> | ||||
In the corresponding offer, the "m=" section is within a previousl y negotiated BUNDLE group, and | In the corresponding offer, the "m=" section is within a previousl y negotiated BUNDLE group, and | |||
</li> | </li> | |||
<li pn="section-7.3.2-2.2"> | <li> | |||
In the corresponding offer, the "m=" section contains an SDP 'bund le-only' attribute. | In the corresponding offer, the "m=" section contains an SDP 'bund le-only' attribute. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.3.2-3"> | <t> | |||
If either criterion above is fulfilled, the answerer cannot move the " m=" section out of | If either criterion above is fulfilled, the answerer cannot move the " m=" section out of | |||
the BUNDLE group in the answer. The answerer can reject the whole offe r, reject each | the BUNDLE group in the answer. The answerer can reject the whole offe r, reject each | |||
bundled "m=" section within the BUNDLE group (<xref target="sec-sdp-oa -ans-rej" format="default" sectionFormat="of" derivedContent="Section 7.3.3"/>), | bundled "m=" section within the BUNDLE group (<xref target="sec-sdp-oa -ans-rej"/>), | |||
or keep the "m=" section within the BUNDLE group in the answer and lat er create an offer where | or keep the "m=" section within the BUNDLE group in the answer and lat er create an offer where | |||
the "m=" section is moved out of the BUNDLE group (<xref target="sec-s dp-oa-mod-mov" format="default" sectionFormat="of" derivedContent="Section 7.5.2 "/>). | the "m=" section is moved out of the BUNDLE group (<xref target="sec-s dp-oa-mod-mov"/>). | |||
</t> | </t> | |||
<t indent="0" pn="section-7.3.2-4"> | <t indent="3"> | |||
NOTE: One consequence of the rules above is that, once a BUNDLE group has been negotiated, a bundled "m=" section | NOTE: One consequence of the rules above is that, once a BUNDLE group has been negotiated, a bundled "m=" section | |||
cannot be moved out of the BUNDLE group in an answer. Instead, an offe r is needed. | cannot be moved out of the BUNDLE group in an answer. Instead, an offe r is needed. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.3.2-5"> | <t> | |||
When the answerer generates an answer, in which it moves a bundled "m= | When the answerer generates an answer in which it moves a bundled "m=" | |||
" section out | section out | |||
of a BUNDLE group, the answerer: | of a BUNDLE group, the answerer: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.3.2-6"> | <li> | |||
<li pn="section-7.3.2-6.1"> | ||||
<bcp14>MUST</bcp14> assign a unique address:port to the "m=" secti on; | <bcp14>MUST</bcp14> assign a unique address:port to the "m=" secti on; | |||
</li> | </li> | |||
<li pn="section-7.3.2-6.2"> | <li> | |||
<bcp14>MUST</bcp14> include any applicable SDP attribute in the "m | <bcp14>MUST</bcp14> include any applicable SDP attribute in the "m | |||
=" section, using the normal | =" section using the normal | |||
offer/answer procedures for each attribute; | offer/answer procedures for each attribute; | |||
</li> | </li> | |||
<li pn="section-7.3.2-6.3"> | <li> | |||
<bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | <bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | |||
the SDP 'group:BUNDLE' attribute identification-tag list associated with | the SDP 'group:BUNDLE' attribute identification-tag list associated with | |||
the BUNDLE group; and | the BUNDLE group; and | |||
</li> | </li> | |||
<li pn="section-7.3.2-6.4"> | <li> | |||
<bcp14>MUST NOT</bcp14> include an SDP 'bundle-only' attribute to the "m=" section. | <bcp14>MUST NOT</bcp14> include an SDP 'bundle-only' attribute to the "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.3.2-7"> | <t> | |||
Because an answerer is not allowed to move an "m=" section from one BU NDLE group to another within an answer | Because an answerer is not allowed to move an "m=" section from one BU NDLE group to another within an answer | |||
(<xref target="sec-sdp-oa-ans" format="default" sectionFormat="of" der ivedContent="Section 7.3"/>), if | (<xref target="sec-sdp-oa-ans"/>), if | |||
the answerer wants to move an "m=" section from one BUNDLE group to an other, it <bcp14>MUST</bcp14> first move the | the answerer wants to move an "m=" section from one BUNDLE group to an other, it <bcp14>MUST</bcp14> first move the | |||
"m=" section out of the current BUNDLE group and then generate an offe r where the "m=" section is | "m=" section out of the current BUNDLE group and then generate an offe r where the "m=" section is | |||
added to another BUNDLE group (<xref target="sec-sdp-oa-mod-add" forma t="default" sectionFormat="of" derivedContent="Section 7.5.1"/>). | added to another BUNDLE group (<xref target="sec-sdp-oa-mod-add"/>). | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-ans-rej" toc="include" numbered="true" remov | <section anchor="sec-sdp-oa-ans-rej"> | |||
eInRFC="false" pn="section-7.3.3"> | <name>Rejecting a Media Description in a BUNDLE Group</name> | |||
<name slugifiedName="name-rejecting-a-media-descripti">Rejecting a Med | <t> | |||
ia Description in a BUNDLE Group</name> | ||||
<t indent="0" pn="section-7.3.3-1"> | ||||
When an answerer wants to reject a bundled "m=" section in an answer, it <bcp14>MUST</bcp14> first check | When an answerer wants to reject a bundled "m=" section in an answer, it <bcp14>MUST</bcp14> first check | |||
the following criterion: | the following criterion: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.3.3-2"> | <li> | |||
<li pn="section-7.3.3-2.1"> | ||||
In the corresponding offer (subsequent), the "m=" section is the off erer-tagged "m=" section. | In the corresponding offer (subsequent), the "m=" section is the off erer-tagged "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.3.3-3"> | <t> | |||
If the criterion above is fulfilled, the answerer cannot reject the "m =" section in | If the criterion above is fulfilled, the answerer cannot reject the "m =" section in | |||
the answer. The answerer can reject the whole offer, reject each bundl ed "m=" section | the answer. The answerer can reject the whole offer, reject each bundl ed "m=" section | |||
within the BUNDLE group, or keep the "m=" section within the BUNDLE gr oup in the answer and later create | within the BUNDLE group, or keep the "m=" section within the BUNDLE gr oup in the answer and later create | |||
an offer where the "m=" section is disabled within the BUNDLE group (< xref target="sec-sdp-oa-mod-dis" format="default" sectionFormat="of" derivedCont ent="Section 7.5.3"/>). | an offer where the "m=" section is disabled within the BUNDLE group (< xref target="sec-sdp-oa-mod-dis"/>). | |||
</t> | </t> | |||
<t indent="0" pn="section-7.3.3-4"> | <t> | |||
When an answerer generates an answer, in which it rejects a bundled "m | When an answerer generates an answer in which it rejects a bundled "m= | |||
=" section, | " section, | |||
the answerer: | the answerer: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.3.3-5"> | <li> | |||
<li pn="section-7.3.3-5.1"> | ||||
<bcp14>MUST</bcp14> assign a zero port value to the "m=" section, according to the procedures in | <bcp14>MUST</bcp14> assign a zero port value to the "m=" section, according to the procedures in | |||
<xref target="RFC3264" format="default" sectionFormat="of" derivedCo ntent="RFC3264"/>; | <xref target="RFC3264"/>; | |||
</li> | </li> | |||
<li pn="section-7.3.3-5.2"> | <li> | |||
<bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | <bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | |||
the SDP 'group:BUNDLE' attribute identification-tag list associated with | the SDP 'group:BUNDLE' attribute identification-tag list associated with | |||
the BUNDLE group; and | the BUNDLE group; and | |||
</li> | </li> | |||
<li pn="section-7.3.3-5.3"> | <li> | |||
<bcp14>MUST NOT</bcp14> include an SDP 'bundle-only' attribute in the "m=" section. | <bcp14>MUST NOT</bcp14> include an SDP 'bundle-only' attribute in the "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-ans-ex" numbered="true" toc="include" remove | <section anchor="sec-sdp-oa-ans-ex"> | |||
InRFC="false" pn="section-7.3.4"> | <name>Example: SDP Answer</name> | |||
<name slugifiedName="name-example-sdp-answer">Example: SDP Answer</nam | <t> | |||
e> | The example below shows an answer based on the corresponding offer in | |||
<t indent="0" pn="section-7.3.4-1"> | <xref target="sec-sdp-oa-ino-ex"/>. | |||
The example below shows an answer, based on the corresponding offer in | ||||
<xref target="sec-sdp-oa-ino-ex" format="default" sectionFormat="of" d | ||||
erivedContent="Section 7.2.2"/>. | ||||
The answerer accepts both bundled "m=" sections within the created | The answerer accepts both bundled "m=" sections within the created | |||
BUNDLE group. The audio "m=" section is the answerer-tagged "m=" secti on, indicated | BUNDLE group. The audio "m=" section is the answerer-tagged "m=" secti on, indicated | |||
by placing the identification-tag associated with the "m=" section | by placing the identification-tag associated with the "m=" section | |||
(answerer BUNDLE-tag) first in the SDP group;BUNDLE attribute | (answerer BUNDLE-tag) first in the SDP 'group:BUNDLE' attribute | |||
identification-id list. | identification-id list. | |||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-7.3.4-2">SDP Answer</t> | <t keepWithNext="true">SDP Answer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-7.3.4-3"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | |||
s= | s= | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 20000 RTP/AVP 0 | m=audio 20000 RTP/AVP 0 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 1230 ¶ | skipping to change at line 908 ¶ | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 20000 RTP/AVP 32 | m=video 20000 RTP/AVP 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-ans-8843" numbered="true" toc="include" remo | <section anchor="sec-sdp-oa-ans-8843"> | |||
veInRFC="false" pn="section-7.3.5"> | <name>RFC 8843 Considerations</name> | |||
<name slugifiedName="name-example-sdp-answer-8843">RFC 8843 Considerat | <t> | |||
ions</name> | In <xref target="RFC8843"/>, instead of assigning the offerer BUNDLE | |||
<t indent="0" pn="section-7.3.5-1"> | address:port to | |||
In RFC 8843, instead of assigning the offerer BUNDLE address:port to | ||||
each "m=" section within the BUNDLE group when modifying the session | each "m=" section within the BUNDLE group when modifying the session | |||
(<xref target="name-modifying-the-session" format="default" sectionF | (<xref target="sec-sdp-oa-mod"/>), the offerer only assigned the off | |||
ormat="of" | erer BUNDLE | |||
derivedContent="Section 7.5"/>), the offerer only assigned the offer | ||||
er BUNDLE | ||||
address:port to the offerer-tagged "m=" section. For every other "m =" section | address:port to the offerer-tagged "m=" section. For every other "m =" section | |||
within the BUNDLE group, the offerer included an SDP 'bundle-only' a ttribute in, | within the BUNDLE group, the offerer included an SDP 'bundle-only' a ttribute in, | |||
and assigned a zero port value to, the "m=" section. The way an answ erer compliant | and assigned a zero port value to, the "m=" section. The way an answ erer compliant | |||
to this specification processes such offer is considered an implemen | with this specification processes such offer is considered an implem | |||
tation issue | entation issue | |||
(e.g., based on whether the answerer needs to be backward compatible | (e.g., based on whether the answerer needs to be backward compatible | |||
with RFC 8843 | with offerers compliant with <xref target="RFC8843"/>) and is outside the scope | |||
compliant offerers), and is outside the scope of this specification. | of this specification. The example below | |||
The example below | shows such an SDP Offer: | |||
shows such SDP offer: | ||||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-7.3.5-2">SDP Offer</t> | <t keepWithNext="true">SDP Offer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-7.3.5-3"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 1273 ¶ | skipping to change at line 949 ¶ | |||
m=video 0 RTP/AVP 31 32 | m=video 0 RTP/AVP 31 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=bundle-only | a=bundle-only | |||
a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-off-ans" toc="include" numbered="true" removeI | <section anchor="sec-sdp-oa-off-ans"> | |||
nRFC="false" pn="section-7.4"> | <name>Offerer Processing of the SDP Answer</name> | |||
<name slugifiedName="name-offerer-processing-of-the-s">Offerer Processin | <t> | |||
g of the SDP Answer</name> | ||||
<t indent="0" pn="section-7.4-1"> | ||||
When an offerer receives an answer, if the answer contains a BUNDLE grou p, the offerer | When an offerer receives an answer, if the answer contains a BUNDLE grou p, the offerer | |||
<bcp14>MUST</bcp14> check that any bundled "m=" section in the answer wa s indicated as bundled in the | <bcp14>MUST</bcp14> check that any bundled "m=" section in the answer wa s indicated as bundled in the | |||
corresponding offer (for the same BUNDLE group). If there is no mismatch , the offerer <bcp14>MUST</bcp14> apply the properties (BUNDLE address:port, | corresponding offer (for the same BUNDLE group). If there is no mismatch , the offerer <bcp14>MUST</bcp14> apply the properties (BUNDLE address:port, | |||
BUNDLE attributes, etc.) of the offerer-tagged "m=" section (selected by the answerer; see | BUNDLE attributes, etc.) of the offerer-tagged "m=" section (selected by the answerer; see | |||
<xref format="default" target="sec-sdp-oa-ans-off" sectionFormat="of" de rivedContent="Section 7.3.1"/>) to each bundled "m=" section | <xref target="sec-sdp-oa-ans-off"/>) to each bundled "m=" section | |||
within the BUNDLE group. | within the BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.4-2"> | <t indent="3"> | |||
NOTE: As the answerer might reject one or more bundled "m=" sections in | NOTE: As the answerer might reject one or more bundled "m=" sections in | |||
an initial BUNDLE offer, | an initial BUNDLE offer | |||
or move a bundled "m=" section out of a BUNDLE group, a given bundled "m =" section in the | or move a bundled "m=" section out of a BUNDLE group, a given bundled "m =" section in the | |||
offer might not be indicated as bundled in the corresponding answer. | offer might not be indicated as bundled in the corresponding answer. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.4-3"> | <t> | |||
If the answer does not contain a BUNDLE group, the offerer <bcp14>MUST</ bcp14> process the answer | If the answer does not contain a BUNDLE group, the offerer <bcp14>MUST</ bcp14> process the answer | |||
as a normal answer. | as a normal answer. | |||
</t> | </t> | |||
<section anchor="sec-sdp-oa-off-8843" numbered="true" toc="include" remo | <section anchor="sec-sdp-oa-off-8843"> | |||
veInRFC="false" pn="section-7.4.1"> | <name>RFC 8843 Considerations</name> | |||
<name slugifiedName="name-example-sdp-offer-8843">RFC 8843 Considerati | <t> | |||
ons</name> | In <xref target="RFC8843"/>, instead of assigning the answerer BUNDL | |||
<t indent="0" pn="section-7.4.1-1"> | E address:port to | |||
In RFC 8843, instead of assigning the answerer BUNDLE address:port t | ||||
o | ||||
each "m=" section within the BUNDLE group when generating the | each "m=" section within the BUNDLE group when generating the | |||
SDP answer(<xref target="sec-sdp-oa-ans" format="default" | SDP Answer (<xref target="sec-sdp-oa-ans"/>), the answerer only assi | |||
sectionFormat="of" derivedContent="Section 7.3"/>), the answerer onl | gned the | |||
y assigned the | ||||
answerer BUNDLE address:port to the answerer-tagged "m=" section. | answerer BUNDLE address:port to the answerer-tagged "m=" section. | |||
For every other "m=" section within the BUNDLE group, the answerer | For every other "m=" section within the BUNDLE group, the answerer | |||
included an SDP 'bundle-only' attribute in, and assigned a zero port | included an SDP 'bundle-only' attribute in, and assigned a zero port | |||
value to, the "m=" section. The way an offerer compliant | value to, the "m=" section. The way an offerer compliant | |||
to this specification processes such SDP answer is considered an imp | with this specification processes such an SDP Answer is considered a | |||
lementation issue | n implementation issue | |||
(e.g., based on whether the answerer needs to be backward compatible | (e.g., based on whether the answerer needs to be backward compatible | |||
with RFC 8843 | with offerers compliant with <xref target="RFC8843"/>) and is outside the scope | |||
compliant offerers), and is outside the scope of this specification. | of this specification. The example below | |||
The example below | shows such an SDP Answer: | |||
shows such SDP answer: | ||||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-7.4.1-2">SDP Answer</t> | <t keepWithNext="true">SDP Answer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-7.4.1-3"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | |||
s= | s= | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 20000 RTP/AVP 0 | m=audio 20000 RTP/AVP 0 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 1333 ¶ | skipping to change at line 1007 ¶ | |||
m=video 0 RTP/AVP 32 | m=video 0 RTP/AVP 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=bundle-only | a=bundle-only | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-mod" toc="include" numbered="true" removeInRFC | <section anchor="sec-sdp-oa-mod"> | |||
="false" pn="section-7.5"> | <name>Modifying the Session</name> | |||
<name slugifiedName="name-modifying-the-session">Modifying the Session</ | <t> | |||
name> | When a BUNDLE group has been previously negotiated and an offerer gene | |||
<t indent="0" pn="section-7.5-1"> | rates a subsequent | |||
When a BUNDLE group has been previously negotiated, and an offerer gen | ||||
erates a subsequent | ||||
offer, the offerer <bcp14>MUST</bcp14>: | offer, the offerer <bcp14>MUST</bcp14>: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7 | <ul> | |||
.5-2"> | <li> | |||
<li pn="section-7.5-2.1"> | ||||
Pick one bundled "m=" section as the offerer-tagged "m=" section. The offerer | Pick one bundled "m=" section as the offerer-tagged "m=" section. The offerer | |||
can pick either the "m=" section that was previously selected by t he answerer | can pick either the "m=" section that was previously selected by t he answerer | |||
as the offerer-tagged "m=" section or another bundled "m=" section within the | as the offerer-tagged "m=" section or another bundled "m=" section within the | |||
BUNDLE group; | BUNDLE group; | |||
</li> | </li> | |||
<li pn="section-7.5-2.2"> | <li> | |||
Assign a BUNDLE address:port (previously negotiated or newly | Assign a BUNDLE address:port (previously negotiated or newly | |||
suggested) to the offerer-tagged "m=" section, and to every other | suggested) to the offerer-tagged "m=" section and to every other | |||
bundled "m=" section within the BUNDLE group; | bundled "m=" section within the BUNDLE group; | |||
</li> | </li> | |||
<li pn="section-7.5-2.4"> | <li> | |||
Include SDP attributes in the bundled "m=" sections following the rules in | Include SDP attributes in the bundled "m=" sections following the rules in | |||
<xref target="sec-sdp-oa-cat" format="default" sectionFormat="of" derivedContent="Section 7.1.3"/>; | <xref target="sec-sdp-oa-cat"/>; | |||
</li> | </li> | |||
<li pn="section-7.5-2.5"> | <li> | |||
Include an SDP 'group:BUNDLE' attribute in the offer; and | Include an SDP 'group:BUNDLE' attribute in the offer; and | |||
</li> | </li> | |||
<li pn="section-7.5-2.6"> | <li> | |||
Place the identification-tag of each bundled "m=" section in the | Place the identification-tag of each bundled "m=" section in the | |||
SDP 'group:BUNDLE' attribute identification-tag list. The offerer BUNDLE-tag | SDP 'group:BUNDLE' attribute identification-tag list. The offerer BUNDLE-tag | |||
indicates the offerer-tagged "m=" section. | indicates the offerer-tagged "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.5-3"> | <t> | |||
The offerer <bcp14>MUST NOT</bcp14> pick a given bundled "m=" section as the offerer-tagged "m=" section if: | The offerer <bcp14>MUST NOT</bcp14> pick a given bundled "m=" section as the offerer-tagged "m=" section if: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7 | <ul> | |||
.5-4"> | <li> | |||
<li pn="section-7.5-4.1"> | ||||
The offerer wants to move the "m=" section out of the BUNDLE group | The offerer wants to move the "m=" section out of the BUNDLE group | |||
(<xref target="sec-sdp-oa-mod-mov" format="default" sectionFormat= "of" derivedContent="Section 7.5.2"/>), or | (<xref target="sec-sdp-oa-mod-mov"/>), or | |||
</li> | </li> | |||
<li pn="section-7.5-4.2"> | <li> | |||
The offerer wants to disable the "m=" section (<xref format="defau | The offerer wants to disable the "m=" section (<xref target="sec-s | |||
lt" target="sec-sdp-oa-mod-dis" sectionFormat="of" derivedContent="Section 7.5.3 | dp-oa-mod-dis"/>). | |||
"/>). | ||||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.5-5"> | <t> | |||
The offerer can modify the offerer BUNDLE address:port, add and remove SDP attributes, or modify | The offerer can modify the offerer BUNDLE address:port, add and remove SDP attributes, or modify | |||
SDP attribute values in the subsequent offer. Changes to the offerer B UNDLE address:port and the | SDP attribute values in the subsequent offer. Changes to the offerer B UNDLE address:port and the | |||
offerer BUNDLE attributes will (if the offer is accepted by the answer er) be applied to each | offerer BUNDLE attributes will (if the offer is accepted by the answer er) be applied to each | |||
bundled "m=" section within the BUNDLE group. | bundled "m=" section within the BUNDLE group. | |||
</t> | </t> | |||
<section anchor="sec-sdp-oa-mod-add" toc="include" numbered="true" remov | <section anchor="sec-sdp-oa-mod-add"> | |||
eInRFC="false" pn="section-7.5.1"> | <name>Adding a Media Description to a BUNDLE Group</name> | |||
<name slugifiedName="name-adding-a-media-description-">Adding a Media | <t> | |||
Description to a BUNDLE Group</name> | When an offerer generates a subsequent offer in which it wants to add | |||
<t indent="0" pn="section-7.5.1-1"> | a bundled "m=" section to | |||
When an offerer generates a subsequent offer, in which it wants to add | a previously negotiated BUNDLE group, the offerer follows the procedur | |||
a bundled "m=" section to | es in <xref target="sec-sdp-oa-mod"/>. The offerer picks either the added "m=" s | |||
a previously negotiated BUNDLE group, the offerer follows the procedur | ection or an "m=" section | |||
es in <xref target="sec-sdp-oa-mod" format="default" sectionFormat="of" derivedC | ||||
ontent="Section 7.5"/>. The offerer picks either the added "m=" section or an "m | ||||
=" section | ||||
previously added to the BUNDLE group as the offerer-tagged "m=" sectio n. | previously added to the BUNDLE group as the offerer-tagged "m=" sectio n. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.5.1-2"> | <t indent="3"> | |||
NOTE: As described in <xref target="sec-sdp-oa-ans-mov" format="defaul | NOTE: As described in <xref target="sec-sdp-oa-ans-mov"/>, the answere | |||
t" sectionFormat="of" derivedContent="Section 7.3.2"/>, the answerer cannot move | r cannot move the added "m=" section | |||
the added "m=" section | ||||
out of the BUNDLE group in its answer. If the answerer wants to move t he "m=" section out of the BUNDLE group, it will have to first accept | out of the BUNDLE group in its answer. If the answerer wants to move t he "m=" section out of the BUNDLE group, it will have to first accept | |||
it into the BUNDLE group in the answer, and then send a subsequent off | it into the BUNDLE group in the answer and then send a subsequent offe | |||
er where the "m=" section is moved out of the BUNDLE group | r where the "m=" section is moved out of the BUNDLE group | |||
(<xref target="sec-sdp-oa-mod-mov" format="default" sectionFormat="of" | (<xref target="sec-sdp-oa-mod-mov"/>). | |||
derivedContent="Section 7.5.2"/>). | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-mod-mov" toc="include" numbered="true" remov | <section anchor="sec-sdp-oa-mod-mov"> | |||
eInRFC="false" pn="section-7.5.2"> | <name>Moving a Media Description Out of a BUNDLE Group</name> | |||
<name slugifiedName="name-moving-a-media-description-o">Moving a Media | <t> | |||
Description Out of a BUNDLE Group</name> | When an offerer generates a subsequent offer in which it wants to remo | |||
<t indent="0" pn="section-7.5.2-1"> | ve a bundled "m=" section from | |||
When an offerer generates a subsequent offer, in which it wants to rem | ||||
ove a bundled "m=" section from | ||||
a BUNDLE group, the offerer: | a BUNDLE group, the offerer: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.5.2-2"> | <li> | |||
<li pn="section-7.5.2-2.1"> | ||||
<bcp14>MUST</bcp14> assign a unique address:port to the "m=" secti on; | <bcp14>MUST</bcp14> assign a unique address:port to the "m=" secti on; | |||
</li> | </li> | |||
<li pn="section-7.5.2-2.2"> | <li> | |||
<bcp14>MUST</bcp14> include SDP attributes in the "m=" section fol lowing the | <bcp14>MUST</bcp14> include SDP attributes in the "m=" section fol lowing the | |||
normal offer/answer rules for each attribute; | normal offer/answer rules for each attribute; | |||
</li> | </li> | |||
<li pn="section-7.5.2-2.3"> | <li> | |||
<bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | <bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | |||
the SDP 'group:BUNDLE' attribute identification-tag list associated with | the SDP 'group:BUNDLE' attribute identification-tag list associated with | |||
the BUNDLE group; and | the BUNDLE group; and | |||
</li> | </li> | |||
<li pn="section-7.5.2-2.4"> | <li> | |||
<bcp14>MUST NOT</bcp14> assign an SDP 'bundle-only' attribute to t he "m=" section. | <bcp14>MUST NOT</bcp14> assign an SDP 'bundle-only' attribute to t he "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.5.2-3"> | <t> | |||
For the other bundled "m=" sections within the BUNDLE group, the offer er follows the procedures | For the other bundled "m=" sections within the BUNDLE group, the offer er follows the procedures | |||
in <xref target="sec-sdp-oa-mod" format="default" sectionFormat="of" d erivedContent="Section 7.5"/>. | in <xref target="sec-sdp-oa-mod"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.5.2-4"> | <t> | |||
An offerer <bcp14>MUST NOT</bcp14> move an "m=" section from one BUNDL E group to another within a | An offerer <bcp14>MUST NOT</bcp14> move an "m=" section from one BUNDL E group to another within a | |||
single offer. If the offerer wants to move an "m=" section from one BU NDLE group to | single offer. If the offerer wants to move an "m=" section from one BU NDLE group to | |||
another, it <bcp14>MUST</bcp14> first move the BUNDLE group out of the current BUNDLE group, and then | another, it <bcp14>MUST</bcp14> first move the BUNDLE group out of the current BUNDLE group and then | |||
generate a second offer where the "m=" section is added to another BUN DLE group | generate a second offer where the "m=" section is added to another BUN DLE group | |||
(<xref target="sec-sdp-oa-mod-add" format="default" sectionFormat="of" derivedContent="Section 7.5.1"/>). | (<xref target="sec-sdp-oa-mod-add"/>). | |||
</t> | </t> | |||
<t indent="0" pn="section-7.5.2-5"> | <t> | |||
<xref target="sec-example-off-mov" format="default" sectionFormat="of" | <xref target="sec-example-off-mov"/> | |||
derivedContent="Section 18.4"/> | ||||
shows an example of an offer for moving an "m=" section out of a BUNDL E group. | shows an example of an offer for moving an "m=" section out of a BUNDL E group. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-mod-dis" toc="include" numbered="true" remov | <section anchor="sec-sdp-oa-mod-dis"> | |||
eInRFC="false" pn="section-7.5.3"> | <name>Disabling a Media Description in a BUNDLE Group</name> | |||
<name slugifiedName="name-disabling-a-media-descripti">Disabling a Med | <t> | |||
ia Description in a BUNDLE Group</name> | When an offerer generates a subsequent offer in which it wants to disa | |||
<t indent="0" pn="section-7.5.3-1"> | ble a bundled "m=" section from | |||
When an offerer generates a subsequent offer, in which it wants to dis | ||||
able a bundled "m=" section from | ||||
a BUNDLE group, the offerer: | a BUNDLE group, the offerer: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section | <ul> | |||
-7.5.3-2"> | <li> | |||
<li pn="section-7.5.3-2.1"> | ||||
<bcp14>MUST</bcp14> assign a zero port value to the "m=" section, following the procedures | <bcp14>MUST</bcp14> assign a zero port value to the "m=" section, following the procedures | |||
in <xref target="RFC4566" format="default" sectionFormat="of" derive dContent="RFC4566"/>; | in <xref target="RFC4566"/>; | |||
</li> | </li> | |||
<li pn="section-7.5.3-2.2"> | <li> | |||
<bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | <bcp14>MUST NOT</bcp14> place the identification-tag associated wi th the "m=" section in | |||
the SDP 'group:BUNDLE' attribute identification-tag list associated with | the SDP 'group:BUNDLE' attribute identification-tag list associated with | |||
the BUNDLE group; and | the BUNDLE group; and | |||
</li> | </li> | |||
<li pn="section-7.5.3-2.3"> | <li> | |||
<bcp14>MUST NOT</bcp14> assign an SDP 'bundle-only' attribute to t he "m=" section. | <bcp14>MUST NOT</bcp14> assign an SDP 'bundle-only' attribute to t he "m=" section. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-7.5.3-3"> | <t> | |||
For the other bundled "m=" sections within the BUNDLE group, the offer er follows the procedures | For the other bundled "m=" sections within the BUNDLE group, the offer er follows the procedures | |||
in <xref target="sec-sdp-oa-mod" format="default" sectionFormat="of" d erivedContent="Section 7.5"/>. | in <xref target="sec-sdp-oa-mod"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-7.5.3-4"> | <t> | |||
<xref target="sec-example-off-dis" format="default" sectionFormat="of" | <xref target="sec-example-off-dis"/> | |||
derivedContent="Section 18.5"/> | ||||
shows an example of an offer and answer for disabling an "m=" section within a | shows an example of an offer and answer for disabling an "m=" section within a | |||
BUNDLE group. | BUNDLE group. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-sdp-oa-sip" toc="include" numbered="true" removeInRFC | <section anchor="sec-sdp-oa-sip"> | |||
="false" pn="section-7.6"> | <name>3PCC Considerations</name> | |||
<name slugifiedName="name-modifying-the-session-sip">3PCC Considerations | <t> | |||
</name> | In some third-party call control (3PCC) scenarios, a new session will be | |||
<t indent="0" pn="section-7.6-1"> | established between an endpoint that is currently part of an ongoing | |||
In some 3rd Party Call Control (3PCC) scenarios a new session will be | session and an endpoint that is not currently part of an ongoing | |||
established between an endpoint that is currently part of an ongoing | session. In this situation, the endpoint that is not part of a | |||
session and an endpoint that is not currently part of an ongoing | session, while expecting an initial offer, can receive an SDP offer | |||
session. In this situation, the endpoint that is not part of a session | created as a subsequent offer. The text below describes how this can | |||
, | occur with the Session Initiation Protocol (SIP) <xref target="RFC3261"/>. | |||
while expecting an initial offer, can receive an SDP offer created as | </t> | |||
a subsequent offer. The text below describes how this can occur with | ||||
the Session Initiation Protocol (SIP) <xref format="default" target="R | ||||
FC3261" | ||||
sectionFormat="of" derivedContent="RFC3261"/>. | ||||
</t> | ||||
<t> | ||||
SIP allows a User Agent Client (UAC) to send a re-INVITE request witho | ||||
ut | ||||
an SDP body (sometimes referred to as an empty re-INVITE). In such cas | ||||
es, | ||||
the User Agent Server (UAS) will include an SDP offer in the associate | ||||
d | ||||
200 (OK) response, and when the UAS is a part of an ongoing SIP sessio | ||||
n, | ||||
this offer will be a subsequent offer. This offer will be received | ||||
by the 3PCC controller (UAC) and then forwarded to another User Agent | ||||
(UA). | ||||
When that UA is not part of an ongoing SIP session, as noted above, | ||||
it will process the offer as an initial SDP offer. | ||||
</t> | ||||
<t> | <t> | |||
When the BUNDLE mechanism is used, an initial BUNDLE offer is construc | SIP <xref target="RFC3261"/> allows | |||
ted using | a User Agent Client (UAC) to send a re-INVITE request without an SDP b | |||
different rules than subsequent BUNDLE offers, and it cannot be assume | ody (sometimes referred to as an "empty re-INVITE"). | |||
d that a | In such cases, the User Agent Server (UAS) will include an SDP Offer i | |||
UA is able to correctly process a subsequent BUNDLE offer as an initia | n the associated 200 (OK) response; when the UAS is a part of an | |||
l BUNDLE offer. | ongoing SIP session, this offer will be a subsequent offer. This | |||
Therefore, the 3PCC controller SHOULD take actions to mitigate this | offer will be received by the 3PCC controller (UAC) and then | |||
problem, and e.g., rewrite the subsequent BUNDLE offer into a valid | forwarded to another User Agent (UA). When that UA is not part of an | |||
initial BUNDLE offer (<xref target="sec-sdp-oa-ino" format="default" | ongoing SIP session, as noted above, it will process the offer as an | |||
sectionFormat="of" derivedContent="Section 7.2"/>), before it forwards | initial SDP offer. </t> | |||
the BUNDLE offer to a UA. | <t> | |||
When the BUNDLE mechanism is used, an initial BUNDLE offer is | ||||
constructed using different rules than subsequent BUNDLE offers, and | ||||
it cannot be assumed that a UA is able to correctly process a | ||||
subsequent BUNDLE offer as an initial BUNDLE offer. Therefore, the | ||||
3PCC controller <bcp14>SHOULD</bcp14> take action to mitigate this problem, | ||||
e.g., rewrite the subsequent BUNDLE offer into a valid initial BUNDLE | ||||
offer (<xref target="sec-sdp-oa-ino"/>), before it forwards the BUNDLE offer | ||||
to a UA. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-protocol-id" toc="include" numbered="true" removeInRFC= | <section anchor="sec-protocol-id"> | |||
"false" pn="section-8"> | <name>Protocol Identification</name> | |||
<name slugifiedName="name-protocol-identification">Protocol Identification | <t> | |||
</name> | ||||
<t indent="0" pn="section-8-1"> | ||||
Each "m=" section within a BUNDLE group <bcp14>MUST</bcp14> use the same t ransport- | Each "m=" section within a BUNDLE group <bcp14>MUST</bcp14> use the same t ransport- | |||
layer protocol. If bundled "m=" sections use different upper-layer protoco ls | layer protocol. If bundled "m=" sections use different upper-layer protoco ls | |||
on top of the transport-layer protocol, there <bcp14>MUST</bcp14> exist a publicly | on top of the transport-layer protocol, there <bcp14>MUST</bcp14> exist a publicly | |||
available specification that describes how a mechanism associates | available specification that describes how a mechanism associates | |||
received data with the correct protocol for this particular protocol combi nation. | received data with the correct protocol for this particular protocol combi nation. | |||
</t> | </t> | |||
<t indent="0" pn="section-8-2"> | <t> | |||
In addition, if received data can be associated with more than | In addition, if received data can be associated with more than | |||
one bundled "m=" section, there <bcp14>MUST</bcp14> exist a publicly avail able | one bundled "m=" section, there <bcp14>MUST</bcp14> exist a publicly avail able | |||
specification that describes a mechanism for associating the | specification that describes a mechanism for associating the | |||
received data with the correct "m=" section. | received data with the correct "m=" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-8-3"> | <t> | |||
This document describes a mechanism to identify the | This document describes a mechanism to identify the | |||
protocol of received data among the Session Traversal Utilities for NAT (S TUN), DTLS, and the Secure Real-time Transport Protocol (SRTP) | protocol of received data among the Session Traversal Utilities for NAT (S TUN), Datagram Transport Layer Security (DTLS), and the Secure Real-time Transpo rt Protocol (SRTP) | |||
(in any combination) when UDP is used as a transport-layer protocol, | (in any combination) when UDP is used as a transport-layer protocol, | |||
but it does not describe how to identify different protocols transported o n | but it does not describe how to identify different protocols transported o n | |||
DTLS. | DTLS. | |||
While the mechanism is generally applicable to other protocols and | While the mechanism is generally applicable to other protocols and | |||
transport-layer protocols, any such use requires further specification | transport-layer protocols, any such use requires further specification | |||
that encompasses how to multiplex multiple protocols on a given transport- layer protocol | that encompasses how to multiplex multiple protocols on a given transport- layer protocol | |||
and how to associate received data with the correct protocols. | and how to associate received data with the correct protocols. | |||
</t> | </t> | |||
<section anchor="sec-packets-id-sds" toc="include" numbered="true" removeI | <section anchor="sec-packets-id-sds"> | |||
nRFC="false" pn="section-8.1"> | <name>STUN, DTLS, and SRTP</name> | |||
<name slugifiedName="name-stun-dtls-and-srtp">STUN, DTLS, and SRTP</name | <t> | |||
> | <xref target="RFC5764" sectionFormat="of" section="5.1.2"/> describes a | |||
<t indent="0" pn="section-8.1-1"> | ||||
Section 5.1.2 of <xref format="default" target="RFC5764" sectionFormat=" | ||||
of" derivedContent="RFC5764"/> describes a | ||||
mechanism to identify the protocol of a received packet among the STUN, DTLS, and | mechanism to identify the protocol of a received packet among the STUN, DTLS, and | |||
SRTP protocols (in any combination). | SRTP protocols (in any combination). | |||
If an offer or answer includes a bundled "m=" section that represents th ese protocols, the offerer | If an offer or answer includes a bundled "m=" section that represents th ese protocols, the offerer | |||
or answerer <bcp14>MUST</bcp14> support the mechanism described in <xref format="default" target="RFC5764" sectionFormat="of" derivedContent="RFC5764"/> , and no explicit negotiation is required in order to indicate support | or answerer <bcp14>MUST</bcp14> support the mechanism described in <xref target="RFC5764"/>, and no explicit negotiation is required in order to indicat e support | |||
and usage of the mechanism. | and usage of the mechanism. | |||
</t> | </t> | |||
<t indent="0" pn="section-8.1-2"> | <t> | |||
<xref format="default" target="RFC5764" sectionFormat="of" derivedConten | <xref target="RFC5764"/> does not describe how to identify | |||
t="RFC5764"/> does not describe how to identify | ||||
different protocols transported on DTLS, only how to identify the DTLS p rotocol itself. If | different protocols transported on DTLS, only how to identify the DTLS p rotocol itself. If | |||
multiple protocols are transported on DTLS, there <bcp14>MUST</bcp14> ex ist a specification describing a | multiple protocols are transported on DTLS, there <bcp14>MUST</bcp14> ex ist a specification describing a | |||
mechanism for identifying each individual protocol. In addition, if a re ceived DTLS packet | mechanism for identifying each individual protocol. In addition, if a re ceived DTLS packet | |||
can be associated with more than one "m=" section, there <bcp14>MUST</bc p14> exist a specification that | can be associated with more than one "m=" section, there <bcp14>MUST</bc p14> exist a specification that | |||
describes a mechanism for associating the received DTLS packets with the correct "m=" section. | describes a mechanism for associating the received DTLS packets with the correct "m=" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-8.1-3"> | <t> | |||
<xref format="default" target="sec-rtp-pt" sectionFormat="of" derivedCon | <xref target="sec-rtp-pt"/> describes how to | |||
tent="Section 9.2"/> describes how to | ||||
associate the packets in a received SRTP stream with the correct "m=" se ction. | associate the packets in a received SRTP stream with the correct "m=" se ction. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-rtp" toc="include" numbered="true" removeInRFC="false" | <section anchor="sec-rtp"> | |||
pn="section-9"> | <name>RTP Considerations</name> | |||
<name slugifiedName="name-rtp-considerations">RTP Considerations</name> | <section anchor="sec-rtp-sessions"> | |||
<section anchor="sec-rtp-sessions" toc="include" numbered="true" removeInR | <name>Single RTP Session</name> | |||
FC="false" pn="section-9.1"> | <t> | |||
<name slugifiedName="name-single-rtp-session">Single RTP Session</name> | ||||
<t indent="0" pn="section-9.1-1"> | ||||
All RTP-based media within a single BUNDLE group belong to a | All RTP-based media within a single BUNDLE group belong to a | |||
single RTP session <xref format="default" target="RFC3550" sectionFo rmat="of" derivedContent="RFC3550"/>. | single RTP session <xref target="RFC3550"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.1-2"> | <t> | |||
Since a single BUNDLE transport is used for sending and receiving bu ndled media, | Since a single BUNDLE transport is used for sending and receiving bu ndled media, | |||
the symmetric RTP mechanism <xref format="default" target="RFC4961" sectionFormat="of" derivedContent="RFC4961"/> | the symmetric RTP mechanism <xref target="RFC4961"/> | |||
<bcp14>MUST</bcp14> be used for RTP-based bundled media. | <bcp14>MUST</bcp14> be used for RTP-based bundled media. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.1-3"> | <t> | |||
Since a single RTP session is used for each BUNDLE group, all | Since a single RTP session is used for each BUNDLE group, all | |||
"m=" sections representing RTP-based media within a BUNDLE group wil l | "m=" sections representing RTP-based media within a BUNDLE group wil l | |||
share a single Synchronization Source (SSRC) numbering space <xref f ormat="default" target="RFC3550" sectionFormat="of" derivedContent="RFC3550"/>. | share a single synchronization source (SSRC) numbering space <xref t arget="RFC3550"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.1-4"> | <t> | |||
The following rules and restrictions apply for a single RTP | The following rules and restrictions apply for a single RTP | |||
session: | session: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9 | <ul> | |||
.1-5"> | <li> | |||
<li pn="section-9.1-5.1"> | ||||
A specific payload type value can be used in multiple bundled "m =" sections | A specific payload type value can be used in multiple bundled "m =" sections | |||
only if each codec associated with the payload type number share s an identical | only if each codec associated with the payload type number share s an identical | |||
codec configuration (<xref format="default" target="sec-rtp-sess ions-pt" sectionFormat="of" derivedContent="Section 9.1.1"/>). | codec configuration (<xref target="sec-rtp-sessions-pt"/>). | |||
</li> | </li> | |||
<li pn="section-9.1-5.2"> | <li> | |||
The proto value in each bundled RTP-based "m=" section <bcp14>MU ST</bcp14> be identical | The proto value in each bundled RTP-based "m=" section <bcp14>MU ST</bcp14> be identical | |||
(e.g., RTP/AVPF). | (e.g., RTP/AVPF). | |||
</li> | </li> | |||
<li pn="section-9.1-5.3"> | ||||
The RTP MID header extension <bcp14>MUST</bcp14> be enabled, by | <li> | |||
including | The RTP MID header extension <bcp14>MUST</bcp14> be enabled by i | |||
an SDP 'extmap' attribute <xref format="default" target="RFC8285 | ncluding | |||
" sectionFormat="of" derivedContent="RFC8285"/>, | an SDP 'extmap' attribute <xref target="RFC8285"/>, | |||
with a 'urn:ietf:params:rtp- hdrext:sdes:mid' URI value defined | with a 'urn:ietf:params:rtp- hdrext:sdes:mid' URI value defined | |||
in this specification, in each | in this specification in each | |||
bundled RTP-based "m=" section in every offer and answer. | bundled RTP-based "m=" section in every offer and answer. | |||
</li> | </li> | |||
<li pn="section-9.1-5.4"> | <li> | |||
A given SSRC <bcp14>MUST NOT</bcp14> transmit RTP packets using payload types that | A given SSRC <bcp14>MUST NOT</bcp14> transmit RTP packets using payload types that | |||
originate from different bundled "m=" sections. | originate from different bundled "m=" sections. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-9.1-6"> | <t indent="3"> | |||
NOTE: The last bullet above is to avoid sending multiple media types | NOTE: The last bullet above is to avoid sending multiple media types | |||
from the same SSRC. If transmission of multiple media types are done | from the same SSRC. If transmission of multiple media types is done | |||
with time overlap, RTP and RTCP fail to function. Even if done in | with time overlap, RTP and RTCP fail to function. Even if done in th | |||
proper sequence, this causes RTP timestamp rate switching issues | e proper sequence, this causes RTP timestamp rate switching issues | |||
<xref format="default" target="RFC7160" sectionFormat="of" derivedCo | <xref target="RFC7160"/>. However, | |||
ntent="RFC7160"/>. However, | ||||
once an SSRC has left the RTP session (by sending an RTCP BYE packet ), | once an SSRC has left the RTP session (by sending an RTCP BYE packet ), | |||
that SSRC can be reused by another source (possibly associated | that SSRC can be reused by another source (possibly associated | |||
with a different bundled "m=" section) after a delay of 5 RTCP repor ting intervals | with a different bundled "m=" section) after a delay of 5 RTCP repor ting intervals | |||
(the delay is to ensure the SSRC has timed out, in case the RTCP BYE | (the delay is to ensure the SSRC has timed out in case the RTCP BYE | |||
packet was lost <xref format="default" target="RFC3550" sectionForma | packet was lost <xref target="RFC3550"/>). | |||
t="of" derivedContent="RFC3550"/>). | ||||
</t> | </t> | |||
<t indent="0" pn="section-9.1-7"> | <t> | |||
<xref format="default" target="RFC7657" sectionFormat="of" derivedCo | <xref target="RFC7657"/> defines Differentiated Services | |||
ntent="RFC7657"/> defines Differentiated Services | ||||
(Diffserv) considerations for RTP-based bundled media sent using a m ixture of Diffserv Codepoints. | (Diffserv) considerations for RTP-based bundled media sent using a m ixture of Diffserv Codepoints. | |||
</t> | </t> | |||
<section anchor="sec-rtp-sessions-pt" toc="include" numbered="true" remo | <section anchor="sec-rtp-sessions-pt"> | |||
veInRFC="false" pn="section-9.1.1"> | <name>Payload Type (PT) Value Reuse</name> | |||
<name slugifiedName="name-payload-type-pt-value-reuse">Payload Type (P | <t> | |||
T) Value Reuse</name> | ||||
<t indent="0" pn="section-9.1.1-1"> | ||||
Multiple bundled "m=" sections might describe RTP-based media. As al l RTP-based | Multiple bundled "m=" sections might describe RTP-based media. As al l RTP-based | |||
media associated with a BUNDLE group belong to the same RTP session, in order | media associated with a BUNDLE group belong to the same RTP session, in order | |||
for a given payload type value to be used inside more than one bundl ed "m=" section, | for a given payload type value to be used inside more than one bundl ed "m=" section, | |||
all codecs associated with the payload type number <bcp14>MUST</bcp1 4> share an identical codec | all codecs associated with the payload type number <bcp14>MUST</bcp1 4> share an identical codec | |||
configuration. This means that the codecs <bcp14>MUST</bcp14> share the same media type, | configuration. This means that the codecs <bcp14>MUST</bcp14> share the same media type, | |||
encoding name, clock rate, and any parameter that can affect the cod ec configuration | encoding name, clock rate, and any parameter that can affect the cod ec configuration | |||
and packetization. <xref format="default" target="RFC8859" sectionFo rmat="of" derivedContent="RFC8859"/> lists SDP attributes, whose attribute | and packetization. <xref target="RFC8859"/> lists SDP attributes who se attribute | |||
values are required to be identical for all codecs that use the | values are required to be identical for all codecs that use the | |||
same payload type value. | same payload type value. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-rtp-pt" toc="include" numbered="true" removeInRFC="fa | <section anchor="sec-rtp-pt"> | |||
lse" pn="section-9.2"> | <name>Associating RTP/RTCP Streams with the Correct SDP Media Descriptio | |||
<name slugifiedName="name-associating-rtp-rtcp-stream">Associating RTP/R | n</name> | |||
TCP Streams with the Correct SDP Media Description</name> | <t> | |||
<t indent="0" pn="section-9.2-1"> | As described in <xref target="RFC3550"/>, RTP packets are associated | |||
As described in <xref target="RFC3550" format="default" sectionForma | with RTP | |||
t="of" derivedContent="RFC3550"/>, RTP packets are associated with RTP | streams <xref target="RFC7656"/>. Each RTP stream is identified by a | |||
streams <xref target="RFC7656" format="default" sectionFormat="of" d | n SSRC | |||
erivedContent="RFC7656"/>. Each RTP stream is identified by an SSRC | ||||
value, and each RTP packet includes an SSRC field that is | value, and each RTP packet includes an SSRC field that is | |||
used to associate the packet with the correct RTP stream. | used to associate the packet with the correct RTP stream. | |||
RTCP packets also use SSRCs to identify which RTP streams the | RTCP packets also use SSRCs to identify which RTP streams the | |||
packet relates to. However, an RTCP packet can contain multiple SSRC | packet relates to. However, an RTCP packet can contain multiple SSRC | |||
fields, in the course of providing feedback or reports on different | fields in the course of providing feedback or reports on different R | |||
RTP | TP | |||
streams, and therefore can be associated with multiple such streams. | streams; therefore, they can be associated with multiple such stream | |||
s. | ||||
</t> | </t> | |||
<t indent="0" pn="section-9.2-2"> | <t> | |||
In order to be able to process received RTP/RTCP packets | In order to be able to process received RTP/RTCP packets | |||
correctly, it <bcp14>MUST</bcp14> be possible to associate an RTP st ream with | correctly, it <bcp14>MUST</bcp14> be possible to associate an RTP st ream with | |||
the correct "m=" section, as the "m=" section and SDP attributes | the correct "m=" section, as the "m=" section and SDP attributes | |||
associated with the "m=" section contains information needed to | associated with the "m=" section contain information needed to | |||
process the packets. | process the packets. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-3"> | <t> | |||
As all RTP streams associated with a BUNDLE group use the | As all RTP streams associated with a BUNDLE group use the | |||
same transport for sending and receiving RTP/RTCP | same transport for sending and receiving RTP/RTCP | |||
packets, the local address:port combination part of the transport | packets, the local address:port combination part of the transport | |||
cannot be used to associate an RTP stream with the correct "m=" sect ion. | cannot be used to associate an RTP stream with the correct "m=" sect ion. | |||
In addition, multiple RTP streams might be associated with the same "m=" | In addition, multiple RTP streams might be associated with the same "m=" | |||
section. | section. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-4"> | <t> | |||
An offerer and answerer can inform each other which SSRC | An offerer and answerer can inform each other which SSRC | |||
values they will use for an RTP stream by using the SDP 'ssrc' | values they will use for an RTP stream by using the SDP 'ssrc' | |||
attribute <xref format="default" target="RFC5576" sectionFormat="of" derivedContent="RFC5576"/>. | attribute <xref target="RFC5576"/>. | |||
However, an offerer will not know which SSRC values the | However, an offerer will not know which SSRC values the | |||
answerer will use until the offerer has received the answer | answerer will use until the offerer has received the answer | |||
providing that information. Due to this, before the offerer has | providing that information. Due to this, before the offerer has | |||
received the answer, the offerer will not be able to associate | received the answer, the offerer will not be able to associate | |||
an RTP stream with the correct "m=" section using the SSRC value | an RTP stream with the correct "m=" section using the SSRC value | |||
associated with the RTP stream. In addition, the offerer and | associated with the RTP stream. In addition, the offerer and | |||
answerer may start using new SSRC values mid-session, without | answerer may start using new SSRC values mid-session, without | |||
informing each other about using the SDP 'ssrc' attribute. | informing each other about using the SDP 'ssrc' attribute. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-5"> | <t> | |||
In order for an offerer and answerer to always be able to | In order for an offerer and answerer to always be able to | |||
associate an RTP stream with the correct "m=" section, the offerer | associate an RTP stream with the correct "m=" section, the offerer | |||
and answerer using the BUNDLE extension <bcp14>MUST</bcp14> support the | and answerer using the BUNDLE extension <bcp14>MUST</bcp14> support the | |||
mechanism defined in <xref format="default" target="sec-receiver-id" sectionFormat="of" derivedContent="Section 15"/>, | mechanism defined in <xref target="sec-receiver-id"/>, | |||
where the offerer and answerer insert the identification-tag associa ted | where the offerer and answerer insert the identification-tag associa ted | |||
with an "m=" section (provided by the remote peer) into RTP and RTCP | with an "m=" section (provided by the remote peer) into RTP and RTCP | |||
packets associated with a BUNDLE group. | packets associated with a BUNDLE group. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-6"> | <t> | |||
When using this mechanism, the mapping from an SSRC to an | When using this mechanism, the mapping from an SSRC to an | |||
identification-tag is carried in RTP header extensions or RTCP SDES | identification-tag is carried in RTP header extensions or RTCP SDES | |||
packets, as specified in <xref format="default" target="sec-receive | packets, as specified in <xref target="sec-receiver-id"/>. | |||
r-id" sectionFormat="of" derivedContent="Section 15"/>. | Since a compound RTCP packet can contain multiple RTCP SDES packets | |||
Since a compound RTCP packet can contain multiple RTCP SDES packets | ||||
, | ||||
and each RTCP SDES packet can contain multiple chunks, a single RTC P | and each RTCP SDES packet can contain multiple chunks, a single RTC P | |||
packet can contain several mappings of SSRC to identification-tag. The | packet can contain several mappings of SSRC to identification-tag. The | |||
offerer and answerer maintain tables used for routing that are upda ted | offerer and answerer maintain tables used for routing that are upda ted | |||
each time an RTP/RTCP packet contains new information that affects how | each time an RTP/RTCP packet contains new information that affects how | |||
packets are to be routed. | packets are to be routed. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-7"> | <t> | |||
However, some legacy implementations may not include this identifica tion-tag | However, some legacy implementations may not include this identifica tion-tag | |||
in their RTP and RTCP traffic when using the BUNDLE mechanism and | in their RTP and RTCP traffic when using the BUNDLE mechanism and | |||
instead use a mechanism based on the payload type to associate RTP s treams | instead use a mechanism based on the payload type to associate RTP s treams | |||
with SDP "m=" sections. In this situation, each "m=" section needs to | with SDP "m=" sections. In this situation, each "m=" section needs to | |||
use unique payload type values, in order for the payload type to be a | use unique payload type values in order for the payload type to be a | |||
reliable indicator of the relevant "m=" section for the RTP stream. If an | reliable indicator of the relevant "m=" section for the RTP stream. If an | |||
implementation fails to ensure unique payload type values, it will b e | implementation fails to ensure unique payload type values, it will b e | |||
impossible to associate the RTP stream using that payload type value | impossible to associate the RTP stream using that payload type value | |||
to a particular "m=" section. | to a particular "m=" section. | |||
Note that when using the payload type to associate RTP streams with | Note that when using the payload type to associate RTP streams with | |||
"m=" sections, an RTP stream, identified by its SSRC, will be mapped | "m=" sections, an RTP stream, identified by its SSRC, will be mapped | |||
to an "m=" section when the first packet of that RTP stream is | to an "m=" section when the first packet of that RTP stream is | |||
received, and the mapping will not be changed even if the payload | received, and the mapping will not be changed even if the payload | |||
type used by that RTP stream changes. In other words, the SSRC | type used by that RTP stream changes. In other words, the SSRC | |||
cannot "move" to a different "m=" section simply by changing the | cannot "move" to a different "m=" section simply by changing the | |||
payload type. | payload type. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-8"> | <t> | |||
Applications can implement RTP stacks in different | Applications can implement RTP stacks in different | |||
ways. The algorithm below details one way that RTP streams can be | ways. The algorithm below details one way that RTP streams can be | |||
associated with "m=" sections, but it is not meant to be prescripti ve | associated with "m=" sections, but it is not meant to be prescripti ve | |||
about exactly how an RTP stack needs to be implemented. | about exactly how an RTP stack needs to be implemented. | |||
Applications <bcp14>MAY</bcp14> use any algorithm that achieves equ ivalent results to | Applications <bcp14>MAY</bcp14> use any algorithm that achieves equ ivalent results to | |||
those described in the algorithm below. | those described in the algorithm below. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-9"> | <t> | |||
To prepare to associate RTP streams with the correct | To prepare to associate RTP streams with the correct | |||
"m=" section, the following steps <bcp14>MUST</bcp14> be followed f or each BUNDLE group: | "m=" section, the following steps <bcp14>MUST</bcp14> be followed f or each BUNDLE group: | |||
</t> | </t> | |||
<ul empty="false" spacing="normal" bare="false" indent="3" pn="section-9 | <ul> | |||
.2-10"> | <li> | |||
<li pn="section-9.2-10.1"> | ||||
Construct a table mapping a MID to an "m=" section for each "m= " | Construct a table mapping a MID to an "m=" section for each "m= " | |||
section in this BUNDLE group. Note that an "m=" section may onl y | section in this BUNDLE group. Note that an "m=" section may onl y | |||
have one MID. | have one MID. | |||
</li> | </li> | |||
<li pn="section-9.2-10.2"> | <li> | |||
Construct a table mapping SSRCs of incoming RTP streams to an " m=" section for | Construct a table mapping SSRCs of incoming RTP streams to an " m=" section for | |||
each "m=" section in this BUNDLE group and for each SSRC | each "m=" section in this BUNDLE group and for each SSRC | |||
configured for receiving in that "m=" section. | configured for receiving in that "m=" section. | |||
</li> | </li> | |||
<li pn="section-9.2-10.3"> | <li> | |||
Construct a table mapping the SSRC of each outgoing RTP stream | Construct a table mapping the SSRC of each outgoing RTP stream | |||
to an "m=" section for each "m=" section in this BUNDLE group a nd for each SSRC | to an "m=" section for each "m=" section in this BUNDLE group a nd for each SSRC | |||
configured for sending in that "m=" section. | configured for sending in that "m=" section. | |||
</li> | </li> | |||
<li pn="section-9.2-10.4"> | <li> | |||
Construct a table mapping a payload type to an "m=" section for | Construct a table mapping a payload type to an "m=" section for | |||
each "m=" section in the BUNDLE group and for each payload type | each "m=" section in the BUNDLE group and for each payload type | |||
configured for receiving in that "m=" section. If any payload | configured for receiving in that "m=" section. If any payload | |||
type is configured for receiving in more than one "m=" section | type is configured for receiving in more than one "m=" section | |||
in the BUNDLE group, do not include it in the table, as it | in the BUNDLE group, do not include it in the table, as it | |||
cannot be used to uniquely identify an "m=" section. | cannot be used to uniquely identify an "m=" section. | |||
</li> | </li> | |||
<li pn="section-9.2-10.5"> | <li> | |||
Note that for each of these tables, there can only be one | Note that for each of these tables, there can only be one | |||
mapping for any given key (MID, SSRC, or PT). In other | mapping for any given key (MID, SSRC, or PT). In other | |||
words, the tables are not multimaps. | words, the tables are not multimaps. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-9.2-11"> | <t> | |||
As "m=" sections are added or removed from the BUNDLE groups, or | As "m=" sections are added or removed from the BUNDLE groups or | |||
their configurations are changed, the tables above <bcp14>MUST</bcp 14> also be | their configurations are changed, the tables above <bcp14>MUST</bcp 14> also be | |||
updated. | updated. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-12"> | <t> | |||
When an RTP packet is received, it <bcp14>MUST</bcp14> be delivered to the RTP | When an RTP packet is received, it <bcp14>MUST</bcp14> be delivered to the RTP | |||
stream corresponding to its SSRC. That RTP stream <bcp14>MUST</bcp1 4> then be | stream corresponding to its SSRC. That RTP stream <bcp14>MUST</bcp1 4> then be | |||
associated with the correct "m=" section within a BUNDLE group, for | associated with the correct "m=" section within a BUNDLE group for | |||
additional processing, according to the following steps: | additional processing, according to the following steps: | |||
</t> | </t> | |||
<ul empty="false" spacing="normal" bare="false" indent="3" pn="section-9 | <ul> | |||
.2-13"> | <li> | |||
<li pn="section-9.2-13.1"> | ||||
If the MID associated with the RTP stream is not in the | If the MID associated with the RTP stream is not in the | |||
table mapping a MID to an "m=" section, then the RTP stream is not | table mapping a MID to an "m=" section, then the RTP stream is not | |||
decoded, and the payload data is discarded. | decoded, and the payload data is discarded. | |||
</li> | </li> | |||
<li pn="section-9.2-13.2"> | <li> | |||
If the packet has a MID, and the packet's extended sequence num | If the packet has a MID and the packet's extended sequence numb | |||
ber | er | |||
is greater than that of the last MID update, as discussed in | is greater than that of the last MID update, as discussed in | |||
<xref target="RFC7941" sectionFormat="comma" section="4.2.6" fo | <xref target="RFC7941" sectionFormat="comma" section="4.2.6"/>, | |||
rmat="default" derivedLink="https://rfc-editor.org/rfc/rfc7941#section-4.2.6" de | update the MID associated | |||
rivedContent="RFC7941"/>, update the MID associated | with the RTP stream to match the MID carried in the RTP packet | |||
with the RTP stream to match the MID carried in the RTP packet, | and then | |||
and then | ||||
update the mapping tables to include an entry that maps the SSR C of | update the mapping tables to include an entry that maps the SSR C of | |||
that RTP stream to the "m=" section for that MID. | that RTP stream to the "m=" section for that MID. | |||
</li> | </li> | |||
<li pn="section-9.2-13.3"> | <li> | |||
If the SSRC of the RTP stream is in the incoming SSRC | If the SSRC of the RTP stream is in the incoming SSRC | |||
mapping table, check that the payload type used by the RTP | mapping table, check that the payload type used by the RTP | |||
stream matches a payload type included on the matching | stream matches a payload type included in the matching | |||
"m=" section. If so, associate the RTP stream with that | "m=" section. If so, associate the RTP stream with that | |||
"m=" section. Otherwise, the RTP stream is not decoded, and the | "m=" section. Otherwise, the RTP stream is not decoded, and the | |||
payload data is discarded. | payload data is discarded. | |||
</li> | </li> | |||
<li pn="section-9.2-13.4"> | <li> | |||
If the payload type used by the RTP stream is in the | If the payload type used by the RTP stream is in the | |||
payload type table, update the incoming SSRC mapping table | payload type table, update the incoming SSRC mapping table | |||
to include an entry that maps the RTP stream's SSRC to the | to include an entry that maps the RTP stream's SSRC to the | |||
"m=" section for that payload type. Associate the RTP stream | "m=" section for that payload type. Associate the RTP stream | |||
with the corresponding "m=" section. | with the corresponding "m=" section. | |||
</li> | </li> | |||
<li pn="section-9.2-13.5"> | <li> | |||
Otherwise, mark the RTP stream as "not for decoding" and | Otherwise, mark the RTP stream as "not for decoding" and | |||
discard the payload. | discard the payload. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-9.2-14"> | <t> | |||
If the RTP packet contains one or more Contributing Source (CSRC) | If the RTP packet contains one or more contributing source (CSRC) | |||
identifiers, then each CSRC is looked up in the incoming SSRC table, | identifiers, then each CSRC is looked up in the incoming SSRC table, | |||
and a copy of the RTP packet is associated with the corresponding | and a copy of the RTP packet is associated with the corresponding | |||
"m=" section for additional processing. | "m=" section for additional processing. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.2-15"> | <t> | |||
For each RTCP packet received (including each RTCP packet that is | For each RTCP packet received (including each RTCP | |||
part of a compound RTCP packet), the packet is processed as usual | packet that is part of a compound RTCP packet), the | |||
by | packet is processed as usual by the RTP layer, then | |||
the RTP layer, then associated with the appropriate "m=" sections, | associated with the appropriate "m=" sections and | |||
and | processed for the RTP streams represented by those "m=" | |||
processed for the RTP streams represented by those "m=" sections. | sections. This routing is type dependent, as each kind | |||
This routing is type dependent, as each kind of RTCP packet has it | of RTCP packet has its own mechanism for associating it | |||
s own | with the relevant RTP streams. | |||
mechanism for associating it with the relevant RTP streams. | ||||
</t> | </t> | |||
<t indent="0" pn="section-9.2-16"> | <t> | |||
RTCP packets that cannot be associated with an appropriate "m=" se | RTCP packets that cannot be associated with an | |||
ction | appropriate "m=" section <bcp14>MUST</bcp14> still be | |||
<bcp14>MUST</bcp14> still be processed as usual by the RTP layer, | processed as usual by the RTP layer, which updates the | |||
which updates the metadata | metadata associated with the corresponding RTP | |||
associated with the corresponding RTP streams. This situation can | streams. This situation can occur with certain | |||
occur with | multiparty RTP topologies or when RTCP packets are sent | |||
certain multiparty RTP topologies or when RTCP packets are sent co | containing a subset of the SDES information. | |||
ntaining | ||||
a subset of the SDES information. | ||||
</t> | </t> | |||
<t indent="0" pn="section-9.2-17"> | <t> | |||
Additional rules for processing various types of RTCP packets are | Additional rules for processing various types of RTCP packets are | |||
explained below. | explained below. | |||
</t> | </t> | |||
<ul empty="false" spacing="normal" bare="false" indent="3" pn="section-9 | <ul> | |||
.2-18"> | <li> | |||
<li pn="section-9.2-18.1"> | ||||
If the RTCP packet is of type SDES, for each chunk in the packet | If the RTCP packet is of type SDES, for each chunk in the packet | |||
whose SSRC is found in the incoming SSRC table, deliver a copy | whose SSRC is found in the incoming SSRC table, deliver a copy | |||
of the SDES packet to the "m=" section associated with that SSRC . | of the SDES packet to the "m=" section associated with that SSRC . | |||
In addition, for any SDES MID items contained in these chunks, | In addition, for any SDES MID items contained in these chunks, | |||
if the MID is found in the table mapping a MID to an "m=" sectio n, | if the MID is found in the table mapping a MID to an "m=" sectio n, | |||
update the incoming SSRC table to include an entry that | update the incoming SSRC table to include an entry that | |||
maps the RTP stream associated with the chunk's SSRC to the "m=" section | maps the RTP stream associated with the chunk's SSRC to the "m=" section | |||
associated with that MID, unless the packet is older than the pa cket | associated with that MID, unless the packet is older than the pa cket | |||
that most recently updated the mapping for this SSRC, as discuss ed in | that most recently updated the mapping for this SSRC, as discuss ed in | |||
<xref target="RFC7941" sectionFormat="comma" section="4.2.6" for mat="default" derivedLink="https://rfc-editor.org/rfc/rfc7941#section-4.2.6" der ivedContent="RFC7941"/>. | <xref target="RFC7941" sectionFormat="comma" section="4.2.6"/>. | |||
</li> | </li> | |||
<li pn="section-9.2-18.2"> | <li> | |||
Note that if an SDES packet is received as part of a compound RT | Note that if an SDES packet is received as part of a | |||
CP | compound RTCP packet, the SSRC to "m=" section mapping | |||
packet, the SSRC to "m=" section mapping might not exist until t | might not exist until the SDES packet is handled | |||
he | (e.g., in the case where RTCP for a source is received | |||
SDES packet is handled (e.g., in the case where RTCP for a sourc | before any RTP packets). | |||
e | ||||
is received before any RTP packets). Therefore, it can be benefi | Therefore, it can be | |||
cial | beneficial for an implementation to delay RTCP packet | |||
for an implementation to delay RTCP packet routing, such that it | routing, such that it either prioritizes processing of | |||
either prioritizes processing of the SDES item to generate or up | the SDES item to generate or update the mapping or | |||
date | buffers the RTCP information that needs to be routed | |||
the mapping or buffers the RTCP information that needs to be | until the SDES item(s) has been processed. | |||
routed until the SDES item(s) has been processed. If the | ||||
implementation is unable to follow this recommendation, the | If the | |||
consequence could be that some RTCP information from this | implementation is unable to follow this | |||
particular RTCP compound packet is not provided to higher layers | recommendation, the consequence could be that some | |||
. | RTCP information from this particular RTCP compound | |||
The impact from this is likely minor, when this information rela | packet is not provided to higher layers. The impact | |||
tes | from this is likely minor when this information | |||
to a future incoming RTP stream. | relates to a future incoming RTP stream. | |||
</li> | </li> | |||
<li pn="section-9.2-18.3"> | <li> | |||
If the RTCP packet is of type BYE, it indicates that the RTP str eams | If the RTCP packet is of type BYE, it indicates that the RTP str eams | |||
referenced in the packet are ending. Therefore, for each SSRC | referenced in the packet are ending. Therefore, for each SSRC | |||
indicated in the packet that is found in the incoming SSRC table , | indicated in the packet that is found in the incoming SSRC table , | |||
first deliver a copy of the BYE packet to the "m=" section assoc iated | first deliver a copy of the BYE packet to the "m=" section assoc iated | |||
with that SSRC, and then remove the entry for that SSRC from the | with that SSRC, and then remove the entry for that SSRC from the | |||
incoming SSRC table after an appropriate delay to | incoming SSRC table after an appropriate delay to | |||
account for "straggler packets", as specified in <xref target="R FC3550" sectionFormat="comma" section="6.2.1" format="default" derivedLink="http s://rfc-editor.org/rfc/rfc3550#section-6.2.1" derivedContent="RFC3550"/>. | account for "straggler packets", as specified in <xref target="R FC3550" sectionFormat="comma" section="6.2.1"/>. | |||
</li> | </li> | |||
<li pn="section-9.2-18.4"> | <li> | |||
If the RTCP packet is of type Sender Report (SR) or Receiver Rep | If the RTCP packet is of type sender report (SR) or receiver rep | |||
ort (RR), for each report block in | ort (RR), for each report block in | |||
the report whose "SSRC of source" is found in the outgoing | the report whose "SSRC of source" is found in the outgoing | |||
SSRC table, deliver a copy of the SR or RR packet to the "m=" se ction | SSRC table, deliver a copy of the SR or RR packet to the "m=" se ction | |||
associated with that SSRC. In addition, if the packet is of type | associated with that SSRC. In addition, if the packet is of type | |||
SR, and the sender SSRC for the packet is found in the | SR and the sender SSRC for the packet is found in the | |||
incoming SSRC table, deliver a copy of the SR packet to the "m=" section | incoming SSRC table, deliver a copy of the SR packet to the "m=" section | |||
associated with that SSRC. | associated with that SSRC. | |||
</li> | </li> | |||
<li pn="section-9.2-18.5"> | <li> | |||
If the implementation supports the RTCP Extended Report (XR) and the packet is of | If the implementation supports the RTCP Extended Report (XR) and the packet is of | |||
type XR, as defined in <xref target="RFC3611" format="default" s ectionFormat="of" derivedContent="RFC3611"/>, | type XR, as defined in <xref target="RFC3611"/>, | |||
for each report block in the report whose "SSRC of source" | for each report block in the report whose "SSRC of source" | |||
is found in the outgoing SSRC table, deliver a copy of the | is found in the outgoing SSRC table, deliver a copy of the | |||
XR packet to the "m=" section associated with that SSRC. | XR packet to the "m=" section associated with that SSRC. | |||
In addition, if the sender SSRC for the packet is found in the | In addition, if the sender SSRC for the packet is found in the | |||
incoming SSRC table, deliver a copy of the XR packet to the "m=" section | incoming SSRC table, deliver a copy of the XR packet to the "m=" section | |||
associated with that SSRC. | associated with that SSRC. | |||
</li> | </li> | |||
<li pn="section-9.2-18.6"> | <li> | |||
If the RTCP packet is a feedback message of type RTPFB (transpor t-layer FB | If the RTCP packet is a feedback message of type RTPFB (transpor t-layer FB | |||
message) or PSFB (payload-specific FB message), | message) or PSFB (payload-specific FB message), | |||
as defined in <xref target="RFC4585" format="default" sectionFor mat="of" derivedContent="RFC4585"/>, it will contain a | as defined in <xref target="RFC4585"/>, it will contain a | |||
media source SSRC, and this SSRC is used for routing certain | media source SSRC, and this SSRC is used for routing certain | |||
subtypes of feedback messages. However, several subtypes of | subtypes of feedback messages. However, several subtypes of | |||
PSFB and RTPFB messages include a target SSRC(s) in a section ca lled | PSFB and RTPFB messages include a target SSRC(s) in a section ca lled | |||
Feedback Control Information (FCI). For these messages, | Feedback Control Information (FCI). For these messages, | |||
the target SSRC(s) is used for routing. | the target SSRC(s) is used for routing. | |||
</li> | </li> | |||
<li pn="section-9.2-18.7"> | <li> | |||
<t indent="0" pn="section-9.2-18.7.1"> | <t> | |||
If the RTCP packet is a feedback packet that does not include | If the RTCP packet is a feedback packet that does not include | |||
target SSRCs in its FCI section, and the media source SSRC is | target SSRCs in its FCI section, and the media source SSRC is | |||
found in the outgoing SSRC table, deliver the | found in the outgoing SSRC table, deliver the | |||
feedback packet to the "m=" section associated with that SSRC. | feedback packet to the "m=" section associated with that SSRC. | |||
RTPFB and PSFB types that are handled in this way include: | RTPFB and PSFB types that are handled in this way include: | |||
</t> | </t> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="sectio | <dl> | |||
n-9.2-18.7.2"> | <dt>Generic NACK:</dt> | |||
<li pn="section-9.2-18.7.2.1"> | <dd>(PT=RTPFB, FMT=1) <xref target="RFC4585"/></dd> | |||
<dl newline="false" spacing="normal" indent="3" pn="section-9.2- | <dt>Picture Loss Indication (PLI):</dt> | |||
18.7.2.1.1"> | <dd>(PT=PSFB, FMT=1) <xref target="RFC4585"/></dd> | |||
<dt pn="section-9.2-18.7.2.1.1.1">Generic NACK:</dt> | <dt>Slice Loss Indication (SLI):</dt> | |||
<dd pn="section-9.2-18.7.2.1.1.2">(PT=RTPFB, FMT=1) <xref targ | <dd> (PT=PSFB, FMT=2) <xref target="RFC4585"/></dd> | |||
et="RFC4585" format="default" sectionFormat="of" derivedContent="RFC4585"/>.</dd | <dt>Reference Picture Selection Indication (RPSI):</dt> | |||
> | <dd>(PT=PSFB, FMT=3) <xref target="RFC4585"/></dd> | |||
<dt pn="section-9.2-18.7.2.1.1.3">Picture Loss Indication (PLI | ||||
):</dt> | ||||
<dd pn="section-9.2-18.7.2.1.1.4">(PT=PSFB, FMT=1) <xref targe | ||||
t="RFC4585" format="default" sectionFormat="of" derivedContent="RFC4585"/>.</dd> | ||||
<dt pn="section-9.2-18.7.2.1.1.5">Slice Loss Indication (SLI): | ||||
</dt> | ||||
<dd pn="section-9.2-18.7.2.1.1.6"> (PT=PSFB, FMT=2) <xref targ | ||||
et="RFC4585" format="default" sectionFormat="of" derivedContent="RFC4585"/>.</dd | ||||
> | ||||
<dt pn="section-9.2-18.7.2.1.1.7">Reference Picture Selection | ||||
Indication (RPSI):</dt> | ||||
<dd pn="section-9.2-18.7.2.1.1.8">(PT=PSFB, FMT=3) <xref targe | ||||
t="RFC4585" format="default" sectionFormat="of" derivedContent="RFC4585"/>.</dd> | ||||
</dl> | </dl> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</li> | <ul> | |||
</ul> | <li> | |||
<ul empty="false" bare="false" indent="3" spacing="normal" pn="section-9 | ||||
.2-19"> | ||||
<li pn="section-9.2-19.1"> | ||||
If the RTCP packet is a feedback message that does include a tar get | If the RTCP packet is a feedback message that does include a tar get | |||
SSRC(s) in its FCI section, it can either be a request or a | SSRC(s) in its FCI section, it can either be a request or a | |||
notification. Requests reference an RTP stream that is being | notification. Requests reference an RTP stream that is being | |||
sent by the message recipient, whereas notifications are respons es | sent by the message recipient, whereas notifications are respons es | |||
to an earlier request and therefore reference an RTP stream that | to an earlier request and therefore reference an RTP stream that | |||
is being received by the message recipient. | is being received by the message recipient. | |||
</li> | </li> | |||
<li pn="section-9.2-19.2"> | <li> | |||
<t indent="0" pn="section-9.2-19.2.1"> | <t> | |||
If the RTCP packet is a feedback request that includes a target SSRC(s), | If the RTCP packet is a feedback request that includes a target SSRC(s), | |||
for each target SSRC that is found in the outgoing SSRC table, | for each target SSRC that is found in the outgoing SSRC table, | |||
deliver a copy of the RTCP packet to the "m=" section associated with | deliver a copy of the RTCP packet to the "m=" section associated with | |||
that SSRC. PSFB and RTPFB types that are handled in this way inc lude: | that SSRC. PSFB and RTPFB types that are handled in this way inc lude: | |||
</t> | </t> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="sectio | <dl> | |||
n-9.2-19.2.2"> | <dt>Full Intra Request (FIR):</dt> | |||
<li pn="section-9.2-19.2.2.1"> | <dd>(PT=PSFB, FMT=4) <xref target="RFC5104"/> | |||
<dl newline="false" spacing="normal" indent="3" pn="section-9.2- | ||||
19.2.2.1.1"> | ||||
<dt pn="section-9.2-19.2.2.1.1.1">Full Intra Request (FIR):</d | ||||
t> | ||||
<dd pn="section-9.2-19.2.2.1.1.2">(PT=PSFB, FMT=4) <xref targe | ||||
t="RFC5104" format="default" sectionFormat="of" derivedContent="RFC5104"/>. | ||||
</dd> | </dd> | |||
<dt pn="section-9.2-19.2.2.1.1.3">Temporal-Spatial Trade-off R | <dt>Temporal-Spatial Trade-off Request (TSTR):</dt> | |||
equest (TSTR):</dt> | <dd>(PT=PSFB, FMT=5) <xref target="RFC5104"/> | |||
<dd pn="section-9.2-19.2.2.1.1.4">(PT=PSFB, FMT=5) <xref targe | ||||
t="RFC5104" format="default" sectionFormat="of" derivedContent="RFC5104"/>. | ||||
</dd> | </dd> | |||
<dt pn="section-9.2-19.2.2.1.1.5">H.271 Video Back Channel Mes | <dt>H.271 Video Back Channel Message (VBCM):</dt> | |||
sage (VBCM):</dt> | <dd>(PT=PSFB, FMT=7) <xref target="RFC5104"/> | |||
<dd pn="section-9.2-19.2.2.1.1.6">(PT=PSFB, FMT=7) <xref targe | ||||
t="RFC5104" format="default" sectionFormat="of" derivedContent="RFC5104"/>. | ||||
</dd> | </dd> | |||
<dt pn="section-9.2-19.2.2.1.1.7">Temporary Maximum Media Stre | <dt>Temporary Maximum Media Stream Bit Rate Request (TMMBR):</ | |||
am Bit Rate Request (TMMBR):</dt> | dt> | |||
<dd pn="section-9.2-19.2.2.1.1.8">(PT=RTPFB, FMT=3) <xref targ | <dd>(PT=RTPFB, FMT=3) <xref target="RFC5104"/> | |||
et="RFC5104" format="default" sectionFormat="of" derivedContent="RFC5104"/>. | ||||
</dd> | </dd> | |||
<dt pn="section-9.2-19.2.2.1.1.9">Layer Refresh Request (LRR): | <dt>Layer Refresh Request (LRR):</dt> | |||
</dt> | <dd>(PT=PSFB, FMT=10) <xref target="I-D.ietf-avtext-lrr"/>. | |||
<dd pn="section-9.2-19.2.2.1.1.10">(PT=PSFB, FMT=10) <xref tar | ||||
get="I-D.ietf-avtext-lrr" format="default" sectionFormat="of" derivedContent="LL | ||||
R-RTCP"/>. | ||||
</dd> | </dd> | |||
</dl> | </dl> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</li> | <ul> | |||
</ul> | <li> | |||
<ul empty="false" bare="false" indent="3" spacing="normal" pn="section-9 | <t> | |||
.2-20"> | ||||
<li pn="section-9.2-20.1"> | ||||
<t indent="0" pn="section-9.2-20.1.1"> | ||||
If the RTCP packet is a feedback notification that includes a ta rget SSRC(s), | If the RTCP packet is a feedback notification that includes a ta rget SSRC(s), | |||
for each target SSRC that is found in the incoming SSRC table, | for each target SSRC that is found in the incoming SSRC table, | |||
deliver a copy of the RTCP packet to the "m=" section associated with | deliver a copy of the RTCP packet to the "m=" section associated with | |||
the RTP stream with a matching SSRC. PSFB and RTPFB types that a re handled in this way include: | the RTP stream with a matching SSRC. PSFB and RTPFB types that a re handled in this way include: | |||
</t> | </t> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="sectio | <dl> | |||
n-9.2-20.1.2"> | <dt>Temporal-Spatial Trade-off Notification (TSTN):</dt> | |||
<li pn="section-9.2-20.1.2.1"> | <dd>(PT=PSFB, FMT=6) <xref target="RFC5104"/>. This message | |||
<dl newline="false" spacing="normal" indent="3" pn="section-9.2- | ||||
20.1.2.1.1"> | ||||
<dt pn="section-9.2-20.1.2.1.1.1">Temporal-Spatial Trade-off N | ||||
otification (TSTN):</dt> | ||||
<dd pn="section-9.2-20.1.2.1.1.2">(PT=PSFB, FMT=6) <xref targe | ||||
t="RFC5104" format="default" sectionFormat="of" derivedContent="RFC5104"/>. This | ||||
message | ||||
is a notification in response to a prior TSTR. | is a notification in response to a prior TSTR. | |||
</dd> | </dd> | |||
<dt pn="section-9.2-20.1.2.1.1.3">Temporary Maximum Media Stre | <dt>Temporary Maximum Media Stream Bit Rate Notification (TMMB | |||
am Bit Rate Notification (TMMBN):</dt> | N):</dt> | |||
<dd pn="section-9.2-20.1.2.1.1.4">(PT=RTPFB, FMT=4) <xref targ | <dd>(PT=RTPFB, FMT=4) <xref target="RFC5104"/>. This message i | |||
et="RFC5104" format="default" sectionFormat="of" derivedContent="RFC5104"/>. Thi | s a | |||
s message is a | ||||
notification in response to a prior TMMBR, but it can al so be sent | notification in response to a prior TMMBR, but it can al so be sent | |||
unsolicited. | unsolicited. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</li> | <ul empty="true"> | |||
</ul> | <li> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="section-9. | ||||
2-21"> | ||||
<li pn="section-9.2-21.1"> | ||||
If the RTCP packet is of type APP, then it is handled in an applic ation-specific | If the RTCP packet is of type APP, then it is handled in an applic ation-specific | |||
manner. If the application does not recognize the APP packet, | manner. If the application does not recognize the APP packet, | |||
then it <bcp14>MUST</bcp14> be discarded. | then it <bcp14>MUST</bcp14> be discarded. | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="sec-rtprtcp-mux" toc="include" numbered="true" removeInRF | <section anchor="sec-rtprtcp-mux"> | |||
C="false" pn="section-9.3"> | <name>RTP/RTCP Multiplexing</name> | |||
<name slugifiedName="name-rtp-rtcp-multiplexing">RTP/RTCP Multiplexing</ | <t> | |||
name> | ||||
<t indent="0" pn="section-9.3-1"> | ||||
Within a BUNDLE group, the offerer and answerer <bcp14>MUST</bcp14> en able | Within a BUNDLE group, the offerer and answerer <bcp14>MUST</bcp14> en able | |||
RTP/RTCP multiplexing <xref format="default" target="RFC5761" sectionF ormat="of" derivedContent="RFC5761"/> for the RTP-based bundled media (i.e., the | RTP/RTCP multiplexing <xref target="RFC5761"/> for the RTP-based bundl ed media (i.e., the | |||
same transport will be used for both RTP packets and RTCP packets). | same transport will be used for both RTP packets and RTCP packets). | |||
In addition, the offerer and answerer <bcp14>MUST</bcp14> support the | In addition, the offerer and answerer <bcp14>MUST</bcp14> support the | |||
SDP 'rtcp-mux-only' attribute <xref format="default" target="RFC8858" sectionFormat="of" derivedContent="RFC8858"/>. | SDP 'rtcp-mux-only' attribute <xref target="RFC8858"/>. | |||
</t> | </t> | |||
<section anchor="sec-rtprtcp-mux-oa" toc="include" numbered="true" remov | <section anchor="sec-rtprtcp-mux-oa"> | |||
eInRFC="false" pn="section-9.3.1"> | <name>SDP Offer/Answer Procedures</name> | |||
<name slugifiedName="name-sdp-offer-answer-procedures-2">SDP Offer/Ans | <t> | |||
wer Procedures</name> | ||||
<t indent="0" pn="section-9.3.1-1"> | ||||
This section describes how an offerer and answerer use the | This section describes how an offerer and answerer use the | |||
SDP 'rtcp-mux' <xref format="default" target="RFC5761" sectionFormat | SDP 'rtcp-mux' <xref target="RFC5761"/> and SDP 'rtcp-mux-only' attr | |||
="of" derivedContent="RFC5761"/> and SDP 'rtcp-mux-only' attributes | ibutes | |||
<xref format="default" target="RFC8858" sectionFormat="of" derivedCo | <xref target="RFC8858"/> | |||
ntent="RFC8858"/> | ||||
to negotiate usage of RTP/RTCP multiplexing for RTP-based bundled me dia. | to negotiate usage of RTP/RTCP multiplexing for RTP-based bundled me dia. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1-2"> | <t> | |||
RTP/RTCP multiplexing only applies to RTP-based media. However, as d escribed in | RTP/RTCP multiplexing only applies to RTP-based media. However, as d escribed in | |||
<xref format="default" target="sec-sdp-oa-cat" sectionFormat="of" de | <xref target="sec-sdp-oa-cat"/>, within an offer | |||
rivedContent="Section 7.1.3"/>, within an offer | or answer, the SDP 'rtcp-mux' and SDP 'rtcp-mux-only' attributes mig | |||
or answer the SDP 'rtcp-mux' and SDP 'rtcp-mux-only' attributes migh | ht be included in | |||
t be included in | a bundled "m=" section for non-RTP-based media (if such an "m=" sect | |||
a bundled "m=" section for non-RTP-based media (if such "m=" section | ion is the offerer-tagged | |||
is the offerer-tagged | ||||
"m=" section or answerer-tagged "m=" section). | "m=" section or answerer-tagged "m=" section). | |||
</t> | </t> | |||
<section anchor="sec-rtprtcp-mux-oa-ino" toc="exclude" numbered="true" | <section anchor="sec-rtprtcp-mux-oa-ino"> | |||
removeInRFC="false" pn="section-9.3.1.1"> | <name>Generating the Initial BUNDLE Offer</name> | |||
<name slugifiedName="name-generating-the-initial-bundle-b">Generatin | <t> | |||
g the Initial BUNDLE offer</name> | ||||
<t indent="0" pn="section-9.3.1.1-1"> | ||||
When an offerer generates an initial BUNDLE offer, if the offer cont ains | When an offerer generates an initial BUNDLE offer, if the offer cont ains | |||
one or more bundled "m=" sections for RTP-based media (or, if there is a chance that "m=" sections | one or more bundled "m=" sections for RTP-based media (or if there is a chance that "m=" sections | |||
for RTP-based media will later be added to the BUNDLE group), the of ferer <bcp14>MUST</bcp14> | for RTP-based media will later be added to the BUNDLE group), the of ferer <bcp14>MUST</bcp14> | |||
include an SDP 'rtcp-mux' attribute <xref format="default" target="R FC5761" sectionFormat="of" derivedContent="RFC5761"/> in each | include an SDP 'rtcp-mux' attribute <xref target="RFC5761"/> in each | |||
bundled "m=" section (excluding any bundle-only "m=" sections). In a ddition, the offerer <bcp14>MAY</bcp14> include an | bundled "m=" section (excluding any bundle-only "m=" sections). In a ddition, the offerer <bcp14>MAY</bcp14> include an | |||
SDP 'rtcp-mux-only' attribute <xref format="default" target="RFC8858 " sectionFormat="of" derivedContent="RFC8858"/> | SDP 'rtcp-mux-only' attribute <xref target="RFC8858"/> | |||
in one or more bundled "m=" sections for RTP-based media. | in one or more bundled "m=" sections for RTP-based media. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1.1-2"> | <t indent="3"> | |||
NOTE: Whether the offerer includes the SDP 'rtcp-mux-only' attribute | NOTE: Whether the offerer includes the SDP 'rtcp-mux-only' attribute | |||
depends on whether the offerer supports fallback to usage of a separ ate | depends on whether the offerer supports fallback to usage of a separ ate | |||
port for RTCP in case the answerer moves one or more "m=" sections f or RTP-based media | port for RTCP in case the answerer moves one or more "m=" sections f or RTP-based media | |||
out of the BUNDLE group in the answer. | out of the BUNDLE group in the answer. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1.1-3"> | <t indent="3"> | |||
NOTE: If the offerer includes an SDP 'rtcp-mux' attribute in the bun | NOTE: If the offerer includes an SDP 'rtcp-mux' attribute in the bun | |||
dled "m=" sections, | dled "m=" sections but does not include an SDP 'rtcp-mux-only' attribute, | |||
but does not include an SDP 'rtcp-mux-only' attribute, | the offerer can also include an SDP 'rtcp' attribute <xref target="R | |||
the offerer can also include an SDP 'rtcp' attribute <xref format="d | FC3605"/> in one or more RTP-based bundled "m=" sections in order | |||
efault" target="RFC3605" sectionFormat="of" derivedContent="RFC3605"/> in one or | to provide a fallback port for RTCP, as described in <xref target="R | |||
more RTP-based bundled "m=" sections in order | FC5761"/>. However, the fallback port will only be applied to "m=" sections for | |||
to provide a fallback port for RTCP, as described in <xref format="d | RTP-based | |||
efault" target="RFC5761" sectionFormat="of" derivedContent="RFC5761"/>. However, | ||||
the fallback port will only be applied to "m=" sections for RTP-based | ||||
media that are moved out of the BUNDLE group by the answerer. | media that are moved out of the BUNDLE group by the answerer. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1.1-4"> | <t> | |||
In the initial BUNDLE offer, the address:port combination for RTCP < bcp14>MUST</bcp14> be unique in each | In the initial BUNDLE offer, the address:port combination for RTCP < bcp14>MUST</bcp14> be unique in each | |||
bundled "m=" section for RTP-based media (excluding a bundle-only "m =" section), similar to RTP. | bundled "m=" section for RTP-based media (excluding a bundle-only "m =" section), similar to RTP. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-rtprtcp-mux-oa-ans" toc="exclude" numbered="true" | <section anchor="sec-rtprtcp-mux-oa-ans"> | |||
removeInRFC="false" pn="section-9.3.1.2"> | <name>Generating the SDP Answer</name> | |||
<name slugifiedName="name-generating-the-sdp-answer-2">Generating th | <t> | |||
e SDP Answer</name> | When an answerer generates an answer, if the answerer supports RTP-b | |||
<t indent="0" pn="section-9.3.1.2-1"> | ased media | |||
When an answerer generates an answer, if the answerer supports RTP-b | ||||
ased media, | ||||
and if a bundled "m=" section in the corresponding offer contained a n SDP 'rtcp-mux' attribute, | and if a bundled "m=" section in the corresponding offer contained a n SDP 'rtcp-mux' attribute, | |||
the answerer <bcp14>MUST</bcp14> enable usage of RTP/RTCP multiplexi ng, even if there currently | the answerer <bcp14>MUST</bcp14> enable usage of RTP/RTCP multiplexi ng, even if there currently | |||
are no bundled "m=" sections for RTP-based media within the BUNDLE g roup. The answerer <bcp14>MUST</bcp14> include | are no bundled "m=" sections for RTP-based media within the BUNDLE g roup. The answerer <bcp14>MUST</bcp14> include | |||
an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" section, fol lowing the procedures for | an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" section, fol lowing the procedures for | |||
BUNDLE attributes (<xref format="default" target="sec-sdp-oa-cat" se ctionFormat="of" derivedContent="Section 7.1.3"/>). | BUNDLE attributes (<xref target="sec-sdp-oa-cat"/>). | |||
In addition, if the "m=" section that is selected as the offerer-tag ged "m=" section contained | In addition, if the "m=" section that is selected as the offerer-tag ged "m=" section contained | |||
an SDP 'rtcp-mux-only' attribute, the answerer <bcp14>MUST</bcp14> i nclude an SDP 'rtcp-mux-only' attribute | an SDP 'rtcp-mux-only' attribute, the answerer <bcp14>MUST</bcp14> i nclude an SDP 'rtcp-mux-only' attribute | |||
in the answerer-tagged "m=" section. | in the answerer-tagged "m=" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1.2-2"> | <t> | |||
In an initial BUNDLE offer, if the suggested offerer-tagged "m=" sec tion contained an | In an initial BUNDLE offer, if the suggested offerer-tagged "m=" sec tion contained an | |||
SDP 'rtcp-mux-only' attribute, the "m=" section was for RTP-based me dia. If the | SDP 'rtcp-mux-only' attribute, the "m=" section was for RTP-based me dia. If the | |||
answerer does not accept the "m=" section in the created BUNDLE grou | answerer does not accept the "m=" section in the created BUNDLE grou | |||
p, and moves the | p and moves the | |||
"m=" section out of the BUNDLE group (<xref format="default" target= | "m=" section out of the BUNDLE group (<xref target="sec-sdp-oa-ans-m | |||
"sec-sdp-oa-ans-mov" sectionFormat="of" derivedContent="Section 7.3.2"/>), | ov"/>), | |||
the answerer <bcp14>MUST</bcp14> include the attribute in the moved "m=" section and enable RTP/RTCP | the answerer <bcp14>MUST</bcp14> include the attribute in the moved "m=" section and enable RTP/RTCP | |||
multiplexing for the media associated with the "m=" section. If the answerer rejects the "m=" section | multiplexing for the media associated with the "m=" section. If the answerer rejects the "m=" section | |||
(<xref format="default" target="sec-sdp-oa-ans-rej" sectionFormat="o | (<xref target="sec-sdp-oa-ans-rej"/>), | |||
f" derivedContent="Section 7.3.3"/>) | the answerer <bcp14>MUST NOT</bcp14> include the attribute. | |||
the answerer MUST NOT include the attribute. | ||||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1.2-3"> | <t> | |||
The answerer <bcp14>MUST NOT</bcp14> include an SDP 'rtcp' attribute in any bundled "m=" section | The answerer <bcp14>MUST NOT</bcp14> include an SDP 'rtcp' attribute in any bundled "m=" section | |||
in the answer. The answerer will use the port value of the offerer-t agged | in the answer. The answerer will use the port value of the offerer-t agged | |||
"m=" section sending RTP and RTCP packets associated with RTP-based bundled media | "m=" section sending RTP and RTCP packets associated with RTP-based bundled media | |||
towards the offerer. | towards the offerer. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1.2-4"> | <t> | |||
If the usage of RTP/RTCP multiplexing within a BUNDLE group has been | If the usage of RTP/RTCP multiplexing within a BUNDLE group has been | |||
negotiated in a previous offer/answer exchange, the answerer <bcp14> MUST</bcp14> | negotiated in a previous offer/answer exchange, the answerer <bcp14> MUST</bcp14> | |||
include an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" sect ion. | include an SDP 'rtcp-mux' attribute in the answerer-tagged "m=" sect ion. | |||
It is not possible to disable RTP/RTCP multiplexing within a BUNDLE group. | It is not possible to disable RTP/RTCP multiplexing within a BUNDLE group. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-rtprtcp-mux-oa-pra" toc="exclude" numbered="true" | <section anchor="sec-rtprtcp-mux-oa-pra"> | |||
removeInRFC="false" pn="section-9.3.1.3"> | <name>Offerer Processing of the SDP Answer</name> | |||
<name slugifiedName="name-offerer-processing-of-the-sd">Offerer Proc | <t> | |||
essing of the SDP Answer</name> | ||||
<t indent="0" pn="section-9.3.1.3-1"> | ||||
When an offerer receives an answer, if the answerer has accepted | When an offerer receives an answer, if the answerer has accepted | |||
the usage of RTP/RTCP multiplexing (<xref target="sec-rtprtcp-mux-oa -ans" format="default" sectionFormat="of" derivedContent="Section 9.3.1.2"/>), | the usage of RTP/RTCP multiplexing (<xref target="sec-rtprtcp-mux-oa -ans"/>), | |||
the answerer follows the procedures for RTP/RTCP multiplexing define d | the answerer follows the procedures for RTP/RTCP multiplexing define d | |||
in <xref format="default" target="RFC5761" sectionFormat="of" derive dContent="RFC5761"/>. The | in <xref target="RFC5761"/>. The | |||
offerer will use the port value of the answerer-tagged "m=" section | offerer will use the port value of the answerer-tagged "m=" section | |||
for sending RTP and RTCP packets associated with | for sending RTP and RTCP packets associated with | |||
RTP-based bundled media towards the answerer. | RTP-based bundled media towards the answerer. | |||
</t> | </t> | |||
<t indent="0" pn="section-9.3.1.3-2"> | <t indent="3"> | |||
NOTE: It is considered a protocol error if the answerer has not | NOTE: It is considered a protocol error if the answerer has not | |||
accepted the usage of RTP/RTCP multiplexing for RTP-based "m=" secti ons | accepted the usage of RTP/RTCP multiplexing for RTP-based "m=" secti ons | |||
that the answerer included in the BUNDLE group. | that the answerer included in the BUNDLE group. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-rtprtcp-mux-oa-mod" toc="exclude" numbered="true" | <section anchor="sec-rtprtcp-mux-oa-mod"> | |||
removeInRFC="false" pn="section-9.3.1.4"> | <name>Modifying the Session</name> | |||
<name slugifiedName="name-modifying-the-session-2">Modifying the Ses | <t> | |||
sion</name> | ||||
<t indent="0" pn="section-9.3.1.4-1"> | ||||
When an offerer generates a subsequent offer, the offerer <bcp14>MUS T</bcp14> include | When an offerer generates a subsequent offer, the offerer <bcp14>MUS T</bcp14> include | |||
an SDP 'rtcp-mux' attribute in the offerer-tagged "m=" section, foll owing | an SDP 'rtcp-mux' attribute in the offerer-tagged "m=" section, foll owing | |||
the procedures for IDENTICAL multiplexing category attributes in | the procedures for IDENTICAL multiplexing category attributes in | |||
<xref format="default" target="sec-sdp-oa-cat" sectionFormat="of" de rivedContent="Section 7.1.3"/>. | <xref target="sec-sdp-oa-cat"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-ice" toc="include" numbered="true" removeInRFC="false" | <section anchor="sec-ice"> | |||
pn="section-10"> | <name>ICE Considerations</name> | |||
<name slugifiedName="name-ice-considerations">ICE Considerations</name> | <t> | |||
<t indent="0" pn="section-10-1"> | ||||
This section describes how to use the BUNDLE grouping extension together | This section describes how to use the BUNDLE grouping extension together | |||
with the ICE mechanism <xref format="default" target="RFC8445" sectionFo rmat="of" derivedContent="RFC8445"/>. | with the ICE mechanism <xref target="RFC8445"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-10-2"> | <t> | |||
The generic procedures for negotiating the usage of ICE using SDP, defin ed | The generic procedures for negotiating the usage of ICE using SDP, defin ed | |||
in <xref target="RFC8839" format="default" sectionFormat="of" derivedCon tent="RFC8839"/>, also apply to the usage of ICE | in <xref target="RFC8839"/>, also apply to the usage of ICE | |||
with BUNDLE, with the following exceptions: | with BUNDLE, with the following exceptions: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-10- | <ul> | |||
3"> | <li> | |||
<li pn="section-10-3.1"> | ||||
When the BUNDLE transport has been established, ICE connectivity che cks and keepalives | When the BUNDLE transport has been established, ICE connectivity che cks and keepalives | |||
only need to be performed for the BUNDLE transport, instead of per i ndividual bundled "m=" section | only need to be performed for the BUNDLE transport, instead of per i ndividual bundled "m=" section | |||
within the BUNDLE group. | within the BUNDLE group. | |||
</li> | </li> | |||
<li pn="section-10-3.2"> | <li> | |||
The generic SDP attribute offer/answer considerations (<xref format= | The generic SDP attribute offer/answer considerations (<xref target= | |||
"default" target="sec-sdp-oa-cat" sectionFormat="of" derivedContent="Section 7.1 | "sec-sdp-oa-cat"/>) also apply to ICE-related | |||
.3"/>) also apply to ICE-related | ||||
attributes. Therefore, when an offerer sends an initial BUNDLE offer (in order to negotiate a BUNDLE group), the offerer | attributes. Therefore, when an offerer sends an initial BUNDLE offer (in order to negotiate a BUNDLE group), the offerer | |||
includes ICE-related media-level attributes in each bundled "m=" sec tion (excluding any bundle-only "m=" sections), | includes ICE-related media-level attributes in each bundled "m=" sec tion (excluding any bundle-only "m=" sections), | |||
and each "m=" section <bcp14>MUST</bcp14> contain unique ICE propert ies. When an answerer generates an answer (initial BUNDLE answer or subsequent) | and each "m=" section <bcp14>MUST</bcp14> contain unique ICE propert ies. When an answerer generates an answer (initial BUNDLE answer or subsequent) | |||
that contains a BUNDLE group, and when an offerer sends a subsequent offer that contains a BUNDLE group, ICE-related media-level | that contains a BUNDLE group and when an offerer sends a subsequent offer that contains a BUNDLE group, ICE-related media-level | |||
attributes are only included in the tagged "m=" section (suggested o fferer-tagged "m=" section or answerer-tagged "m=" section), and | attributes are only included in the tagged "m=" section (suggested o fferer-tagged "m=" section or answerer-tagged "m=" section), and | |||
the ICE properties are applied to each bundled "m=" section within t he BUNDLE group. | the ICE properties are applied to each bundled "m=" section within t he BUNDLE group. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-10-4"> | <t indent="3"> | |||
NOTE: Most ICE-related media-level SDP attributes belong to the TRANSPOR T multiplexing category | NOTE: Most ICE-related media-level SDP attributes belong to the TRANSPOR T multiplexing category | |||
<xref target="RFC8859" format="default" sectionFormat="of" derivedConten t="RFC8859"/>, and the generic SDP attribute offer/answer | <xref target="RFC8859"/>, and the generic SDP attribute offer/answer | |||
considerations for the TRANSPORT multiplexing category apply to the attr ibutes. However, in the case of | considerations for the TRANSPORT multiplexing category apply to the attr ibutes. However, in the case of | |||
ICE-related attributes, the same considerations also apply to ICE-relate d media-level attributes that | ICE-related attributes, the same considerations also apply to ICE-relate d media-level attributes that | |||
belong to other multiplexing categories. | belong to other multiplexing categories. | |||
</t> | </t> | |||
<t indent="0" pn="section-10-5"> | <t indent="3"> | |||
NOTE: The following ICE-related media-level SDP attributes are defined i n | NOTE: The following ICE-related media-level SDP attributes are defined i n | |||
<xref target="RFC8839" format="default" sectionFormat="of" derivedConten t="RFC8839"/>: 'candidate', 'remote-candidates', 'ice-mismatch', | <xref target="RFC8839"/>: 'candidate', 'remote-candidates', 'ice-mismatc h', | |||
'ice-ufrag', 'ice-pwd', and 'ice-pacing'. | 'ice-ufrag', 'ice-pwd', and 'ice-pacing'. | |||
</t> | </t> | |||
<t indent="0" pn="section-10-6"> | <t> | |||
Initially, before ICE has produced selected candidate pairs that will be used for media, there might | Initially, before ICE has produced selected candidate pairs that will be used for media, there might | |||
be multiple transports established (if multiple candidate pairs are test ed). Once ICE has selected | be multiple transports established (if multiple candidate pairs are test ed). Once ICE has selected | |||
candidate pairs, they form the BUNDLE transport. | candidate pairs, they form the BUNDLE transport. | |||
</t> | </t> | |||
<t indent="0" pn="section-10-7"> | <t> | |||
Support and usage of the ICE mechanism together with the BUNDLE extensio n | Support and usage of the ICE mechanism together with the BUNDLE extensio n | |||
is <bcp14>OPTIONAL</bcp14>, and the procedures in this section only appl y when the | is <bcp14>OPTIONAL</bcp14>, and the procedures in this section only appl y when the | |||
ICE mechanism is used. Note that applications might mandate usage | ICE mechanism is used. Note that applications might mandate usage | |||
of the ICE mechanism even if the BUNDLE extension is not used. | of the ICE mechanism even if the BUNDLE extension is not used. | |||
</t> | </t> | |||
<t indent="0" pn="section-10-8"> | <t indent="3"> | |||
NOTE: If the Trickle ICE mechanism <xref target="RFC8840" format="defaul | NOTE: If the Trickle ICE mechanism <xref target="RFC8840"/> | |||
t" sectionFormat="of" derivedContent="RFC8840"/> | ||||
is used, an offerer and answerer might assign a port value of '9' and an IPv4 | is used, an offerer and answerer might assign a port value of '9' and an IPv4 | |||
address of '0.0.0.0' (or, the IPv6 equivalent '::') to multiple bundled "m=" sections | address of '0.0.0.0' (or, the IPv6 equivalent '::') to multiple bundled "m=" sections | |||
in the initial BUNDLE offer. The offerer and answerer will follow the no rmal procedures | in the initial BUNDLE offer. The offerer and answerer will follow the no rmal procedures | |||
for generating the offers and answers, including picking a bundled "m=" section as the | for generating the offers and answers, including picking a bundled "m=" section as the | |||
suggested offerer-tagged "m=" section, selecting the tagged "m=" section s, etc. The only | suggested offerer-tagged "m=" section, selecting the tagged "m=" section s, etc. The only | |||
difference is that media cannot be sent until one or more candidates hav e been provided. | difference is that media cannot be sent until one or more candidates hav e been provided. | |||
Once a BUNDLE group has been negotiated, trickled candidates associated with a bundled | Once a BUNDLE group has been negotiated, trickled candidates associated with a bundled | |||
"m=" section will be applied to all bundled "m=" sections within the BUN DLE group. | "m=" section will be applied to all bundled "m=" sections within the BUN DLE group. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-dtls" toc="include" numbered="true" removeInRFC="false" | <section anchor="sec-dtls"> | |||
pn="section-11"> | <name>DTLS Considerations</name> | |||
<name slugifiedName="name-dtls-considerations">DTLS Considerations</name> | <t> | |||
<t indent="0" pn="section-11-1"> | ||||
One or more media streams within a BUNDLE group might use | One or more media streams within a BUNDLE group might use | |||
the Datagram Transport Layer Security (DTLS) protocol | the DTLS protocol | |||
<xref format="default" target="RFC6347" sectionFormat="of" derivedConten | <xref target="RFC6347"/> | |||
t="RFC6347"/> | ||||
in order to encrypt the data or negotiate encryption keys | in order to encrypt the data or negotiate encryption keys | |||
if another encryption mechanism is used to encrypt media. | if another encryption mechanism is used to encrypt media. | |||
</t> | </t> | |||
<t indent="0" pn="section-11-2"> | <t> | |||
When DTLS is used within a BUNDLE group, the following rules | When DTLS is used within a BUNDLE group, the following rules | |||
apply: | apply: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11- | <ul> | |||
3"> | <li> | |||
<li pn="section-11-3.1"> | ||||
There can only be one DTLS association | There can only be one DTLS association | |||
<xref format="default" target="RFC6347" sectionFormat="of" derivedCont ent="RFC6347"/> | <xref target="RFC6347"/> | |||
associated with the BUNDLE group; | associated with the BUNDLE group; | |||
</li> | </li> | |||
<li pn="section-11-3.2"> | <li> | |||
Each usage of the DTLS association within the BUNDLE | Each usage of the DTLS association within the BUNDLE | |||
group <bcp14>MUST</bcp14> use the same mechanism for determining | group <bcp14>MUST</bcp14> use the same mechanism for determining | |||
which endpoints (the offerer or answerer) become | which endpoints (the offerer or answerer) become | |||
DTLS client and DTLS server; | DTLS client and DTLS server; | |||
</li> | </li> | |||
<li pn="section-11-3.3"> | <li> | |||
Each usage of the DTLS association within the BUNDLE | Each usage of the DTLS association within the BUNDLE | |||
group <bcp14>MUST</bcp14> use the same mechanism for determining | group <bcp14>MUST</bcp14> use the same mechanism for determining | |||
whether an offer or answer will trigger the | whether an offer or answer will trigger the | |||
establishment of a new DTLS association or | establishment of a new DTLS association or if | |||
an existing DTLS association will be used; and | an existing DTLS association will be used instead; and | |||
</li> | </li> | |||
<li pn="section-11-3.4"> | <li> | |||
If the DTLS client supports DTLS-SRTP, | If the DTLS client supports DTLS-SRTP, | |||
it <bcp14>MUST</bcp14> include the 'use_srtp' extension | it <bcp14>MUST</bcp14> include the 'use_srtp' extension | |||
in the DTLS ClientHello message | in the DTLS ClientHello message | |||
<xref format="default" target="RFC5764" sectionFormat="of" derivedCont ent="RFC5764"/>. | <xref target="RFC5764"/>. | |||
The client <bcp14>MUST</bcp14> include the extension even if the usage | The client <bcp14>MUST</bcp14> include the extension even if the usage | |||
of DTLS-SRTP is not negotiated as part of the | of DTLS-SRTP is not negotiated as part of the | |||
multimedia session (e.g., the SIP session <xref format="default" targe t="RFC3261" sectionFormat="of" derivedContent="RFC3261"/>). | multimedia session (e.g., the SIP session <xref target="RFC3261"/>). | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t indent="0" pn="section-11-4"> | <t indent="3"> | |||
NOTE: The inclusion of the 'use_srtp' extension during the initial | NOTE: The inclusion of the 'use_srtp' extension during the initial | |||
DTLS handshake ensures that a DTLS renegotiation will not be required | DTLS handshake ensures that a DTLS renegotiation will not be required | |||
in order to include the extension, in case DTLS-SRTP encrypted media | in order to include the extension in case DTLS-SRTP encrypted media | |||
is added to the BUNDLE group later during the multimedia session. | is added to the BUNDLE group later during the multimedia session. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-extmap" toc="include" numbered="true" removeInRFC="fals | <section anchor="sec-extmap"> | |||
e" pn="section-12"> | <name>RTP Header Extensions Consideration</name> | |||
<name slugifiedName="name-rtp-header-extensions-consi">RTP Header Extensio | <t>When RTP header extensions <xref target="RFC8285"/> are used in the con | |||
ns Consideration</name> | text of this | |||
<t indent="0" pn="section-12-1">When RTP header extensions <xref target="R | ||||
FC8285" format="default" sectionFormat="of" derivedContent="RFC8285"/> are used | ||||
in the context of this | ||||
specification, the identifier used for a given extension <bcp14>MUST</bcp 14> identify the same | specification, the identifier used for a given extension <bcp14>MUST</bcp 14> identify the same | |||
extension across all the bundled media descriptions. </t> | extension across all the bundled media descriptions. </t> | |||
</section> | </section> | |||
<section anchor="sec-3264" toc="include" numbered="true" removeInRFC="false" | <section anchor="sec-3264"> | |||
pn="section-13"> | <name>Updates to RFC 3264</name> | |||
<name slugifiedName="name-update-to-rfc-3264">Update to RFC 3264</name> | <t> | |||
<t indent="0" pn="section-13-1"> | This section updates <xref target="RFC3264"/> in order to allow extensio | |||
This section updates RFC 3264, in order to allow extensions to define th | ns to define the usage of | |||
e usage of | ||||
a zero port value in offers and answers for purposes other than removing or disabling | a zero port value in offers and answers for purposes other than removing or disabling | |||
media streams. The following sections are being updated: | media streams. The following sections are being updated: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-13- | <ul> | |||
2"> | <li>"Unicast Streams"; see <xref target="RFC3264" section="5.1"/>.</li> | |||
<li pn="section-13-2.1">"Unicast Streams"; see <xref target="RFC3264" se | <li>"Putting a Unicast Media Stream on Hold"; see <xref target="RFC3264" | |||
ctionFormat="of" section="5.1" format="default" derivedLink="https://rfc-editor. | section="8.4"/>. </li> | |||
org/rfc/rfc3264#section-5.1" derivedContent="RFC3264"/></li> | ||||
<li pn="section-13-2.2">"Putting a Unicast Media Stream on Hold"; see <x | ||||
ref target="RFC3264" sectionFormat="of" section="8.4" format="default" derivedLi | ||||
nk="https://rfc-editor.org/rfc/rfc3264#section-8.4" derivedContent="RFC3264"/>. | ||||
</li> | ||||
</ul> | </ul> | |||
<section anchor="sec-3264-old-5_1" toc="include" numbered="true" removeInR | <section anchor="sec-3264-old-5_1"> | |||
FC="false" pn="section-13.1"> | <name>Original Text from RFC 3264, Section 5.1, Paragraph 2</name> | |||
<name slugifiedName="name-original-text-from-rfc-3264">Original Text fro | <blockquote> | |||
m RFC 3264, Section 5.1, 2nd Paragraph</name> | ||||
<blockquote pn="section-13.1-1"> | ||||
For recvonly and sendrecv streams, the port number and address in the | For recvonly and sendrecv streams, the port number and address in the | |||
offer indicate where the offerer would like to receive the media | offer indicate where the offerer would like to receive the media | |||
stream. For sendonly RTP streams, the address and port number | stream. For sendonly RTP streams, the address and port number | |||
indirectly indicate where the offerer wants to receive RTCP reports. | indirectly indicate where the offerer wants to receive RTCP reports. | |||
Unless there is an explicit indication otherwise, reports are sent to | Unless there is an explicit indication otherwise, reports are sent to | |||
the port number one higher than the number indicated. The IP address | the port number one higher than the number indicated. The IP address | |||
and port present in the offer indicate nothing about the source IP | and port present in the offer indicate nothing about the source IP | |||
address and source port of RTP and RTCP packets that will be sent by | address and source port of RTP and RTCP packets that will be sent by | |||
the offerer. A port number of zero in the offer indicates that the | the offerer. A port number of zero in the offer indicates that the | |||
stream is offered but <bcp14>MUST NOT</bcp14> be used. This has no usef ul semantics | stream is offered but <bcp14>MUST NOT</bcp14> be used. This has no usef ul semantics | |||
in an initial offer, but is allowed for reasons of completeness, | in an initial offer, but is allowed for reasons of completeness, | |||
since the answer can contain a zero port indicating a rejected stream | since the answer can contain a zero port indicating a rejected stream | |||
(Section 6). Furthermore, existing streams can be terminated by | (Section <xref target="RFC3264" sectionFormat="bare" section="6"/>). Fur | |||
setting the port to zero (Section 8). In general, a port number of | thermore, existing streams can be terminated by | |||
setting the port to zero (Section <xref target="RFC3264" sectionFormat=" | ||||
bare" section="8"/>). In general, a port number of | ||||
zero indicates that the media stream is not wanted. | zero indicates that the media stream is not wanted. | |||
</blockquote> | </blockquote> | |||
</section> | </section> | |||
<section anchor="sec-3264-new-5_1" toc="include" numbered="true" removeInR | <section anchor="sec-3264-new-5_1"> | |||
FC="false" pn="section-13.2"> | <name>New Text Replacing RFC 3264, Section 5.1, Paragraph 2</name> | |||
<name slugifiedName="name-new-text-replacing-rfc-3264">New Text Replacin | <blockquote><t> | |||
g RFC 3264, Section 5.1, 2nd Paragraph</name> | ||||
<t indent="0" pn="section-13.2-1"> | ||||
For recvonly and sendrecv streams, the port number and address in the | For recvonly and sendrecv streams, the port number and address in the | |||
offer indicate where the offerer would like to receive the media | offer indicate where the offerer would like to receive the media | |||
stream. For sendonly RTP streams, the address and port number | stream. For sendonly RTP streams, the address and port number | |||
indirectly indicate where the offerer wants to receive RTCP reports. | indirectly indicate where the offerer wants to receive RTCP reports. | |||
Unless there is an explicit indication otherwise, reports are sent to | Unless there is an explicit indication otherwise, reports are sent to | |||
the port number one higher than the number indicated. The IP address | the port number one higher than the number indicated. The IP address | |||
and port present in the offer indicate nothing about the source IP | and port present in the offer indicate nothing about the source IP | |||
address and source port of the RTP and RTCP packets that will be sent by | address and source port of the RTP and RTCP packets that will be sent by | |||
the offerer. By default, a port number of zero in the offer indicates th at the | the offerer. By default, a port number of zero in the offer indicates th at the | |||
stream is offered but <bcp14>MUST NOT</bcp14> be used, but an extension mechanism | stream is offered but <bcp14>MUST NOT</bcp14> be used, but an extension mechanism | |||
might specify different semantics for the usage of a zero port value. | might specify different semantics for the usage of a zero port value. | |||
Furthermore, existing streams can be terminated by setting the port to | Furthermore, existing streams can be terminated by setting the port to | |||
zero (Section 8). In general, a port number of zero by default indicates | zero (Section <xref target="RFC3264" sectionFormat="bare" section="8"/>) . In general, a port number of zero by default indicates | |||
that the media stream is not wanted. | that the media stream is not wanted. | |||
</t> | </t></blockquote> | |||
</section> | </section> | |||
<section anchor="sec-3264-old-8_4" toc="include" numbered="true" removeInR | <section anchor="sec-3264-old-8_4"> | |||
FC="false" pn="section-13.3"> | <name>Original Text from RFC 3264, Section 8.4, Paragraph 6</name> | |||
<name slugifiedName="name-original-text-from-rfc-3264-">Original Text fr | <blockquote>RFC 2543 [10] specified that placing a user on hold was acco | |||
om RFC 3264, Section 8.4, 6th Paragraph</name> | mplished | |||
<blockquote pn="section-13.3-1">RFC 2543 [10] specified that placing a u | ||||
ser on hold was accomplished | ||||
by setting the connection address to 0.0.0.0. Its usage for putting | by setting the connection address to 0.0.0.0. Its usage for putting | |||
a call on hold is no longer recommended, since it doesn't allow for | a call on hold is no longer recommended, since it doesn't allow for | |||
RTCP to be used with held streams, doesn't work with IPv6, and breaks | RTCP to be used with held streams, doesn't work with IPv6, and breaks | |||
with connection oriented media. However, it can be useful in an | with connection oriented media. However, it can be useful in an | |||
initial offer when the offerer knows it wants to use a particular set | initial offer when the offerer knows it wants to use a particular set | |||
of media streams and formats, but doesn't know the addresses and | of media streams and formats, but doesn't know the addresses and | |||
ports at the time of the offer. Of course, when used, the port | ports at the time of the offer. Of course, when used, the port | |||
number <bcp14>MUST NOT</bcp14> be zero, which would specify that the stream h as been | number <bcp14>MUST NOT</bcp14> be zero, which would specify that the stream h as been | |||
disabled. An agent <bcp14>MUST</bcp14> be capable of receiving SDP with a | disabled. An agent <bcp14>MUST</bcp14> be capable of receiving SDP with a | |||
connection address of 0.0.0.0, in which case it means that neither | connection address of 0.0.0.0, in which case it means that neither | |||
RTP nor RTCP should be sent to the peer. | RTP nor RTCP should be sent to the peer. | |||
</blockquote> | </blockquote> | |||
</section> | </section> | |||
<section anchor="sec-3264-new-8_4" toc="include" numbered="true" removeInR | <section anchor="sec-3264-new-8_4"> | |||
FC="false" pn="section-13.4"> | <name>New Text Replacing RFC 3264, Section 8.4, Paragraph 6</name> | |||
<name slugifiedName="name-new-text-replacing-rfc-3264-">New Text Replaci | <blockquote><t> RFC 2543 <xref target="RFC2543"/> specifies | |||
ng RFC 3264, Section 8.4, 6th Paragraph</name> | that placing a user on hold was accomplished by setting the | |||
<t indent="0" pn="section-13.4-1"> | connection address to 0.0.0.0. Its usage for putting a call | |||
RFC 2543 <xref target="RFC2543" format="default" sectionFormat="of" deri | on hold is no longer recommended, since it doesn't allow for | |||
vedContent="RFC2543"/> specifies that placing a user on hold was accomplished | RTCP to be used with held streams, doesn't work with IPv6, and | |||
by setting the connection address to 0.0.0.0. Its usage for putting | breaks with connection oriented media. However, it can be | |||
a call on hold is no longer recommended, since it doesn't allow for | useful in an initial offer when the offerer knows it wants to | |||
RTCP to be used with held streams, doesn't work with IPv6, and breaks | use a particular set of media streams and formats, but doesn't | |||
with connection oriented media. However, it can be useful in an | know the addresses and ports at the time of the offer. Of | |||
initial offer when the offerer knows it wants to use a particular set | course, when used, the port number <bcp14>MUST NOT</bcp14> be | |||
of media streams and formats, but doesn't know the addresses and | zero, if it would specify that the stream has been | |||
ports at the time of the offer. Of course, when used, the port | disabled. However, an extension mechanism might specify | |||
number <bcp14>MUST NOT</bcp14> be zero, if it would specify that the str | different semantics of the zero port number usage. An agent | |||
eam has been | <bcp14>MUST</bcp14> be capable of receiving SDP with a | |||
disabled. However, an extension mechanism might specify different | connection address of 0.0.0.0, in which case it means that | |||
semantics of the zero port number usage. An agent <bcp14>MUST</bcp14> be | neither RTP nor RTCP is to be sent to the peer. | |||
capable | </t></blockquote> | |||
of receiving SDP with a connection address of 0.0.0.0, in which case it | ||||
means that neither RTP nor RTCP is to be sent to the peer. | ||||
</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-5888" toc="include" numbered="true" removeInRFC="false" | <section anchor="sec-5888"> | |||
pn="section-14"> | <name>Update to RFC 5888</name> | |||
<name slugifiedName="name-update-to-rfc-5888">Update to RFC 5888</name> | <t> | |||
<t indent="0" pn="section-14-1"> | This section updates RFC 5888 <xref target="RFC5888"/> | |||
This section updates RFC 5888 <xref format="default" target="RFC5888" se | ||||
ctionFormat="of" derivedContent="RFC5888"/>, | ||||
in order for extensions to allow an SDP 'group' attribute containing | in order for extensions to allow an SDP 'group' attribute containing | |||
an identification-tag that identifies an "m=" section with the port set to zero. | an identification-tag that identifies an "m=" section with the port set to zero. | |||
"Group Value in Answers" (<xref target="RFC5888" sectionFormat="of" sect ion="9.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5888#secti on-9.2" derivedContent="RFC5888"/>) | "Group Value in Answers" (<xref target="RFC5888" section="9.2"/>) | |||
is updated. | is updated. | |||
</t> | </t> | |||
<section anchor="sec-5888-old-9_2" toc="include" numbered="true" removeInR | <section anchor="sec-5888-old-9_2"> | |||
FC="false" pn="section-14.1"> | <name>Original Text from RFC 5888, Section 9.2, Paragraph 3</name> | |||
<name slugifiedName="name-original-text-from-rfc-5888">Original Text fro | <blockquote>SIP entities refuse media streams by setting the port to zer | |||
m RFC 5888, Section 9.2, 3rd Paragraph</name> | o in the corresponding | |||
<blockquote pn="section-14.1-1">SIP entities refuse media streams by set | ||||
ting the port to zero in the corresponding | ||||
"m" line. "a=group" lines <bcp14>MUST NOT</bcp14> contain identification -tags that correspond to | "m" line. "a=group" lines <bcp14>MUST NOT</bcp14> contain identification -tags that correspond to | |||
"m" lines with the port set to zero.</blockquote> | "m" lines with the port set to zero.</blockquote> | |||
</section> | </section> | |||
<section anchor="sec-5888-new-9_2" toc="include" numbered="true" removeInR | <section anchor="sec-5888-new-9_2"> | |||
FC="false" pn="section-14.2"> | <name>New Text Replacing RFC 5888, Section 9.2, Paragraph 3</name> | |||
<name slugifiedName="name-new-text-replacing-rfc-5888">New Text Replacin | <blockquote><t> SIP entities refuse media streams by setting | |||
g RFC 5888, Section 9.2, 3rd Paragraph</name> | the port to zero in the corresponding "m" line. "a=group" | |||
<t indent="0" pn="section-14.2-1"> | lines <bcp14>MUST NOT</bcp14> contain identification-tags that | |||
SIP entities refuse media streams by setting the port to zero in the cor | correspond to "m" lines with the port set to zero, but an | |||
responding | extension mechanism might specify different semantics for | |||
"m" line. "a=group" lines <bcp14>MUST NOT</bcp14> contain identification | including identification-tags that correspond to such "m=" | |||
-tags that correspond to | lines. </t></blockquote> | |||
"m" lines with the port set to zero, but an extension mechanism might sp | ||||
ecify different | ||||
semantics for including identification-tags that correspond to such "m=" | ||||
lines. | ||||
</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-receiver-id" toc="include" numbered="true" removeInRFC= | <section anchor="sec-receiver-id"> | |||
"false" pn="section-15"> | <name>RTP/RTCP Extensions for identification-tag Transport</name> | |||
<name slugifiedName="name-rtp-rtcp-extensions-for-ide">RTP/RTCP Extensions | <t> | |||
for identification-tag Transport</name> | Offerers and answerers <xref target="RFC3264"/> can associate | |||
<t indent="0" pn="section-15-1"> | identification-tags with "m=" sections within offers and | |||
Offerers and answerers <xref format="default" target="RFC3264" sectionFo | answers using the procedures in <xref | |||
rmat="of" derivedContent="RFC3264"/> | target="RFC5888"/>. Each identification-tag uniquely | |||
can associate identification-tags with "m=" sections within offers | represents an "m=" section. | |||
and answers, using the procedures in <xref format="default" target="RFC5 | ||||
888" sectionFormat="of" derivedContent="RFC5888"/>. Each identification-tag uniq | ||||
uely represents an "m=" section. | ||||
</t> | </t> | |||
<t indent="0" pn="section-15-2"> | <t> | |||
This section defines a new RTCP SDES item <xref format="default" target= | This section defines a new RTCP SDES item <xref target="RFC3550"/>, 'MID | |||
"RFC3550" sectionFormat="of" derivedContent="RFC3550"/>, 'MID', which is used to | ', which is used to carry identification-tags within RTCP | |||
carry identification-tags within RTCP | ||||
SDES packets. This section also defines a new RTP SDES header extension | SDES packets. This section also defines a new RTP SDES header extension | |||
<xref format="default" target="RFC7941" sectionFormat="of" derivedConten t="RFC7941"/>, which | <xref target="RFC7941"/>, which | |||
is used to carry the 'MID' RTCP SDES item in RTP packets. | is used to carry the 'MID' RTCP SDES item in RTP packets. | |||
</t> | </t> | |||
<t indent="0" pn="section-15-3"> | <t> | |||
The SDES item and RTP SDES header extension make it possible for a recei ver to associate | The SDES item and RTP SDES header extension make it possible for a recei ver to associate | |||
each RTP stream with a specific "m=" section, with which the receiver ha s | each RTP stream with a specific "m=" section with which the receiver has | |||
associated an identification-tag, even if those "m=" sections are part o f the same RTP session. | associated an identification-tag, even if those "m=" sections are part o f the same RTP session. | |||
The RTP SDES header extension also ensures that the media recipient gets the identification-tag | The RTP SDES header extension also ensures that the media recipient gets the identification-tag | |||
upon receipt of the first decodable media and is able to associate the m edia with the | upon receipt of the first decodable media and is able to associate the m edia with the | |||
correct application. | correct application. | |||
</t> | </t> | |||
<t indent="0" pn="section-15-4"> | <t> | |||
A media recipient informs the media sender about the identification-tag | A media recipient informs the media sender about the identification-tag | |||
associated with an "m=" section through the use of a 'mid' attribute | associated with an "m=" section through the use of a 'mid' attribute | |||
<xref format="default" target="RFC5888" sectionFormat="of" derivedConten t="RFC5888"/>. The media sender then | <xref target="RFC5888"/>. The media sender then | |||
inserts the identification-tag in RTCP and RTP packets sent to the media recipient. | inserts the identification-tag in RTCP and RTP packets sent to the media recipient. | |||
</t> | </t> | |||
<t indent="0" pn="section-15-5"> | <t indent="3"> | |||
NOTE: The text above defines how identification-tags are carried in offe rs | NOTE: The text above defines how identification-tags are carried in offe rs | |||
and answers. The usage of other signaling protocols for carrying identif ication-tags | and answers. The usage of other signaling protocols for carrying identif ication-tags | |||
is not prevented, but the usage of such protocols is outside the scope o f this document. | is not prevented, but the usage of such protocols is outside the scope o f this document. | |||
</t> | </t> | |||
<t indent="0" pn="section-15-6"> | <t> | |||
<xref format="default" target="RFC3550" sectionFormat="of" derivedConten | <xref target="RFC3550"/> defines general procedures | |||
t="RFC3550"/> defines general procedures | ||||
regarding the RTCP transmission interval. The RTCP MID SDES item <bcp14> SHOULD</bcp14> be sent in | regarding the RTCP transmission interval. The RTCP MID SDES item <bcp14> SHOULD</bcp14> be sent in | |||
the first few RTCP packets after joining the session and <bcp14>SHOULD</ bcp14> be sent regularly | the first few RTCP packets after joining the session and <bcp14>SHOULD</ bcp14> be sent regularly | |||
thereafter. The exact number of RTCP packets in which this SDES item is sent is | thereafter. The exact number of RTCP packets in which this SDES item is sent is | |||
intentionally not specified here, as it will depend on the expected pack et-loss | intentionally not specified here, as it will depend on the expected pack et-loss | |||
rate, the RTCP reporting interval, and the allowable overhead. | rate, the RTCP reporting interval, and the allowable overhead. | |||
</t> | </t> | |||
<t indent="0" pn="section-15-7"> | <t> | |||
The RTP SDES header extension for carrying the 'MID' RTCP SDES <bcp14>SH OULD</bcp14> be included | The RTP SDES header extension for carrying the 'MID' RTCP SDES <bcp14>SH OULD</bcp14> be included | |||
in some RTP packets at the start of the session and whenever the SSRC ch anges. It might | in some RTP packets at the start of the session and whenever the SSRC ch anges. It might | |||
also be useful to include the header extension in RTP packets that compr ise access points in the media | also be useful to include the header extension in RTP packets that compr ise access points in the media | |||
(e.g., with video I-frames). The exact number of RTP packets in which th is header | (e.g., with video I-frames). The exact number of RTP packets in which th is header | |||
extension is sent is intentionally not specified here, as it will depend on expected | extension is sent is intentionally not specified here, as it will depend on expected | |||
packet-loss rate and loss patterns, the overhead the application can tol erate, and | packet-loss rate and loss patterns, the overhead the application can tol erate, and | |||
the importance of immediate receipt of the identification-tag. | the importance of immediate receipt of the identification-tag. | |||
</t> | </t> | |||
<t indent="0" pn="section-15-8"> | <t> | |||
For robustness, endpoints need to be prepared for situations where the | For robustness, endpoints need to be prepared for situations where the | |||
reception of the identification-tag is delayed and <bcp14>SHOULD NOT</bc p14> terminate sessions | reception of the identification-tag is delayed and <bcp14>SHOULD NOT</bc p14> terminate sessions | |||
in such cases, as the identification-tag is likely to arrive soon. | in such cases, as the identification-tag is likely to arrive soon. | |||
</t> | </t> | |||
<section anchor="sec-receiver-id-sdes-item" toc="include" numbered="true" | <section anchor="sec-receiver-id-sdes-item"> | |||
removeInRFC="false" pn="section-15.1"> | <name>RTCP MID SDES Item</name> | |||
<name slugifiedName="name-rtcp-mid-sdes-item">RTCP MID SDES Item</name> | <artwork name="" type="" alt=""> | |||
<artwork align="left" name="" type="" alt="" pn="section-15.1-1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
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 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| MID=15 | length | identification-tag ... | | MID=15 | length | identification-tag ... | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
</artwork> | </artwork> | |||
<t indent="0" pn="section-15.1-2"> | <t> | |||
The identification-tag payload is UTF-8 encoded <xref format="default" | The identification-tag payload is UTF-8 encoded <xref target="RFC3629" | |||
target="RFC3629" sectionFormat="of" derivedContent="RFC3629"/>, as in SDP. | />, as in SDP. | |||
</t> | </t> | |||
<t indent="0" pn="section-15.1-3"> | <t> | |||
The identification-tag is not zero terminated. | The identification-tag is not zero terminated. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-receiver-id-rtp-he" toc="include" numbered="true" rem | <section anchor="sec-receiver-id-rtp-he"> | |||
oveInRFC="false" pn="section-15.2"> | <name>RTP SDES Header Extension for MID</name> | |||
<name slugifiedName="name-rtp-sdes-header-extension-f">RTP SDES Header E | <t> | |||
xtension For MID</name> | ||||
<t indent="0" pn="section-15.2-1"> | ||||
The payload, containing the identification-tag, of the RTP SDES header extension element | The payload, containing the identification-tag, of the RTP SDES header extension element | |||
can be encoded using either the 1-byte or the 2-byte header <xref form at="default" target="RFC7941" sectionFormat="of" derivedContent="RFC7941"/>. The identification-tag payload is UTF-8 | can be encoded using either the 1-byte or the 2-byte header <xref targ et="RFC7941"/>. The identification-tag payload is UTF-8 | |||
encoded, as in SDP. | encoded, as in SDP. | |||
</t> | </t> | |||
<t indent="0" pn="section-15.2-2"> | <t> | |||
The identification-tag is not zero terminated. Note that the set of he ader extensions | The identification-tag is not zero terminated. Note that the set of he ader extensions | |||
included in the packet needs to be padded to the next 32-bit boundary using zero | included in the packet needs to be padded to the next 32-bit boundary using zero | |||
bytes <xref format="default" target="RFC8285" sectionFormat="of" deriv edContent="RFC8285"/>. | bytes <xref target="RFC8285"/>. | |||
</t> | </t> | |||
<t indent="0" pn="section-15.2-3"> | <t> | |||
As the identification-tag is included in an RTCP SDES item, an RTP SDE S header | As the identification-tag is included in an RTCP SDES item, an RTP SDE S header | |||
extension, or both, there needs to be some consideration about the pac ket expansion | extension, or both, there needs to be some consideration about the pac ket expansion | |||
caused by the identification-tag. To avoid Maximum Transmission Unit ( MTU) issues | caused by the identification-tag. To avoid Maximum Transmission Unit ( MTU) issues | |||
for the RTP packets, the header extension's size needs to be taken int o account when | for the RTP packets, the header extension's size needs to be taken int o account when | |||
encoding the media. | encoding the media. | |||
</t> | </t> | |||
<t indent="0" pn="section-15.2-4"> | <t> | |||
It is recommended that the identification-tag be kept short. Due to th e properties of | It is recommended that the identification-tag be kept short. Due to th e properties of | |||
the RTP header extension mechanism, when using the 1-byte header, a ta g that is 1-3 bytes | the RTP header extension mechanism, when using the 1-byte header, a ta g that is 1-3 bytes | |||
will result in a minimal number of 32-bit words used for the RTP SDES header extension, | will result in a minimal number of 32-bit words used for the RTP SDES header extension, | |||
in case no other header extensions are included at the same time. Note , do take into | in case no other header extensions are included at the same time. Note : do take into | |||
account that some single characters when UTF-8 encoded will result in multiple octets. | account that some single characters when UTF-8 encoded will result in multiple octets. | |||
The identification-tag <bcp14>MUST NOT</bcp14> contain any user inform ation, and applications <bcp14>SHALL</bcp14> avoid | The identification-tag <bcp14>MUST NOT</bcp14> contain any user inform ation, and applications <bcp14>SHALL</bcp14> avoid | |||
generating the identification-tag using a pattern that enables user or application | generating the identification-tag using a pattern that enables user or application | |||
identification. | identification. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-receiver-id-iana" toc="include" numbered="true" removeI | <section anchor="sec-receiver-id-iana"> | |||
nRFC="false" pn="section-16"> | <name>IANA Considerations</name> | |||
<name slugifiedName="name-iana-considerations">IANA Considerations</name> | <t>NOTE: Apart from the references, the IANA considerations in this sectio | |||
<section anchor="sec-receiver-id-iana-sdes-item" toc="include" numbered="t | n are identical to those in <xref target="RFC8843"/>.</t> | |||
rue" removeInRFC="false" pn="section-16.1"> | <section anchor="sec-receiver-id-iana-sdes-item"> | |||
<name slugifiedName="name-new-sdes-item">New SDES Item</name> | <name>SDES Item</name> | |||
<t indent="0" pn="section-16.1-1"> | <t> | |||
This document updates the MID SDES item to the IANA "RTP SDES Item | This document updates the MID SDES entry in the "RTP SDES Item | |||
Types" registry as follows: | Types" registry as follows: | |||
</t> | </t> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="section-16 | <dl spacing="compact"> | |||
.1-2"> | <dt>Value:</dt> | |||
<li pn="section-16.1-2.1"> | <dd>15</dd> | |||
<dl newline="false" spacing="normal" indent="3" pn="section-16.1-2.1 | <dt>Abbrev.:</dt> | |||
.1"> | <dd>MID</dd> | |||
<dt pn="section-16.1-2.1.1.1">Value:</dt> | <dt>Name:</dt> | |||
<dd pn="section-16.1-2.1.1.2">15</dd> | <dd>Media Identification</dd> | |||
<dt pn="section-16.1-2.1.1.3">Abbrev.:</dt> | <dt>Reference:</dt> | |||
<dd pn="section-16.1-2.1.1.4">MID</dd> | <dd>RFC 9143</dd> | |||
<dt pn="section-16.1-2.1.1.5">Name:</dt> | ||||
<dd pn="section-16.1-2.1.1.6">Media Identification</dd> | ||||
<dt pn="section-16.1-2.1.1.7">Reference:</dt> | ||||
<dd pn="section-16.1-2.1.1.8">RFC XXXX</dd> | ||||
</dl> | </dl> | |||
</li> | ||||
</ul> | ||||
</section> | </section> | |||
<section anchor="sec-receiver-id-iana-rtp-uri" toc="include" numbered="tru | <section anchor="sec-receiver-id-iana-rtp-uri"> | |||
e" removeInRFC="false" pn="section-16.2"> | <name>RTP SDES Header Extension URI</name> | |||
<name slugifiedName="name-new-rtp-sdes-header-extensi">New RTP SDES Head | <t> | |||
er Extension URI</name> | This document updates the extension URI in the "RTP SDES | |||
<t indent="0" pn="section-16.2-1"> | Compact Header Extensions" subregistry of the "RTP Compact | |||
This document updates the extension URI in the RTP SDES Compact Header E | Header Extensions" sub-registry, according to the | |||
xtensions | following data: | |||
sub-registry of the RTP Compact Header Extensions registry sub-registry, | ||||
according | ||||
to the following data: | ||||
</t> | </t> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="section-16 | <dl spacing="compact"> | |||
.2-2"> | <dt>Extension URI:</dt> | |||
<li pn="section-16.2-2.1"> | <dd>urn:ietf:params:rtp-hdrext:sdes:mid</dd> | |||
<dl newline="false" spacing="normal" indent="3" pn="section-16.2-2.1 | <dt>Description:</dt> | |||
.1"> | <dd>Media identification</dd> | |||
<dt pn="section-16.2-2.1.1.1">Extension URI:</dt> | <dt>Contact:</dt> | |||
<dd pn="section-16.2-2.1.1.2">urn:ietf:params:rtp-hdrext:sdes:mid< | <dd>IESG (iesg@ietf.org)</dd> | |||
/dd> | <dt>Reference:</dt> | |||
<dt pn="section-16.2-2.1.1.3">Description:</dt> | <dd>RFC 9143</dd> | |||
<dd pn="section-16.2-2.1.1.4">Media identification</dd> | ||||
<dt pn="section-16.2-2.1.1.5">Contact:</dt> | ||||
<dd pn="section-16.2-2.1.1.6">IESG (iesg@ietf.org)</dd> | ||||
<dt pn="section-16.2-2.1.1.7">Reference:</dt> | ||||
<dd pn="section-16.2-2.1.1.8">RFC XXXX</dd> | ||||
</dl> | </dl> | |||
</li> | <t> | |||
</ul> | ||||
<t indent="0" pn="section-16.2-3"> | ||||
The SDES item does not reveal privacy information about the users. | The SDES item does not reveal privacy information about the users. | |||
It is simply used to associate RTP-based media with the correct SDP | It is simply used to associate RTP-based media with the correct SDP | |||
media description ("m=" section) in the SDP used to negotiate the | media description ("m=" section) in the SDP used to negotiate the | |||
media.</t> | media.</t> | |||
<t indent="0" pn="section-16.2-4"> The purpose of the extension is for t he offerer to be able to | <t> The purpose of the extension is for the offerer to be able to | |||
associate received multiplexed RTP-based media before the offerer | associate received multiplexed RTP-based media before the offerer | |||
receives the associated answer.</t> | receives the associated answer.</t> | |||
</section> | </section> | |||
<section anchor="sec-receiver-id-iana-sdp-attribute" toc="include" numbere | <section anchor="sec-receiver-id-iana-sdp-attribute"> | |||
d="true" removeInRFC="false" pn="section-16.3"> | <name>SDP Attribute</name> | |||
<name slugifiedName="name-new-sdp-attribute">New SDP Attribute</name> | <t> | |||
<t indent="0" pn="section-16.3-1"> | ||||
This document updates the SDP media-level attribute, | This document updates the SDP media-level attribute, | |||
'bundle-only', according to the following data: | 'bundle-only', in the "attribute-name (formerly 'att-field')" subregistr y of the "Session Description Protocol (SDP) Parameters" registry according to t he following data: | |||
</t> | </t> | |||
<ul empty="true" bare="false" indent="3" spacing="normal" pn="section-16 | <dl spacing="compact"> | |||
.3-2"> | <dt>Attribute name:</dt> | |||
<li pn="section-16.3-2.1"> | <dd>bundle-only</dd> | |||
<dl newline="false" spacing="normal" indent="3" pn="section-16.3-2.1 | <dt>Type of attribute:</dt> | |||
.1"> | <dd>media</dd> | |||
<dt pn="section-16.3-2.1.1.1">Attribute name:</dt> | <dt>Subject to charset:</dt> | |||
<dd pn="section-16.3-2.1.1.2">bundle-only</dd> | <dd>No</dd> | |||
<dt pn="section-16.3-2.1.1.3">Type of attribute:</dt> | <dt>Purpose:</dt> | |||
<dd pn="section-16.3-2.1.1.4">media</dd> | <dd>Request a media description to be accepted | |||
<dt pn="section-16.3-2.1.1.5">Subject to charset:</dt> | ||||
<dd pn="section-16.3-2.1.1.6">No</dd> | ||||
<dt pn="section-16.3-2.1.1.7">Purpose:</dt> | ||||
<dd pn="section-16.3-2.1.1.8">Request a media description to be ac | ||||
cepted | ||||
in the answer only if kept within a BUNDLE | in the answer only if kept within a BUNDLE | |||
group by the answerer.</dd> | group by the answerer.</dd> | |||
<dt pn="section-16.3-2.1.1.9">Appropriate values:</dt> | <dt>Appropriate values:</dt> | |||
<dd pn="section-16.3-2.1.1.10">N/A</dd> | <dd>N/A</dd> | |||
<dt pn="section-16.3-2.1.1.11">Contact name:</dt> | <dt>Contact name:</dt> | |||
<dd pn="section-16.3-2.1.1.12">IESG</dd> | <dd>IESG</dd> | |||
<dt pn="section-16.3-2.1.1.13">Contact e-mail:</dt> | <dt>Contact e-mail:</dt> | |||
<dd pn="section-16.3-2.1.1.14">iesg@ietf.org</dd> | <dd>iesg@ietf.org</dd> | |||
<dt pn="section-16.3-2.1.1.15">Reference:</dt> | <dt>Reference:</dt> | |||
<dd pn="section-16.3-2.1.1.16">RFC XXXX</dd> | <dd>RFC 9143</dd> | |||
<dt pn="section-16.3-2.1.1.17">Mux category:</dt> | <dt>Mux category:</dt> | |||
<dd pn="section-16.3-2.1.1.18">NORMAL</dd> | <dd>NORMAL</dd> | |||
</dl> | </dl> | |||
</li> | ||||
</ul> | ||||
</section> | </section> | |||
<section anchor="sec-receiver-id-iana-sdp-group-semantics" toc="include" n | <section anchor="sec-receiver-id-iana-sdp-group-semantics"> | |||
umbered="true" removeInRFC="false" pn="section-16.4"> | <name>SDP Group Semantics</name> | |||
<name slugifiedName="name-new-sdp-group-semantics">New SDP Group Semanti | <t> | |||
cs</name> | ||||
<t indent="0" pn="section-16.4-1"> | ||||
This document updates the following semantics in the | This document updates the following semantics in the | |||
"Semantics for the 'group' SDP Attribute" subregistry (under the | "Semantics for the 'group' SDP Attribute" subregistry (under the | |||
"Session Description Protocol (SDP) Parameters" registry): | "Session Description Protocol (SDP) Parameters" registry): | |||
</t> | </t> | |||
<table anchor="Table_1" align="left" pn="table-1"> | <table anchor="Table_1" align="left"> | |||
<name>Update to SDP Group Semantics</name> | ||||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left" colspan="1" rowspan="1">Semantics</th> | <th>Semantics</th> | |||
<th align="left" colspan="1" rowspan="1">Token</th> | <th>Token</th> | |||
<th align="left" colspan="1" rowspan="1">Mux Category</th> | <th>Mux Category</th> | |||
<th align="left" colspan="1" rowspan="1">Reference</th> | <th>Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left" colspan="1" rowspan="1">Media bundling</td> | <td>Media bundling</td> | |||
<td align="left" colspan="1" rowspan="1">BUNDLE</td> | <td>BUNDLE</td> | |||
<td align="left" colspan="1" rowspan="1">NORMAL</td> | <td>NORMAL</td> | |||
<td align="left" colspan="1" rowspan="1">RFC XXXX</td> | <td>RFC 9143</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec-security" toc="include" numbered="true" removeInRFC="fa | <section anchor="sec-security"> | |||
lse" pn="section-17"> | <name>Security Considerations</name> | |||
<name slugifiedName="name-security-considerations">Security Considerations | <t>The security considerations defined in <xref target="RFC3264"/> and <xr | |||
</name> | ef target="RFC5888"/> apply to the BUNDLE extension. BUNDLE | |||
<t indent="0" pn="section-17-1">The security considerations defined in <xr | ||||
ef format="default" target="RFC3264" sectionFormat="of" derivedContent="RFC3264" | ||||
/> and <xref format="default" target="RFC5888" sectionFormat="of" derivedContent | ||||
="RFC5888"/> apply to the BUNDLE extension. BUNDLE | ||||
does not change which information, e.g., RTP streams, flows over | does not change which information, e.g., RTP streams, flows over | |||
the network, except for the usage of the MID SDES item as | the network, except for the usage of the MID SDES item as | |||
discussed below. | discussed below. | |||
Primarily, it changes which addresses and ports, and | Primarily, it changes which addresses and ports, and | |||
thus in which (RTP) sessions, the information flows to. This | thus in which (RTP) sessions, the information flows to. This | |||
affects the security contexts being used and can cause previously | affects the security contexts being used and can cause previously | |||
separated information flows to share the same security context. This has v ery | separated information flows to share the same security context. This has v ery | |||
little impact on the performance of the security mechanism of the RTP | little impact on the performance of the security mechanism of the RTP | |||
sessions. In cases where one would have applied different security | sessions. In cases where one would have applied different security | |||
policies on the different RTP streams being bundled, or where the | policies on the different RTP streams being bundled or where the | |||
parties having access to the security contexts would have differed | parties having access to the security contexts would have differed | |||
between the RTP streams, additional analysis of the implications are | between the RTP streams, additional analysis of the implications is | |||
needed before selecting to apply BUNDLE.</t> | needed before selecting to apply BUNDLE.</t> | |||
<t indent="0" pn="section-17-2">The identification-tag, independent of tra | ||||
nsport, RTCP SDES packet, or | <t>The identification-tag, independent of transport, RTCP SDES packet, or | |||
RTP header extension, can expose the value to parties beyond the | RTP header extension, can expose the value to parties beyond the | |||
signaling chain. Therefore, the identification-tag values <bcp14>MUST</bcp 14> be | signaling chain. Therefore, the identification-tag values <bcp14>MUST</bcp 14> be | |||
generated in a fashion that does not leak user information, e.g., | generated in a fashion that does not leak user information, e.g., | |||
randomly or using a per-bundle group counter, and <bcp14>SHOULD</bcp14> be 3 bytes or | randomly or using a per-bundle group counter, and <bcp14>SHOULD</bcp14> be 3 bytes or | |||
fewer to allow them to efficiently fit into the MID RTP header | fewer to allow them to efficiently fit into the MID RTP header | |||
extension. Note that if implementations use different methods for | extension. Note that if implementations use different methods for | |||
generating identification-tags, this could enable fingerprinting of the | generating identification-tags, this could enable fingerprinting of the | |||
implementation making it vulnerable to targeted attacks. The | implementation, making it vulnerable to targeted attacks. The | |||
identification-tag is exposed on the RTP stream level when included in | identification-tag is exposed on the RTP stream level when included in | |||
the RTP header extensions; however, what it reveals of the RTP media | the RTP header extensions; however, what it reveals of the RTP media | |||
stream structure of the endpoint and application was already possible to | stream structure of the endpoint and application was already possible to | |||
deduce from the RTP streams without the MID SDES header extensions. As | deduce from the RTP streams without the MID SDES header extensions. As | |||
the identification-tag is also used to route the media stream to the | the identification-tag is also used to route the media stream to the | |||
right application functionality, it is important that the value | right application functionality, it is important that the value | |||
received is the one intended by the sender; thus, integrity and the | received is the one intended by the sender; thus, integrity and the | |||
authenticity of the source are important to prevent denial of service on | authenticity of the source are important to prevent denial of service on | |||
the application. Existing SRTP configurations and other security | the application. Existing SRTP configurations and other security | |||
mechanisms protecting the whole RTP/RTCP packets will provide the | mechanisms protecting the whole RTP/RTCP packets will provide the | |||
necessary protection.</t> | necessary protection.</t> | |||
<t indent="0" pn="section-17-3">When the BUNDLE extension is used, the set of configurations of the | <t>When the BUNDLE extension is used, the set of configurations of the | |||
security mechanism used in all the bundled media descriptions will need to | security mechanism used in all the bundled media descriptions will need to | |||
be compatible so that they can be used simultaneously, at least | be compatible so that they can be used simultaneously, at least | |||
per direction or endpoint. When using SRTP, this will be the case, at l east | per direction or endpoint. When using SRTP, this will be the case, at l east | |||
for the IETF-defined key-management solutions due to their SDP attribut es | for the IETF-defined key-management solutions due to their SDP attribut es | |||
("a=crypto", "a=fingerprint", "a=mikey") and their classification in <x | ("a=crypto", "a=fingerprint", "a=mikey") and their classification in <x | |||
ref target="RFC8859" format="default" sectionFormat="of" derivedContent="RFC8859 | ref target="RFC8859"/>.</t> | |||
"/>.</t> | <t>The security considerations of "RTP Header | |||
<t indent="0" pn="section-17-4">The security considerations of "RTP Header | ||||
Extension for the RTP Control Protocol (RTCP) Source Description Items" | Extension for the RTP Control Protocol (RTCP) Source Description Items" | |||
<xref target="RFC7941" format="default" sectionFormat="of" derivedConte nt="RFC7941"/> require that when RTCP is confidentiality protected, any SDES | <xref target="RFC7941"/> require that when RTCP is confidentiality prot ected, any SDES | |||
RTP header extension carrying an SDES item, such as the MID RTP header | RTP header extension carrying an SDES item, such as the MID RTP header | |||
extension, is also protected using commensurate strength algorithms. | extension, is also protected using commensurate strength algorithms. | |||
However, assuming the above requirements and recommendations are | However, assuming the above requirements and recommendations are | |||
followed, there are no known significant security risks with leaving the | followed, there are no known significant security risks with leaving the | |||
MID RTP header extension without confidentiality protection. | MID RTP header extension without confidentiality protection. | |||
Therefore, this specification updates RFC 7941 by adding the exception tha t this requirement | Therefore, this specification updates <xref target="RFC7941"/> by adding t he exception that this requirement | |||
<bcp14>MAY</bcp14> be ignored for the MID RTP header extension. Security m echanisms for RTP/RTCP are | <bcp14>MAY</bcp14> be ignored for the MID RTP header extension. Security m echanisms for RTP/RTCP are | |||
discussed in "Options for Securing RTP Sessions" <xref target="RFC7201" fo | discussed in "Options for Securing RTP Sessions" <xref target="RFC7201"/>; | |||
rmat="default" sectionFormat="of" derivedContent="RFC7201"/>, | for example, SRTP <xref target="RFC3711"/> can provide the necessary secur | |||
for example, SRTP <xref target="RFC3711" format="default" sectionFormat="o | ity | |||
f" derivedContent="RFC3711"/> can provide the necessary security | ||||
functions of ensuring the integrity and source authenticity. | functions of ensuring the integrity and source authenticity. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-example-alt1" toc="include" numbered="true" removeInRFC | <section anchor="sec-example-alt1"> | |||
="false" pn="section-18"> | <name>Examples</name> | |||
<name slugifiedName="name-examples">Examples</name> | <section anchor="sec-example-add"> | |||
<section anchor="sec-example-add" toc="include" numbered="true" removeInRF | <name>Example: Tagged "m=" Section Selections</name> | |||
C="false" pn="section-18.1"> | <t> | |||
<name slugifiedName="name-example-tagged-m-section-se">Example: Tagged " | ||||
m=" Section Selections</name> | ||||
<t indent="0" pn="section-18.1-1"> | ||||
The example below shows: | The example below shows: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1 | <ul> | |||
8.1-2"> | <li>An initial BUNDLE offer, in which the offerer wants to | |||
<li pn="section-18.1-2.1">An initial BUNDLE offer, in which the offere | ||||
r wants to | ||||
negotiate a BUNDLE group and indicates the audio "m=" | negotiate a BUNDLE group and indicates the audio "m=" | |||
section as the suggested offerer-tagged "m=" section.</li> | section as the suggested offerer-tagged "m=" section.</li> | |||
<li pn="section-18.1-2.2">An initial BUNDLE answer, in which the answe rer accepts | <li>An initial BUNDLE answer, in which the answerer accepts | |||
the creation of the BUNDLE group, selects the audio "m=" | the creation of the BUNDLE group, selects the audio "m=" | |||
section in the offer as the offerer-tagged "m=" section, | section in the offer as the offerer-tagged "m=" section, | |||
selects the audio "m=" section in the answer as the | selects the audio "m=" section in the answer as the | |||
answerer-tagged "m=" section, and assigns the answerer BUNDLE | answerer-tagged "m=" section, and assigns the answerer BUNDLE | |||
address:port to that "m=" section.</li> | address:port to that "m=" section.</li> | |||
</ul> | </ul> | |||
<t keepWithNext="true" indent="0" pn="section-18.1-3">SDP Offer (1)</t> | <t keepWithNext="true">SDP Offer (1)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.1-4"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2636 ¶ | skipping to change at line 2303 ¶ | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 10002 RTP/AVP 31 32 | m=video 10002 RTP/AVP 31 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
<t keepWithNext="true" indent="0" pn="section-18.1-5">SDP Answer (2)</t> | <t keepWithNext="true">SDP Answer (2)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.1-6"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | |||
s= | s= | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 20000 RTP/AVP 0 | m=audio 20000 RTP/AVP 0 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2659 ¶ | skipping to change at line 2326 ¶ | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 20000 RTP/AVP 32 | m=video 20000 RTP/AVP 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
<section anchor="sec-example-bunrej" toc="include" numbered="true" removeI | <section anchor="sec-example-bunrej"> | |||
nRFC="false" pn="section-18.2"> | <name>Example: BUNDLE Group Rejected</name> | |||
<name slugifiedName="name-example-bundle-group-reject">Example: BUNDLE G | <t> | |||
roup Rejected</name> | ||||
<t indent="0" pn="section-18.2-1"> | ||||
The example below shows: | The example below shows: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1 | <ul> | |||
8.2-2"> | <li>An initial BUNDLE offer, in which the offerer wants to | |||
<li pn="section-18.2-2.1">An initial BUNDLE offer, in which the offere | ||||
r wants to | ||||
negotiate a BUNDLE group and indicates the audio "m=" section | negotiate a BUNDLE group and indicates the audio "m=" section | |||
as the suggested offerer-tagged "m=" section.</li> | as the suggested offerer-tagged "m=" section.</li> | |||
<li pn="section-18.2-2.2">An initial BUNDLE answer, in which the answe rer rejects | <li>An initial BUNDLE answer, in which the answerer rejects | |||
the creation of the BUNDLE group, generates a normal answer, | the creation of the BUNDLE group, generates a normal answer, | |||
and assigns a unique address:port to each "m=" section in | and assigns a unique address:port to each "m=" section in | |||
the answer.</li> | the answer.</li> | |||
</ul> | </ul> | |||
<t keepWithNext="true" indent="0" pn="section-18.2-3">SDP Offer (1)</t> | <t keepWithNext="true">SDP Offer (1)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.2-4"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2699 ¶ | skipping to change at line 2366 ¶ | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 10002 RTP/AVP 31 32 | m=video 10002 RTP/AVP 31 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
<t keepWithNext="true" indent="0" pn="section-18.2-5">SDP Answer (2)</t> | <t keepWithNext="true">SDP Answer (2)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.2-6"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | |||
s= | s= | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
t=0 0 | t=0 0 | |||
m=audio 20000 RTP/AVP 0 | m=audio 20000 RTP/AVP 0 | |||
b=AS:200 | b=AS:200 | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
m=video 30000 RTP/AVP 32 | m=video 30000 RTP/AVP 32 | |||
b=AS:1000 | b=AS:1000 | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
<section anchor="sec-example-off-add" toc="include" numbered="true" remove | <section anchor="sec-example-off-add"> | |||
InRFC="false" pn="section-18.3"> | <name>Example: Offerer Adds a Media Description to a BUNDLE Group</name> | |||
<name slugifiedName="name-example-offerer-adds-a-medi">Example: Offerer | <t> | |||
Adds a Media Description to a BUNDLE Group</name> | ||||
<t indent="0" pn="section-18.3-1"> | ||||
The example below shows: | The example below shows: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1 | <ul> | |||
8.3-2"> | <li>A subsequent offer, in which the offerer adds a new bundled "m=" s | |||
<li pn="section-18.3-2.1">A subsequent offer, in which the offerer add | ection (video), indicated by the "zen" | |||
s a new bundled "m=" section (video), indicated by the "zen" | ||||
identification-tag, to a previously negotiated BUNDLE group; indicates the new "m=" section as the | identification-tag, to a previously negotiated BUNDLE group; indicates the new "m=" section as the | |||
offerer-tagged "m=" section; and assigns the offerer BUNDLE address:po rt to that "m=" section.</li> | offerer-tagged "m=" section; and assigns the offerer BUNDLE address:po rt to that "m=" section.</li> | |||
<li pn="section-18.3-2.2">A subsequent answer, in which the answerer i ndicates the new video "m=" section in the answer as the answerer-tagged "m=" se ction | <li>A subsequent answer, in which the answerer indicates the new video "m=" section in the answer as the answerer-tagged "m=" section | |||
and assigns the answerer BUNDLE address:port to that "m=" section.</li > | and assigns the answerer BUNDLE address:port to that "m=" section.</li > | |||
</ul> | </ul> | |||
<t keepWithNext="true" indent="0" pn="section-18.3-3">SDP Offer (1)</t> | <t keepWithNext="true">SDP Offer (1)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.3-4"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE zen foo bar | a=group:BUNDLE zen foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2761 ¶ | skipping to change at line 2428 ¶ | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 10000 RTP/AVP 66 | m=video 10000 RTP/AVP 66 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:zen | a=mid:zen | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:66 H261/90000 | a=rtpmap:66 H261/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
<t keepWithNext="true" indent="0" pn="section-18.3-5">SDP Answer (2)</t> | <t keepWithNext="true">SDP Answer (2)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.3-6"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | |||
s= | s= | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE zen foo bar | a=group:BUNDLE zen foo bar | |||
m=audio 20000 RTP/AVP 0 | m=audio 20000 RTP/AVP 0 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2790 ¶ | skipping to change at line 2457 ¶ | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 20000 RTP/AVP 66 | m=video 20000 RTP/AVP 66 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:zen | a=mid:zen | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:66 H261/90000 | a=rtpmap:66 H261/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
<section anchor="sec-example-off-mov" toc="include" numbered="true" remove | <section anchor="sec-example-off-mov"> | |||
InRFC="false" pn="section-18.4"> | <name>Example: Offerer Moves a Media Description Out of a BUNDLE Group</ | |||
<name slugifiedName="name-example-offerer-moves-a-med">Example: Offerer | name> | |||
Moves a Media Description Out of a BUNDLE Group</name> | <t> | |||
<t indent="0" pn="section-18.4-1"> | ||||
The example below shows: | The example below shows: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1 | <ul> | |||
8.4-2"> | <li>A subsequent offer, in which the offerer removes an "m=" section ( | |||
<li pn="section-18.4-2.1">A subsequent offer, in which the offerer rem | video), indicated by the "zen" | |||
oves an "m=" section (video), indicated by the "zen" | ||||
identification-tag, from a previously negotiated BUNDLE group; indicat es one of the bundled "m=" sections (audio) | identification-tag, from a previously negotiated BUNDLE group; indicat es one of the bundled "m=" sections (audio) | |||
remaining in the BUNDLE group as the offerer-tagged "m=" section; and assigns the offerer BUNDLE address:port to that "m=" section.</li> | remaining in the BUNDLE group as the offerer-tagged "m=" section; and assigns the offerer BUNDLE address:port to that "m=" section.</li> | |||
<li pn="section-18.4-2.2">A subsequent answer, in which the answerer r emoves the "m=" section from the BUNDLE group, indicates the audio "m=" section | <li>A subsequent answer, in which the answerer removes the "m=" sectio n from the BUNDLE group, indicates the audio "m=" section | |||
in the answer as the answerer-tagged "m=" section, and assigns the ans werer BUNDLE address:port to that "m=" section.</li> | in the answer as the answerer-tagged "m=" section, and assigns the ans werer BUNDLE address:port to that "m=" section.</li> | |||
</ul> | </ul> | |||
<t keepWithNext="true" indent="0" pn="section-18.4-3">SDP Offer (1)</t> | <t keepWithNext="true">SDP Offer (1)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.4-4"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2833 ¶ | skipping to change at line 2500 ¶ | |||
a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 50000 RTP/AVP 66 | m=video 50000 RTP/AVP 66 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:zen | a=mid:zen | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:66 H261/90000 | a=rtpmap:66 H261/90000 | |||
</sourcecode> | </sourcecode> | |||
<t keepWithNext="true" indent="0" pn="section-18.4-5">SDP Answer (2)</t> | <t keepWithNext="true">SDP Answer (2)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.4-6"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | |||
s= | s= | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 20000 RTP/AVP 0 | m=audio 20000 RTP/AVP 0 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2862 ¶ | skipping to change at line 2529 ¶ | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 60000 RTP/AVP 66 | m=video 60000 RTP/AVP 66 | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:zen | a=mid:zen | |||
a=rtcp-mux | a=rtcp-mux | |||
a=rtpmap:66 H261/90000 | a=rtpmap:66 H261/90000 | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
<section anchor="sec-example-off-dis" toc="include" numbered="true" remove | <section anchor="sec-example-off-dis"> | |||
InRFC="false" pn="section-18.5"> | <name>Example: Offerer Disables a Media Description within a BUNDLE Grou | |||
<name slugifiedName="name-example-offerer-disables-a-">Example: Offerer | p</name> | |||
Disables a Media Description within a BUNDLE Group</name> | <t> | |||
<t indent="0" pn="section-18.5-1"> | ||||
The example below shows: | The example below shows: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1 | <ul> | |||
8.5-2"> | <li>A subsequent offer, in which the offerer disables (by assigning a | |||
<li pn="section-18.5-2.1">A subsequent offer, in which the offerer dis | zero port value) an "m=" section (video), indicated by the "zen" | |||
ables (by assigning a zero port value) an "m=" section (video), indicated by the | ||||
"zen" | ||||
identification-tag, from a previously negotiated BUNDLE group; indicat es one of the bundled "m=" sections (audio) | identification-tag, from a previously negotiated BUNDLE group; indicat es one of the bundled "m=" sections (audio) | |||
remaining active in the BUNDLE group as the offerer-tagged "m=" sectio n; and assigns the offerer BUNDLE address:port to that "m=" section.</li> | remaining active in the BUNDLE group as the offerer-tagged "m=" sectio n; and assigns the offerer BUNDLE address:port to that "m=" section.</li> | |||
<li pn="section-18.5-2.2">A subsequent answer, in which the answerer d isables the "m=" section, indicates the audio "m=" section | <li>A subsequent answer, in which the answerer disables the "m=" secti on, indicates the audio "m=" section | |||
in the answer as the answerer-tagged "m=" section, and assigns the ans werer BUNDLE address:port to that "m=" section.</li> | in the answer as the answerer-tagged "m=" section, and assigns the ans werer BUNDLE address:port to that "m=" section.</li> | |||
</ul> | </ul> | |||
<t keepWithNext="true" indent="0" pn="section-18.5-3">SDP Offer (1)</t> | <t keepWithNext="true">SDP Offer (1)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.5-4"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | o=alice 2890844526 2890844526 IN IP6 2001:db8::3 | |||
s= | s= | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 10000 RTP/AVP 0 8 97 | m=audio 10000 RTP/AVP 0 8 97 | |||
c=IN IP6 2001:db8::3 | c=IN IP6 2001:db8::3 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2904 ¶ | skipping to change at line 2571 ¶ | |||
b=AS:1000 | b=AS:1000 | |||
a=mid:bar | a=mid:bar | |||
a=rtpmap:31 H261/90000 | a=rtpmap:31 H261/90000 | |||
a=rtpmap:32 MPV/90000 | a=rtpmap:32 MPV/90000 | |||
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
m=video 0 RTP/AVP 66 | m=video 0 RTP/AVP 66 | |||
a=mid:zen | a=mid:zen | |||
a=rtpmap:66 H261/90000 | a=rtpmap:66 H261/90000 | |||
</sourcecode> | </sourcecode> | |||
<t keepWithNext="true" indent="0" pn="section-18.5-5">SDP Answer (2)</t> | <t keepWithNext="true">SDP Answer (2)</t> | |||
<sourcecode type="sdp" markers="false" pn="section-18.5-6"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | o=bob 2808844564 2808844564 IN IP6 2001:db8::1 | |||
s= | s= | |||
t=0 0 | t=0 0 | |||
a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
m=audio 20000 RTP/AVP 0 | m=audio 20000 RTP/AVP 0 | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
b=AS:200 | b=AS:200 | |||
a=mid:foo | a=mid:foo | |||
skipping to change at line 2936 ¶ | skipping to change at line 2603 ¶ | |||
m=video 0 RTP/AVP 66 | m=video 0 RTP/AVP 66 | |||
a=mid:zen | a=mid:zen | |||
a=rtpmap:66 H261/90000 | a=rtpmap:66 H261/90000 | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.ietf-avtext-lrr" to="LLR-RTCP"/> | <displayreference target="I-D.ietf-avtext-lrr" to="LLR-RTCP"/> | |||
<references pn="section-19"> | <references> | |||
<name slugifiedName="name-references">References</name> | <name>References</name> | |||
<references pn="section-19.1"> | <references> | |||
<name slugifiedName="name-normative-references">Normative References</na | <name>Normative References</name> | |||
me> | ||||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
119" quoteTitle="true" derivedAnchor="RFC2119"> | xml"/> | |||
<front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3264. | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | xml"/> | |||
le> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3550. | |||
<author initials="S." surname="Bradner" fullname="S. Bradner"> | xml"/> | |||
<organization showOnFrontPage="true"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3605. | |||
</author> | xml"/> | |||
<date year="1997" month="March"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3629. | |||
<abstract> | xml"/> | |||
<t indent="0">In many standards track documents several words are | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3711. | |||
used to signify the requirements in the specification. These words are often ca | xml"/> | |||
pitalized. This document defines these words as they should be interpreted in IE | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4566. | |||
TF documents. This document specifies an Internet Best Current Practices for th | xml"/> | |||
e Internet Community, and requests discussion and suggestions for improvements.< | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4961. | |||
/t> | xml"/> | |||
</abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5761. | |||
</front> | xml"/> | |||
<seriesInfo name="BCP" value="14"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5764. | |||
<seriesInfo name="RFC" value="2119"/> | xml"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5888. | |||
</reference> | xml"/> | |||
<reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6347. | |||
264" quoteTitle="true" derivedAnchor="RFC3264"> | xml"/> | |||
<front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7941. | |||
<title>An Offer/Answer Model with Session Description Protocol (SDP) | xml"/> | |||
</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | |||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | xml"/> | |||
<organization showOnFrontPage="true"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8285. | |||
</author> | xml"/> | |||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8445. | |||
"> | xml"/> | |||
<organization showOnFrontPage="true"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8839. | |||
</author> | xml"/> | |||
<date year="2002" month="June"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8840. | |||
<abstract> | xml"/> | |||
<t indent="0">This document defines a mechanism by which two entit | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8858. | |||
ies can make use of the Session Description Protocol (SDP) to arrive at a common | xml"/> | |||
view of a multimedia session between them. In the model, one participant offer | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8859. | |||
s the other a description of the desired session from their perspective, and the | xml"/> | |||
other participant answers with the desired session from their perspective. Thi | ||||
s offer/answer model is most useful in unicast sessions where information from b | ||||
oth participants is needed for the complete view of the session. The offer/answ | ||||
er model is used by protocols like the Session Initiation Protocol (SIP). [STAN | ||||
DARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3264"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3264"/> | ||||
</reference> | ||||
<reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | ||||
550" quoteTitle="true" derivedAnchor="RFC3550"> | ||||
<front> | ||||
<title>RTP: A Transport Protocol for Real-Time Applications</title> | ||||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Casner" fullname="S. Casner"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Frederick" fullname="R. Frederick"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="V." surname="Jacobson" fullname="V. Jacobson"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2003" month="July"/> | ||||
<abstract> | ||||
<t indent="0">This memorandum describes RTP, the real-time transpo | ||||
rt protocol. RTP provides end-to-end network transport functions suitable for a | ||||
pplications transmitting real-time data, such as audio, video or simulation data | ||||
, over multicast or unicast network services. RTP does not address resource res | ||||
ervation and does not guarantee quality-of- service for real-time services. The | ||||
data transport is augmented by a control protocol (RTCP) to allow monitoring of | ||||
the data delivery in a manner scalable to large multicast networks, and to prov | ||||
ide minimal control and identification functionality. RTP and RTCP are designed | ||||
to be independent of the underlying transport and network layers. The protocol | ||||
supports the use of RTP-level translators and mixers. Most of the text in this | ||||
memorandum is identical to RFC 1889 which it obsoletes. There are no changes in | ||||
the packet formats on the wire, only changes to the rules and algorithms govern | ||||
ing how the protocol is used. The biggest change is an enhancement to the scalab | ||||
le timer algorithm for calculating when to send RTCP packets in order to minimiz | ||||
e transmission in excess of the intended rate when many participants join a sess | ||||
ion simultaneously. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="64"/> | ||||
<seriesInfo name="RFC" value="3550"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3550"/> | ||||
</reference> | ||||
<reference anchor="RFC3605" target="https://www.rfc-editor.org/info/rfc3 | ||||
605" quoteTitle="true" derivedAnchor="RFC3605"> | ||||
<front> | ||||
<title>Real Time Control Protocol (RTCP) attribute in Session Descri | ||||
ption 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 de | ||||
scribe the parameters of media streams used in multimedia sessions. When a sess | ||||
ion requires multiple ports, SDP assumes that these ports have consecutive numbe | ||||
rs. However, when the session crosses a network address translation device that | ||||
also uses port mapping, the ordering of ports can be destroyed by the translati | ||||
on. 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="RFC3629" target="https://www.rfc-editor.org/info/rfc3 | ||||
629" quoteTitle="true" derivedAnchor="RFC3629"> | ||||
<front> | ||||
<title>UTF-8, a transformation format of ISO 10646</title> | ||||
<author initials="F." surname="Yergeau" fullname="F. Yergeau"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2003" month="November"/> | ||||
<abstract> | ||||
<t indent="0">ISO/IEC 10646-1 defines a large character set called | ||||
the Universal Character Set (UCS) which encompasses most of the world's writing | ||||
systems. The originally proposed encodings of the UCS, however, were not compa | ||||
tible with many current applications and protocols, and this has led to the deve | ||||
lopment of UTF-8, the object of this memo. UTF-8 has the characteristic of pres | ||||
erving the full US-ASCII range, providing compatibility with file systems, parse | ||||
rs and other software that rely on US-ASCII values but are transparent to other | ||||
values. This memo obsoletes and replaces RFC 2279.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="63"/> | ||||
<seriesInfo name="RFC" value="3629"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3629"/> | ||||
</reference> | ||||
<reference anchor="RFC3711" target="https://www.rfc-editor.org/info/rfc3 | ||||
711" quoteTitle="true" derivedAnchor="RFC3711"> | ||||
<front> | ||||
<title>The Secure Real-time Transport Protocol (SRTP)</title> | ||||
<author initials="M." surname="Baugher" fullname="M. Baugher"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="McGrew" fullname="D. McGrew"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Naslund" fullname="M. Naslund"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Carrara" fullname="E. Carrara"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="K." surname="Norrman" fullname="K. Norrman"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2004" month="March"/> | ||||
<abstract> | ||||
<t indent="0">This document describes the Secure Real-time Transpo | ||||
rt Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which c | ||||
an provide confidentiality, message authentication, and replay protection to the | ||||
RTP traffic and to the control traffic for RTP, the Real-time Transport Control | ||||
Protocol (RTCP). [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3711"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3711"/> | ||||
</reference> | ||||
<reference anchor="RFC4566" target="https://www.rfc-editor.org/info/rfc4 | ||||
566" 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 se | ||||
ssion announcement, session invitation, and other forms of multimedia session in | ||||
itiation. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4566"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4566"/> | ||||
</reference> | ||||
<reference anchor="RFC4961" target="https://www.rfc-editor.org/info/rfc4 | ||||
961" quoteTitle="true" derivedAnchor="RFC4961"> | ||||
<front> | ||||
<title>Symmetric RTP / RTP Control Protocol (RTCP)</title> | ||||
<author initials="D." surname="Wing" fullname="D. Wing"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="July"/> | ||||
<abstract> | ||||
<t indent="0">This document recommends using one UDP port pair for | ||||
both communication directions of bidirectional RTP and RTP Control Protocol (RT | ||||
CP) sessions, commonly called "symmetric RTP" and "symmetric RTCP". This docume | ||||
nt specifies an Internet Best Current Practices for the Internet Community, and | ||||
requests discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="131"/> | ||||
<seriesInfo name="RFC" value="4961"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4961"/> | ||||
</reference> | ||||
<reference anchor="RFC5761" target="https://www.rfc-editor.org/info/rfc5 | ||||
761" quoteTitle="true" derivedAnchor="RFC5761"> | ||||
<front> | ||||
<title>Multiplexing RTP Data and Control Packets on a Single Port</t | ||||
itle> | ||||
<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 multiplex | ||||
ing RTP data packets and RTP Control Protocol (RTCP) packets on a single UDP por | ||||
t. 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="RFC5764" target="https://www.rfc-editor.org/info/rfc5 | ||||
764" quoteTitle="true" derivedAnchor="RFC5764"> | ||||
<front> | ||||
<title>Datagram Transport Layer Security (DTLS) Extension to Establi | ||||
sh Keys for the Secure Real-time Transport Protocol (SRTP)</title> | ||||
<author initials="D." surname="McGrew" fullname="D. McGrew"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2010" month="May"/> | ||||
<abstract> | ||||
<t indent="0">This document describes a Datagram Transport Layer S | ||||
ecurity (DTLS) extension to establish keys for Secure RTP (SRTP) and Secure RTP | ||||
Control Protocol (SRTCP) flows. DTLS keying happens on the media path, independ | ||||
ent of any out-of-band signalling channel present. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5764"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5764"/> | ||||
</reference> | ||||
<reference anchor="RFC5888" target="https://www.rfc-editor.org/info/rfc5 | ||||
888" quoteTitle="true" derivedAnchor="RFC5888"> | ||||
<front> | ||||
<title>The Session Description Protocol (SDP) Grouping Framework</ti | ||||
tle> | ||||
<author initials="G." surname="Camarillo" fullname="G. Camarillo"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2010" month="June"/> | ||||
<abstract> | ||||
<t indent="0">In this specification, we define a framework to grou | ||||
p "m" lines in the Session Description Protocol (SDP) for different purposes. T | ||||
his framework uses the "group" and "mid" SDP attributes, both of which are defin | ||||
ed in this specification. Additionally, we specify how to use the framework for | ||||
two different purposes: for lip synchronization and for receiving a media flow | ||||
consisting of several media streams on different transport addresses. This docu | ||||
ment obsoletes RFC 3388. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5888"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5888"/> | ||||
</reference> | ||||
<reference anchor="RFC6347" target="https://www.rfc-editor.org/info/rfc6 | ||||
347" quoteTitle="true" derivedAnchor="RFC6347"> | ||||
<front> | ||||
<title>Datagram Transport Layer Security Version 1.2</title> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="N." surname="Modadugu" fullname="N. Modadugu"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2012" month="January"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies version 1.2 of the Datagram | ||||
Transport Layer Security (DTLS) protocol. The DTLS protocol provides communicat | ||||
ions privacy for datagram protocols. The protocol allows client/server applicat | ||||
ions to communicate in a way that is designed to prevent eavesdropping, tamperin | ||||
g, or message forgery. The DTLS protocol is based on the Transport Layer Securi | ||||
ty (TLS) protocol and provides equivalent security guarantees. Datagram semanti | ||||
cs of the underlying transport are preserved by the DTLS protocol. This documen | ||||
t updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6347"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6347"/> | ||||
</reference> | ||||
<reference anchor="RFC7941" target="https://www.rfc-editor.org/info/rfc7 | ||||
941" quoteTitle="true" derivedAnchor="RFC7941"> | ||||
<front> | ||||
<title>RTP Header Extension for the RTP Control Protocol (RTCP) Sour | ||||
ce Description Items</title> | ||||
<author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Burman" fullname="B. Burman"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Even" fullname="R. Even"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Zanaty" fullname="M. Zanaty"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2016" month="August"/> | ||||
<abstract> | ||||
<t indent="0">Source Description (SDES) items are normally transpo | ||||
rted in the RTP Control Protocol (RTCP). In some cases, it can be beneficial to | ||||
speed up the delivery of these items. The main case is when a new synchronizat | ||||
ion source (SSRC) joins an RTP session and the receivers need this source's iden | ||||
tity, relation to other sources, or its synchronization context, all of which ma | ||||
y be fully or partially identified using SDES items. To enable this optimizatio | ||||
n, this document specifies a new RTP header extension that can carry SDES items. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7941"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7941"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
tle> | ||||
<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 cla | ||||
rifying that only UPPERCASE usage of the key words have the defined special mea | ||||
nings.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
<reference anchor="RFC8285" target="https://www.rfc-editor.org/info/rfc8 | ||||
285" quoteTitle="true" derivedAnchor="RFC8285"> | ||||
<front> | ||||
<title>A General Mechanism for RTP Header Extensions</title> | ||||
<author initials="D." surname="Singer" fullname="D. Singer"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Desineni" fullname="H. Desineni"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Even" fullname="R. Even" role="editor | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="October"/> | ||||
<abstract> | ||||
<t indent="0">This document provides a general mechanism to use th | ||||
e header extension feature of RTP (the Real-time Transport Protocol). It provid | ||||
es the option to use a small number of small extensions in each RTP packet, wher | ||||
e the universe of possible extensions is large and registration is decentralized | ||||
. The actual extensions in use in a session are signaled in the setup informati | ||||
on for that session. This document obsoletes RFC 5285.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8285"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8285"/> | ||||
</reference> | ||||
<reference anchor="RFC8445" target="https://www.rfc-editor.org/info/rfc8 | ||||
445" 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 Addre | ||||
ss Translator (NAT) traversal for UDP-based communication. This protocol is cal | ||||
led Interactive Connectivity Establishment (ICE). ICE makes use of the Session | ||||
Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using R | ||||
elay 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="RFC8839" target="https://www.rfc-editor.org/info/rfc8 | ||||
839" quoteTitle="true" derivedAnchor="RFC8839"> | ||||
<front> | ||||
<title>Session Description Protocol (SDP) Offer/Answer Procedures fo | ||||
r Interactive Connectivity Establishment (ICE)</title> | ||||
<author initials="M" surname="Petit-Huguenin" fullname="Marc Petit-H | ||||
uguenin"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C" surname="Holmberg" fullname="Christer Holmberg" | ||||
> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A" surname="Keranen" fullname="Ari Keranen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R" surname="Shpount" fullname="Roman Shpount"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8839"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8839"/> | ||||
</reference> | ||||
<reference anchor="RFC8840" target="https://www.rfc-editor.org/info/rfc8 | ||||
840" quoteTitle="true" derivedAnchor="RFC8840"> | ||||
<front> | ||||
<title>A Session Initiation Protocol (SIP) Usage for Incremental Pro | ||||
visioning of Candidates for the Interactive Connectivity Establishment (Trickle | ||||
ICE)</title> | ||||
<author initials="E" surname="Ivov" fullname="Emil Ivov"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="T" surname="Stach" fullname="Thomas Stach"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E" surname="Marocco" fullname="Enrico Marocco"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C" surname="Holmberg" fullname="Christer Holmberg" | ||||
> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8840"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8840"/> | ||||
</reference> | ||||
<reference anchor="RFC8858" target="https://www.rfc-editor.org/info/rfc8 | ||||
858" quoteTitle="true" derivedAnchor="RFC8858"> | ||||
<front> | ||||
<title>Indicating Exclusive Support of RTP and RTP Control Protocol | ||||
(RTCP) Multiplexing Using the Session Description Protocol (SDP)</title> | ||||
<author initials="C." surname="Holmberg" fullname="Christer Holmberg | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8858"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8858"/> | ||||
</reference> | ||||
<reference anchor="RFC8859" target="https://www.rfc-editor.org/info/rfc8 | ||||
859" 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> | |||
<references pn="section-19.2"> | <references> | |||
<name slugifiedName="name-informative-references">Informative References | <name>Informative References</name> | |||
</name> | ||||
<reference anchor="I-D.ietf-avtext-lrr" quoteTitle="true" target="https: | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-av | |||
//datatracker.ietf.org/doc/html/draft-ietf-avtext-lrr-07" derivedAnchor="LLR-RTC | text-lrr.xml"/> | |||
P"> | ||||
<front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2543. | |||
<title>The Layer Refresh Request (LRR) RTCP Feedback Message</title> | xml"/> | |||
<author initials="J" surname="Lennox" fullname="Jonathan Lennox"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3261. | |||
<organization showOnFrontPage="true"/> | xml"/> | |||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3611. | |||
<author initials="D" surname="Hong" fullname="Danny Hong"> | xml"/> | |||
<organization showOnFrontPage="true"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4585. | |||
</author> | xml"/> | |||
<author initials="J" surname="Uberti" fullname="Justin Uberti"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5104. | |||
<organization showOnFrontPage="true"/> | xml"/> | |||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5576. | |||
<author initials="S" surname="Holmer" fullname="Stefan Holmer"> | xml"/> | |||
<organization showOnFrontPage="true"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7160. | |||
</author> | xml"/> | |||
<author initials="M" surname="Flodman" fullname="Magnus Flodman"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7201. | |||
<organization showOnFrontPage="true"/> | xml"/> | |||
</author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7656. | |||
<date month="July" day="2" year="2017"/> | xml"/> | |||
<abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7657. | |||
<t indent="0">This memo describes the RTCP Payload-Specific Feedba | xml"/> | |||
ck Message "Layer Refresh Request" (LRR), which can be used to request a state r | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8829. | |||
efresh of one or more substreams of a layered media stream. It also defines its | xml"/> | |||
use with several RTP payloads for scalable media formats.</t> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8838. | |||
</abstract> | xml"/> | |||
</front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8843. | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-avtext-lrr-07"/> | xml"/> | |||
<format type="TXT" target="https://datatracker.ietf.org/doc/html/draft | ||||
-ietf-avtext-lrr-07"/> | <reference anchor="Err6431" quote-title="false" target="https://www.rfc-editor.o | |||
<refcontent>Work in Progress</refcontent> | rg/errata/eid6431"> | |||
</reference> | <front> | |||
<reference anchor="RFC2543" target="https://www.rfc-editor.org/info/rfc2 | <title>Erratum ID 6431</title> | |||
543" quoteTitle="true" derivedAnchor="RFC2543"> | <author> | |||
<front> | <organization>RFC Errata</organization> | |||
<title>SIP: Session Initiation Protocol</title> | </author> | |||
<author initials="M." surname="Handley" fullname="M. Handley"> | </front> | |||
<organization showOnFrontPage="true"/> | <refcontent>RFC 8843</refcontent> | |||
</author> | </reference> | |||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | <reference anchor="Err6437" quote-title="false" target="https://www.rfc-editor.o | |||
<organization showOnFrontPage="true"/> | rg/errata/eid6437"> | |||
</author> | <front> | |||
<author initials="E." surname="Schooler" fullname="E. Schooler"> | <title>Erratum ID 6437</title> | |||
<organization showOnFrontPage="true"/> | <author> | |||
</author> | <organization>RFC Errata</organization> | |||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | </author> | |||
<organization showOnFrontPage="true"/> | </front> | |||
</author> | <refcontent>RFC 8843</refcontent> | |||
<date year="1999" month="March"/> | </reference> | |||
<abstract> | ||||
<t indent="0">The Session Initiation Protocol (SIP) is an applicat | ||||
ion-layer control (signaling) protocol for creating, modifying and terminating s | ||||
essions with one or more participants. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="2543"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2543"/> | ||||
</reference> | ||||
<reference anchor="RFC3261" target="https://www.rfc-editor.org/info/rfc3 | ||||
261" quoteTitle="true" derivedAnchor="RFC3261"> | ||||
<front> | ||||
<title>SIP: Session Initiation Protocol</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> | ||||
<author initials="G." surname="Camarillo" fullname="G. Camarillo"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Johnston" fullname="A. Johnston"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Peterson" fullname="J. Peterson"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Sparks" fullname="R. Sparks"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Handley" fullname="M. Handley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Schooler" fullname="E. Schooler"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2002" month="June"/> | ||||
<abstract> | ||||
<t indent="0">This document describes Session Initiation Protocol | ||||
(SIP), an application-layer control (signaling) protocol for creating, modifying | ||||
, and terminating sessions with one or more participants. These sessions includ | ||||
e Internet telephone calls, multimedia distribution, and multimedia conferences. | ||||
[STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3261"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3261"/> | ||||
</reference> | ||||
<reference anchor="RFC3611" target="https://www.rfc-editor.org/info/rfc3 | ||||
611" quoteTitle="true" derivedAnchor="RFC3611"> | ||||
<front> | ||||
<title>RTP Control Protocol Extended Reports (RTCP XR)</title> | ||||
<author initials="T." surname="Friedman" fullname="T. Friedman" role | ||||
="editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Caceres" fullname="R. Caceres" role=" | ||||
editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Clark" fullname="A. Clark" role="edit | ||||
or"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2003" month="November"/> | ||||
<abstract> | ||||
<t indent="0">This document defines the Extended Report (XR) packe | ||||
t type for the RTP Control Protocol (RTCP), and defines how the use of XR packet | ||||
s can be signaled by an application if it employs the Session Description Protoc | ||||
ol (SDP). XR packets are composed of report blocks, and seven block types are d | ||||
efined here. The purpose of the extended reporting format is to convey informat | ||||
ion that supplements the six statistics that are contained in the report blocks | ||||
used by RTCP's Sender Report (SR) and Receiver Report (RR) packets. Some applic | ||||
ations, such as multicast inference of network characteristics (MINC) or voice o | ||||
ver IP (VoIP) monitoring, require other and more detailed statistics. In additi | ||||
on to the block types defined here, additional block types may be defined in the | ||||
future by adhering to the framework that this document provides.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3611"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3611"/> | ||||
</reference> | ||||
<reference anchor="RFC4585" target="https://www.rfc-editor.org/info/rfc4 | ||||
585" quoteTitle="true" derivedAnchor="RFC4585"> | ||||
<front> | ||||
<title>Extended RTP Profile for Real-time Transport Control Protocol | ||||
(RTCP)-Based Feedback (RTP/AVPF)</title> | ||||
<author initials="J." surname="Ott" fullname="J. Ott"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Wenger" fullname="S. Wenger"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="N." surname="Sato" fullname="N. Sato"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Burmeister" fullname="C. Burmeister"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Rey" fullname="J. Rey"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2006" month="July"/> | ||||
<abstract> | ||||
<t indent="0">Real-time media streams that use RTP are, to some de | ||||
gree, resilient against packet losses. Receivers may use the base mechanisms of | ||||
the Real-time Transport Control Protocol (RTCP) to report packet reception stat | ||||
istics and thus allow a sender to adapt its transmission behavior in the mid-ter | ||||
m. This is the sole means for feedback and feedback-based error repair (besides | ||||
a few codec-specific mechanisms). This document defines an extension to the Au | ||||
dio-visual Profile (AVP) that enables receivers to provide, statistically, more | ||||
immediate feedback to the senders and thus allows for short-term adaptation and | ||||
efficient feedback-based repair mechanisms to be implemented. This early feedba | ||||
ck profile (AVPF) maintains the AVP bandwidth constraints for RTCP and preserves | ||||
scalability to large groups. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4585"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4585"/> | ||||
</reference> | ||||
<reference anchor="RFC5104" target="https://www.rfc-editor.org/info/rfc5 | ||||
104" quoteTitle="true" derivedAnchor="RFC5104"> | ||||
<front> | ||||
<title>Codec Control Messages in the RTP Audio-Visual Profile with F | ||||
eedback (AVPF)</title> | ||||
<author initials="S." surname="Wenger" fullname="S. Wenger"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="U." surname="Chandra" fullname="U. Chandra"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Burman" fullname="B. Burman"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="February"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies a few extensions to the mess | ||||
ages defined in the Audio-Visual Profile with Feedback (AVPF). They are helpful | ||||
primarily in conversational multimedia scenarios where centralized multipoint f | ||||
unctionalities are in use. However, some are also usable in smaller multicast e | ||||
nvironments and point-to-point calls.</t> | ||||
<t indent="0">The extensions discussed are messages related to the | ||||
ITU-T Rec. H.271 Video Back Channel, Full Intra Request, Temporary Maximum Medi | ||||
a Stream Bit Rate, and Temporal-Spatial Trade-off. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5104"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5104"/> | ||||
</reference> | ||||
<reference anchor="RFC5576" target="https://www.rfc-editor.org/info/rfc5 | ||||
576" quoteTitle="true" derivedAnchor="RFC5576"> | ||||
<front> | ||||
<title>Source-Specific Media Attributes in the Session Description P | ||||
rotocol (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 mech | ||||
anisms to describe attributes of multimedia sessions and of individual media str | ||||
eams (e.g., Real-time Transport Protocol (RTP) sessions) within a multimedia ses | ||||
sion, but does not provide any mechanism to describe individual media sources wi | ||||
thin a media stream. This document defines a mechanism to describe RTP media so | ||||
urces, 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 use | ||||
d 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="RFC7160" target="https://www.rfc-editor.org/info/rfc7 | ||||
160" quoteTitle="true" derivedAnchor="RFC7160"> | ||||
<front> | ||||
<title>Support for Multiple Clock Rates in an RTP Session</title> | ||||
<author initials="M." surname="Petit-Huguenin" fullname="M. Petit-Hu | ||||
guenin"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Zorn" fullname="G. Zorn" role="editor | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2014" month="April"/> | ||||
<abstract> | ||||
<t indent="0">This document clarifies the RTP specification regard | ||||
ing the use of different clock rates in an RTP session. It also provides guidan | ||||
ce on how legacy RTP implementations that use multiple clock rates can interoper | ||||
ate with RTP implementations that use the algorithm described in this document. | ||||
It updates RFC 3550.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7160"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7160"/> | ||||
</reference> | ||||
<reference anchor="RFC7201" target="https://www.rfc-editor.org/info/rfc7 | ||||
201" quoteTitle="true" derivedAnchor="RFC7201"> | ||||
<front> | ||||
<title>Options for Securing RTP Sessions</title> | ||||
<author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2014" month="April"/> | ||||
<abstract> | ||||
<t indent="0">The Real-time Transport Protocol (RTP) is used in a | ||||
large number of different application domains and environments. This heterogene | ||||
ity implies that different security mechanisms are needed to provide services su | ||||
ch as confidentiality, integrity, and source authentication of RTP and RTP Contr | ||||
ol Protocol (RTCP) packets suitable for the various environments. The range of | ||||
solutions makes it difficult for RTP-based application developers to pick the mo | ||||
st suitable mechanism. This document provides an overview of a number of securi | ||||
ty solutions for RTP and gives guidance for developers on how to choose the appr | ||||
opriate security mechanism.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7201"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7201"/> | ||||
</reference> | ||||
<reference anchor="RFC7656" target="https://www.rfc-editor.org/info/rfc7 | ||||
656" quoteTitle="true" derivedAnchor="RFC7656"> | ||||
<front> | ||||
<title>A Taxonomy of Semantics and Mechanisms for Real-Time Transpor | ||||
t Protocol (RTP) Sources</title> | ||||
<author initials="J." surname="Lennox" fullname="J. Lennox"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="K." surname="Gross" fullname="K. Gross"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Nandakumar" fullname="S. Nandakumar"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Salgueiro" fullname="G. Salgueiro"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Burman" fullname="B. Burman" role="ed | ||||
itor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2015" month="November"/> | ||||
<abstract> | ||||
<t indent="0">The terminology about, and associations among, Real- | ||||
time Transport Protocol (RTP) sources can be complex and somewhat opaque. This | ||||
document describes a number of existing and proposed properties and relationship | ||||
s among RTP sources and defines common terminology for discussing protocol entit | ||||
ies and their relationships.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7656"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7656"/> | ||||
</reference> | ||||
<reference anchor="RFC7657" target="https://www.rfc-editor.org/info/rfc7 | ||||
657" quoteTitle="true" derivedAnchor="RFC7657"> | ||||
<front> | ||||
<title>Differentiated Services (Diffserv) and Real-Time Communicatio | ||||
n</title> | ||||
<author initials="D." surname="Black" fullname="D. Black" role="edit | ||||
or"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Jones" fullname="P. Jones"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2015" month="November"/> | ||||
<abstract> | ||||
<t indent="0">This memo describes the interaction between Differen | ||||
tiated Services (Diffserv) network quality-of-service (QoS) functionality and re | ||||
al- time network communication, including communication based on the Real-time T | ||||
ransport Protocol (RTP). Diffserv is based on network nodes applying different | ||||
forwarding treatments to packets whose IP headers are marked with different Diff | ||||
serv Codepoints (DSCPs). WebRTC applications, as well as some conferencing appli | ||||
cations, have begun using the Session Description Protocol (SDP) bundle negotiat | ||||
ion mechanism to send multiple traffic streams with different QoS requirements u | ||||
sing the same network 5-tuple. The results of using multiple DSCPs to obtain di | ||||
fferent QoS treatments within a single network 5-tuple have transport protocol i | ||||
nteractions, particularly with congestion control functionality (e.g., reorderin | ||||
g). In addition, DSCP markings may be changed or removed between the traffic so | ||||
urce and destination. This memo covers the implications of these Diffserv aspec | ||||
ts for real-time network communication, including WebRTC.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7657"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7657"/> | ||||
</reference> | ||||
<reference anchor="RFC8829" target="https://www.rfc-editor.org/info/rfc8 | ||||
829" quoteTitle="true" derivedAnchor="RFC8829"> | ||||
<front> | ||||
<title>JavaScript Session Establishment Protocol (JSEP)</title> | ||||
<author initials="J." surname="Uberti" fullname="Justin Uberti"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Jennings" fullname="Cullen Jennings"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Rescorla" fullname="Eric Rescorla" ro | ||||
le="editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8829"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8829"/> | ||||
</reference> | ||||
<reference anchor="RFC8838" target="https://www.rfc-editor.org/info/rfc8 | ||||
838" quoteTitle="true" derivedAnchor="RFC8838"> | ||||
<front> | ||||
<title>Trickle ICE: Incremental Provisioning of Candidates for the I | ||||
nteractive Connectivity Establishment (ICE) Protocol</title> | ||||
<author initials="E" surname="Ivov" fullname="Emil Ivov"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J" surname="Uberti" fullname="Justin Uberti"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P" surname="Saint-Andre" fullname="Peter Saint-And | ||||
re"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8838"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8838"/> | ||||
</reference> | ||||
</references> | </references> | |||
</references> | </references> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-appen | <section anchor="appendix"> | |||
dix.a"> | <name>Design Considerations</name> | |||
<name slugifiedName="name-design-considerations">Design Considerations</na | <t> | |||
me> | One of the main issues regarding the BUNDLE grouping | |||
<t indent="0" pn="section-appendix.a-1"> | extensions has been whether, in offers and answers, the same | |||
One of the main issues regarding the BUNDLE grouping extensions has been | port value can be inserted in "m=" lines associated with a | |||
whether, | BUNDLE group, as the purpose of the extension is to negotiate | |||
in offers and answers, the same port value can be inserted in "m=" | the usage of a single transport for media specified by the | |||
lines associated with a BUNDLE group, as the purpose of the extension is | "m=" sections. Issues with both approaches, discussed in <xref | |||
to negotiate | target="appendix"/>, have been raised. The outcome was to | |||
the usage of a single transport for media specified by the "m=" sections | specify a mechanism that uses offers with both different and | |||
. Issues | identical port values. | |||
with both approaches, discussed in the Appendix, have been raised. The o | ||||
utcome was to | ||||
specify a mechanism that uses offers with both different and identical p | ||||
ort values. | ||||
</t> | </t> | |||
<t indent="0" pn="section-appendix.a-2"> | <t> | |||
Below are the primary issues that have been considered when defining the "BUNDLE" | Below are the primary issues that have been considered when defining the "BUNDLE" | |||
grouping extension: | grouping extension: | |||
</t> | </t> | |||
<ol spacing="normal" type="%d)" indent="adaptive" start="1" pn="section-ap | <ol type="%d)"> | |||
pendix.a-3"> | <li>Interoperability with existing User Agents (UAs).</li> | |||
<li pn="section-appendix.a-3.1" derivedCounter="1)">Interoperability wit | <li>Interoperability with intermediary Back-to-Back User Agent (B2BUA) a | |||
h existing User Agents (UAs).</li> | nd proxy entities.</li> | |||
<li pn="section-appendix.a-3.2" derivedCounter="2)">Interoperability wit | <li>The number of ICE candidates and the time to gather them.</li> | |||
h intermediary Back-to-Back User Agent (B2BUA) and proxy entities.</li> | <li>Different error scenarios and when they occur.</li> | |||
<li pn="section-appendix.a-3.3" derivedCounter="3)">Time to gather, and | <li>SDP offer/answer impacts, including usage of port number value zero. | |||
the number of, ICE candidates.</li> | </li> | |||
<li pn="section-appendix.a-3.4" derivedCounter="4)">Different error scen | ||||
arios and when they occur.</li> | ||||
<li pn="section-appendix.a-3.5" derivedCounter="5)">SDP offer/answer imp | ||||
acts, including usage of port number value zero.</li> | ||||
</ol> | </ol> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-a.1 | <section> | |||
"> | <name>UA Interoperability</name> | |||
<name slugifiedName="name-ua-interoperability">UA Interoperability</name | <t> | |||
> | ||||
<t indent="0" pn="section-a.1-1"> | ||||
Consider the following SDP offer/answer exchange, where Alice sends an o ffer to Bob: | Consider the following SDP offer/answer exchange, where Alice sends an o ffer to Bob: | |||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-a.1-2">SDP Offer</t> | <t keepWithNext="true">SDP Offer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-a.1-3"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | |||
s= | s= | |||
c=IN IP4 atlanta.example.com | c=IN IP4 atlanta.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 10000 RTP/AVP 97 | m=audio 10000 RTP/AVP 97 | |||
a=rtpmap:97 iLBC/8000 | a=rtpmap:97 iLBC/8000 | |||
m=video 10002 RTP/AVP 97 | m=video 10002 RTP/AVP 97 | |||
a=rtpmap:97 H261/90000 | a=rtpmap:97 H261/90000 | |||
</sourcecode> | </sourcecode> | |||
<t keepWithNext="true" indent="0" pn="section-a.1-4">SDP Answer</t> | <t keepWithNext="true">SDP Answer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-a.1-5"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=bob 2808844564 2808844564 IN IP4 biloxi.example.com | o=bob 2808844564 2808844564 IN IP4 biloxi.example.com | |||
s= | s= | |||
c=IN IP4 biloxi.example.com | c=IN IP4 biloxi.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 20000 RTP/AVP 97 | m=audio 20000 RTP/AVP 97 | |||
a=rtpmap:97 iLBC/8000 | a=rtpmap:97 iLBC/8000 | |||
m=video 20002 RTP/AVP 97 | m=video 20002 RTP/AVP 97 | |||
a=rtpmap:97 H261/90000 | a=rtpmap:97 H261/90000 | |||
</sourcecode> | </sourcecode> | |||
<t indent="0" pn="section-a.1-6"> | <t> | |||
RFC 4961 specifies a way of doing symmetric RTP, but that is a later | <xref target="RFC4961"/> specifies a way of doing symmetric RTP, but tha | |||
extension to RTP, and Bob cannot assume that Alice supports RFC 4961. Th | t is a later | |||
is | extension to RTP, and Bob cannot assume that Alice supports <xref target | |||
="RFC4961"/>. This | ||||
means that Alice may be sending RTP from a different port than 10000 or | means that Alice may be sending RTP from a different port than 10000 or | |||
10002 -- some implementations simply send the RTP from an ephemeral | 10002 -- some implementations simply send the RTP from an ephemeral | |||
port. When Bob's endpoint receives an RTP packet, the only way that Bob | port. When Bob's endpoint receives an RTP packet, the only way that Bob | |||
knows if the packet is to be passed to the video or audio codec is by lo oking at | knows if the packet is to be passed to the video or audio codec is by lo oking at | |||
the port it was received on. | the port it was received on. | |||
This prompted some SDP implementations to use a port number as an index to find the | This prompted some SDP implementations to use a port number as an index to find the | |||
correct "m=" line in the SDP, since each "m"= section contains a differe nt port number. As a result, some | correct "m=" line in the SDP, since each "m"= section contains a differe nt port number. As a result, some | |||
implementations that do support symmetric RTP and ICE still use an SDP d ata | implementations that do support symmetric RTP and ICE still use an SDP d ata | |||
structure where SDP with "m=" sections with the same port such as: | structure where SDP with "m=" sections with the same port such as: | |||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-a.1-7">SDP Offer</t> | <t keepWithNext="true">SDP Offer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-a.1-8"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | |||
s= | s= | |||
c=IN IP4 atlanta.example.com | c=IN IP4 atlanta.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 10000 RTP/AVP 97 | m=audio 10000 RTP/AVP 97 | |||
a=rtpmap:97 iLBC/8000 | a=rtpmap:97 iLBC/8000 | |||
m=video 10000 RTP/AVP 98 | m=video 10000 RTP/AVP 98 | |||
a=rtpmap:98 H261/90000 | a=rtpmap:98 H261/90000 | |||
</sourcecode> | </sourcecode> | |||
<t indent="0" pn="section-a.1-9"> | <t> | |||
will result in the second "m=" section being considered an SDP error | will result in the second "m=" section being considered an SDP error | |||
because it has the same port as the first line. | because it has the same port as the first line. | |||
</t> | </t> | |||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-a.2 | <section> | |||
"> | <name>Usage of Port Number Value Zero</name> | |||
<name slugifiedName="name-usage-of-port-number-value-">Usage of Port Num | <t> | |||
ber Value Zero</name> | ||||
<t indent="0" pn="section-a.2-1"> | ||||
In an offer or answer, the media specified by an "m=" section can be | In an offer or answer, the media specified by an "m=" section can be | |||
disabled/rejected by setting the port number value to zero. This is diff erent | disabled/rejected by setting the port number value to zero. This is diff erent | |||
from, e.g., using the SDP direction attributes, where RTCP traffic will | from, e.g., using the SDP direction attributes, where RTCP traffic will | |||
continue even if the SDP 'inactive' attribute is indicated for the | continue even if the SDP 'inactive' attribute is indicated for the | |||
associated "m=" section. | associated "m=" section. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.2-2"> | <t> | |||
If each "m=" section associated with a BUNDLE group would contain differ | If each "m=" section associated with a BUNDLE group were to contain diff | |||
ent | erent | |||
port values, and one of those port values would be used for a BUNDLE add | port values and one of those port values were used for a BUNDLE address: | |||
ress:port | port | |||
associated with the BUNDLE group, problems would occur if an endpoint wa nts to | associated with the BUNDLE group, problems would occur if an endpoint wa nts to | |||
disable/reject the "m=" section associated with that port, by setting th e port | disable/reject the "m=" section associated with that port by setting the port | |||
value to zero. After that, no "m=" section would contain the port value that | value to zero. After that, no "m=" section would contain the port value that | |||
is used for the BUNDLE address:port. In addition, it is unclear what wou ld happen | is used for the BUNDLE address:port. In addition, it is unclear what wou ld happen | |||
to the ICE candidates associated with the "m=" section, as they are also used for | to the ICE candidates associated with the "m=" section, as they are also used for | |||
the BUNDLE address:port. | the BUNDLE address:port. | |||
</t> | </t> | |||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-a.3 | <section> | |||
"> | <name>B2BUA and Proxy Interoperability</name> | |||
<name slugifiedName="name-b2bua-and-proxy-interoperab">B2BUA and Proxy I | <t> | |||
nteroperability</name> | ||||
<t indent="0" pn="section-a.3-1"> | ||||
Some back-to-back user agents may be configured in a mode where if | Some back-to-back user agents may be configured in a mode where if | |||
the incoming call leg contains an SDP attribute the B2BUA does not | the incoming call leg contains an SDP attribute the B2BUA does not | |||
understand, the B2BUA still generates that SDP attribute in the offer | understand, the B2BUA still generates that SDP attribute in the Offer | |||
for the outgoing call leg. Consider a B2BUA that did not understand | for the outgoing call leg. Consider a B2BUA that did not understand | |||
the SDP 'rtcp' attribute, defined in RFC 3605, yet acted this way. | the SDP 'rtcp' attribute, defined in <xref target="RFC3605"/>, yet acted this way. | |||
Further, assume that the B2BUA was configured to tear down any call | Further, assume that the B2BUA was configured to tear down any call | |||
where it did not see any RTCP for 5 minutes. In this case, if the B2BUA | where it did not see any RTCP for 5 minutes. In this case, if the B2BUA | |||
received an offer like: | received an Offer like: | |||
</t> | </t> | |||
<t keepWithNext="true" indent="0" pn="section-a.3-2">SDP Offer</t> | <t keepWithNext="true">SDP Offer</t> | |||
<sourcecode type="sdp" markers="false" pn="section-a.3-3"> | <sourcecode type="sdp"> | |||
v=0 | v=0 | |||
o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | o=alice 2890844526 2890844526 IN IP4 atlanta.example.com | |||
s= | s= | |||
c=IN IP4 atlanta.example.com | c=IN IP4 atlanta.example.com | |||
t=0 0 | t=0 0 | |||
m=audio 49170 RTP/AVP 0 | m=audio 49170 RTP/AVP 0 | |||
a=rtcp:53020 | a=rtcp:53020 | |||
</sourcecode> | </sourcecode> | |||
<t indent="0" pn="section-a.3-4"> | <t> | |||
It would be looking for RTCP on port 49171 but would not see any | it would be looking for RTCP on port 49171 but would not see any | |||
because the RTCP would be on port 53020, and after five minutes, it would | because the RTCP would be on port 53020, and after five minutes, it would | |||
tear down the call. Similarly, a B2BUA that did not understand BUNDLE yet | tear down the call. Similarly, a B2BUA that did not understand BUNDLE yet | |||
put it in its offer may be looking for media on the wrong port and | put it in its offer may be looking for media on the wrong port and | |||
tear down the call. It is worth noting that a B2BUA that generated an | tear down the call. It is worth noting that a B2BUA that generated an | |||
offer with capabilities it does not understand is not compliant with the | Offer with capabilities it does not understand is not compliant with the | |||
specifications. | specifications. | |||
</t> | </t> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-a | <section> | |||
.3.1"> | <name>Traffic Policing</name> | |||
<name slugifiedName="name-traffic-policing">Traffic Policing</name> | <t> | |||
<t indent="0" pn="section-a.3.1-1"> | ||||
Sometimes intermediaries do not act as B2BUAs, in the sense that | Sometimes intermediaries do not act as B2BUAs, in the sense that | |||
they don't modify SDP bodies nor do they terminate SIP dialogs. | they don't modify SDP bodies nor do they terminate SIP dialogs. | |||
However, they may still use SDP information (e.g., IP address and | However, they may still use SDP information (e.g., IP address and | |||
port) in order to control traffic gating functions and to set | port) in order to control traffic gating functions and to set | |||
traffic policing rules. There might be rules that will trigger | traffic policing rules. There might be rules that will trigger | |||
a session to be terminated in case media is not sent or received | a session to be terminated in case media is not sent or received | |||
on the ports retrieved from the SDP. This typically occurs once the | on the ports retrieved from the SDP. This typically occurs once the | |||
session is already established and ongoing. | session is already established and ongoing. | |||
</t> | </t> | |||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-a | <section> | |||
.3.2"> | <name>Bandwidth Allocation</name> | |||
<name slugifiedName="name-bandwidth-allocation">Bandwidth Allocation</ | <t> | |||
name> | ||||
<t indent="0" pn="section-a.3.2-1"> | ||||
Sometimes, intermediaries do not act as B2BUAs, in the sense that | Sometimes, intermediaries do not act as B2BUAs, in the sense that | |||
they don't modify SDP bodies nor do they terminate SIP dialogs. | they don't modify SDP bodies nor do they terminate SIP dialogs. | |||
However, they may still use SDP information (e.g., codecs and | However, they may still use SDP information (e.g., codecs and | |||
media types) in order to control bandwidth allocation functions. | media types) in order to control bandwidth allocation functions. | |||
The bandwidth allocation is done per "m=" section, which means that | The bandwidth allocation is done per "m=" section, which means that | |||
it might not be enough if media specified by all "m=" sections | it might not be enough if media specified by all "m=" sections | |||
try to use that bandwidth. That may simply lead to either bad | try to use that bandwidth. That may simply lead to either a bad | |||
user experience or termination of the call. | user experience or termination of the call. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section toc="include" numbered="true" removeInRFC="false" pn="section-a.4 | <section> | |||
"> | <name>Candidate Gathering</name> | |||
<name slugifiedName="name-candidate-gathering">Candidate Gathering</name | <t> | |||
> | ||||
<t indent="0" pn="section-a.4-1"> | ||||
When using ICE, a candidate needs to be gathered for each port. This | When using ICE, a candidate needs to be gathered for each port. This | |||
takes approximately 20 ms extra for each extra "m=" section due to the N AT | takes approximately 20 ms extra for each extra "m=" section due to the N AT | |||
pacing requirements. All of this gathering can be overlapped with other | pacing requirements. | |||
All of this gathering can be overlapped with other | ||||
things while, e.g., a web page is loading to minimize the impact. If the client | things while, e.g., a web page is loading to minimize the impact. If the client | |||
only wants to generate Traversal Using Relays around NAT (TURN) or STUN ICE candidates for one of the "m=" | only wants to generate Traversal Using Relays around NAT (TURN) or STUN ICE candidates for one of the "m=" | |||
lines and then use Trickle ICE <xref target="RFC8838" format="default" s ectionFormat="of" derivedContent="RFC8838"/> | lines and then use Trickle ICE <xref target="RFC8838"/> | |||
to get the non-host ICE candidates for the rest of the "m=" sections, it <bcp14>MAY</bcp14> do | to get the non-host ICE candidates for the rest of the "m=" sections, it <bcp14>MAY</bcp14> do | |||
that and will not need any additional gathering time. | that and will not need any additional gathering time. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.4-2"> | <t> | |||
Some people have suggested a TURN extension to get a bunch of TURN | Some people have suggested a TURN extension to get a bunch of TURN | |||
allocations at once. This would only provide a single STUN result, so in | allocations at once. This would only provide a single STUN result, so in | |||
cases where the other end did not support BUNDLE, it may cause more use of | cases where the other end did not support BUNDLE, it may cause more use of | |||
the TURN server, but it would be quick in the cases where both sides | the TURN server, but it would be quick in the cases where both sides | |||
supported BUNDLE and would fall back to a successful call in the other | supported BUNDLE and would fall back to a successful call in the other | |||
cases. | cases. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sec-acks" toc="include" numbered="false" removeInRFC="fal | </section> | |||
se" pn="section-a.5"> | <section anchor="sec-acks" numbered="false"> | |||
<name slugifiedName="name-acknowledgements">Acknowledgements</name> | <name>Acknowledgements</name> | |||
<t indent="0" pn="section-a.5-1"> | <t> | |||
The usage of the SDP grouping extension for negotiating bundled media is | The usage of the SDP grouping extension for negotiating bundled media is | |||
based on similar alternatives proposed by <contact fullname="Harald Alvestrand"/> and <contact fullname="Cullen Jennings"/>. The BUNDLE | based on similar alternatives proposed by <contact fullname="Harald Alvestrand"/> and <contact fullname="Cullen Jennings"/>. The BUNDLE | |||
extension described in this document is based on the different | extension described in this document is based on the different | |||
alternative proposals, and text (e.g., SDP examples) has been borrowed | alternative proposals, and text (e.g., SDP examples) has been borrowed | |||
(and, in some cases, modified) from those alternative proposals. | (and, in some cases, modified) from those alternative proposals. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.5-2"> | <t> | |||
The SDP examples are also modified versions from the ones in the Alvestran d | The SDP examples are also modified versions from the ones in the Alvestran d | |||
proposal. | proposal. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.5-3"> | <t> | |||
Thanks to <contact fullname="Paul Kyzivat"/>, <contact fullname="Martin | Thanks to <contact fullname="Paul Kyzivat"/>, <contact fullname="Martin Th | |||
Thomson"/>, <contact fullname="Flemming Andreasen"/>, <contact fullname="Tho | omson"/>, <contact fullname="Flemming Andreasen"/>, <contact fullname="Thomas St | |||
mas Stach"/>, <contact fullname="Ari Keranen"/>, <contact fullname="Adam Roach"/ | ach"/>, <contact fullname="Ari Keränen"/>, <contact fullname="Adam Roach"/>, <co | |||
>, <contact fullname="Christian Groves"/>, | ntact fullname="Christian Groves"/>, | |||
<contact fullname="Roman Shpount"/>, <contact fullname="Suhas Nandak umar"/>, <contact fullname="Nils Ohlmeier"/>, <contact fullname="Jens Guballa"/> , <contact fullname="Raju Makaraju"/>, <contact fullname="Justin Uberti"/>, <con tact fullname="Taylor Brandstetter"/>, | <contact fullname="Roman Shpount"/>, <contact fullname="Suhas Nandak umar"/>, <contact fullname="Nils Ohlmeier"/>, <contact fullname="Jens Guballa"/> , <contact fullname="Raju Makaraju"/>, <contact fullname="Justin Uberti"/>, <con tact fullname="Taylor Brandstetter"/>, | |||
<contact fullname="Byron Campen"/>, and <contact fullname="Eric Resc orla"/> for reading the text and providing useful feedback. | <contact fullname="Byron Campen"/>, and <contact fullname="Eric Resc orla"/> for reading the text and providing useful feedback. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.5-4"> | <t> | |||
Thanks to <contact fullname="Bernard Aboba"/>, <contact fullname="Peter Thatcher"/>, <contact fullname="Justin Uberti"/>, and <contact fullname="Magnus Westerlund"/> for providing the text for the section on | Thanks to <contact fullname="Bernard Aboba"/>, <contact fullname="Peter Thatcher"/>, <contact fullname="Justin Uberti"/>, and <contact fullname="Magnus Westerlund"/> for providing the text for the section on | |||
RTP/RTCP stream association. | RTP/RTCP stream association. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.5-5"> | <t> | |||
Thanks to <contact fullname="Magnus Westerlund"/>, <contact fullname="Coli n Perkins"/>, and <contact fullname="Jonathan Lennox"/> | Thanks to <contact fullname="Magnus Westerlund"/>, <contact fullname="Coli n Perkins"/>, and <contact fullname="Jonathan Lennox"/> | |||
for providing help and text on the RTP/RTCP procedures. | for providing help and text on the RTP/RTCP procedures. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.5-6"> | <t> | |||
Thanks to <contact fullname="Charlie Kaufman"/> for performing the Sec-Di r review. | Thanks to <contact fullname="Charlie Kaufman"/> for performing the Sec-Di r review. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.5-7"> | <t> | |||
Thanks to <contact fullname="Linda Dunbar"/> for performing the Gen-ART r eview. | Thanks to <contact fullname="Linda Dunbar"/> for performing the Gen-ART r eview. | |||
</t> | </t> | |||
<t indent="0" pn="section-a.5-8"> | <t> | |||
Thanks to Spotify for providing music for the countless hours of | Thanks to Spotify for providing music for the countless hours of | |||
document editing. | document editing. | |||
</t> | </t> | |||
</section> | ||||
</section> | ||||
<section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
="include" pn="section-appendix.b"> | ||||
<name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
<author initials="C." surname="Holmberg" fullname="Christer Holmberg"> | ||||
<organization showOnFrontPage="true">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" initials="H." surname="Alvestra | ||||
nd"> | ||||
<organization showOnFrontPage="true">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 fullname="Cullen Jennings" initials="C." surname="Jennings"> | ||||
<organization showOnFrontPage="true">Cisco</organization> | ||||
<address> | ||||
<postal> | ||||
<street>400 3rd Avenue SW, Suite 350</street> | ||||
<city>Calgary</city> | ||||
<region>AB</region> | ||||
<code>T2P 4H2</code> | ||||
<country>Canada</country> | ||||
</postal> | ||||
<email>fluffy@iii.ca</email> | ||||
</address> | ||||
</author> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 504 change blocks. | ||||
3021 lines changed or deleted | 1281 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |