rfc8856xml2.original.xml | rfc8856.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<rfc category="std" ipr="trust200902" docName="draft-ietf-bfcpbis-rfc4583bis-27" | ||||
obsoletes="4583"> | ||||
<?rfc strict="yes"?> | ||||
<?rfc toc="yes"?> | ||||
<?rfc tocdepth="4"?> | ||||
<?rfc symrefs="no"?> | ||||
<?rfc sortrefs="yes" ?> | ||||
<?rfc compact="yes" ?> | ||||
<?rfc subcompact="no" ?> | ||||
<?rfc symrefs="yes" ?> | ||||
<front> | ||||
<title abbrev="BFCP">Session Description Protocol (SDP) Format for Binary Floo | ||||
r Control Protocol (BFCP) Streams</title> | ||||
<author initials="G." surname="Camarillo" fullname="Gonzalo Camarillo"> | ||||
<organization>Ericsson</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Hirsalantie 11</street> | ||||
<city>FI-02420 Jorvas</city> | ||||
<country>Finland</country> | ||||
</postal> | ||||
<email>Gonzalo.Camarillo@ericsson.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Tom Kristensen" initials="T." surname="Kristensen"> | ||||
<organization>Cisco</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Philip Pedersens vei 1</street> | ||||
<city>NO-1366 Lysaker</city> | ||||
<country>Norway</country> | ||||
</postal> | ||||
<email>tomkrist@cisco.com, tomkri@ifi.uio.no</email> | ||||
</address> | ||||
</author> | ||||
<author initials="C.H." surname="Holmberg" fullname="Christer Holmberg"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | |||
<organization>Ericsson</organization> | ipr="trust200902" docName="draft-ietf-bfcpbis-rfc4583bis-27" | |||
<address> | number="8856" obsoletes="4583" updates="" submissionType="IETF" | |||
<postal> | consensus="true" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true | |||
<street>Hirsalantie 11</street> | " sortRefs="true" version="3"> | |||
<!-- xml2rfc v2v3 conversion 2.37.3 --> | ||||
<front> | ||||
<title abbrev="SDP Format for BFCP Streams">Session Description Protocol (SD | ||||
P) Format for Binary | ||||
Floor Control Protocol (BFCP) Streams</title> | ||||
<seriesInfo name="RFC" value="8856"/> | ||||
<author initials="G." surname="Camarillo" fullname="Gonzalo Camarillo"> | ||||
<organization>Ericsson</organization> | ||||
<address> | ||||
<postal> | ||||
<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>Gonzalo.Camarillo@ericsson.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Tom Kristensen" initials="T." surname="Kristensen"> | ||||
<date year="2018"/> | <organization abbrev="Jotron">Jotron AS</organization> | |||
<address> | ||||
<area>Real-time Applications and Infrastructure</area> | <postal> | |||
<workgroup>BFCPbis Working Group</workgroup> | <street>Ringdalskogen 8</street> | |||
<code>3270</code> | ||||
<city>Larvik</city> | ||||
<country>Norway</country> | ||||
</postal> | ||||
<email>tom.kristensen@jotron.com, tomkri@ifi.uio.no</email> | ||||
</address> | ||||
</author> | ||||
<author initials="C." surname="Holmberg" fullname="Christer Holmberg"> | ||||
<organization>Ericsson</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Hirsalantie 11</street> | ||||
<code>02420</code> | ||||
<city>Jorvas</city> | ||||
<country>Finland</country> | ||||
</postal> | ||||
<email>christer.holmberg@ericsson.com</email> | ||||
</address> | ||||
</author> | ||||
<date month="May" year="2020"/> | ||||
<keyword>floor control</keyword> | <keyword>floor control</keyword> | |||
<keyword>BFCP</keyword> | <keyword>BFCP</keyword> | |||
<keyword>SDP</keyword> | <keyword>SDP</keyword> | |||
<abstract> | <abstract> | |||
<t>This document defines the Session Description Protocol (SDP) offer/answer | <t>This document defines the Session Description Protocol (SDP) | |||
procedures for negotiating and establishing Binary Floor Control Protocol (BFCP) | offer/answer procedures for negotiating and establishing Binary Floor | |||
streams.</t> | Control Protocol (BFCP) streams.</t> | |||
<t>This document obsoletes RFC 4583. Changes from RFC 4583 are summarized in | ||||
Section 14.</t> | ||||
<!-- Ensure correct section #, as xref is no | ||||
t allowed in abstract --> | ||||
</abstract> | ||||
</front> | ||||
<middle> | <t>This document obsoletes RFC 4583.</t> | |||
<section title="Introduction"> | </abstract> | |||
<t>As discussed in the BFCP (Binary Floor Control Protocol) specification <x | </front> | |||
ref target="I-D.ietf-bfcpbis-rfc4582bis"/>, a | <middle> | |||
<section numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>As discussed in the BFCP (Binary Floor Control Protocol) specification | ||||
<xref target="RFC8855" format="default"/>, a | ||||
given BFCP client needs a set of data in order to establish a BFCP connectio n to a floor control server. This data includes | given BFCP client needs a set of data in order to establish a BFCP connectio n to a floor control server. This data includes | |||
the transport address of the server, the conference identifier, and the user identifier.</t> | the transport address of the server, the conference identifier, and the user identifier.</t> | |||
<t>One way for clients to obtain this information is to use an SDP offer/ans | <t>One way for clients to obtain this information is to use a Session | |||
wer <xref target="RFC3264"/> exchange. | Description Protocol (SDP) offer/answer exchange <xref target="RFC3264" fo | |||
rmat="default"/>. | ||||
This document specifies how to encode this information in the SDP session de scriptions that are part of such an offer/answer | This document specifies how to encode this information in the SDP session de scriptions that are part of such an offer/answer | |||
exchange.</t> | exchange.</t> | |||
<t>User agents typically use the offer/answer model to establish a number of | <t>User agents typically use the offer/answer model to establish a number | |||
media streams of different types. | of media streams of different types. | |||
Following this model, a BFCP connection is described as any other media stre | Following this model, a BFCP connection is described as any other media stre | |||
am by using an SDP 'm' line, possibly | am by using an SDP "m=" line, possibly | |||
followed by a number of SDP lines that also apply to the BFCP connection.</t > | followed by a number of SDP lines that also apply to the BFCP connection.</t > | |||
<t><xref target="sec:m-line"/> defines how the field values in 'm' line repr | <t><xref target="sec_m-line" format="default"/> defines how the field | |||
esenting a BFCP connection are set.</t> | values in an "m=" line representing a BFCP connection are set.</t> | |||
<t><xref target="sec:attributes"/> defines SDP attributes that are used when | <t><xref target="sec_attributes" format="default"/> defines SDP attributes | |||
negotiating a BFCP connection.</t> | that are used when negotiating a BFCP connection.</t> | |||
<t><xref target="sec:mux-cons"/> defines multiplexing considerations for a B | <t><xref target="sec_mux-cons" format="default"/> defines multiplexing con | |||
FCP connection.</t> | siderations for a BFCP connection.</t> | |||
<t><xref target="sec:bfcp-connection"/> defines procedures for managing a BF | <t><xref target="sec_bfcp-connection" format="default"/> defines procedure | |||
CP connection.</t> | s for managing a BFCP connection.</t> | |||
<t><xref target="sec:authentication"/> defines TLS and DTLS considerations w | <t><xref target="sec_authentication" format="default"/> defines TLS and DT | |||
hen negotiating a BFCP connection.</t> | LS considerations when negotiating a BFCP connection.</t> | |||
<t><xref target="sec:ice-considerations"/> defines the Interactive Connectiv | <t><xref target="sec_ice-considerations" format="default"/> defines | |||
ity Establishment (ICE) | considerations regarding Interactive Connectivity Establishment (ICE) | |||
<xref target="RFC8445"/> considerations when negotiating a BFCP connection.< | <xref target="RFC8445" format="default"/> when negotiating a BFCP connection | |||
/t> | .</t> | |||
<t><xref target="sec:oa-offer-answer-proc"/> defines the SDP offer/answer pr | <t><xref target="sec_oa-offer-answer-proc" format="default"/> defines | |||
ocedures for negotiating a BFCP connection.</t> | the SDP offer/answer procedures for negotiating a BFCP connection.</t> | |||
</section> | ||||
<section title="Conventions"> | ||||
<t> | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOUL | ||||
D", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | ||||
"MAY", and "OPTIONAL" in this document are to be interpreted as described | ||||
in BCP 14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | ||||
<section title="Floor Control Roles" anchor="sec:server-determination"> | <t>This document obsoletes RFC 4583 <xref target="RFC4583"/>. <xref | |||
<t> | target="sec_changes"/> summarizes the changes | |||
from RFC 4583.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Conventions</name> | ||||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | ||||
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | ||||
"<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
to be interpreted as described in BCP 14 <xref target="RFC2119"/> | ||||
<xref target="RFC8174"/> when, and only when, they appear in all capitals, | ||||
as shown here.</t> | ||||
</section> | ||||
<section anchor="sec_server-determination" numbered="true" toc="default"> | ||||
<name>Floor Control Roles</name> | ||||
<t> | ||||
When two endpoints establish a BFCP stream, they need to determine which of them acts as a floor control client and which acts as a floor control server. | When two endpoints establish a BFCP stream, they need to determine which of them acts as a floor control client and which acts as a floor control server. | |||
</t> | </t> | |||
<t> | ||||
Once the roles have been determined, the roles will apply to all BFCP-con | ||||
trolled streams associated with the BFCP stream. | ||||
</t> | ||||
</section> | ||||
<section title="Fields in the 'm' Line" anchor="sec:m-line"> | ||||
<t>According to the SDP specification <xref target="RFC4566"/>, the 'm' line | ||||
format is the following:</t> | ||||
<t><list style="hanging"> | ||||
<t><![CDATA[m=<media> <port> <proto> <fmt> ...]]></t> | ||||
</list></t> | ||||
<t>This section describes how to generate an 'm' line of an SDP Media Descri | ||||
ption ('m' section) describing a BFCP stream.</t> | ||||
<t>The media field MUST have a value of "application".</t> | ||||
<t>The port field is set depending on the value of the proto field, as expla | ||||
ined below. A port field value of zero has the standard SDP meaning (i.e., reje | ||||
ction of the media stream) regardless of the proto field.</t> | ||||
<t><list style="hanging"> | ||||
<t>When TCP is used as the transport, the port field is set following th | ||||
e rules in <xref target="RFC4145"/>. Depending on the value of the 'setup' attri | ||||
bute (discussed in <xref target="sec:tcp-connection"/>), the port field contains | ||||
the port to which the remote endpoint will direct BFCP messages, or in the case | ||||
where the endpoint will initiate the connection towards the remote endpoint, sh | ||||
ould be set to a value of 9.</t> | ||||
<t>When UDP is used as the transport, the port field contains the port t | ||||
o which the remote endpoint will direct BFCP messages regardless of the value of | ||||
the 'setup' attribute.</t> | ||||
</list></t> | ||||
<t>This document defines five values for the proto field: TCP/BFCP, TCP/DTLS | ||||
/BFCP, TCP/TLS/BFCP, UDP/BFCP, and UDP/TLS/BFCP.</t> | ||||
<t>The proto value are used as described below:</t> | ||||
<t><list style="hanging"> | ||||
<t>'TCP/BFCP' is used for TCP transport of BFCP without TLS encryption, an | ||||
d is backward compatible with RFC 4583 compliant endpoints.</t> | ||||
<t>'TCP/TLS/BFCP' is used for TCP transport of BFCP with TLS encryption, a | ||||
nd is backward compatible with RFC 4583 compliant endpoints that support TLS.</t | ||||
> | ||||
<t>'UDP/BFCP' is used for UDP transport of BFCP without DTLS encryption <x | ||||
ref target="RFC6347"/>.</t> | ||||
<t>'UDP/TLS/BFCP' is used for UDP transport of BFCP with DTLS encryption. | ||||
This is one of the options when ICE is used (<xref target="sec:ice-consideration | ||||
s"/>). It can also be used without ICE | ||||
when backward compatibility with RFC 4583 compliant endpoints is not r | ||||
equired.</t> | ||||
<t>'TCP/DTLS/BFCP' is used for TCP transport of BFCP with DTLS encryption, | ||||
running on top of TCP using the framing method defined in <xref target="RFC4571 | ||||
"/>, with DTLS packets being | ||||
sent and received instead of RTP/RTCP packets using the shim defined i | ||||
n RFC 4571 such that the length field defined in RFC 4571 precedes each DTLS mes | ||||
sage. This is one of the options when | ||||
ICE is used (<xref target="sec:ice-considerations"/>). It can also be | ||||
used without ICE when backward compatibility with RFC 4583 compliant endpoints i | ||||
s not required.</t> | ||||
</list></t> | ||||
<t>The fmt (format) list is not applicable to BFCP. The fmt list of 'm' line | ||||
s in the case of any proto field value related to BFCP MUST contain a single "*" | ||||
character. If the the fmt list contains any other value it MUST be ignored.</t> | ||||
<t>The following is an example of an 'm' line for a BFCP connection:</t> | ||||
<figure> | ||||
<artwork> | ||||
m=application 50000 TCP/TLS/BFCP * | ||||
</artwork> | ||||
</figure> | ||||
</section> | ||||
<section title="SDP Attributes" anchor="sec:attributes"> | ||||
<section title="SDP 'floorctrl' Attribute" anchor="sec:floorctrl-attr"> | ||||
<t> | <t> | |||
Once the roles have been determined, the roles will apply to all BFCP-con | ||||
trolled streams associated with the BFCP stream. | ||||
</t> | ||||
</section> | ||||
<section anchor="sec_m-line" numbered="true" toc="default"> | ||||
<name>Fields in the "m=" Line</name> | ||||
<t>According to the SDP specification <xref target="RFC4566" format="defau | ||||
lt"/>, the "m=" line format is as follows:</t> | ||||
<sourcecode name="" type="sdp"><![CDATA[ | ||||
m=<media> <port> <proto> <fmt> ... ]]></sourcecode> | ||||
<t>This section describes how to generate an "m=" line of an SDP Media Des | ||||
cription ("m=" section) describing a BFCP stream.</t> | ||||
<t>The media field <bcp14>MUST</bcp14> have a value of "application".</t> | ||||
<t>Depending on the value of the proto field, the port field is set as exp | ||||
lained below. A port field value of zero has the standard SDP meaning (i.e., re | ||||
jection of the media stream), regardless of the proto field.</t> | ||||
<ul spacing="normal"> | ||||
<li>When TCP is used as the transport, the port field is set following | ||||
the rules in <xref target="RFC4145" format="default"/>. Depending on | ||||
the value of the 'setup' attribute (defined in <xref | ||||
target="RFC4145"/> and discussed in <xref target="sec_tcp-connection" for | ||||
mat="default"/>), the port field contains the port to which the remote endpoint | ||||
will direct BFCP messages, or in the case where the endpoint will initiate the c | ||||
onnection towards the remote endpoint, should be set to a value of 9.</li> | ||||
<li>When UDP is used as the transport, the port field contains the port | ||||
to which the remote endpoint will direct BFCP messages, regardless of the value | ||||
of the 'setup' attribute.</li> | ||||
</ul> | ||||
<t>This document defines five values for the proto field: 'TCP/BFCP', 'TCP | ||||
/DTLS/BFCP', 'TCP/TLS/BFCP', 'UDP/BFCP', and 'UDP/TLS/BFCP'.</t> | ||||
<t>The proto values are used as described below:</t> | ||||
<ul spacing="normal"> | ||||
<li>'TCP/BFCP' is used for TCP transport of BFCP without TLS | ||||
encryption and is backward compatible with endpoints that are compliant w | ||||
ith RFC 4583.</li> | ||||
<li>'TCP/TLS/BFCP' is used for TCP transport of BFCP with TLS | ||||
encryption and is backward compatible with endpoints that are | ||||
compliant with RFC 4583 and support TLS.</li> | ||||
<li>'UDP/BFCP' is used for UDP transport of BFCP without DTLS encryption | ||||
<xref target="RFC6347" format="default"/>.</li> | ||||
<li>'UDP/TLS/BFCP' is used for UDP transport of BFCP with DTLS | ||||
encryption. This is one of the options when ICE is used (<xref target="se | ||||
c_ice-considerations" format="default"/>). It can also be used without ICE | ||||
when backward compatibility with endpoints compliant with RFC 4583 is | ||||
not required.</li> | ||||
<li>'TCP/DTLS/BFCP' is used for TCP transport of BFCP with DTLS encrypti | ||||
on, running on top of TCP using the framing method defined in <xref target="RFC4 | ||||
571" format="default"/>, with DTLS packets being | ||||
sent and received instead of RTP / RTP Control Protocol (RTCP) | ||||
packets, such that the LENGTH field defined in RFC 4571 precedes | ||||
each DTLS message. This is one of the options when | ||||
ICE is used (<xref target="sec_ice-considerations" | ||||
format="default"/>). It can also be used without ICE when backward | ||||
compatibility with endpoints compliant with RFC 4583 is not required.</li | ||||
> | ||||
</ul> | ||||
<t>The fmt (format) list is not applicable to BFCP. The fmt list of "m=" l | ||||
ines in the case of any proto field value related to BFCP <bcp14>MUST</bcp14> co | ||||
ntain a single "*" character. If the fmt list contains any other value, it <bcp1 | ||||
4>MUST</bcp14> be ignored.</t> | ||||
<t>The following is an example of an "m=" line for a BFCP connection:</t> | ||||
<sourcecode name="" type="sdp"><![CDATA[ | ||||
m=application 50000 TCP/TLS/BFCP * ]]></sourcecode> | ||||
</section> | ||||
<section anchor="sec_attributes" numbered="true" toc="default"> | ||||
<name>SDP Attributes</name> | ||||
<section anchor="sec_floorctrl-attr" numbered="true" toc="default"> | ||||
<name>SDP 'floorctrl' Attribute</name> | ||||
<t> | ||||
This section defines the SDP 'floorctrl' media-level attribute. The att ribute is used to determine the floor control roles (client and server) for the endpoints associated with | This section defines the SDP 'floorctrl' media-level attribute. The att ribute is used to determine the floor control roles (client and server) for the endpoints associated with | |||
the BFCP stream. | the BFCP stream. | |||
</t> | </t> | |||
<figure> | ||||
<artwork type='abnf'> | ||||
Attribute Name: floorctrl | ||||
Attribute Value: floor-control | ||||
Usage Level: media | ||||
Charset Dependent: No | ||||
Mux Category: TBD | <ul empty="true"><li> | |||
<dl> | ||||
<dt>Attribute Name:</dt><dd>floorctrl</dd> | ||||
<dt>Attribute Value:</dt><dd>floor-control</dd> | ||||
<dt>Usage Level:</dt><dd>media</dd> | ||||
<dt>Charset Dependent:</dt><dd>No</dd> | ||||
<dt>Mux Category:</dt><dd>TBD</dd> | ||||
</dl> | ||||
</li></ul> | ||||
The Augmented BNF syntax [RFC5234] for the attribute is: | <t>The Augmented BNF syntax <xref target="RFC5234"/> for the attribute is:</ | |||
t> | ||||
<sourcecode name="" type="abnf"><![CDATA[ | ||||
floor-control = role *(SP role) | ||||
role = "c-only" / "s-only" / "c-s" ]]></sourcecode> | ||||
floor-control = role *(SP role) | <t>An endpoint includes the attribute to indicate the role(s) it would be w | |||
role = "c-only" / "s-only" / "c-s" | illing to perform for the BFCP-controlled media streams:</t> | |||
</artwork> | <ul empty="true"><li> | |||
</figure> | <dl newline="false" spacing="normal"> | |||
<t>An endpoint includes the attribute to indicate the role(s) it would be | <dt>c-only:</dt> | |||
willing to perform for the BFCP-controlled media streams:</t> | <dd>The endpoint is willing to act as a floor control client.</dd> | |||
<t><list style="hanging"> | <dt>s-only:</dt> | |||
<t hangText="c-only:">The endpoint is willing to act as floor control | <dd>The endpoint is willing to act as a floor control server only.</dd | |||
client.</t> | > | |||
<t hangText="s-only:">The endpoint is willing to act as floor control | </dl></li></ul> | |||
server only.</t> | <t> | |||
</list></t> | When inserted in an offer, the offerer <bcp14>MAY</bcp14> indicate multi | |||
<t> | ple attribute values ("c-only" and "s-only"). When inserted in an answer, the an | |||
When inserted in an offer, the offerer MAY indicate multiple attribute v | swerer <bcp14>MUST</bcp14> | |||
alues ("c-only" and "s-only"). When inserted in an answer, the answerer MUST | ||||
indicate only one attribute value: "c-only" or "s-only". The answerer in dicates the role taken by the answerer. The offerer will then take the | indicate only one attribute value: "c-only" or "s-only". The answerer in dicates the role taken by the answerer. The offerer will then take the | |||
opposite role. | opposite role. | |||
</t> | </t> | |||
<t> | <t> | |||
In <xref target="RFC4583"/>, there was a third attribute specified, "c-s | In <xref target="RFC4583" format="default"/>, there was a third | |||
", which meant that an endpoint was willing to act as both floor control client | attribute specified, "c-s", which meant that an endpoint was willing | |||
and | to act as both a floor control client and a | |||
floor control server at the same time for the BFCP stream, taking differ ent roles for different BFCP-controlled media streams. The feature was underspec ified | floor control server at the same time for the BFCP stream, taking differ ent roles for different BFCP-controlled media streams. The feature was underspec ified | |||
and implemented in different ways, in particular many implementations in | and implemented in different ways; in particular, many implementations | |||
terpreted "c-s” to mean that the endpoint is willing to act as either client or | interpreted "c-s" to mean that the endpoint is willing to act as | |||
server | either a client or a server | |||
(equivalent to “c-only s-only”). An implementation compliant to this spe | (equivalent to "c-only s-only"). An implementation compliant with this s | |||
cification MUST NOT include the "c-s" floorctl attribute value in an offer or in | pecification <bcp14>MUST NOT</bcp14> include the "c-s" 'floorctrl' attribute val | |||
an answer, | ue in an offer or in an answer | |||
but MUST accept the attribute value in an offer and process it as equiva | but <bcp14>MUST</bcp14> accept the attribute value in an offer and | |||
lent to "c-only s-only" (or "s-only c-only"). Also, as an implementation complia | process it as equivalent to "c-only s-only" (or "s-only c-only"). Also, a | |||
nt to | s an implementation compliant with | |||
this specification is only allowed to include one role, either 'c-only' | this specification is only allowed to include one role -- either | |||
or 's-conly', in an answer, each endpoint will only take one role, and as a resu | "c-only" or "s-only" -- in an answer, each endpoint will only take one ro | |||
lt | le, and as a result | |||
the endpoint will take the same role for each BFCP-controlled media stre am associated with the BFCP stream. | the endpoint will take the same role for each BFCP-controlled media stre am associated with the BFCP stream. | |||
</t> | </t> | |||
<t> | <t> | |||
<xref target="tab-roles"/> shows the roles that the answerer is allowed | <xref target="tab-roles" format="default"/> shows the roles that the ans | |||
to take, based on what roles the offerer has | werer is allowed to take, based on what roles the offerer has | |||
indicated that it is willing to take. | indicated that it is willing to take. | |||
</t> | </t> | |||
<texttable title="Roles" anchor="tab-roles"> | <table anchor="tab-roles" align="center"> | |||
<ttcol align="center">Offerer</ttcol> | <name>Roles</name> | |||
<ttcol align="center">Answerer</ttcol> | <thead> | |||
<tr> | ||||
<c>c-only</c> | <th align="center">Offerer</th> | |||
<c>s-only</c> | <th align="center">Answerer</th> | |||
</tr> | ||||
<c>s-only</c> | </thead> | |||
<c>c-only</c> | <tbody> | |||
<tr> | ||||
<td align="center">c-only</td> | ||||
<td align="center">s-only</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">s-only</td> | ||||
<td align="center">c-only</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">c-s</td> | ||||
<td align="center">c-only</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center">c-s</td> | ||||
<td align="center">s-only</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t> | ||||
Endpoints compliant with <xref target="RFC4583" format="default"/> might | ||||
not include the 'floorctrl' attribute in offers and answers. | ||||
If the 'floorctrl' attribute is not present, in order to be | ||||
interoperable with such endpoints, the offerer will act as a floor contro | ||||
l client | ||||
and the answerer will act as a floor control server. | ||||
</t> | ||||
<t> | ||||
The SDP Offer/Answer procedures for the 'floorctrl' attribute are define | ||||
d in <xref target="sec_oa-offer-answer-proc" format="default"/>. | ||||
</t> | ||||
<t>The following is an example of a 'floorctrl' attribute in an offer:</ | ||||
t> | ||||
<c>c-s</c> | <sourcecode name="" type="sdp"><![CDATA[ | |||
<c>c-only</c> | a=floorctrl:c-only s-only ]]></sourcecode> | |||
<c>c-s</c> | </section> | |||
<c>s-only</c> | <section anchor="sec_confid-attr" numbered="true" toc="default"> | |||
</texttable> | <name>SDP 'confid' Attribute</name> | |||
<t> | ||||
Endpoints compliant with <xref target="RFC4583"/> might not include the | ||||
'floorctrl' attribute in offers and answerer. | ||||
If the 'floorctrl' attribute is not present, in order to be interoperabl | ||||
e with such endpoints, the offerer will act as floor control client | ||||
and the answerer will act as floor control server. | ||||
</t> | ||||
<t> | ||||
The SDP Offer/Answer procedures for the 'floorctrl' attribute are define | ||||
d in <xref target="sec:oa-offer-answer-proc"/>. | ||||
</t> | ||||
<t>The following is an example of a 'floorctrl' attribute in an offer:</t> | ||||
<figure> | ||||
<artwork> | ||||
a=floorctrl:c-only s-only | ||||
</artwork> | ||||
</figure> | ||||
</section> | ||||
<section title="SDP 'confid' Attribute" anchor="sec:confid-attr"> | <t> | |||
<t> | ||||
This section defines the SDP 'confid' media-level attribute. The attribute is used by a floor control server | This section defines the SDP 'confid' media-level attribute. The attribute is used by a floor control server | |||
to convey the conference ID value to the floor control client, using decim al integer representation. | to convey the conference ID value to the floor control client, using decim al integer representation. | |||
</t> | </t> | |||
<figure> | ||||
<artwork type='abnf'><![CDATA[ | ||||
Attribute Name: confid | ||||
Attribute Value: conference-id | ||||
Usage Level: media | ||||
Charset Dependent: No | ||||
Mux Category: TBD | ||||
The Augmented BNF syntax [RFC5234] for the attribute is: | ||||
conference-id = 1*DIGIT | <ul empty="true"><li> | |||
<dl> | ||||
<dt>Attribute Name:</dt><dd>confid</dd> | ||||
<dt>Attribute Value:</dt><dd>conference-id</dd> | ||||
<dt>Usage Level:</dt><dd>media</dd> | ||||
<dt>Charset Dependent:</dt><dd>No</dd> | ||||
<dt>Mux Category:</dt><dd>TBD</dd> | ||||
</dl> | ||||
</li></ul> | ||||
DIGIT = <DIGIT defined in [RFC5234]> | <t>The Augmented BNF syntax <xref target="RFC5234"/> for the attribute is:</ | |||
t> | ||||
<sourcecode name="" type="abnf"><![CDATA[ | ||||
conference-id = 1*DIGIT | ||||
The maximum value of the attribute is determined by the | DIGIT = <DIGIT as defined in [RFC5234]> ]]></sourcecode> | |||
COMMON-HEADER format [I-D.ietf-bfcpbis-rfc4582bis]. | ||||
]]></artwork> | <t>The maximum value of the attribute is determined by the | |||
</figure> | COMMON-HEADER format <xref target="RFC8855"/>.</t> | |||
<t> | ||||
The SDP Offer/Answer procedures for the 'confid' attribute are defined in | ||||
<xref target="sec:oa-offer-answer-proc"/>. | ||||
</t> | ||||
</section> | ||||
<section title="SDP 'userid' Attribute" anchor="sec:userid-attr"> | <t> | |||
<t> | The SDP Offer/Answer procedures for the 'confid' attribute are defined in | |||
This section defines the SDP userid' media-level attribute. The attribute | <xref target="sec_oa-offer-answer-proc" format="default"/>. | |||
is used by a floor control server | </t> | |||
</section> | ||||
<section anchor="sec_userid-attr" numbered="true" toc="default"> | ||||
<name>SDP 'userid' Attribute</name> | ||||
<t> | ||||
This section defines the SDP 'userid' media-level attribute. The attribute | ||||
is used by a floor control server | ||||
to convey the user ID value to the floor control client, using decimal int eger representation. | to convey the user ID value to the floor control client, using decimal int eger representation. | |||
</t> | </t> | |||
<figure> | ||||
<artwork type='abnf'><![CDATA[ | ||||
Attribute Name: userid | ||||
Attribute Value: user-id | ||||
Usage Level: media | ||||
Charset Dependent: No | ||||
Mux Category: TBD | ||||
The Augmented BNF syntax [RFC5234] for the attribute is: | ||||
user-id = 1*DIGIT | ||||
DIGIT = <DIGIT defined in [RFC5234]> | ||||
The maximum value of the attribute is determined by the | ||||
COMMON-HEADER format [I-D.ietf-bfcpbis-rfc4582bis]. | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
The SDP Offer/Answer procedures for the 'userid' attribute are defined in | ||||
<xref target="sec:oa-offer-answer-proc"/>. | ||||
</t> | ||||
</section> | ||||
<section title="SDP 'floorid' Attribute" anchor="sec:floorid-attr"> | ||||
<t> | ||||
This section defines the SDP 'floorid' media-level attribute. The attribut | ||||
e conveys a floor identifier, using decimal integer | ||||
representation, and optionally pointers to one or more BFCP-controlled med | ||||
ia streams. | ||||
</t> | ||||
<figure> | ||||
<artwork type='abnf'><![CDATA[ | ||||
Attribute Name: floorid | ||||
Attribute Value: floor-id | ||||
Usage Level: media | ||||
Charset Dependent: No | ||||
Mux Category: TBD | ||||
The Augmented BNF syntax [RFC5234] for the attribute is: | <ul empty="true"><li> | |||
<dl> | ||||
<dt>Attribute Name:</dt><dd>userid</dd> | ||||
<dt>Attribute Value:</dt><dd>user-id</dd> | ||||
<dt>Usage Level:</dt><dd>media</dd> | ||||
<dt>Charset Dependent:</dt><dd>No</dd> | ||||
<dt>Mux Category:</dt><dd>TBD</dd> | ||||
</dl> | ||||
</li></ul> | ||||
floor-id = 1*DIGIT SP "mstrm:" token *(SP token) | <t>The Augmented BNF syntax <xref target="RFC5234"/> for the attribute is:</ | |||
t> | ||||
<sourcecode name="" type="abnf"><![CDATA[ | ||||
user-id = 1*DIGIT | ||||
DIGIT = <DIGIT defined in [RFC5234]> | DIGIT = <DIGIT as defined in [RFC5234]> ]]></sourcecode> | |||
token = <token defined in [RFC4566]> | ||||
The maximum value of the attribute is determined by the | <t>The maximum value of the attribute is determined by the | |||
FLOOR-ID format [I-D.ietf-bfcpbis-rfc4582bis]. | COMMON-HEADER format <xref target="RFC8855"/>.</t> | |||
]]></artwork> | <t> | |||
</figure> | The SDP Offer/Answer procedures for the 'userid' attribute are defined in | |||
<t> | <xref target="sec_oa-offer-answer-proc" format="default"/>. | |||
The floor identifier value is the integer representation of the Floor ID t | </t> | |||
o be used in BFCP. Each media stream | </section> | |||
pointer value is associated with an SDP 'label' attribute <xref target="RF | <section anchor="sec_floorid-attr" numbered="true" toc="default"> | |||
C4574"/> of a media stream. | <name>SDP 'floorid' Attribute</name> | |||
</t> | <t> | |||
<t> | This section defines the SDP 'floorid' media-level attribute. The | |||
The SDP Offer/Answer procedures for the 'floorid' attribute are defined in | attribute is used to convey a floor identifier, using decimal integer | |||
<xref target="sec:oa-offer-answer-proc"/>. | representation, and, optionally, pointers to one or more BFCP-controlled | |||
</t> | media streams.</t> | |||
<t><list style="empty"> | ||||
<t> | ||||
Note: In <xref target="RFC4583"/> 'm-stream' was erroneously used in <xref | ||||
target="sec:example"/>. Although the example was non-normative, it is | ||||
implemented by some vendors and occurs in cases where the endpoint is will | ||||
ing to act as a server. Therefore, it is RECOMMENDED to support parsing and | ||||
interpreting 'm-stream' the same way as 'mstrm' when receiving. | ||||
</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="SDP 'bfcpver' Attribute" anchor="sec:bfcp-version-attr"> | <ul empty="true"><li> | |||
<t> | <dl> | |||
This section defines the SDP 'bfcpver' media-level attribute. The attribut | <dt>Attribute Name:</dt><dd>floorid</dd> | |||
e is used to negotiate the | <dt>Attribute Value:</dt><dd>floor-id</dd> | |||
BFCP version, using decimal integer representation. | <dt>Usage Level:</dt><dd>media</dd> | |||
</t> | <dt>Charset Dependent:</dt><dd>No</dd> | |||
<t> | <dt>Mux Category:</dt><dd>TBD</dd> | |||
The Augmented BNF syntax <xref target="RFC5234"/> for the attributes is: | </dl> | |||
</t> | </li></ul> | |||
<figure> | ||||
<artwork type='abnf'><![CDATA[ | ||||
Attribute Name: bfcpver | ||||
Attribute Value: bfcp-version | <t>The Augmented BNF syntax <xref target="RFC5234"/> for the attribute is:</ | |||
t> | ||||
<sourcecode name="" type="abnf"><![CDATA[ | ||||
floor-id = 1*DIGIT SP "mstrm:" token *(SP token) | ||||
Usage Level: media | DIGIT = <DIGIT as defined in [RFC5234]> | |||
token = <token as defined in [RFC4566]> ]]></sourcecode> | ||||
Charset Dependent: No | <t>The maximum value of the attribute is determined by the | |||
FLOOR-ID format <xref target="RFC8855"/>.</t> | ||||
Mux Category: TBD | <t>The floor identifier value is the integer representation of the | |||
Floor ID field value <xref target="RFC8855"/> to be used in BFCP. E | ||||
ach media stream | ||||
pointer value is associated with an SDP 'label' attribute <xref target="RF | ||||
C4574" format="default"/> of a media stream. | ||||
</t> | ||||
<t> | ||||
The SDP Offer/Answer procedures for the 'floorid' attribute are defined in | ||||
<xref target="sec_oa-offer-answer-proc" format="default"/>. | ||||
</t> | ||||
<aside><t>Note: In the first SDP example in | ||||
<xref target="RFC4583" sectionFormat="of" section="9"/>, 'm-stream' | ||||
was erroneously listed. Although the example was non&nbhy;normative, it is | ||||
implemented by some vendors and occurs in cases where the endpoint is will | ||||
ing to act as a server. Therefore, it is <bcp14>RECOMMENDED</bcp14> to support p | ||||
arsing and | ||||
interpreting 'm-stream' the same way as 'mstrm' when receiving.</t></aside | ||||
> | ||||
</section> | ||||
<section anchor="sec_bfcp-version-attr" numbered="true" toc="default"> | ||||
<name>SDP 'bfcpver' Attribute</name> | ||||
<t> | ||||
This section defines the SDP 'bfcpver' media-level attribute. The | ||||
attribute is used to negotiate the BFCP version, using decimal integer | ||||
representation. | ||||
</t> | ||||
The Augmented BNF syntax [RFC5234] for the attribute is: | <ul empty="true"><li> | |||
<dl> | ||||
<dt>Attribute Name:</dt><dd>bfcpver</dd> | ||||
<dt>Attribute Value:</dt><dd>bfcp-version</dd> | ||||
<dt>Usage Level:</dt><dd>media</dd> | ||||
<dt>Charset Dependent:</dt><dd>No</dd> | ||||
<dt>Mux Category:</dt><dd>TBD</dd> | ||||
</dl> | ||||
</li></ul> | ||||
bfcp-version = version *(SP version) | <t>The Augmented BNF syntax <xref target="RFC5234"/> for the attribute is:</ | |||
version = 1*DIGIT | t> | |||
<sourcecode name="" type="abnf"><![CDATA[ | ||||
bfcp-version = version *(SP version) | ||||
version = 1*DIGIT | ||||
DIGIT = <DIGIT defined in [RFC5234]> | DIGIT = <DIGIT as defined in [RFC5234]> ]]></sourcecode> | |||
The maximum value of the attribute is determined by the | <t>The maximum value of the attribute is determined by the | |||
COMMON-HEADER format [I-D.ietf-bfcpbis-rfc4582bis]. | COMMON-HEADER format <xref target="RFC8855"/>.</t> | |||
]]></artwork> | <t> | |||
</figure> | ||||
<t> | ||||
An endpoint uses the 'bfcpver' attribute to convey the version(s) of BFCP supported by the endpoint, using integer values. For a given version, the attrib ute | An endpoint uses the 'bfcpver' attribute to convey the version(s) of BFCP supported by the endpoint, using integer values. For a given version, the attrib ute | |||
value representing the version MUST match the "Version" field that would b e presented in the BFCP COMMON-HEADER <xref target="I-D.ietf-bfcpbis-rfc4582bis" />. | value representing the version <bcp14>MUST</bcp14> match the version ("Ver ") field that would be presented in the BFCP COMMON&nbhy;HEADER <xref target="RF C8855" format="default"/>. | |||
The BFCP version that will eventually be used will be conveyed with a BFCP -level Hello/HelloAck. | The BFCP version that will eventually be used will be conveyed with a BFCP -level Hello/HelloAck. | |||
</t> | </t> | |||
<t> | <t> | |||
Endpoints compliant with <xref target="RFC4583"/> might not always include | Endpoints compliant with <xref target="RFC4583" format="default"/> might n | |||
the 'bfcpver' | ot always include the 'bfcpver' | |||
attribute in offers and answers. The attribute value, if present, MUST be | attribute in offers and answers. The attribute value, if present, <bcp14>M | |||
in accordance with | UST</bcp14> be in accordance with | |||
the definition of the Version field in <xref target="I-D.ietf-bfcpbis-rfc4 | the definition of the version ("Ver") field in <xref target="RFC8855" form | |||
582bis"/>. If the | at="default"/>. If the | |||
attribute is not present, endpoints MUST assume a default value in accorda | attribute is not present, endpoints <bcp14>MUST</bcp14> assume a default v | |||
nce with | alue in accordance with | |||
<xref target="I-D.ietf-bfcpbis-rfc4582bis"/>: when used over a reliable tr | <xref target="RFC8855" format="default"/>: when used over a reliable trans | |||
ansport the default | port, the default | |||
attribute value is "1", and when used over an unreliable transport the def | attribute value is "1", and when used over an unreliable transport, the de | |||
ault attribute value | fault attribute value | |||
is "2". The value is inferred from the transport specified in the 'm' line | is "2". The value is inferred from the transport specified in the "m=" lin | |||
(<xref target="sec:m-line"/>) | e (<xref target="sec_m-line" format="default"/>) | |||
of the 'm' section associated with the stream. | of the "m=" section associated with the stream. | |||
</t> | </t> | |||
<t> | <t> | |||
The SDP Offer/Answer procedures for the 'bfcpver' attribute are defined in | The SDP Offer/Answer procedures for the 'bfcpver' attribute are defined in | |||
<xref target="sec:oa-offer-answer-proc"/>. | <xref target="sec_oa-offer-answer-proc" format="default"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section title="Multiplexing Considerations" anchor="sec:mux-cons"> | <section anchor="sec_mux-cons" numbered="true" toc="default"> | |||
<t> | <name>Multiplexing Considerations</name> | |||
<xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"/> defines how multip | ||||
lexing of multiple media streams can be negotiated. This specification does not | ||||
define | ||||
how BFCP streams can be multiplexed with other media streams. Therefore, a | ||||
BFCP stream MUST NOT be associated with a BUNDLE group <xref target="I-D.ietf-m | ||||
music-sdp-bundle-negotiation"/>. | ||||
Note that BFCP-controlled media streams might be multiplexed with other me | ||||
dia streams. | ||||
</t> | ||||
<t> | ||||
<xref target="I-D.ietf-mmusic-sdp-mux-attributes"/> defines the mux catego | ||||
ries for the SDP | ||||
attributes defined in this specification, except for the 'bfcpver' attribu | ||||
te. <xref target="tab:mux-tbd"/> defines the mux category | ||||
for the 'bfcpver' attribute: | ||||
</t> | ||||
<texttable title="Multiplexing Attribute Analysis" anchor="tab:mux-tbd"> | ||||
<ttcol>Name</ttcol> | ||||
<ttcol>Notes</ttcol> | ||||
<ttcol>Level</ttcol> | ||||
<ttcol>Mux Category</ttcol> | ||||
<c>bfcpver</c> | ||||
<c>Needs further analysis in a separate specification</c> | ||||
<c>M</c> | ||||
<c>TBD</c> | ||||
</texttable> | ||||
</section> | ||||
<section title="BFCP Connection Management" anchor="sec:bfcp-connection"> | ||||
<t> | ||||
BFCP streams can use TCP or UDP as the underlying transport. Endpoints exc | ||||
hanging BFCP messages over UDP send the BFCP messages towards the peer | ||||
using the connection address and port provided in the SDP 'c' and 'm' line | ||||
s. TCP connection management is more complicated and is described in | ||||
the following Section. | ||||
</t> | ||||
<t><list style="empty"> | ||||
<t>Note: When using Interactive Connectivity Establishment (ICE) <xref tar | ||||
get="RFC8445"/>, TCP/DTLS/BFCP, or UDP/TLS/BFCP, the straight-forward procedures | ||||
for connection management as UDP/BFCP described above apply. | ||||
TCP/TLS/BFCP follows the same procedures as TCP/BFCP and is described belo | ||||
w.</t> | ||||
</list></t> | ||||
<section title="TCP Connection Management" anchor="sec:tcp-connection"> | ||||
<t> | <t> | |||
The management of the TCP connection used to transport BFCP messages is | <xref target="RFC8843" format="default"/> defines how multiplexing of mult | |||
performed using the SDP 'setup' and 'connection' attributes <xref target="RFC414 | iple media streams can be negotiated. This specification does not define | |||
5"/>. | how BFCP streams can be multiplexed with other media streams. Therefore, a | |||
The 'setup' attribute indicates which of the endpoints initiates the TCP | BFCP stream <bcp14>MUST NOT</bcp14> be associated with a BUNDLE group <xref tar | |||
connection. The 'connection' attribute handles TCP connection re-establishment. | get="RFC8843" format="default"/>. | |||
Note that BFCP-controlled media streams might be multiplexed with other me | ||||
dia streams. | ||||
</t> | </t> | |||
<t> | <t> | |||
The BFCP specification <xref target="I-D.ietf-bfcpbis-rfc4582bis"/> desc | <xref target="RFC8859" format="default"/> defines the mux categories for t | |||
ribes a number of situations when the TCP connection between a floor control cli | he SDP | |||
ent | attributes defined in this specification, except for the 'bfcpver' attribu | |||
and the floor control server needs to be re-established. However, that s | te. <xref target="tab_mux-tbd" format="default"/> defines the mux category | |||
pecification does not describe the re-establishment process because this process | for the 'bfcpver' attribute: | |||
depends on how the connection was established in the first place. Endpoi | ||||
nts using the offer/answer mechanism follow the following rules. | ||||
</t> | </t> | |||
<table anchor="tab_mux-tbd" align="center"> | ||||
<name>Multiplexing Attribute Analysis</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">Name</th> | ||||
<th align="left">Notes</th> | ||||
<th align="left">Level</th> | ||||
<th align="left">Mux Category</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">bfcpver</td> | ||||
<td align="left">Needs further analysis in a separate specification< | ||||
/td> | ||||
<td align="left">M</td> | ||||
<td align="left">TBD</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="sec_bfcp-connection" numbered="true" toc="default"> | ||||
<name>BFCP Connection Management</name> | ||||
<t> | <t> | |||
When the existing TCP connection is closed and re-established following | BFCP streams can use TCP or UDP as the underlying transport. Endpoints exc | |||
the rules in <xref target="I-D.ietf-bfcpbis-rfc4582bis"/>, the floor control cli | hanging BFCP messages over UDP send the BFCP messages towards the peer | |||
ent | using the connection address and port provided in the SDP "c=" and "m=" li | |||
MUST send an offer towards the floor control server in order to re-estab | nes. TCP connection management is more complicated and is described in | |||
lish the connection. If a TCP connection cannot deliver a BFCP message and times | the following section. | |||
out, | ||||
the endpoint that attempted to send the message (i.e., the one that dete | ||||
cted the TCP timeout) MUST send an offer in order to re-establish the TCP connec | ||||
tion. | ||||
</t> | </t> | |||
<aside><t>Note: When using Interactive Connectivity Establishment | ||||
(ICE) <xref target="RFC8445" format="default"/>, TCP/DTLS/BFCP, or | ||||
UDP/TLS/BFCP, the straightforward procedures for connection management | ||||
via UDP/BFCP, as described above, apply. | ||||
TCP/TLS/BFCP follows the same procedures as TCP&wj;/BFCP and is described | ||||
below.</t></aside> | ||||
<section anchor="sec_tcp-connection" numbered="true" toc="default"> | ||||
<name>TCP Connection Management</name> | ||||
<t> | ||||
The management of the TCP connection used to transport BFCP messages is | ||||
performed using the SDP 'setup' and 'connection' attributes <xref target="RFC414 | ||||
5" format="default"/>. | ||||
The 'setup' attribute indicates which of the endpoints initiates the TCP | ||||
connection. The 'connection' attribute handles TCP connection re-establishment. | ||||
</t> | ||||
<t> | ||||
The BFCP specification <xref target="RFC8855" format="default"/> describ | ||||
es a number of situations when the TCP connection between a floor control client | ||||
and the floor control server needs to be re-established. However, | ||||
<xref target="RFC8855"/> does not describe the re-establishment | ||||
process, because this process | ||||
depends on how the connection was established in the first | ||||
place. Endpoints using the offer/answer mechanism follow the following | ||||
rules.</t> | ||||
<t> | ||||
When the existing TCP connection is closed and re-established following | ||||
the rules in <xref target="RFC8855" format="default"/>, the floor control client | ||||
<bcp14>MUST</bcp14> send an offer towards the floor control server in or | ||||
der to re-establish the connection. If a TCP connection cannot deliver a BFCP me | ||||
ssage and times out, | ||||
the endpoint that attempted to send the message (i.e., the one that dete | ||||
cted the TCP timeout) <bcp14>MUST</bcp14> send an offer in order to re-establish | ||||
the TCP connection. | ||||
</t> | ||||
<t> | ||||
Endpoints that use the offer/answer mechanism to negotiate TCP connectio | ||||
ns <bcp14>MUST</bcp14> support the 'setup' and 'connection' attributes. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="sec_authentication" numbered="true" toc="default"> | ||||
<name>TLS/DTLS Considerations</name> | ||||
<t> | <t> | |||
Endpoints that use the offer/answer mechanism to negotiate TCP connectio | When DTLS is used with UDP, the generic procedures defined in <xref targe | |||
ns MUST support the 'setup' and 'connection' attributes. | t="RFC8842" sectionFormat="of" section="5"/> | |||
<bcp14>MUST</bcp14> be followed. | ||||
</t> | </t> | |||
</section> | <t> | |||
</section> | ||||
<section title="TLS/DTLS Considerations" anchor="sec:authentication"> | ||||
<t> | ||||
When DTLS is used with UDP, the generic procedures defined in Section 5 o | ||||
f <xref target="I-D.ietf-mmusic-dtls-sdp"/> | ||||
MUST be followed. | ||||
</t> | ||||
<t> | ||||
When TLS is used with TCP, once the underlying connection is established, the answerer always acts as the TLS server. | When TLS is used with TCP, once the underlying connection is established, the answerer always acts as the TLS server. | |||
If the TCP connection is lost, the active endpoint <xref target="RFC4583" /> is responsible for re-establishing the TCP connection. Unless a new | If the TCP connection is lost, the active endpoint <xref target="RFC4583" format="default"/> is responsible for re-establishing the TCP connection. Unles s a new | |||
TLS connection is negotiated, subsequent SDP offers and answers will not impact the previously negotiated TLS roles. | TLS connection is negotiated, subsequent SDP offers and answers will not impact the previously negotiated TLS roles. | |||
</t> | </t> | |||
<t><list style="empty"> | <aside><t>Note: For TLS, it was decided to keep the original procedures in | |||
<t> | <xref target="RFC4583" format="default"/> to determine which endpoint | |||
Note: For TLS, it was decided to keep the original procedures in <xref | acts as the TLS server, in order to retain backward compatibility.</t> | |||
target="RFC4583"/> to determine which endpoint | </aside> | |||
acts as the TLS server in order to retain backwards compatibility. | </section> | |||
</t> | <section anchor="sec_ice-considerations" numbered="true" toc="default"> | |||
</list></t> | <name>ICE Considerations</name> | |||
</section> | ||||
<section title="ICE Considerations" anchor="sec:ice-considerations"> | ||||
<t> | ||||
Generic SDP offer/answer procedures for Interactive Connectivity Establish | ||||
ment (ICE) are defined in <xref target="I-D.ietf-mmusic-ice-sip-sdp"/>. | ||||
</t> | ||||
<t> | ||||
When BFCP is used with UDP based ICE candidates <xref target="RFC8445"/> t | ||||
hen the procedures for UDP/TLS/BFCP are used. | ||||
</t> | ||||
<t> | ||||
When BFCP is used with TCP based ICE candidates <xref target="RFC6544"/> t | ||||
hen the procedures for TCP/DTLS/BFCP are used. | ||||
</t> | ||||
<t> | ||||
Based on the procedures defined in <xref target="I-D.ietf-mmusic-dtls-sdp" | ||||
/>, endpoints treat all ICE candidate pairs associated with a BFCP stream on top | ||||
of a DTLS association | ||||
as part of the same DTLS association. Thus, there will only be one BFCP ha | ||||
ndshake and one DTLS handshake even if there are multiple valid candidate pairs, | ||||
and if BFCP media is shifted between candidate pairs (including switching | ||||
between UDP to TCP candidate pairs) prior to nomination. If new candidates are a | ||||
dded, | ||||
they will also be part of the same DTLS association. | ||||
</t> | ||||
<t> | ||||
In order to maximize the likelihood of interoperability between the endpoi | ||||
nts, all ICE enabled BFCP-over-DTLS endpoints SHOULD | ||||
implement support for UDP/TLS/BFCP. | ||||
</t> | ||||
<t> | ||||
When an SDP offer or answer conveys multiple ICE candidates for a BFCP str | ||||
eam, UDP based candidates SHOULD be included and | ||||
the default candidate SHOULD be chosen from one of those UDP candidates. I | ||||
f UDP transport is used for the default candidate, | ||||
then the 'm' line proto value MUST be 'UDP/TLS/BFCP'. If TCP transport is | ||||
used for the default candidate, the 'm' line proto | ||||
value MUST be 'TCP/DTLS/BFCP'. | ||||
</t> | ||||
<t><list style="empty"> | ||||
<t>Note: Usage of ICE with protocols other than UDP/TLS/BFCP and TCP/DTLS/ | ||||
BFCP is outside of scope for this specification.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="SDP Offer/Answer Procedures" anchor="sec:oa-offer-answer-proc" | ||||
> | ||||
<t> | ||||
This section defines the SDP offer/answer <xref target="RFC3264"/> procedu | ||||
res for negotiating and establishing a BFCP stream. | ||||
Generic procedures for DTLS are defined in <xref target="I-D.ietf-mmusic-d | ||||
tls-sdp"/>. Generic procedures for TLS are defined | ||||
in <xref target="RFC8122"/>. | ||||
</t> | ||||
<t> | ||||
This section only defines the BFCP-specific procedures. Unless explicitly | ||||
stated otherwise, the procedures apply to an 'm' section describing a BFCP strea | ||||
m. | ||||
If an offer or answer contains multiple 'm' sections describing BFCP strea | ||||
ms, the procedures are applied independently to each stream. | ||||
</t> | ||||
<t> | ||||
Within this document, 'initial offer' refers to the first offer, within an | ||||
SDP session (e.g. a SIP | ||||
dialog when the Session Initiation Protocol (SIP) <xref target="RFC3261"/> | ||||
is used to carry SDP) in which the offerer | ||||
indicates that it wants to negotiate the establishment of a BFCP stream. | ||||
</t> | ||||
<t> | ||||
If the 'm' line 'proto' value is 'TCP/TLS/BFCP', 'TCP/DTLS/BFCP' or 'UDP/T | ||||
LS/BFCP', the offerer and answerer follow the generic procedures | ||||
defined in <xref target="RFC8122"/>. | ||||
</t> | ||||
<t> | ||||
If the 'm' line proto value is 'TCP/BFCP', 'TCP/TLS/BFCP', 'TCP/DTLS/TCP' | ||||
or 'UDP/TLS/BFCP', the offerer and answerer | ||||
use the SDP 'setup' attribute according to the procedures in <xref target= | ||||
"RFC4145"/>. | ||||
</t> | ||||
<t> | ||||
If the 'm' line proto value is 'TCP/BFCP', 'TCP/TLS/BFCP' or 'TCP/DTLS/BFC | ||||
P', the offerer and anwerer use | ||||
the SDP 'connection' attribute according to the procedures in <xref target | ||||
="RFC4145"/>. | ||||
</t> | ||||
<t><list style="empty"> | ||||
<t>Note: The use of source-specific SDP parameters <xref target="RFC5576"/ | ||||
> is not defined for BFCP streams.</t> | ||||
</list></t> | ||||
<section title="Generating the Initial SDP Offer" anchor="oa-gen-initial-off | ||||
er"> | ||||
<t> | <t> | |||
When the offerer creates an initial offer, the offerer MUST include an S | Generic SDP offer/answer procedures for ICE are defined in <xref target="R | |||
DP 'floorctrl' attribute (<xref target="sec:floorctrl-attr"/>) | FC8839" format="default"/>. | |||
and an SDP 'bfcpver' attribute (<xref target="sec:bfcp-version-attr"/>) | ||||
in the 'm' section. | ||||
</t> | </t> | |||
<t> | <t> | |||
In addition, if the offerer includes an SDP 'floorctrl' attribute with ' s-only' or 'c-s' attribute values in the offer, the offerer: | When BFCP is used with UDP-based ICE candidates <xref target="RFC8445" for mat="default"/>, the procedures for UDP/TLS/BFCP are used. | |||
</t> | </t> | |||
<t><list style="symbols"> | ||||
<t>MUST include an SDP 'confid' attribute (<xref target="sec:confid-at | ||||
tr"/>) in the 'm' section; and</t> | ||||
<t>MUST include an SDP 'userid' attribute (<xref target="sec:userid-at | ||||
tr"/>) in the 'm' section; and</t> | ||||
<t>MUST include an SDP 'floorid' attribute (<xref target="sec:floorid- | ||||
attr"/>) in the 'm' section; and</t> | ||||
<t>MUST include an SDP 'label' attribute (<xref target="RFC4574"/>) wi | ||||
th the 'm' section of each BFCP-controlled media stream.</t> | ||||
</list></t> | ||||
<t><list style="empty"> | ||||
<t> | ||||
Note: If the offerer includes an SDP 'floorctrl' attribute with a 'c-s | ||||
' attribute value, or both a 'c-only' and a 's-only' attribute value in the offe | ||||
r, | ||||
the attribute values above will only be used if it is determined (<xre | ||||
f target="sec:floorctrl-attr"/>) that the offerer will act as floor control serv | ||||
er. | ||||
</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Generating the SDP Answer" anchor="oa-gen-answer"> | ||||
<t> | <t> | |||
When the answerer receives an offer that contains an 'm' section describ | When BFCP is used with TCP-based ICE candidates <xref target="RFC6544" for | |||
ing a BFCP stream, the answerer MUST check whether it supports | mat="default"/>, the procedures for TCP/DTLS/BFCP are used. | |||
one or more of the BFCP versions supported by the offerer (<xref target= | ||||
"sec:bfcp-version-attr"/>). If the answerer does not support | ||||
any of the BFCP versions, it MUST NOT accept the 'm' section. Otherwise, | ||||
if the answerer accepts the 'm' section, it: | ||||
</t> | </t> | |||
<t><list style="symbols"> | ||||
<t>MUST insert a corresponding 'm' section in the answer, with an iden | ||||
tical 'm' line proto value <xref target="RFC3264"/>; and</t> | ||||
<t>MUST include a 'bfcpver' attribute in the 'm' section. The versions | ||||
indicated by the answer MUST be the same or a subset of the versions indicated | ||||
by the offerer in the corresponding offer; and</t> | ||||
<t>MUST, if the offer contained an SDP 'floorctrl' attribute, include | ||||
a 'floorctrl' attribute in the 'm' section.</t> | ||||
</list></t> | ||||
<t> | <t> | |||
In addition, if the answerer includes an SDP 'floorctrl' attribute with | Based on the procedures defined in <xref target="RFC8842" format="default" | |||
an 's-only' attribute value in the answer, the answerer: | />, endpoints treat all ICE candidate pairs associated with a BFCP stream on top | |||
of a DTLS association | ||||
as part of the same DTLS association. Thus, there will only be one BFCP ha | ||||
ndshake and one DTLS handshake | ||||
even if there are multiple valid candidate pairs, and even if BFCP media | ||||
is shifted between candidate pairs (including switching between UDP | ||||
candidate pairs and TCP candidate pairs) prior to nomination. If new | ||||
candidates are added, they will also be part of the same DTLS association. | ||||
</t> | </t> | |||
<t><list style="symbols"> | ||||
<t>MUST include an SDP 'confid' attribute in the 'm' section; and</t> | ||||
<t>MUST include an SDP 'userid' attribute in the 'm' section; and</t> | ||||
<t>MUST include an SDP 'floorid' attribute in the 'm' section; and</t> | ||||
<t>MUST include an SDP 'label' attribute in the 'm' section of each BF | ||||
CP-controlled media stream.</t> | ||||
</list></t> | ||||
<t><list style="empty"> | ||||
<t> | ||||
Note: An offerer compliant with <xref target="RFC4583"/> might not inc | ||||
lude 'floorctrl' and 'bfcpver' attributes in offers, in which cases | ||||
the default values apply. | ||||
</t> | ||||
</list></t> | ||||
<t> | <t> | |||
Once the answerer has sent the answer, the answerer: | In order to maximize the likelihood of interoperability between the endpoi | |||
nts, all ICE-enabled BFCP-over-DTLS endpoints <bcp14>SHOULD</bcp14> | ||||
implement support for UDP/TLS/BFCP. | ||||
</t> | </t> | |||
<t><list style="symbols"> | ||||
<t>MUST, if the answerer is the active endpoint, and if a TCP connecti | ||||
on associated with the 'm' section is to be established (or re-established), | ||||
initiate the establishing of the TCP connection; and</t> | ||||
<t>MUST, if the answerer is the active endpoint, and if an TLS/DTLS co | ||||
nnection associated with the 'm' section is to be established (or re-established | ||||
), | ||||
initiate the establishing of the TLS/DTLS connection (by sending a | ||||
ClientHello message).</t> | ||||
</list></t> | ||||
<t> | <t> | |||
If the answerer does not accept the 'm' section in the offer, it MUST as | When an SDP offer or answer conveys multiple ICE candidates for a BFCP str | |||
sign a zero port value to the 'm' line of the corresponding 'm' section in the a | eam, UDP-based candidates <bcp14>SHOULD</bcp14> be included and | |||
nswer. | the default candidate <bcp14>SHOULD</bcp14> be chosen from one of those UD | |||
In addition, the answerer MUST NOT establish a TCP connection or a TLS/D | P candidates. If UDP transport is used for the default candidate, | |||
TLS connection associated with the 'm' section. | then the "m=" line proto value <bcp14>MUST</bcp14> be 'UDP/TLS/BFCP'. If T | |||
CP transport is used for the default candidate, the "m=" line proto | ||||
value <bcp14>MUST</bcp14> be 'TCP/DTLS/BFCP'. | ||||
</t> | </t> | |||
<aside><t>Note: Usage of ICE with protocols other than UDP/TLS/BFCP and TCP/DTLS/BFCP is out of scope for this specification.</t></aside> | ||||
</section> | </section> | |||
<section anchor="sec_oa-offer-answer-proc" numbered="true" toc="default"> | ||||
<section title="Offerer Processing of the SDP Answer" anchor="oa-offerer-pro | <name>SDP Offer/Answer Procedures</name> | |||
cessing-answer"> | ||||
<t> | <t> | |||
When the offerer receives an answer that contains an 'm' section with a | This section defines the SDP offer/answer <xref target="RFC3264" format="d | |||
non-zero port value, describing a BFCP stream, the offerer: | efault"/> procedures for negotiating and establishing a BFCP stream. | |||
Generic procedures for DTLS are defined in <xref target="RFC8842" format=" | ||||
default"/>. Generic procedures for TLS are defined | ||||
in <xref target="RFC8122" format="default"/>. | ||||
</t> | </t> | |||
<t><list style="symbols"> | ||||
<t>MUST, if the offerer is the active endpoint, and if a TCP connectio | ||||
n associated with the 'm' section is to be established (or re-established), | ||||
initiate the establishing of the TCP connection; and</t> | ||||
<t>MUST, if the offerer is the active endpoint, and if an TLS/DTLS con | ||||
nection associated with the 'm' section is to be established (or re-established) | ||||
, | ||||
initiate the establishing of the TLS/DTLS connection (by sending a | ||||
ClientHello message).</t> | ||||
</list></t> | ||||
<t> | <t> | |||
Note: An answerer compliant with <xref target="RFC4583"/> might not incl | This section only defines the BFCP-specific procedures. Unless explicitly | |||
ude 'floorctrl' and 'bfcpver' attributes in answers, | stated otherwise, the procedures apply to an "m=" section describing a BFCP stre | |||
in which cases the default values apply. | am. | |||
If an offer or answer contains multiple "m=" sections describing BFCP stre | ||||
ams, the procedures are applied independently to each stream. | ||||
</t> | </t> | |||
<t> | <t> | |||
If the 'm' line in the answer contains a zero port value, or if the offe | Within this document, 'initial offer' refers to the first offer within | |||
rer for some other reason does not accept the answer (e.g., if the answerer only | an SDP session (e.g., a Session Initiation Protocol (SIP) | |||
indicates support of BFCP versions not supported by the offerer), the of | dialog when SIP <xref target="RFC3261" format="default"/> is used to carry | |||
ferer MUST NOT establish a TCP connection or a TLS/DTLS connection associated wi | SDP) in which the offerer | |||
th the 'm' section. | indicates that it wants to negotiate the establishment of a BFCP stream. | |||
</t> | </t> | |||
</section> | ||||
<section title="Modifying the Session" anchor="oa-mod-session"> | ||||
<t> | <t> | |||
When an offerer sends an updated offer, in order to modify a previously | If the "m=" line 'proto' value is 'TCP/TLS/BFCP', 'TCP/DTLS/BFCP', or 'UDP | |||
established BFCP stream, it follows the procedures | /TLS/BFCP', the offerer and answerer follow the generic procedures | |||
in <xref target="oa-gen-initial-offer"/>, with the following exceptions: | defined in <xref target="RFC8122" format="default"/>. | |||
</t> | </t> | |||
<t><list style="symbols"> | <t> | |||
<t>If the BFCP stream is carried on top of TCP, and if the offerer doe | If the "m=" line proto value is 'TCP/BFCP', 'TCP/TLS/BFCP', 'TCP&wj;/DTLS& | |||
s not want to re-establish an existing TCP connection, the offerer MUST include | wj;/TCP', or 'UDP/TLS/BFCP', the offerer and answerer | |||
an SDP 'connection' attribute with a value of "existing", in the 'm | use the SDP 'setup' attribute according to the procedures in <xref target= | |||
' section; and</t> | "RFC4145" format="default"/>. | |||
<t>If the offerer wants to disable a previously established BFCP strea | </t> | |||
m, it MUST assign a zero port value to the 'm' line associated with the | <t> | |||
BFCP connection, following the procedures in <xref target="RFC3264" | If the "m=" line proto value is 'TCP/BFCP', 'TCP/TLS/BFCP', or 'TCP/DTLS/B | |||
/>.</t> | FCP', the offerer and answerer use | |||
</list></t> | the SDP 'connection' attribute according to the procedures in <xref target | |||
="RFC4145" format="default"/>. | ||||
</t> | ||||
<aside><t>Note: The use of source-specific SDP parameters <xref target=" | ||||
RFC5576" format="default"/> is not defined for BFCP streams.</t></aside> | ||||
<section anchor="oa-gen-initial-offer" numbered="true" toc="default"> | ||||
<name>Generating the Initial SDP Offer</name> | ||||
<t> | ||||
When the offerer creates an initial offer, the offerer <bcp14>MUST</bcp1 | ||||
4> include an SDP 'floorctrl' attribute (<xref target="sec_floorctrl-attr" forma | ||||
t="default"/>) | ||||
and an SDP 'bfcpver' attribute (<xref target="sec_bfcp-version-attr" for | ||||
mat="default"/>) in the "m=" section. | ||||
</t> | ||||
<t> | ||||
In addition, if the offerer includes an SDP 'floorctrl' attribute with " | ||||
s-only" or "c-s" attribute values in the offer, the offerer | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'confid' attribute (<xref targe | ||||
t="sec_confid-attr" format="default"/>) in the "m=" section,</li> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'userid' attribute (<xref targe | ||||
t="sec_userid-attr" format="default"/>) in the "m=" section,</li> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'floorid' attribute (<xref targ | ||||
et="sec_floorid-attr" format="default"/>) in the "m=" section, and</li> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'label' attribute <xref target= | ||||
"RFC4574" format="default"/> with the "m=" section of each BFCP-controlled media | ||||
stream.</li> | ||||
</ul> | ||||
<aside><t>Note: If the offerer includes an SDP 'floorctrl' attribute wit | ||||
h a "c-s" attribute value, or both a "c-only" and an "s-only" attribute value in | ||||
the offer, | ||||
the attribute values above will only be used if it is determined | ||||
(<xref target="sec_floorctrl-attr" format="default"/>) that the | ||||
offerer will act as a floor control server.</t></aside> | ||||
</section> | ||||
<section anchor="oa-gen-answer" numbered="true" toc="default"> | ||||
<name>Generating the SDP Answer</name> | ||||
<t> | ||||
When the answerer receives an offer that contains an "m=" section descri | ||||
bing a BFCP stream, the answerer <bcp14>MUST</bcp14> check whether it supports | ||||
one or more of the BFCP versions supported by the offerer (<xref target= | ||||
"sec_bfcp-version-attr" format="default"/>). If the answerer does not support | ||||
any of the BFCP versions, it <bcp14>MUST NOT</bcp14> accept the "m=" | ||||
section. Otherwise, if the answerer accepts the "m=" section, the answere | ||||
r | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li><bcp14>MUST</bcp14> insert a corresponding "m=" section in the | ||||
answer, with an identical "m=" line proto value <xref | ||||
target="RFC4566" format="default"/>,</li> | ||||
<li><bcp14>MUST</bcp14> include a 'bfcpver' attribute in the "m=" sect | ||||
ion; the versions indicated by the answer <bcp14>MUST</bcp14> be the same or a s | ||||
ubset of the versions indicated by the offerer in the corresponding offer, and</ | ||||
li> | ||||
<li><bcp14>MUST</bcp14>, if the offer contained an SDP 'floorctrl' att | ||||
ribute, include a 'floorctrl' attribute in the "m=" section.</li> | ||||
</ul> | ||||
<t> | ||||
In addition, if the answerer includes an SDP 'floorctrl' attribute with | ||||
an "s-only" attribute value in the answer, the answerer | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'confid' attribute in the "m=" | ||||
section,</li> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'userid' attribute in the "m=" | ||||
section,</li> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'floorid' attribute in the "m=" | ||||
section, and</li> | ||||
<li><bcp14>MUST</bcp14> include an SDP 'label' attribute in the "m=" s | ||||
ection of each BFCP-controlled media stream.</li> | ||||
</ul> | ||||
<aside><t>Note: An offerer compliant with <xref target="RFC4583" format | ||||
="default"/> might not include 'floorctrl' and 'bfcpver' attributes in offers, i | ||||
n which case | ||||
the default values apply.</t></aside> | ||||
<t> | ||||
Once the answerer has sent the answer, the answerer | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li><bcp14>MUST</bcp14>, if the answerer is the active endpoint and if | ||||
a TCP connection associated with the "m=" section is to be established (or re-e | ||||
stablished), | ||||
initiate the establishment of the TCP connection, and</li> | ||||
<li><bcp14>MUST</bcp14>, if the answerer is the active endpoint and if | ||||
a TLS/DTLS connection associated with the "m=" section is to be established (or | ||||
re-established), | ||||
initiate the establishment of the TLS/DTLS connection (by sending a | ||||
ClientHello message).</li> | ||||
</ul> | ||||
<t> | ||||
If the answerer does not accept the "m=" section in the offer, it <bcp14 | ||||
>MUST</bcp14> assign a zero port value to the "m=" line of the corresponding "m= | ||||
" section in the answer. | ||||
In addition, the answerer <bcp14>MUST NOT</bcp14> establish a TCP connec | ||||
tion or a TLS/DTLS connection associated with the "m=" section. | ||||
</t> | ||||
</section> | ||||
<section anchor="oa-offerer-processing-answer" numbered="true" toc="defaul | ||||
t"> | ||||
<name>Offerer Processing of the SDP Answer</name> | ||||
<t> | ||||
When the offerer receives an answer that contains an "m=" section | ||||
describing a BFCP stream and with a non-zero port value in the | ||||
"m=" line, the offerer</t> | ||||
<ul spacing="normal"> | ||||
<li><bcp14>MUST</bcp14>, if the offerer is the active endpoint and if | ||||
a TCP connection associated with the "m=" section is to be established (or re-es | ||||
tablished), | ||||
initiate the establishment of the TCP connection, and</li> | ||||
<li><bcp14>MUST</bcp14>, if the offerer is the active endpoint and if | ||||
a TLS/DTLS connection associated with the "m=" section is to be established (or | ||||
re-established), | ||||
initiate the establishment of the TLS/DTLS connection (by sending a | ||||
ClientHello message).</li> | ||||
</ul> | ||||
<aside><t>Note: An answerer compliant with <xref target="RFC4583" format | ||||
="default"/> might not include 'floorctrl' and 'bfcpver' attributes in answers, | ||||
in which case the default values apply.</t></aside> | ||||
<t> | ||||
If the "m=" line in the answer contains a zero port value or if the offe | ||||
rer for some other reason does not accept the answer (e.g., if the answerer only | ||||
indicates support of BFCP versions not supported by the offerer), the of | ||||
ferer <bcp14>MUST NOT</bcp14> establish a TCP connection or a TLS/DTLS connectio | ||||
n associated with the "m=" section. | ||||
</t> | ||||
</section> | ||||
<section anchor="oa-mod-session" numbered="true" toc="default"> | ||||
<name>Modifying the Session</name> | ||||
<t> | ||||
When an offerer sends an updated offer, in order to modify a previously | ||||
established BFCP stream, it follows the procedures | ||||
in <xref target="oa-gen-initial-offer" format="default"/>, with the foll | ||||
owing exceptions: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li>If the BFCP stream is carried on top of TCP and if the offerer | ||||
does not want to re-establish an existing TCP connection, the | ||||
offerer <bcp14>MUST</bcp14> include in the "m=" section | ||||
an SDP 'connection' attribute with a value of "existing", and</li> | ||||
<li>If the offerer wants to disable a previously established BFCP stre | ||||
am, it <bcp14>MUST</bcp14> assign a zero port value to the "m=" line associated | ||||
with the | ||||
BFCP connection, following the procedures in <xref target="RFC3264" | ||||
format="default"/>.</li> | ||||
</ul> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="sec_example" numbered="true" toc="default"> | ||||
</section> | <name>Examples</name> | |||
<t>For the purpose of brevity, the main portion of the session description | ||||
<section title="Examples" anchor="sec:example"> | is omitted in the examples, which only show "m=" sections and their "m=" lines | |||
<t>For the purpose of brevity, the main portion of the session description i | and attributes.</t> | |||
s omitted in the examples, which only show 'm' sections and their 'm' lines and | <t>The following is an example of an offer sent by a conference server to | |||
attributes.</t> | a client.</t> | |||
<t>The following is an example of an offer sent by a conference server to a | <sourcecode name="" type="sdp"><![CDATA[ | |||
client.</t> | ||||
<figure> | ||||
<artwork> | ||||
m=application 50000 TCP/TLS/BFCP * | m=application 50000 TCP/TLS/BFCP * | |||
a=setup:actpass | a=setup:actpass | |||
a=connection:new | a=connection:new | |||
a=fingerprint:sha-256 \ | a=fingerprint:sha-256 \ | |||
19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04: \ | 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04: \ | |||
BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 | BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 | |||
a=floorctrl:c-only s-only | a=floorctrl:c-only s-only | |||
a=confid:4321 | a=confid:4321 | |||
a=userid:1234 | a=userid:1234 | |||
a=floorid:1 mstrm:10 | a=floorid:1 mstrm:10 | |||
a=floorid:2 mstrm:11 | a=floorid:2 mstrm:11 | |||
a=bfcpver:1 2 | a=bfcpver:1 2 | |||
m=audio 50002 RTP/AVP 0 | m=audio 50002 RTP/AVP 0 | |||
a=label:10 | a=label:10 | |||
m=video 50004 RTP/AVP 31 | m=video 50004 RTP/AVP 31 | |||
a=label:11 | a=label:11 ]]></sourcecode> | |||
</artwork> | <t>Note that due to RFC formatting conventions, this document splits the | |||
</figure> | SDP entries across lines whose content would exceed the maximum line | |||
<t>Note that due to RFC formatting conventions, this document splits SDP acr | length. A backslash character ("\") marks where this line folding has take | |||
oss lines whose content would exceed 72 characters. A backslash character marks | n place. This backslash and its trailing CRLF and whitespace would not appear in | |||
where this line folding has taken place. This backslash and its trailing CRLF an | actual SDP content.</t> | |||
d whitespace would not appear in actual SDP content.</t> | <t>The following is the answer returned by the client.</t> | |||
<t>The following is the answer returned by the client.</t> | <sourcecode name="" type="sdp"><![CDATA[ | |||
<figure> | ||||
<artwork> | ||||
m=application 9 TCP/TLS/BFCP * | m=application 9 TCP/TLS/BFCP * | |||
a=setup:active | a=setup:active | |||
a=connection:new | a=connection:new | |||
a=fingerprint:sha-256 \ | a=fingerprint:sha-256 \ | |||
6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35: \ | 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35: \ | |||
DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 | DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 | |||
a=floorctrl:c-only | a=floorctrl:c-only | |||
a=bfcpver:1 | a=bfcpver:1 | |||
m=audio 55000 RTP/AVP 0 | m=audio 55000 RTP/AVP 0 | |||
m=video 55002 RTP/AVP 31 | m=video 55002 RTP/AVP 31 ]]></sourcecode> | |||
</artwork> | ||||
</figure> | ||||
<t>A similar example using unreliable transport and DTLS is shown below, where t | <t>A similar example using an unreliable transport and DTLS is shown below | |||
he offer is sent from a client.</t> | , where the offer is sent from a client.</t> | |||
<figure> | <sourcecode name="" type="sdp"><![CDATA[ | |||
<artwork> | ||||
m=application 50000 UDP/TLS/BFCP * | m=application 50000 UDP/TLS/BFCP * | |||
a=setup:actpass | a=setup:actpass | |||
a=dtls-id:abc3dl | a=dtls-id:abc3dl | |||
a=fingerprint:sha-256 \ | a=fingerprint:sha-256 \ | |||
19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04: \ | 19:E2:1C:3B:4B:9F:81:E6:B8:5C:F4:A5:A8:D8:73:04: \ | |||
BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 | BB:05:2F:70:9F:04:A9:0E:05:E9:26:33:E8:70:88:A2 | |||
a=floorctrl:c-only s-only | a=floorctrl:c-only s-only | |||
a=confid:4321 | a=confid:4321 | |||
a=userid:1234 | a=userid:1234 | |||
a=floorid:1 mstrm:10 | a=floorid:1 mstrm:10 | |||
a=floorid:2 mstrm:11 | a=floorid:2 mstrm:11 | |||
a=bfcpver:1 2 | a=bfcpver:1 2 | |||
m=audio 50002 RTP/AVP 0 | m=audio 50002 RTP/AVP 0 | |||
a=label:10 | a=label:10 | |||
m=video 50004 RTP/AVP 31 | m=video 50004 RTP/AVP 31 | |||
a=label:11 | a=label:11 ]]></sourcecode> | |||
</artwork> | ||||
</figure> | <t>The following is the answer returned by the server.</t> | |||
<t>The following is the answer returned by the server.</t> | <sourcecode name="" type="sdp"><![CDATA[ | |||
<figure> | ||||
<artwork> | ||||
m=application 55000 UDP/TLS/BFCP * | m=application 55000 UDP/TLS/BFCP * | |||
a=setup:active | a=setup:active | |||
a=dtls-id:abc3dl | a=dtls-id:abc3dl | |||
a=fingerprint:sha-256 \ | a=fingerprint:sha-256 \ | |||
6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35: \ | 6B:8B:F0:65:5F:78:E2:51:3B:AC:6F:F3:3F:46:1B:35: \ | |||
DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 | DC:B8:5F:64:1A:24:C2:43:F0:A1:58:D0:A1:2C:19:08 | |||
a=floorctrl:s-only | a=floorctrl:s-only | |||
a=confid:4321 | a=confid:4321 | |||
a=userid:1234 | a=userid:1234 | |||
a=floorid:1 mstrm:10 | a=floorid:1 mstrm:10 | |||
a=floorid:2 mstrm:11 | a=floorid:2 mstrm:11 | |||
a=bfcpver:2 | a=bfcpver:2 | |||
m=audio 55002 RTP/AVP 0 | m=audio 55002 RTP/AVP 0 | |||
m=video 55004 RTP/AVP 31 | m=video 55004 RTP/AVP 31 ]]></sourcecode> | |||
</artwork> | </section> | |||
</figure> | <section anchor="sec_security" numbered="true" toc="default"> | |||
</section> | <name>Security Considerations</name> | |||
<t>The BFCP specification <xref target="RFC8855" format="default"/>, SDP | ||||
<section title="Security Considerations" anchor="sec:security"> | specification <xref target="RFC4566" format="default"/>, and | |||
<t>The BFCP <xref target="I-D.ietf-bfcpbis-rfc4582bis"/>, SDP <xref target=" | offer/answer specification <xref target="RFC3264" format="default"/> discu | |||
RFC4566"/>, and offer/answer <xref target="RFC3264"/> | ss security issues related to BFCP, SDP, and offer/answer, respectively. In addi | |||
specifications discuss security issues related to BFCP, SDP, and offer/answe | tion, <xref target="RFC4145" format="default"/> | |||
r, respectively. In addition, <xref target="RFC4145"/> | and <xref target="RFC8122" format="default"/> discuss security issues relate | |||
and <xref target="RFC8122"/> discuss security issues related to the establis | d to the establishment of TCP and TLS connections using an offer/answer | |||
hment of TCP and TLS connections using an offer/answer | ||||
model. Furthermore, when using DTLS over UDP, the generic offer/answer consi derations defined in | model. Furthermore, when using DTLS over UDP, the generic offer/answer consi derations defined in | |||
<xref target="I-D.ietf-mmusic-dtls-sdp"/> MUST be followed.</t> | <xref target="RFC8842" format="default"/> <bcp14>MUST</bcp14> be followed.</ | |||
<t>The usage of certain proto values in the SDP offer/answer negotiation wil | t> | |||
l result in a BFCP stream that is not protected by | <t>The usage of certain proto values in the SDP offer/answer negotiation w | |||
ill result in a BFCP stream that is not protected by | ||||
TLS or DTLS. Operators will need to provide integrity protection and confide ntiality protection of the BFCP stream using other means.</t> | TLS or DTLS. Operators will need to provide integrity protection and confide ntiality protection of the BFCP stream using other means.</t> | |||
<t>The generic security considerations associated with SDP attributes are de | <t>The generic security considerations associated with SDP attributes are | |||
fined in <xref target="RFC3264"/>. While the attributes | defined in <xref target="RFC3264" format="default"/>. While the attributes | |||
defined in this specification do not reveal information about the content of | defined in this specification do not reveal information about the content of | |||
individual BFCP controlled media streams, they do reveal | individual BFCP-controlled media streams, they do reveal | |||
which media streams will be BFCP controlled.</t> | which media streams will be BFCP controlled.</t> | |||
</section> | ||||
<section anchor="sec_iana" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>This document registers three new values in the "proto" | ||||
subregistry within the "Session Description Protocol (SDP) | ||||
Parameters" registry: 'TCP/DTLS/BFCP', 'UDP/BFCP', and 'UDP/TLS/BFCP' (see <xref | ||||
target="sec_proto-reg"/>).</t> | ||||
<t>This document also registers a new SDP attribute in the "att-field" | ||||
subregistry within the "Session Description Protocol (SDP) Parameters" | ||||
registry: 'bfcpver' (see <xref target="sec_bfcp-version-attr"/>).</t> | ||||
<t>The remaining values are unchanged from <xref target="RFC4582"/>, except | ||||
that the references have been updated to refer to this document.</t> | ||||
</section> | <section anchor="sec_proto-reg" numbered="true" toc="default"> | |||
<name>Registration of SDP 'proto' Values</name> | ||||
<section title="IANA Considerations" anchor="sec:iana"> | <t>The IANA has registered three new values in the SDP | |||
<t><list style="empty"> | 'proto' field under the "Session Description Protocol (SDP) | |||
<t>[Editorial note: The changes in <xref target="sec:proto-reg"/> instruct | Parameters" registry.</t> | |||
the IANA to register the three new values TCP/DTLS/BFCP, UDP/BFCP and UDP/TLS/B | <table anchor="tab_proto-iana" align="center"> | |||
FCP for the SDP 'proto' field. The new section <xref target="sec:bfcp-version-at | <name>Values for the SDP 'proto' Field</name> | |||
tr"/> registers a new SDP "bfcpver" attribute. The rest is unchanged from <xref | <thead> | |||
target="RFC4582"/>.]</t> | <tr> | |||
</list></t> | <th align="left">Value</th> | |||
<th align="center">Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">TCP/BFCP</td> | ||||
<td align="center">RFC 8856</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">TCP/DTLS/BFCP</td> | ||||
<td align="center">RFC 8856</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">TCP/TLS/BFCP</td> | ||||
<td align="center">RFC 8856</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">UDP/BFCP</td> | ||||
<td align="center">RFC 8856</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">UDP/TLS/BFCP</td> | ||||
<td align="center">RFC 8856</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Registration of the SDP 'floorctrl' Attribute</name> | ||||
<t> | ||||
This document defines the SDP 'floorctrl' attribute. | ||||
Details regarding this attribute are provided in <xref target="sec_floor | ||||
ctrl-attr" format="default"/>. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Registration of the SDP 'confid' Attribute</name> | ||||
<t> | ||||
This document defines the SDP 'confid' attribute. | ||||
Details regarding this attribute are provided in <xref target="sec_confi | ||||
d-attr" format="default"/>. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Registration of the SDP 'userid' Attribute</name> | ||||
<t> | ||||
This document defines the SDP 'userid' attribute. | ||||
Details regarding this attribute are provided in <xref target="sec_useri | ||||
d-attr" format="default"/>. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Registration of the SDP 'floorid' Attribute</name> | ||||
<t> | ||||
This document defines the SDP 'floorid' attribute. | ||||
Details regarding this attribute are provided in <xref target="sec_floor | ||||
id-attr" format="default"/>. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Registration of the SDP 'bfcpver' Attribute</name> | ||||
<t> | ||||
This document defines the SDP 'bfcpver' attribute. | ||||
Details regarding this attribute are provided in <xref target="sec_bfcp- | ||||
version-attr" format="default"/>. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="sec_changes" numbered="true" toc="default"> | ||||
<name>Changes from RFC 4583</name> | ||||
<t>The technical changes and other fixes from <xref | ||||
target="RFC4583" format="default"/> are listed below.</t> | ||||
<t>The main purpose of this work was to add signaling support necessary | ||||
to support BFCP over an unreliable transport, as described in <xref target | ||||
="RFC8855" format="default"/>, resulting in the following changes:</t> | ||||
<ul> | ||||
<li><t>Fields in the "m=" Line (<xref target="sec_m-line" format="default"/ | ||||
>):</t> | ||||
<t>This section has been rewritten to remove reference to the exclusivi | ||||
ty | ||||
of TCP as a transport for BFCP streams. The proto field values | ||||
'TCP/DTLS/BFCP', 'UDP/BFCP', and 'UDP/TLS/BFCP' have been added.</t></li | ||||
> | ||||
<li><t>Security Considerations (<xref target="sec_security" format="default | ||||
"/>):</t> | ||||
<t>For the DTLS-over-UDP case, we direct the reader to existing conside | ||||
rations | ||||
and requirements for the offer&wj;/answer exchange as provided in <xref | ||||
target="RFC8842" format="default"/>.</t></li> | ||||
<li><t>Registration of SDP 'proto' Values (<xref target="sec_proto-reg" for | ||||
mat="default"/>):</t> | ||||
<t>This document registers the three new values 'TCP/DTLS/BFCP', 'UDP/B | ||||
FCP', and | ||||
'UDP/TLS/BFCP' in the "Session Description Protocol (SDP) Parameters" re | ||||
gistry.</t></li> | ||||
<li><t>SDP 'bfcpver' Attribute (<xref target="sec_bfcp-version-attr" format | ||||
="default"/>):</t> | ||||
<t>A new 'bfcpver' SDP media-level attribute has been added, in order t | ||||
o | ||||
signal the supported version number.</t></li> | ||||
</ul> | ||||
<section title="Registration of SDP 'proto' Values" anchor="sec:proto-reg"> | <t>In addition to the changes associated with support of BFCP over an | |||
<t>The IANA is requested to register the following values for the SDP 'pro | unreliable transport, the possibility that an endpoint can act as both a | |||
to' field under the Session Description Protocol (SDP) Parameters registry:</t> | floor control client and a floor control server at the same time has | |||
been removed. An endpoint will now take the same role for all BFCP-controlle | ||||
d streams associated with the BFCP stream.</t> | ||||
<t>Clarifications and bug fixes:</t> | ||||
<texttable title="Values for the SDP 'proto' field" anchor="tab:proto-iana | <ul> | |||
"> | <li><t>Erratum ID 712 (Sections <xref target="RFC4583" section="3" | |||
<ttcol>Value</ttcol> | sectionFormat="bare"/> and <xref target="RFC4583" section="10" | |||
<ttcol align="center">Reference</ttcol> | sectionFormat="bare"/> of <xref target="RFC4583"/>; see <xref target="Err712"/> | |||
for details):</t> | ||||
<c>TCP/BFCP</c> | <t>Do not use language such as 'used in an "m=" line' when discussing a | |||
<c>[RFC XXXX]</c> | n SDP attribute; instead, make clear that the attribute is a | |||
media-level attribute.</t></li> | ||||
<li><t>Spelling corrected in the first SDP example in <xref target="RFC | ||||
4583" sectionFormat="of" section="9"/>:</t> | ||||
<t>Do not use 'm-stream' as listed in the first SDP example in <xref | ||||
target="RFC4583"/>; instead, use the correct 'mstrm' | ||||
as specified in <xref target="sec_example" format="default"/> of this | ||||
document. However, we recommend continuing to interpret 'm-stream', if r | ||||
eceived, | ||||
because it is still present in some implementations.</t></li> | ||||
<li><t>Assorted clarifications (throughout the document):</t> | ||||
<t>Language clarifications were made as a result of reviews. Also, | ||||
normative language was "tightened" where appropriate, i.e., changed | ||||
from "<bcp14>SHOULD</bcp14>" strength to "<bcp14>MUST</bcp14>" in a | ||||
number of places.</t></li> | ||||
</ul> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5234. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3261. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3264. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4145. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4574. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8122. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4566. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6347. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4571. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6544. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4582. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4583. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | ||||
xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8445. | ||||
xml"/> | ||||
<c>TCP/DTLS/BFCP</c> | <!-- draft-ietf-mmusic-ice-sip-sdp-39 RFC-to-be 8839 --> | |||
<c>[RFC XXXX]</c> | ||||
<c>TCP/TLS/BFCP</c> | <reference anchor='RFC8839' target="https://www.rfc-editor.org/info/rfc8839"> | |||
<c>[RFC XXXX]</c> | <front> | |||
<title>Session Description Protocol (SDP) Offer/Answer Procedures for Interactiv | ||||
e Connectivity Establishment (ICE)</title> | ||||
<c>UDP/BFCP</c> | <author initials='M' surname='Petit-Huguenin' fullname='Marc Petit-Huguenin'> | |||
<c>[RFC XXXX]</c> | <organization /> | |||
</author> | ||||
<c>UDP/TLS/BFCP</c> | <author initials='S' surname='Nandakumar' fullname='Suhas Nandakumar'> | |||
<c>[RFC XXXX]</c> | <organization /> | |||
</texttable> | </author> | |||
</section> | ||||
<section title="Registration of the SDP 'floorctrl' Attribute"> | <author initials='C' surname='Holmberg' fullname='Christer Holmberg'> | |||
<t> | <organization /> | |||
This document defines the SDP attribute,'floorctrl'. | </author> | |||
The details of the attribute are defined in <xref target="sec:floorctrl- | ||||
attr"/>. | ||||
</t> | ||||
</section> | ||||
<section title="Registration of the SDP 'confid' Attribute"> | <author initials='A' surname='Keränen' fullname='Ari Keränen'> | |||
<t> | <organization /> | |||
This document defines the SDP attribute,'confid'. | </author> | |||
The details of the attribute are defined in <xref target="sec:confid-att | ||||
r"/>. | ||||
</t> | ||||
</section> | ||||
<section title="Registration of the SDP 'userid' Attribute"> | <author initials='R' surname='Shpount' fullname='Roman Shpount'> | |||
<t> | <organization /> | |||
This document defines the SDP attribute,'userid'. | </author> | |||
The details of the attribute are defined in <xref target="sec:userid-att | ||||
r"/>. | ||||
</t> | ||||
</section> | ||||
<section title="Registration of the SDP 'floorid' Attribute"> | <date month="May" year="2020"/> | |||
<t> | ||||
This document defines the SDP attribute,'floorid'. | ||||
The details of the attribute are defined in <xref target="sec:floorid-at | ||||
tr"/>. | ||||
</t> | ||||
</section> | ||||
<section title="Registration of the SDP 'bfcpver' Attribute"> | </front> | |||
<t> | <seriesInfo name="RFC" value="8839"/> | |||
This document defines the SDP attribute,'bfcpver'. | <seriesInfo name="DOI" value="10.17487/RFC8839"/> | |||
The details of the attribute are defined in <xref target="sec:bfcp-versi | ||||
on-attr"/>. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="Changes from RFC 4583" anchor="sec:changes"> | </reference> | |||
<t>Following is the list of technical changes and other fixes from <xref tar | ||||
get="RFC4583"/>.</t> | ||||
<t>Main purpose of this work was to add signaling support necessary to suppo | ||||
rt BFCP over unreliable transport, as described in <xref target="I-D.ietf-bfcpbi | ||||
s-rfc4582bis"/>, resulting in the following changes:</t> | ||||
<t><list style="numbers"> | ||||
<t>Fields in the 'm' line (<xref target="sec:m-line"/>):<vspace/> | ||||
The section is re-written to remove reference to the exclusivity of TC | ||||
P as a transport for BFCP streams. The proto field values TCP/DTLS/BFCP, UDP/BFC | ||||
P and UDP/TLS/BFCP added.</t> | ||||
<t>Security Considerations (<xref target="sec:security"/>):<vspace/> | ||||
For the DTLS over UDP case, mention existing considerations and requir | ||||
ements for the offer/answer exchange in <xref target="I-D.ietf-mmusic-dtls-sdp"/ | ||||
>.</t> | ||||
<t>Registration of SDP 'proto' Values (<xref target="sec:proto-reg"/>):< | ||||
vspace/> | ||||
Register the three new values TCP/DTLS/BFCP, UDP/BFCP and UDP/TLS/BFCP | ||||
in the SDP parameters registry.</t> | ||||
<t>BFCP Version Negotiation (<xref target="sec:bfcp-version-attr"/>):<vs | ||||
pace/> | ||||
A new 'bfcpver' SDP media-level attribute is added in order to signal | ||||
supported version number.</t> | ||||
</list></t> | ||||
<t>In addition to the changes associated with support of BFCP over unreliabl | ||||
e transport, the possibility for an endpoint to act as both floor control client | ||||
and floor control server at the same time has | ||||
been removed. An endpoint will now take the same role for all BFCP-controlle | ||||
d streams associated with the BFCP stream.</t> | ||||
<t>Clarification and bug fixes:</t> | ||||
<t><list style="numbers"> | ||||
<t>Errata ID: 712 (<xref target="sec:server-determination"/> and <xref t | ||||
arget="sec:oa-offer-answer-proc"/>):<vspace/> | ||||
Language clarification. Don't use terms like an SDP attribute is "used | ||||
in an 'm' line", instead make clear that the attribute is a media-level attribu | ||||
te.</t> | ||||
<t>Fix typo in example (<xref target="sec:example"/>):<vspace/> | ||||
Do not use 'm-stream' in the SDP example, use the correct 'mstrm' as s | ||||
pecified in <xref target="sec:example"/>. Recommend interpreting 'm-stream' if i | ||||
t is received, since it is present in some implementations.</t> | ||||
<t>Assorted clarifications (Across the document):<vspace/> | ||||
Language clarifications as a result of reviews. Also, the normative la | ||||
nguage where tightened where appropriate, i.e. changed from SHOULD strength to M | ||||
UST in a number of places.</t> | ||||
</list></t> | ||||
</section> | ||||
<section title="Acknowledgements" anchor="sec:acks"> | <!-- draft-ietf-bfcpbis-rfc4582bis RFC-to-be 8855 --> | |||
<t>Joerg Ott, Keith Drage, Alan Johnston, Eric Rescorla, Roni Even, and Osca | <reference anchor="RFC8855" target="https://www.rfc-editor.org/info/rfc8855"> | |||
r Novo provided useful ideas for the original <xref target="RFC4583"/>. The auth | ||||
ors also acknowledge contributions to the revision of BFCP for use over an unrel | ||||
iable transport from Geir Arne Sandbakken, Charles Eckel, Alan Ford, Eoin McLeod | ||||
and Mark Thompson. Useful and important final reviews were done by Ali C. Begen | ||||
, Mary Barnes and Charles Eckel. In the final stages, Roman Shpount made a consi | ||||
derable effort in adding proper ICE support and considerations.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | <front> | |||
<references title="Normative References"> | <title>The Binary Floor Control Protocol (BFCP)</title> | |||
<?rfc include="reference.RFC.2119" ?> | ||||
<?rfc include="reference.RFC.5234" ?> | <author initials="G." surname="Camarillo" fullname=""> | |||
<?rfc include="reference.RFC.3261" ?> | <organization /> | |||
<?rfc include="reference.RFC.3264" ?> | </author> | |||
<?rfc include="reference.RFC.4145" ?> | ||||
<?rfc include="reference.RFC.4574" ?> | <author initials="K." surname="Drage" fullname="Keith Drage"> | |||
<?rfc include="reference.RFC.8122" ?> | <organization /> | |||
<?rfc include="reference.RFC.4566" ?> | </author> | |||
<?rfc include="reference.RFC.6347" ?> | ||||
<?rfc include="reference.RFC.4571" ?> | <author initials="T." surname="Kristensen" fullname="Tom Kristensen"> | |||
<?rfc include="reference.RFC.6544" ?> | <organization /> | |||
<?rfc include="reference.RFC.4582" ?> | </author> | |||
<?rfc include="reference.RFC.4583" ?> | ||||
<?rfc include="reference.RFC.8174" ?> | <author initials="J." surname="Ott" fullname="Jörg Ott"> | |||
<?rfc include="reference.RFC.8445" ?> | <organization /> | |||
<?rfc include="reference.I-D.draft-ietf-mmusic-ice-sip-sdp-24"?> | </author> | |||
<?rfc include="reference.I-D.draft-ietf-bfcpbis-rfc4582bis-16" ?> | ||||
<?rfc include="reference.I-D.draft-ietf-mmusic-dtls-sdp-32" ?> | <author initials="C." surname="Eckel" fullname="Charles Eckel"> | |||
<?rfc include="reference.I-D.draft-ietf-mmusic-sdp-mux-attributes-17" ?> | <organization /> | |||
</references> | </author> | |||
<references title="Informational References"> | ||||
<?rfc include="reference.RFC.5576" ?> | <date month="May" year="2020" /> | |||
<?rfc include="reference.I-D.draft-ietf-mmusic-sdp-bundle-negotiation-53" ?> | </front> | |||
</references> | <seriesInfo name="RFC" value="8855" /> | |||
</back> | <seriesInfo name="DOI" value="10.17487/RFC8855"/> | |||
</reference> | ||||
<!-- draft-ietf-mmusic-dtls-sdp RFC-to-be 8842 --> | ||||
<reference anchor="RFC8842" target="https://www.rfc-editor.org/info/rfc8842"> | ||||
<front> | ||||
<title>Session Description Protocol (SDP) Offer/Answer Considerations for | ||||
Datagram Transport Layer Security (DTLS) and Transport Layer Security (TLS)</tit | ||||
le> | ||||
<author initials="C." surname="Holmberg" fullname="Christer Holmberg"> | ||||
<organization /> | ||||
</author> | ||||
<author initials="R." surname="Shpount" fullname="Roman Shpount"> | ||||
<organization /> | ||||
</author> | ||||
<date month="May" year="2020" /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8842" /> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8842"/> | ||||
</reference> | ||||
<!-- draft-ietf-mmusic-sdp-mux-attributes-17 (RFC 8859) --> | ||||
<reference anchor="RFC8859" target="https://www.rfc-editor.org/info/rfc8859"> | ||||
<front> | ||||
<title>A Framework for SDP Attributes When Multiplexing</title> | ||||
<author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar"> | ||||
<organization/> | ||||
</author> | ||||
<date month="May" year="2020"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8859"/> | ||||
<seriesInfo name="RFC" value="8859"/> | ||||
</reference> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<reference anchor="Err712" quote-title="false" | ||||
target="https://www.rfc-editor.org/errata/eid712"> | ||||
<front> | ||||
<title>Erratum ID 712</title> | ||||
<author><organization>RFC Errata</organization></author> | ||||
</front> | ||||
<refcontent>RFC 4583</refcontent> | ||||
</reference> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5576. | ||||
xml"/> | ||||
<!-- draft-ietf-mmusic-sdp-bundle-negotiation (RFC 8843) --> | ||||
<reference anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8843"> | ||||
<front> | ||||
<title>Negotiating Media Multiplexing Using the Session Description Protocol | ||||
(SDP)</title> | ||||
<author initials="C" surname="Holmberg" fullname="Christer Holmberg"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="H" surname="Alvestrand" fullname="Harald Alvestrand"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="C" surname="Jennings" fullname="Cullen Jennings"> | ||||
<organization/> | ||||
</author> | ||||
<date month="May" year="2020"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8843"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8843"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="sec_acks" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t><contact fullname="Joerg Ott"/>, <contact fullname="Keith Drage"/>, | ||||
<contact fullname="Alan Johnston"/>, <contact fullname="Eric | ||||
Rescorla"/>, <contact fullname="Roni Even"/>, and <contact | ||||
fullname="Oscar Novo"/> provided useful ideas for the original <xref | ||||
target="RFC4583" format="default"/>. The authors also acknowledge | ||||
contributions to the revision of BFCP for use over an unreliable | ||||
transport from <contact fullname="Geir Arne Sandbakken"/>, <contact | ||||
fullname="Charles Eckel"/>, <contact fullname="Alan Ford"/>, <contact | ||||
fullname="Eoin McLeod"/>, and <contact fullname="Mark Thompson"/>. Useful | ||||
and important final reviews were done by <contact fullname="Ali | ||||
C. Begen"/>, <contact fullname="Mary Barnes"/>, and <contact | ||||
fullname="Charles Eckel"/>. In the final stages, <contact fullname="Roman | ||||
Shpount"/> made a considerable effort in adding proper ICE support and considera | ||||
tions.</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 102 change blocks. | ||||
913 lines changed or deleted | 1091 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |