| 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/ | ||||