rfc8855xml2.original.xml | rfc8855.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | nsus="true" docName="draft-ietf-bfcpbis-rfc4582bis-16" indexInclude="true" ipr=" | |||
trust200902" number="8855" obsoletes="4582" prepTime="2021-01-17T13:06:20" scrip | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="false" tocDepth | |||
="4" tocInclude="true" xml:lang="en"> | ||||
<rfc category="std" ipr="trust200902" docName="draft-ietf-bfcpbis-rfc4582bis-16" | <link href="https://datatracker.ietf.org/doc/draft-ietf-bfcpbis-rfc4582bis-16" | |||
obsoletes="4582"> | rel="prev"/> | |||
<link href="https://dx.doi.org/10.17487/rfc8855" rel="alternate"/> | ||||
<?rfc strict="yes"?> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
<?rfc toc="yes"?> | <front> | |||
<?rfc tocdepth="4"?> | <title abbrev="BFCP">The Binary Floor Control Protocol (BFCP)</title> | |||
<?rfc symrefs="no"?> | <seriesInfo name="RFC" value="8855" stream="IETF"/> | |||
<?rfc sortrefs="yes" ?> | <author initials="G." surname="Camarillo" fullname="Gonzalo Camarillo"> | |||
<?rfc compact="yes" ?> | <organization showOnFrontPage="true">Ericsson</organization> | |||
<?rfc subcompact="no" ?> | <address> | |||
<postal> | ||||
<front> | <street>Hirsalantie 11</street> | |||
<title abbrev="BFCP">The Binary Floor Control Protocol (BFCP)</title> | <code>02420</code> | |||
<city>Jorvas</city> | ||||
<author initials="G." surname="Camarillo" fullname="Gonzalo Camarillo"> | <country>Finland</country> | |||
<organization>Ericsson</organization> | </postal> | |||
<address> | <email>gonzalo.camarillo@ericsson.com</email> | |||
<postal> | </address> | |||
<street>Hirsalantie 11</street> | </author> | |||
<city>FI-02420 Jorvas</city> | <author initials="K." surname="Drage" fullname="Keith Drage"> | |||
<country>Finland</country> | <address> | |||
</postal> | <postal> | |||
<email>gonzalo.camarillo@ericsson.com</email> | </postal> | |||
</address> | <email>drageke@ntlworld.com</email> | |||
</author> | </address> | |||
</author> | ||||
<author initials="K." surname="Drage" fullname="Keith Drage"> | <author fullname="Tom Kristensen" initials="T." surname="Kristensen"> | |||
<organization>Alcatel-Lucent</organization> | <organization abbrev="Jotron" showOnFrontPage="true">Jotron AS</organizati | |||
<address> | on> | |||
<postal> | <address> | |||
<street>Quadrant, StoneHill Green, Westlea</street> | <postal> | |||
<street>Swindon, Wilts</street> | <street>Ringdalskogen 8</street> | |||
<country>UK</country> | <code>3270</code> | |||
</postal> | <city>Larvik</city> | |||
<email>drage@alcatel-lucent.com</email> | <country>Norway</country> | |||
</address> | </postal> | |||
</author> | <email>tom.kristensen@jotron.com, tomkri@ifi.uio.no</email> | |||
</address> | ||||
<author fullname="Tom Kristensen" initials="T." surname="Kristensen"> | </author> | |||
<organization>Cisco</organization> | <author initials="J." surname="Ott" fullname="Jörg Ott"> | |||
<address> | <organization showOnFrontPage="true">Technical University Munich</organiza | |||
<postal> | tion> | |||
<street>Philip Pedersens vei 1</street> | <address> | |||
<city>NO-1366 Lysaker</city> | <postal> | |||
<country>Norway</country> | <street>Boltzmannstrasse 3</street> | |||
</postal> | <code>85748</code> | |||
<email>tomkrist@cisco.com, tomkri@ifi.uio.no</email> | <city>Garching</city> | |||
</address> | <country>Germany</country> | |||
</author> | </postal> | |||
<email>ott@in.tum.de</email> | ||||
<author initials="J." surname="Ott" fullname="Joerg Ott"> | </address> | |||
<organization>Aalto University</organization> | </author> | |||
<address> | <author fullname="Charles Eckel" initials="C." surname="Eckel"> | |||
<postal> | <organization showOnFrontPage="true">Cisco</organization> | |||
<street>Otakaari 5 A</street> | <address> | |||
<city>FI-02150 Espoo</city> | <postal> | |||
<country>Finland</country> | <street>707 Tasman Drive</street> | |||
</postal> | <city>Milpitas</city> | |||
<email>jo@comnet.tkk.fi</email> | <region>California</region> | |||
</address> | <code>95035</code> | |||
</author> | <country>United States of America</country> | |||
</postal> | ||||
<author fullname="Charles Eckel" initials="C." surname="Eckel"> | <email>eckelcu@cisco.com</email> | |||
<organization>Cisco</organization> | </address> | |||
<address> | </author> | |||
<postal> | <date month="01" year="2021"/> | |||
<street>707 Tasman Drive</street> | <area>Real-time Applications and Infrastructure</area> | |||
<city>California, CA 95035</city> | <workgroup>BFCPbis Working Group</workgroup> | |||
<country>United States</country> | <keyword>floor control</keyword> | |||
</postal> | <keyword>conference</keyword> | |||
<email>eckelcu@cisco.com</email> | <abstract pn="section-abstract"> | |||
</address> | <t indent="0" pn="section-abstract-1">Floor control is a means to manage j | |||
</author> | oint or exclusive access to | |||
shared resources in a (multiparty) conferencing environment. Thereby, | ||||
<!-- Maximum 5 authors in current xml2rfc | floor control complements other functions -- such as conference and | |||
<author fullname="Paul E. Jones" initials="P.E." surname="Jones"> | media session setup, conference policy manipulation, and media control | |||
<organization>Cisco</organization> | -- that are realized by other protocols.</t> | |||
<address> | <t indent="0" pn="section-abstract-2">This document specifies the Binary F | |||
<postal> | loor Control Protocol | |||
<street>7025 Kit Creek Rd.</street> | (BFCP). BFCP is used between floor participants and floor control | |||
<city>Research Triangle Park, NC 27709</city> | servers, and between floor chairs (i.e., moderators) and floor control | |||
<country>USA</country> | servers.</t> | |||
</postal> | <t indent="0" pn="section-abstract-3">This document obsoletes RFC 4582.</t | |||
<email>paulej@packetizer.com</email> | > | |||
</address> | </abstract> | |||
</author> | <boilerplate> | |||
<section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
<date/> | "exclude" pn="section-boilerplate.1"> | |||
<name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
<area>Real-time Applications and Infrastructure</area> | > | |||
<workgroup>BFCPbis Working Group</workgroup> | <t indent="0" pn="section-boilerplate.1-1"> | |||
This is an Internet Standards Track document. | ||||
<keyword>floor control</keyword> | </t> | |||
<keyword>conference</keyword> | <t indent="0" pn="section-boilerplate.1-2"> | |||
This document is a product of the Internet Engineering Task Force | ||||
<abstract> | (IETF). It represents the consensus of the IETF community. It has | |||
<t>Floor control is a means to manage joint or exclusive access to shared re | received public review and has been approved for publication by | |||
sources in a (multiparty) conferencing environment. Thereby, floor control compl | the Internet Engineering Steering Group (IESG). Further | |||
ements other functions -- such as conference and media session setup, conference | information on Internet Standards is available in Section 2 of | |||
policy manipulation, and media control -- that are realized by other protocols. | RFC 7841. | |||
</t> | </t> | |||
<t>This document specifies the Binary Floor Control Protocol (BFCP). BFCP is | <t indent="0" pn="section-boilerplate.1-3"> | |||
used between floor participants and floor control servers, and between floor ch | Information about the current status of this document, any | |||
airs (i.e., moderators) and floor control servers.</t> | errata, and how to provide feedback on it may be obtained at | |||
<t>This document obsoletes RFC 4582. Changes from RFC 4582 are summarized in | <eref target="https://www.rfc-editor.org/info/rfc8855" brackets="non | |||
Section 16.</t> | e"/>. | |||
<!-- Ensure correct section #, as xref is no | </t> | |||
t allowed in abstract --> | </section> | |||
</abstract> | <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | |||
</front> | ude" pn="section-boilerplate.2"> | |||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<middle> | <t indent="0" pn="section-boilerplate.2-1"> | |||
<section title="Introduction" anchor="sec:intro"> | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
<t>Within a conference, some applications need to manage the access to a set | document authors. All rights reserved. | |||
of shared resources, such as the right to send media to a particular media sess | </t> | |||
ion. Floor control enables such applications to provide users with coordinated ( | <t indent="0" pn="section-boilerplate.2-2"> | |||
shared or exclusive) access to these resources.</t> | This document is subject to BCP 78 and the IETF Trust's Legal | |||
<t>The Requirements for Floor Control Protocol <xref target="RFC4376"/> list | Provisions Relating to IETF Documents | |||
a set of requirements that need to be met by floor control protocols. The Binar | (<eref target="https://trustee.ietf.org/license-info" brackets="none | |||
y Floor Control Protocol (BFCP), which is specified in this document, meets thes | "/>) in effect on the date of | |||
e requirements.</t> | publication of this document. Please review these documents | |||
<t>In addition, BFCP has been designed so that it can be used in low-bandwid | carefully, as they describe your rights and restrictions with | |||
th environments. The binary encoding used by BFCP achieves a small message size | respect to this document. Code Components extracted from this | |||
(when message signatures are not used) that keeps the time it takes to transmit | document must include Simplified BSD License text as described in | |||
delay-sensitive BFCP messages to a minimum. Delay-sensitive BFCP messages includ | Section 4.e of the Trust Legal Provisions and are provided without | |||
e FloorRequest, FloorRelease, FloorRequestStatus, and ChairAction. It is expecte | warranty as described in the Simplified BSD License. | |||
d that future extensions to these messages will not increase the size of these m | </t> | |||
essages in a significant way.</t> | </section> | |||
<t>The remainder of this document is organized as follows: <xref target="sec | </boilerplate> | |||
:terminology"/> defines the terminology used throughout this document, <xref tar | <toc> | |||
get="sec:scope"/> discusses the scope of BFCP (i.e., which tasks fall within the | <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | |||
scope of BFCP and which ones are performed using different mechanisms), <xref t | n="section-toc.1"> | |||
arget="sec:overview"/> provides a non-normative overview of BFCP operation, and | <name slugifiedName="name-table-of-contents">Table of Contents</name> | |||
subsequent sections provide the normative specification of BFCP.</t> | <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | |||
</section> | c.1-1"> | |||
<li pn="section-toc.1-1.1"> | ||||
<section title="Terminology" anchor="sec:terminology"> | <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOU | ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | |||
LD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in th | derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | |||
is document are to be interpreted as described in BCP 14, <xref target="RFC2119" | Introduction</xref></t> | |||
>RFC 2119</xref> and indicate requirement levels for compliant implementations.< | </li> | |||
/t> | <li pn="section-toc.1-1.2"> | |||
<t>Media Participant: An entity that has access to the media resources of a | <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | |||
conference (e.g., it can receive a media stream). In floor-controlled conference | ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | |||
s, a given media participant is typically colocated with a floor participant, bu | derivedContent="" format="title" sectionFormat="of" target="name-terminology">T | |||
t it does not need to be. Third-party floor requests consist of having a floor p | erminology</xref></t> | |||
articipant request a floor for a media participant when they are not colocated. | </li> | |||
The protocol between a floor participant and a media participant (that are not c | <li pn="section-toc.1-1.3"> | |||
olocated) is outside the scope of this document.</t> | <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | |||
<t>Client: A floor participant or a floor chair that communicates with a flo | at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | |||
or control server using BFCP.</t> | ormat="title" sectionFormat="of" target="name-scope">Scope</xref></t> | |||
<t>Floor: A temporary permission to access or manipulate a specific shared r | <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | |||
esource or set of resources.</t> | n-toc.1-1.3.2"> | |||
<t>Floor Chair: A logical entity that manages one floor (grants, denies, or | <li pn="section-toc.1-1.3.2.1"> | |||
revokes a floor). An entity that assumes the logical role of a floor chair for a | <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1">< | |||
given transaction may assume a different role (e.g., floor participant) for a d | xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3. | |||
ifferent transaction. The roles of floor chair and floor participant are defined | 1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-fl | |||
on a transaction-by-transaction basis. BFCP transactions are defined in <xref t | oor-creation">Floor Creation</xref></t> | |||
arget="sec:transactions"/>.</t> | </li> | |||
<t>Floor Control: A mechanism that enables applications or users to gain saf | <li pn="section-toc.1-1.3.2.2"> | |||
e and mutually exclusive or non-exclusive input access to the shared object or r | <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent= | |||
esource.</t> | "3.2" format="counter" sectionFormat="of" target="section-3.2"/>. <xref derived | |||
<t>Floor Control Server: A logical entity that maintains the state of the fl | Content="" format="title" sectionFormat="of" target="name-obtaining-information- | |||
oor(s), including which floors exists, who the floor chairs are, who holds a flo | to-co">Obtaining Information to Contact a Floor Control Server</xref></t> | |||
or, etc. Requests to manipulate a floor are directed at the floor control serve | </li> | |||
r. The floor control server of a conference may perform other logical roles (e.g | <li pn="section-toc.1-1.3.2.3"> | |||
., floor participant) in another conference.</t> | <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent= | |||
<t>Floor Participant: A logical entity that requests floors, and possibly in | "3.3" format="counter" sectionFormat="of" target="section-3.3"/>. <xref derived | |||
formation about them, from a floor control server. An entity that assumes the lo | Content="" format="title" sectionFormat="of" target="name-obtaining-floor-resour | |||
gical role of a floor participant for a given transaction may assume a different | ce-as">Obtaining Floor-Resource Associations</xref></t> | |||
role (e.g., a floor chair) for a different transaction. The roles of floor part | </li> | |||
icipant and floor chair are defined on a transaction-by-transaction basis. BFCP | <li pn="section-toc.1-1.3.2.4"> | |||
transactions are defined in <xref target="sec:transactions"/>. In floor-controll | <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent= | |||
ed conferences, a given floor participant is typically colocated with a media pa | "3.4" format="counter" sectionFormat="of" target="section-3.4"/>. <xref derived | |||
rticipant, but it does not need to be. Third-party floor requests consist of hav | Content="" format="title" sectionFormat="of" target="name-privileges-of-floor-co | |||
ing a floor participant request a floor for a media participant when they are no | ntrol">Privileges of Floor Control</xref></t> | |||
t colocated.</t> | </li> | |||
<t>Participant: An entity that acts as a floor participant, as a media parti | </ul> | |||
cipant, or as both.</t> | </li> | |||
<t>BFCP Connection: A transport association between BFCP entities, used to e | <li pn="section-toc.1-1.4"> | |||
xchange BFCP messages.</t> | <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | |||
<t>Transaction Failure Window: When communicating over an unreliable transpo | at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | |||
rt, this is some period of time less than or equal to T1*2^4 (see <xref target=" | ormat="title" sectionFormat="of" target="name-overview-of-operation">Overview of | |||
timers"/>). For reliable transports, this period of time is unbounded.</t> | Operation</xref></t> | |||
</section> | <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | |||
n-toc.1-1.4.2"> | ||||
<section title="Scope" anchor="sec:scope"> | <li pn="section-toc.1-1.4.2.1"> | |||
<t>As stated earlier, BFCP is a protocol to coordinate access to shared reso | <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | |||
urces in a conference following the requirements defined in <xref target="RFC437 | "4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | |||
6"/>. Floor control complements other functions defined in the XCON conferencin | Content="" format="title" sectionFormat="of" target="name-floor-participant-to-f | |||
g framework <xref target="RFC5239"/>. The floor control protocol BFCP defined in | loor-">Floor Participant to Floor Control Server Interface</xref></t> | |||
this document only specifies a means to arbitrate access to floors. The rules | </li> | |||
and constraints for floor arbitration and the results of floor assignments are o | <li pn="section-toc.1-1.4.2.2"> | |||
utside the scope of this document and are defined by other protocols <xref targe | <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent= | |||
t="RFC5239"/>.</t> | "4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xref derived | |||
<t><xref target="fig:arch"/> shows the tasks that BFCP can perform.</t> | Content="" format="title" sectionFormat="of" target="name-floor-chair-to-floor-c | |||
<t><figure anchor="fig:arch" title="Functionality provided by BFCP"> | ontro">Floor Chair to Floor Control Server Interface</xref></t> | |||
<artwork><![CDATA[ | </li> | |||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-packet-format">Packet Format</xref | ||||
></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.5.2"> | ||||
<li pn="section-toc.1-1.5.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent= | ||||
"5.1" format="counter" sectionFormat="of" target="section-5.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-common-header-format"> | ||||
COMMON-HEADER Format</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent= | ||||
"5.2" format="counter" sectionFormat="of" target="section-5.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-attribute-format">Attr | ||||
ibute Format</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.5.2.2.2"> | ||||
<li pn="section-toc.1-1.5.2.2.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.1.1"><xref derived | ||||
Content="5.2.1" format="counter" sectionFormat="of" target="section-5.2.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-beneficiar | ||||
y-id">BENEFICIARY-ID</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.2.1"><xref derived | ||||
Content="5.2.2" format="counter" sectionFormat="of" target="section-5.2.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floor-id"> | ||||
FLOOR-ID</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.3.1"><xref derived | ||||
Content="5.2.3" format="counter" sectionFormat="of" target="section-5.2.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floor-requ | ||||
est-id">FLOOR-REQUEST-ID</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.4.1"><xref derived | ||||
Content="5.2.4" format="counter" sectionFormat="of" target="section-5.2.4"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-priority"> | ||||
PRIORITY</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.5.1"><xref derived | ||||
Content="5.2.5" format="counter" sectionFormat="of" target="section-5.2.5"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-request-st | ||||
atus">REQUEST-STATUS</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.6"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.6.1"><xref derived | ||||
Content="5.2.6" format="counter" sectionFormat="of" target="section-5.2.6"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-error-code | ||||
">ERROR-CODE</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn | ||||
="section-toc.1-1.5.2.2.2.6.2"> | ||||
<li pn="section-toc.1-1.5.2.2.2.6.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.6.2.1.1"><xref | ||||
derivedContent="5.2.6.1" format="counter" sectionFormat="of" target="section-5. | ||||
2.6.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="nam | ||||
e-error-specific-details-for-">Error Specific Details for Error Code 4</xref></t | ||||
> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.7"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.7.1"><xref derived | ||||
Content="5.2.7" format="counter" sectionFormat="of" target="section-5.2.7"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-error-info | ||||
">ERROR-INFO</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.8"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.8.1"><xref derived | ||||
Content="5.2.8" format="counter" sectionFormat="of" target="section-5.2.8"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-participan | ||||
t-provided-info">PARTICIPANT-PROVIDED-INFO</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.9"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.9.1"><xref derived | ||||
Content="5.2.9" format="counter" sectionFormat="of" target="section-5.2.9"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-status-inf | ||||
o">STATUS-INFO</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.10"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.10.1"><xref derive | ||||
dContent="5.2.10" format="counter" sectionFormat="of" target="section-5.2.10"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-supporte | ||||
d-attributes">SUPPORTED-ATTRIBUTES</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.11"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.11.1"><xref derive | ||||
dContent="5.2.11" format="counter" sectionFormat="of" target="section-5.2.11"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-supporte | ||||
d-primitives">SUPPORTED-PRIMITIVES</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.12"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.12.1"><xref derive | ||||
dContent="5.2.12" format="counter" sectionFormat="of" target="section-5.2.12"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-user-dis | ||||
play-name">USER-DISPLAY-NAME</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.13"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.13.1"><xref derive | ||||
dContent="5.2.13" format="counter" sectionFormat="of" target="section-5.2.13"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-user-uri | ||||
">USER-URI</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.14"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.14.1"><xref derive | ||||
dContent="5.2.14" format="counter" sectionFormat="of" target="section-5.2.14"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-benefici | ||||
ary-information">BENEFICIARY-INFORMATION</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.15"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.15.1"><xref derive | ||||
dContent="5.2.15" format="counter" sectionFormat="of" target="section-5.2.15"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-floor-re | ||||
quest-information">FLOOR-REQUEST-INFORMATION</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.16"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.16.1"><xref derive | ||||
dContent="5.2.16" format="counter" sectionFormat="of" target="section-5.2.16"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-requeste | ||||
d-by-information">REQUESTED-BY-INFORMATION</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.17"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.17.1"><xref derive | ||||
dContent="5.2.17" format="counter" sectionFormat="of" target="section-5.2.17"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-floor-re | ||||
quest-status">FLOOR-REQUEST-STATUS</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2.2.18"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.2.2.18.1"><xref derive | ||||
dContent="5.2.18" format="counter" sectionFormat="of" target="section-5.2.18"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-overall- | ||||
request-status">OVERALL-REQUEST-STATUS</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent= | ||||
"5.3" format="counter" sectionFormat="of" target="section-5.3"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-message-format">Messag | ||||
e Format</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.5.2.3.2"> | ||||
<li pn="section-toc.1-1.5.2.3.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.1.1"><xref derived | ||||
Content="5.3.1" format="counter" sectionFormat="of" target="section-5.3.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floorreque | ||||
st">FloorRequest</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.2.1"><xref derived | ||||
Content="5.3.2" format="counter" sectionFormat="of" target="section-5.3.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floorrelea | ||||
se">FloorRelease</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.3.1"><xref derived | ||||
Content="5.3.3" format="counter" sectionFormat="of" target="section-5.3.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floorreque | ||||
stquery">FloorRequestQuery</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.4.1"><xref derived | ||||
Content="5.3.4" format="counter" sectionFormat="of" target="section-5.3.4"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floorreque | ||||
ststatus">FloorRequestStatus</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.5.1"><xref derived | ||||
Content="5.3.5" format="counter" sectionFormat="of" target="section-5.3.5"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-userquery" | ||||
>UserQuery</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.6"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.6.1"><xref derived | ||||
Content="5.3.6" format="counter" sectionFormat="of" target="section-5.3.6"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-userstatus | ||||
">UserStatus</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.7"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.7.1"><xref derived | ||||
Content="5.3.7" format="counter" sectionFormat="of" target="section-5.3.7"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floorquery | ||||
">FloorQuery</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.8"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.8.1"><xref derived | ||||
Content="5.3.8" format="counter" sectionFormat="of" target="section-5.3.8"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-floorstatu | ||||
s">FloorStatus</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.9"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.9.1"><xref derived | ||||
Content="5.3.9" format="counter" sectionFormat="of" target="section-5.3.9"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-chairactio | ||||
n">ChairAction</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.10"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.10.1"><xref derive | ||||
dContent="5.3.10" format="counter" sectionFormat="of" target="section-5.3.10"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-chairact | ||||
ionack">ChairActionAck</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.11"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.11.1"><xref derive | ||||
dContent="5.3.11" format="counter" sectionFormat="of" target="section-5.3.11"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-hello">H | ||||
ello</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.12"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.12.1"><xref derive | ||||
dContent="5.3.12" format="counter" sectionFormat="of" target="section-5.3.12"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-helloack | ||||
">HelloAck</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.13"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.13.1"><xref derive | ||||
dContent="5.3.13" format="counter" sectionFormat="of" target="section-5.3.13"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-error">E | ||||
rror</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.14"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.14.1"><xref derive | ||||
dContent="5.3.14" format="counter" sectionFormat="of" target="section-5.3.14"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-floorreq | ||||
ueststatusack">FloorRequestStatusAck</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.15"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.15.1"><xref derive | ||||
dContent="5.3.15" format="counter" sectionFormat="of" target="section-5.3.15"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-floorsta | ||||
tusack">FloorStatusAck</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.16"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.16.1"><xref derive | ||||
dContent="5.3.16" format="counter" sectionFormat="of" target="section-5.3.16"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-goodbye" | ||||
>Goodbye</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3.2.17"> | ||||
<t indent="0" pn="section-toc.1-1.5.2.3.2.17.1"><xref derive | ||||
dContent="5.3.17" format="counter" sectionFormat="of" target="section-5.3.17"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-goodbyea | ||||
ck">GoodbyeAck</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-transport">Transport</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.6.2"> | ||||
<li pn="section-toc.1-1.6.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
"6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-reliable-transport">Re | ||||
liable Transport</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
"6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-unreliable-transport"> | ||||
Unreliable Transport</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.6.2.2.2"> | ||||
<li pn="section-toc.1-1.6.2.2.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.2.1.1"><xref derived | ||||
Content="6.2.1" format="counter" sectionFormat="of" target="section-6.2.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-congestion | ||||
-control">Congestion Control</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.2.2.1"><xref derived | ||||
Content="6.2.2" format="counter" sectionFormat="of" target="section-6.2.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-icmp-error | ||||
-handling">ICMP Error Handling</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.2.3.1"><xref derived | ||||
Content="6.2.3" format="counter" sectionFormat="of" target="section-6.2.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-fragmentat | ||||
ion-handling">Fragmentation Handling</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.2.4.1"><xref derived | ||||
Content="6.2.4" format="counter" sectionFormat="of" target="section-6.2.4"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-nat-traver | ||||
sal">NAT Traversal</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-lower-layer-security">Lower-Layer | ||||
Security</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8"> | ||||
<t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-protocol-transactions">Protocol Tr | ||||
ansactions</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.8.2"> | ||||
<li pn="section-toc.1-1.8.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent= | ||||
"8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-client-behavior">Clien | ||||
t Behavior</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent= | ||||
"8.2" format="counter" sectionFormat="of" target="section-8.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-server-behavior">Serve | ||||
r Behavior</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent= | ||||
"8.3" format="counter" sectionFormat="of" target="section-8.3"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-timers">Timers</xref>< | ||||
/t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.8.2.3.2"> | ||||
<li pn="section-toc.1-1.8.2.3.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.3.2.1.1"><xref derived | ||||
Content="8.3.1" format="counter" sectionFormat="of" target="section-8.3.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-request-re | ||||
transmission-time">Request Retransmission Timer, T1</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8.2.3.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.3.2.2.1"><xref derived | ||||
Content="8.3.2" format="counter" sectionFormat="of" target="section-8.3.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-response-r | ||||
etransmission-tim">Response Retransmission Timer, T2</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8.2.3.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.8.2.3.2.3.1"><xref derived | ||||
Content="8.3.3" format="counter" sectionFormat="of" target="section-8.3.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-timer-valu | ||||
es">Timer Values</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.9"> | ||||
<t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-authentication-and-authoriz">Authe | ||||
ntication and Authorization</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.9.2"> | ||||
<li pn="section-toc.1-1.9.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent= | ||||
"9.1" format="counter" sectionFormat="of" target="section-9.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-tls-dtls-based-mutual- | ||||
authe">TLS/DTLS Based Mutual Authentication</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.10"> | ||||
<t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | ||||
rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-floor-participant-operation">Flo | ||||
or Participant Operations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.10.2"> | ||||
<li pn="section-toc.1-1.10.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent | ||||
="10.1" format="counter" sectionFormat="of" target="section-10.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-requesting-a-floor" | ||||
>Requesting a Floor</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.10.2.1.2"> | ||||
<li pn="section-toc.1-1.10.2.1.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.1.2.1.1"><xref derive | ||||
dContent="10.1.1" format="counter" sectionFormat="of" target="section-10.1.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-sending | ||||
-a-floorrequest-mess">Sending a FloorRequest Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.1.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.1.2.2.1"><xref derive | ||||
dContent="10.1.2" format="counter" sectionFormat="of" target="section-10.1.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-receivi | ||||
ng-a-response">Receiving a Response</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.1.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.1.2.3.1"><xref derive | ||||
dContent="10.1.3" format="counter" sectionFormat="of" target="section-10.1.3"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-recepti | ||||
on-of-a-subsequent-f">Reception of a Subsequent FloorRequestStatus Message</xref | ||||
></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent | ||||
="10.2" format="counter" sectionFormat="of" target="section-10.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-cancelling-a-floor- | ||||
request-">Cancelling a Floor Request and Releasing a Floor</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.10.2.2.2"> | ||||
<li pn="section-toc.1-1.10.2.2.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.2.2.1.1"><xref derive | ||||
dContent="10.2.1" format="counter" sectionFormat="of" target="section-10.2.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-sending | ||||
-a-floorrelease-mess">Sending a FloorRelease Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.2.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.10.2.2.2.2.1"><xref derive | ||||
dContent="10.2.2" format="counter" sectionFormat="of" target="section-10.2.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-receivi | ||||
ng-a-response-2">Receiving a Response</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.11"> | ||||
<t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" fo | ||||
rmat="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-chair-operations">Chair Operatio | ||||
ns</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.11.2"> | ||||
<li pn="section-toc.1-1.11.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent | ||||
="11.1" format="counter" sectionFormat="of" target="section-11.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-sending-a-chairacti | ||||
on-messa">Sending a ChairAction Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.11.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent | ||||
="11.2" format="counter" sectionFormat="of" target="section-11.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-receiving-a-respons | ||||
e-3">Receiving a Response</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.12"> | ||||
<t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" fo | ||||
rmat="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-general-client-operations">Gener | ||||
al Client Operations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.12.2"> | ||||
<li pn="section-toc.1-1.12.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent | ||||
="12.1" format="counter" sectionFormat="of" target="section-12.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-requesting-informat | ||||
ion-abou">Requesting Information about Floors</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.12.2.1.2"> | ||||
<li pn="section-toc.1-1.12.2.1.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.1.2.1.1"><xref derive | ||||
dContent="12.1.1" format="counter" sectionFormat="of" target="section-12.1.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-sending | ||||
-a-floorquery-messag">Sending a FloorQuery Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.1.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.1.2.2.1"><xref derive | ||||
dContent="12.1.2" format="counter" sectionFormat="of" target="section-12.1.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-receivi | ||||
ng-a-response-4">Receiving a Response</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.1.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.1.2.3.1"><xref derive | ||||
dContent="12.1.3" format="counter" sectionFormat="of" target="section-12.1.3"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-recepti | ||||
on-of-a-subsequent-fl">Reception of a Subsequent FloorStatus Message</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent | ||||
="12.2" format="counter" sectionFormat="of" target="section-12.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-requesting-informat | ||||
ion-about">Requesting Information about Floor Requests</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.12.2.2.2"> | ||||
<li pn="section-toc.1-1.12.2.2.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.2.2.1.1"><xref derive | ||||
dContent="12.2.1" format="counter" sectionFormat="of" target="section-12.2.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-sending | ||||
-a-floorrequestquery">Sending a FloorRequestQuery Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.2.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.2.2.2.1"><xref derive | ||||
dContent="12.2.2" format="counter" sectionFormat="of" target="section-12.2.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-receivi | ||||
ng-a-response-5">Receiving a Response</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.3.1"><xref derivedContent | ||||
="12.3" format="counter" sectionFormat="of" target="section-12.3"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-requesting-informat | ||||
ion-about-">Requesting Information about a User</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.12.2.3.2"> | ||||
<li pn="section-toc.1-1.12.2.3.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.3.2.1.1"><xref derive | ||||
dContent="12.3.1" format="counter" sectionFormat="of" target="section-12.3.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-sending | ||||
-a-userquery-message">Sending a UserQuery Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.3.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.3.2.2.1"><xref derive | ||||
dContent="12.3.2" format="counter" sectionFormat="of" target="section-12.3.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-receivi | ||||
ng-a-response-6">Receiving a Response</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.4.1"><xref derivedContent | ||||
="12.4" format="counter" sectionFormat="of" target="section-12.4"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-obtaining-the-capab | ||||
ilities-">Obtaining the Capabilities of a Floor Control Server</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.12.2.4.2"> | ||||
<li pn="section-toc.1-1.12.2.4.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.4.2.1.1"><xref derive | ||||
dContent="12.4.1" format="counter" sectionFormat="of" target="section-12.4.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-sending | ||||
-a-hello-message">Sending a Hello Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12.2.4.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.12.2.4.2.2.1"><xref derive | ||||
dContent="12.4.2" format="counter" sectionFormat="of" target="section-12.4.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-receivi | ||||
ng-responses">Receiving Responses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.13"> | ||||
<t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="13" fo | ||||
rmat="counter" sectionFormat="of" target="section-13"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-floor-control-server-operat">Flo | ||||
or Control Server Operations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.13.2"> | ||||
<li pn="section-toc.1-1.13.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.1.1"><xref derivedContent | ||||
="13.1" format="counter" sectionFormat="of" target="section-13.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-reception-of-a-floo | ||||
rrequest">Reception of a FloorRequest Message</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.13.2.1.2"> | ||||
<li pn="section-toc.1-1.13.2.1.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.1.2.1.1"><xref derive | ||||
dContent="13.1.1" format="counter" sectionFormat="of" target="section-13.1.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-generat | ||||
ing-the-first-floorr">Generating the First FloorRequestStatus Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.1.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.1.2.2.1"><xref derive | ||||
dContent="13.1.2" format="counter" sectionFormat="of" target="section-13.1.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-generat | ||||
ion-of-subsequent-fl">Generation of Subsequent FloorRequestStatus Messages</xref | ||||
></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.2.1"><xref derivedContent | ||||
="13.2" format="counter" sectionFormat="of" target="section-13.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-reception-of-a-floo | ||||
rrequestq">Reception of a FloorRequestQuery Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.3.1"><xref derivedContent | ||||
="13.3" format="counter" sectionFormat="of" target="section-13.3"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-reception-of-a-user | ||||
query-me">Reception of a UserQuery Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.4.1"><xref derivedContent | ||||
="13.4" format="counter" sectionFormat="of" target="section-13.4"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-reception-of-a-floo | ||||
rrelease">Reception of a FloorRelease Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.5.1"><xref derivedContent | ||||
="13.5" format="counter" sectionFormat="of" target="section-13.5"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-reception-of-a-floo | ||||
rquery-m">Reception of a FloorQuery Message</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.13.2.5.2"> | ||||
<li pn="section-toc.1-1.13.2.5.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.5.2.1.1"><xref derive | ||||
dContent="13.5.1" format="counter" sectionFormat="of" target="section-13.5.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-generat | ||||
ion-of-the-first-flo">Generation of the First FloorStatus Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.5.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.5.2.2.1"><xref derive | ||||
dContent="13.5.2" format="counter" sectionFormat="of" target="section-13.5.2"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-generat | ||||
ion-of-subsequent-flo">Generation of Subsequent FloorStatus Messages</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.6"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.6.1"><xref derivedContent | ||||
="13.6" format="counter" sectionFormat="of" target="section-13.6"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-reception-of-a-chai | ||||
raction-">Reception of a ChairAction Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.7"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.7.1"><xref derivedContent | ||||
="13.7" format="counter" sectionFormat="of" target="section-13.7"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-reception-of-a-hell | ||||
o-messag">Reception of a Hello Message</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.8"> | ||||
<t indent="0" pn="section-toc.1-1.13.2.8.1"><xref derivedContent | ||||
="13.8" format="counter" sectionFormat="of" target="section-13.8"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-error-message-gener | ||||
ation">Error Message Generation</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.14"> | ||||
<t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="14" fo | ||||
rmat="counter" sectionFormat="of" target="section-14"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-security-considerations">Securit | ||||
y Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.15"> | ||||
<t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="15" fo | ||||
rmat="counter" sectionFormat="of" target="section-15"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-iana-considerations">IANA Consid | ||||
erations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.15.2"> | ||||
<li pn="section-toc.1-1.15.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.15.2.1.1"><xref derivedContent | ||||
="15.1" format="counter" sectionFormat="of" target="section-15.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-attributes-subregis | ||||
try">Attributes Subregistry</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.15.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.15.2.2.1"><xref derivedContent | ||||
="15.2" format="counter" sectionFormat="of" target="section-15.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-primitives-subregis | ||||
try">Primitives Subregistry</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.15.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.15.2.3.1"><xref derivedContent | ||||
="15.3" format="counter" sectionFormat="of" target="section-15.3"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-request-statuses-su | ||||
bregistr">Request Statuses Subregistry</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.15.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.15.2.4.1"><xref derivedContent | ||||
="15.4" format="counter" sectionFormat="of" target="section-15.4"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-error-codes-subregi | ||||
stry">Error Codes Subregistry</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.16"> | ||||
<t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="16" fo | ||||
rmat="counter" sectionFormat="of" target="section-16"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-changes-from-rfc-4582">Changes f | ||||
rom RFC 4582</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.16.2"> | ||||
<li pn="section-toc.1-1.16.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.16.2.1.1"><xref derivedContent | ||||
="16.1" format="counter" sectionFormat="of" target="section-16.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-extensions-for-an-u | ||||
nreliabl">Extensions for an Unreliable Transport</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.16.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.16.2.2.1"><xref derivedContent | ||||
="16.2" format="counter" sectionFormat="of" target="section-16.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-other-changes">Othe | ||||
r Changes</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.17"> | ||||
<t indent="0" pn="section-toc.1-1.17.1"><xref derivedContent="17" fo | ||||
rmat="counter" sectionFormat="of" target="section-17"/>. <xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-references">References</xref></t | ||||
> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.17.2"> | ||||
<li pn="section-toc.1-1.17.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.17.2.1.1"><xref derivedContent | ||||
="17.1" format="counter" sectionFormat="of" target="section-17.1"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
s">Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.17.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.17.2.2.1"><xref derivedContent | ||||
="17.2" format="counter" sectionFormat="of" target="section-17.2"/>. <xref deri | ||||
vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
ces">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.18"> | ||||
<t indent="0" pn="section-toc.1-1.18.1"><xref derivedContent="Append | ||||
ix A" format="default" sectionFormat="of" target="section-appendix.a"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-example-call-fl | ||||
ows-for-bfcp">Example Call Flows for BFCP over an Unreliable Transport</xref></t | ||||
> | ||||
</li> | ||||
<li pn="section-toc.1-1.19"> | ||||
<t indent="0" pn="section-toc.1-1.19.1"><xref derivedContent="Append | ||||
ix B" format="default" sectionFormat="of" target="section-appendix.b"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-motivation-for- | ||||
supporting-a">Motivation for Supporting an Unreliable Transport</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.19.2"> | ||||
<li pn="section-toc.1-1.19.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.1"><xref derivedContent | ||||
="B.1" format="counter" sectionFormat="of" target="section-b.1"/>. <xref derive | ||||
dContent="" format="title" sectionFormat="of" target="name-motivation">Motivatio | ||||
n</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.19.2.1.2"> | ||||
<li pn="section-toc.1-1.19.2.1.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.1"><xref derive | ||||
dContent="B.1.1" format="counter" sectionFormat="of" target="section-b.1.1"/>. | ||||
<xref derivedContent="" format="title" sectionFormat="of" target="name-alternati | ||||
ves-considered">Alternatives Considered</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn | ||||
="section-toc.1-1.19.2.1.2.1.2"> | ||||
<li pn="section-toc.1-1.19.2.1.2.1.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.2.1.1"><xre | ||||
f derivedContent="B.1.1.1" format="counter" sectionFormat="of" target="section-b | ||||
.1.1.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="na | ||||
me-ice-tcp">ICE TCP</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.19.2.1.2.1.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.2.2.1"><xre | ||||
f derivedContent="B.1.1.2" format="counter" sectionFormat="of" target="section-b | ||||
.1.1.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="na | ||||
me-teredo">Teredo</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.19.2.1.2.1.2.3"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.2.3.1"><xre | ||||
f derivedContent="B.1.1.3" format="counter" sectionFormat="of" target="section-b | ||||
.1.1.3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="na | ||||
me-gut">GUT</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.19.2.1.2.1.2.4"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.2.4.1"><xre | ||||
f derivedContent="B.1.1.4" format="counter" sectionFormat="of" target="section-b | ||||
.1.1.4"/>. <xref derivedContent="" format="title" sectionFormat="of" target="na | ||||
me-upnp-igd">UPnP IGD</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.19.2.1.2.1.2.5"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.2.5.1"><xre | ||||
f derivedContent="B.1.1.5" format="counter" sectionFormat="of" target="section-b | ||||
.1.1.5"/>. <xref derivedContent="" format="title" sectionFormat="of" target="na | ||||
me-nat-pmp">NAT PMP</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.19.2.1.2.1.2.6"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.2.6.1"><xre | ||||
f derivedContent="B.1.1.6" format="counter" sectionFormat="of" target="section-b | ||||
.1.1.6"/>. <xref derivedContent="" format="title" sectionFormat="of" target="na | ||||
me-sctp">SCTP</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.19.2.1.2.1.2.7"> | ||||
<t indent="0" pn="section-toc.1-1.19.2.1.2.1.2.7.1"><xre | ||||
f derivedContent="B.1.1.7" format="counter" sectionFormat="of" target="section-b | ||||
.1.1.7"/>. <xref derivedContent="" format="title" sectionFormat="of" target="na | ||||
me-bfcp-over-udp-transport">BFCP over UDP Transport</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.20"> | ||||
<t indent="0" pn="section-toc.1-1.20.1"><xref derivedContent="" form | ||||
at="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent=" | ||||
" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgeme | ||||
nts</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.21"> | ||||
<t indent="0" pn="section-toc.1-1.21.1"><xref derivedContent="" form | ||||
at="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent=" | ||||
" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
resses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | ||||
<middle> | ||||
<section anchor="sec_intro" numbered="true" toc="include" removeInRFC="false | ||||
" pn="section-1"> | ||||
<name slugifiedName="name-introduction">Introduction</name> | ||||
<t indent="0" pn="section-1-1">Within a conference, some applications need | ||||
to manage the access to a set of shared resources, such as the right to send me | ||||
dia to a particular media session. Floor control enables such applications to pr | ||||
ovide users with coordinated (shared or exclusive) access to these resources.</t | ||||
> | ||||
<t indent="0" pn="section-1-2">The Requirements for Floor Control Protocol | ||||
<xref target="RFC4376" format="default" sectionFormat="of" derivedContent="18"/ | ||||
> list a set of requirements that need to be met by floor control protocols. The | ||||
Binary Floor Control Protocol (BFCP), which is specified in this document, meet | ||||
s these requirements.</t> | ||||
<t indent="0" pn="section-1-3">In addition, BFCP has been designed so that | ||||
it can be used in low-bandwidth environments. The binary encoding used by BFCP | ||||
achieves a small message size (when message signatures are not used) that keeps | ||||
the time it takes to transmit delay-sensitive BFCP messages to a minimum. Delay- | ||||
sensitive BFCP messages include FloorRequest, FloorRelease, FloorRequestStatus, | ||||
and ChairAction. It is expected that future extensions to these messages will no | ||||
t increase the size of these messages in a significant way.</t> | ||||
<t indent="0" pn="section-1-4">The remainder of this document is organized | ||||
as follows: <xref target="sec_terminology" format="default" sectionFormat="of" | ||||
derivedContent="Section 2"/> defines the terminology used | ||||
throughout this document, <xref target="sec_scope" format="default" sectio | ||||
nFormat="of" derivedContent="Section 3"/> | ||||
discusses the scope of BFCP (i.e., which tasks fall within the scope of | ||||
BFCP and which ones are performed using different mechanisms), <xref targe | ||||
t="sec_overview" format="default" sectionFormat="of" derivedContent="Section 4"/ | ||||
> provides a non-normative | ||||
overview of BFCP operation. The subsequent sections provide the | ||||
normative specification of BFCP. <xref target="sec_changes" format="defaul | ||||
t" sectionFormat="of" derivedContent="Section 16"/> | ||||
summarizes changes from <xref target="RFC4582" format="default" sectionFor | ||||
mat="of" derivedContent="3"> RFC 4582</xref>.</t> | ||||
</section> | ||||
<section anchor="sec_terminology" numbered="true" toc="include" removeInRFC= | ||||
"false" pn="section-2"> | ||||
<name slugifiedName="name-terminology">Terminology</name> | ||||
<t indent="0" pn="section-2-1"> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOUL | ||||
D</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>N | ||||
OT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="o | ||||
f" derivedContent="1"/> <xref target="RFC8174" format="default" sectionFormat="o | ||||
f" derivedContent="10"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-2-2"> | ||||
<dt pn="section-2-2.1">Media Participant:</dt> | ||||
<dd pn="section-2-2.2">An entity that has access to the media resources | ||||
of a conference (e.g., it can receive a media stream). In floor-controlled confe | ||||
rences, a given media participant is typically co-located with a floor participa | ||||
nt, but it does not need to be. Third-party floor requests consist of having a f | ||||
loor participant request a floor for a media participant when they are not co-lo | ||||
cated. The protocol between a floor participant and a media participant (that ar | ||||
e not co-located) is outside the scope of this document.</dd> | ||||
<dt pn="section-2-2.3">Client:</dt> | ||||
<dd pn="section-2-2.4">A floor participant or a floor chair that communi | ||||
cates with a floor control server using BFCP.</dd> | ||||
<dt pn="section-2-2.5">Floor:</dt> | ||||
<dd pn="section-2-2.6">A temporary permission to access or manipulate a | ||||
specific shared resource or set of resources.</dd> | ||||
<dt pn="section-2-2.7">Floor Chair:</dt> | ||||
<dd pn="section-2-2.8">A logical entity that manages one floor (grants, | ||||
denies, or revokes a floor). An entity that assumes the logical role of a floor | ||||
chair for a given transaction may assume a different role (e.g., floor participa | ||||
nt) for a different transaction. The roles of floor chair and floor participant | ||||
are defined on a transaction-by-transaction basis. BFCP transactions are defined | ||||
in <xref target="sec_transactions" format="default" sectionFormat="of" derivedC | ||||
ontent="Section 8"/>.</dd> | ||||
<dt pn="section-2-2.9">Floor Control:</dt> | ||||
<dd pn="section-2-2.10">A mechanism that enables applications or users t | ||||
o gain safe and mutually exclusive or non-exclusive input access to the shared o | ||||
bject or resource.</dd> | ||||
<dt pn="section-2-2.11">Floor Control Server:</dt> | ||||
<dd pn="section-2-2.12">A logical entity that maintains the state of the | ||||
floor(s), including which floors exists, who the floor chairs are, who holds a | ||||
floor, etc. Requests to manipulate a floor are directed at the floor control se | ||||
rver. The floor control server of a conference may perform other logical roles ( | ||||
e.g., floor participant) in another conference.</dd> | ||||
<dt pn="section-2-2.13">Floor Participant:</dt> | ||||
<dd pn="section-2-2.14">A logical entity that requests floors, and possi | ||||
bly information about them, from a floor control server. An entity that assumes | ||||
the logical role of a floor participant for a given transaction may assume a dif | ||||
ferent role (e.g., a floor chair) for a different transaction. The roles of floo | ||||
r participant and floor chair are defined on a transaction-by-transaction basis. | ||||
BFCP transactions are defined in <xref target="sec_transactions" format="defaul | ||||
t" sectionFormat="of" derivedContent="Section 8"/>. In floor-controlled conferen | ||||
ces, a given floor participant is typically co-located with a media participant, | ||||
but it does not need to be. Third-party floor requests consist of having a floo | ||||
r participant request a floor for a media participant when they are not co-locat | ||||
ed.</dd> | ||||
<dt pn="section-2-2.15">Participant:</dt> | ||||
<dd pn="section-2-2.16">An entity that acts as a floor participant, as a | ||||
media participant, or as both.</dd> | ||||
<dt pn="section-2-2.17">BFCP Connection:</dt> | ||||
<dd pn="section-2-2.18">A transport association between BFCP entities, u | ||||
sed to exchange BFCP messages.</dd> | ||||
<dt pn="section-2-2.19">Transaction Failure Window:</dt> | ||||
<dd pn="section-2-2.20">When communicating over an | ||||
unreliable transport, this is some period of time less than or equal to | ||||
T1*2<sup>4</sup> (see <xref target="timers" format="default" sectionFormat | ||||
="of" derivedContent="Section 8.3"/>). For | ||||
reliable transports, this period of time is unbounded.</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sec_scope" numbered="true" toc="include" removeInRFC="false | ||||
" pn="section-3"> | ||||
<name slugifiedName="name-scope">Scope</name> | ||||
<t indent="0" pn="section-3-1">As stated earlier, BFCP is a protocol to co | ||||
ordinate access to shared resources in a conference following the requirements d | ||||
efined in <xref target="RFC4376" format="default" sectionFormat="of" derivedCont | ||||
ent="18"/>. Floor control complements other functions defined in the Centralize | ||||
d Conferencing (XCON) Framework <xref target="RFC5239" format="default" sectionF | ||||
ormat="of" derivedContent="19"/>. The floor control protocol BFCP defined in thi | ||||
s document only specifies a means to arbitrate access to floors. The rules and | ||||
constraints for floor arbitration and the results of floor assignments are outsi | ||||
de the scope of this document and are defined by other protocols <xref target="R | ||||
FC5239" format="default" sectionFormat="of" derivedContent="19"/>.</t> | ||||
<t indent="0" pn="section-3-2"><xref target="fig_arch" format="default" se | ||||
ctionFormat="of" derivedContent="Figure 1"/> shows the tasks that BFCP can perfo | ||||
rm.</t> | ||||
<figure anchor="fig_arch" align="left" suppress-title="false" pn="figure-1 | ||||
"> | ||||
<name slugifiedName="name-functionality-provided-by-b">Functionality pro | ||||
vided by BFCP</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-3-3.1"> | ||||
+---------+ | +---------+ | |||
| Floor | | | Floor | | |||
| Chair | | | Chair | | |||
| | | | | | |||
+---------+ | +---------+ | |||
^ | | ^ | | |||
| | | | | | |||
Notification | | Decision | Notification | | Decision | |||
| | | | | | |||
| | | | | | |||
Floor | v | Floor | v | |||
+-------------+ Request +---------+ +-------------+ | +-------------+ Request +---------+ +-------------+ | |||
| Floor |----------->| Floor | Notification | Floor | | | Floor |----------->| Floor | Notification | Floor | | |||
| Participant | | Control |------------->| Participant | | | Participant | | Control |------------->| Participant | | |||
| |<-----------| Server | | | | | |<-----------| Server | | | | |||
+-------------+ Granted or +---------+ +-------------+ | +-------------+ Granted or +---------+ +-------------+ | |||
Denied ]]></artwork> | Denied </artwork> | |||
</figure></t> | </figure> | |||
<t>BFCP provides a means:</t> | <t indent="0" pn="section-3-4">BFCP provides a means:</t> | |||
<t><list style="symbols"> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-5 | |||
<t>for floor participants to send floor requests to floor control server | "> | |||
s.</t> | <li pn="section-3-5.1">for floor participants to send floor requests to | |||
<t>for floor control servers to grant or deny requests to access a given | floor control servers.</li> | |||
resource from floor participants.</t> | <li pn="section-3-5.2">for floor control servers to grant or deny reques | |||
<t>for floor chairs to send floor control servers decisions regarding fl | ts to access a given resource from floor participants.</li> | |||
oor requests.</t> | <li pn="section-3-5.3">for floor chairs to send floor control servers de | |||
<t>for floor control servers to keep floor participants and floor chairs | cisions regarding floor requests.</li> | |||
informed about the status of a given floor or a given floor request.</t> | <li pn="section-3-5.4">for floor control servers to keep floor participa | |||
</list></t> | nts and floor chairs informed about the status of a given floor or a given floor | |||
<t>Even though tasks that do not belong to the previous list are outside the | request.</li> | |||
scope of BFCP, some of these out-of-scope tasks relate to floor control and are | </ul> | |||
essential for creating floors and establishing BFCP connections between differe | <t indent="0" pn="section-3-6">Even though tasks that do not belong to the | |||
nt entities. In the following subsections, we discuss some of these tasks and me | previous list are outside the scope of BFCP, some of these out-of-scope tasks r | |||
chanisms to perform them.</t> | elate to floor control and are essential for creating floors and establishing BF | |||
CP connections between different entities. In the following subsections, we disc | ||||
<section title="Floor Creation" anchor="sec:scope:creation"> | uss some of these tasks and mechanisms to perform them.</t> | |||
<t>The association of a given floor with a resource or a set of resources | <section anchor="sec_scope_creation" numbered="true" toc="include" removeI | |||
(e.g., media streams) is out of the scope of BFCP as described in <xref target=" | nRFC="false" pn="section-3.1"> | |||
RFC5239"/>. Floor creation and termination are also outside the scope of BFCP; t | <name slugifiedName="name-floor-creation">Floor Creation</name> | |||
hese aspects are handled using the conference control protocol for manipulating | <t indent="0" pn="section-3.1-1">The association of a given floor with a | |||
the conference object. Consequently, the floor control server needs to stay up t | resource or a set of resources (e.g., media streams) is out of the scope of BFC | |||
o date on changes to the conference object (e.g., when a new floor is created).< | P as described in <xref target="RFC5239" format="default" sectionFormat="of" der | |||
/t> | ivedContent="19"/>. Floor creation and termination are also outside the scope of | |||
<t>Conference control clients using CCMP <xref target="RFC6503"/> can spec | BFCP; these aspects are handled using the conference control protocol for manip | |||
ify such floor-related settings in the <floor-information> element <xref t | ulating the conference object. Consequently, the floor control server needs to s | |||
arget="RFC6501"/> of the to-be created conference object provided in the body of | tay up to date on changes to the conference object (e.g., when a new floor is cr | |||
a CCMP confRequest/create message issued to the conference control server.</t> | eated).</t> | |||
</section> | <t indent="0" pn="section-3.1-2">Conference control clients using Centra | |||
lized Conferencing Manipulation Protocol (CCMP) <xref target="RFC6503" format="d | ||||
<section title="Obtaining Information to Contact a Floor Control Server" anc | efault" sectionFormat="of" derivedContent="23"/> can specify such floor-related | |||
hor="sec:scope:info"> | settings in the <floor-information> element <xref target="RFC6501" format= | |||
<t>A client needs a set of data in order to establish a BFCP connection to | "default" sectionFormat="of" derivedContent="22"/> of the to-be created conferen | |||
a floor control server. This data includes the transport address of the server, | ce object provided in the body of a CCMP confRequest/create message issued to th | |||
the conference identifier, and a user identifier.</t> | e conference control server.</t> | |||
<t>Clients can obtain this information in different ways. One is to use an | </section> | |||
SDP offer/answer <xref target="RFC3264"/> exchange, which is described in <xref | <section anchor="sec_scope_info" numbered="true" toc="include" removeInRFC | |||
target="I-D.ietf-bfcpbis-rfc4583bis"/>. How to establish a connection to a BFCP | ="false" pn="section-3.2"> | |||
floor control server outside the context of an offer/answer exchange when using | <name slugifiedName="name-obtaining-information-to-co">Obtaining Informa | |||
a reliable transport is described in <xref target="RFC5018"/>. Other mechanisms | tion to Contact a Floor Control Server</name> | |||
are described in the XCON framework <xref target="RFC5239"/> (and other related | <t indent="0" pn="section-3.2-1">A client needs a set of data in order t | |||
documents). For unreliable transports, the use of an SDP offer/answer exchange | o establish a BFCP connection to a floor control server. These data include the | |||
is the only specified mechanism.</t> | transport address of the server, the conference identifier, and a user identifie | |||
</section> | r.</t> | |||
<t indent="0" pn="section-3.2-2">Clients can obtain this information in | ||||
<section title="Obtaining Floor-Resource Associations" anchor="sec:scope:ass | different ways. One is to use a Session Description Protocol (SDP) offer/answer | |||
ociations"> | <xref target="RFC3264" format="default" sectionFormat="of" derivedContent="17"/> | |||
<t>Floors are associated with resources. For example, a floor that control | exchange, which is described in <xref target="RFC8856" format="default" section | |||
s who talks at a given time has a particular audio session as its associated res | Format="of" derivedContent="12"/>. How to establish a connection to a BFCP floor | |||
ource. Associations between floors and resources are part of the conference obje | control server is outside the context of an offer/answer exchange when using a | |||
ct.</t> | reliable transport is described in <xref target="RFC5018" format="default" secti | |||
<t>Floor participants and floor chairs need to know which resources are as | onFormat="of" derivedContent="4"/>. Other mechanisms are described in the XCON F | |||
sociated with which floors. They can obtain this information by using different | ramework <xref target="RFC5239" format="default" sectionFormat="of" derivedConte | |||
mechanisms, such as an SDP offer/answer <xref target="RFC3264"/> exchange. How t | nt="19"/> (and other related documents). For unreliable transports, the use of a | |||
o use an SDP offer/answer exchange to obtain these associations is described in | n SDP offer/answer exchange is the only specified mechanism.</t> | |||
<xref target="I-D.ietf-bfcpbis-rfc4583bis"/>.</t> | </section> | |||
<t><list style="hanging"> | <section anchor="sec_scope_associations" numbered="true" toc="include" rem | |||
<t>Note that floor participants perform SDP offer/answer exchanges wit | oveInRFC="false" pn="section-3.3"> | |||
h the conference focus of the conference. So, the conference focus needs to obta | <name slugifiedName="name-obtaining-floor-resource-as">Obtaining Floor-R | |||
in information about associations between floors and resources in order to be ab | esource Associations</name> | |||
le to provide this information to a floor participant in an SDP offer/answer exc | <t indent="0" pn="section-3.3-1">Floors are associated with resources. F | |||
hange.</t> | or example, a floor that controls who talks at a given time has a particular aud | |||
</list></t> | io session as its associated resource. Associations between floors and resources | |||
<t>Other mechanisms for obtaining this information, including discussion o | are part of the conference object.</t> | |||
f how the information is made available to a (SIP) Focus, are described in the X | <t indent="0" pn="section-3.3-2">Floor participants and floor chairs nee | |||
CON framework <xref target="RFC5239"/> (and other related documents). According | d to know which resources are associated with which floors. They can obtain this | |||
to the conferencing system policies, conference control clients using CCMP <xref | information by using different mechanisms, such as an SDP offer/answer <xref ta | |||
target="RFC6503"/> can modify the floor settings of a conference by issuing CCM | rget="RFC3264" format="default" sectionFormat="of" derivedContent="17"/> exchang | |||
P confRequest/update messages providing the specific updates to the <floor-in | e. How to use an SDP offer/answer exchange to obtain these associations is descr | |||
formation> element of the target conference object. More information about CC | ibed in <xref target="RFC8856" format="default" sectionFormat="of" derivedConten | |||
MP and BFCP interaction can be found in <xref target="RFC6504"/>.</t> | t="12"/>.</t> | |||
</section> | <aside pn="section-3.3-3"> | |||
<t indent="0" pn="section-3.3-3.1">Note that floor participants perfor | ||||
<section title="Privileges of Floor Control" anchor="sec:scope:policy"> | m SDP offer/answer exchanges with the conference focus of the conference. So, th | |||
<t>A participant whose floor request is granted has the right to use the r | e conference focus needs to obtain information about associations between floors | |||
esource or resources associated with the floor that was requested. For example, | and resources in order to be able to provide this information to a floor partic | |||
the participant may have the right to send media over a particular audio stream. | ipant in an SDP offer/answer exchange.</t> | |||
</t> | </aside> | |||
<t>Nevertheless, holding a floor does not imply that others will not be ab | <t indent="0" pn="section-3.3-4">Other mechanisms for obtaining this inf | |||
le to use its associated resources at the same time, even if they do not have th | ormation, including discussion of how the information is made available to a (SI | |||
e right to do so. Determination of which media participants can actually use the | P) focus, are described in the XCON Framework <xref target="RFC5239" format="def | |||
resources in the conference is discussed in the XCON Framework <xref target="RF | ault" sectionFormat="of" derivedContent="19"/> (and other related documents). Ac | |||
C5239"/>.</t> | cording to the conferencing system policies, conference control clients using CC | |||
MP <xref target="RFC6503" format="default" sectionFormat="of" derivedContent="23 | ||||
"/> can modify the floor settings of a conference by issuing CCMP confRequest/up | ||||
date messages providing the specific updates to the <floor-information> el | ||||
ement of the target conference object. More information about CCMP and BFCP inte | ||||
raction can be found in <xref target="RFC6504" format="default" sectionFormat="o | ||||
f" derivedContent="24"/>.</t> | ||||
</section> | ||||
<section anchor="sec_scope_policy" numbered="true" toc="include" removeInR | ||||
FC="false" pn="section-3.4"> | ||||
<name slugifiedName="name-privileges-of-floor-control">Privileges of Flo | ||||
or Control</name> | ||||
<t indent="0" pn="section-3.4-1">A participant whose floor request is gr | ||||
anted has the right to use the resource or resources associated with the floor t | ||||
hat was requested. For example, the participant may have the right to send media | ||||
over a particular audio stream.</t> | ||||
<t indent="0" pn="section-3.4-2">Nevertheless, holding a floor does not | ||||
imply that others will not be able to use its associated resources at the same t | ||||
ime, even if they do not have the right to do so. Determination of which media p | ||||
articipants can actually use the resources in the conference is discussed in the | ||||
XCON Framework <xref target="RFC5239" format="default" sectionFormat="of" deriv | ||||
edContent="19"/>.</t> | ||||
</section> | ||||
</section> | </section> | |||
</section> | <section anchor="sec_overview" numbered="true" toc="include" removeInRFC="fa | |||
lse" pn="section-4"> | ||||
<section title="Overview of Operation" anchor="sec:overview"> | <name slugifiedName="name-overview-of-operation">Overview of Operation</na | |||
<t>This section provides a non-normative description of BFCP operations. <xr | me> | |||
ef target="sec:overview:user"/> describes the interface between floor participan | <t indent="0" pn="section-4-1">This section provides a non-normative descr | |||
ts and floor control servers, and <xref target="sec:overview:chair"/> describes | iption of BFCP operations. <xref target="sec_overview_user" format="default" sec | |||
the interface between floor chairs and floor control servers.</t> | tionFormat="of" derivedContent="Section 4.1"/> describes the interface between f | |||
<t>BFCP messages, which use a TLV (Type-Length-Value) binary encoding, consi | loor participants and floor control servers, and <xref target="sec_overview_chai | |||
st of a common header followed by a set of attributes. The common header contain | r" format="default" sectionFormat="of" derivedContent="Section 4.2"/> describes | |||
s, among other information, a 32-bit conference identifier. Floor participants, | the interface between floor chairs and floor control servers.</t> | |||
media participants, and floor chairs are identified by 16-bit user identifiers.< | <t indent="0" pn="section-4-2">BFCP messages, which use a TLV (Type-Length | |||
/t> | -Value) binary encoding, consist of a COMMON-HEADER followed by a set of attribu | |||
<t>BFCP supports nested attributes (i.e., attributes that contain attributes | tes. The COMMON-HEADER contains, among other information, a 32-bit conference id | |||
). These are referred to as grouped attributes.</t> | entifier. Floor participants, media participants, and floor chairs are identifie | |||
<t>There are two types of transactions in BFCP: client-initiated transaction | d by 16-bit user identifiers.</t> | |||
s and server-initiated transactions. <xref target="sec:transactions"/> describes | <t indent="0" pn="section-4-3">BFCP supports nested attributes (i.e., attr | |||
both types of transactions in detail.</t> | ibutes that contain attributes). These are referred to as grouped attributes.</t | |||
> | ||||
<section title="Floor Participant to Floor Control Server Interface" anchor= | <t indent="0" pn="section-4-4">There are two types of transactions in BFCP | |||
"sec:overview:user"> | : client-initiated transactions and server-initiated transactions. <xref target= | |||
<t>Floor participants request a floor by sending a FloorRequest message to | "sec_transactions" format="default" sectionFormat="of" derivedContent="Section 8 | |||
the floor control server. BFCP supports third-party floor requests. That is, th | "/> describes both types of transactions in detail.</t> | |||
e floor participant sending the floor request need not be colocated with the med | <section anchor="sec_overview_user" numbered="true" toc="include" removeIn | |||
ia participant that will get the floor once the floor request is granted. FloorR | RFC="false" pn="section-4.1"> | |||
equest messages carry the identity of the requester in the User ID field of the | <name slugifiedName="name-floor-participant-to-floor-">Floor Participant | |||
common header, and the identity of the beneficiary of the floor (in third-party | to Floor Control Server Interface</name> | |||
floor requests) in a BENEFICIARY-ID attribute.</t> | <t indent="0" pn="section-4.1-1">Floor participants request a floor by s | |||
<t><list style="hanging"> | ending a FloorRequest message to the floor control server. BFCP supports third-p | |||
<t>Third-party floor requests can be sent, for example, by floor parti | arty floor requests. That is, the floor participant sending the floor request ne | |||
cipants that have a BFCP connection to the floor control server but that are not | ed not be co-located with the media participant that will get the floor once the | |||
media participants (i.e., they do not handle any media).</t> | floor request is granted. FloorRequest messages carry the identity of the reque | |||
</list></t> | ster in the User ID field of the COMMON-HEADER, and the identity of the benefici | |||
<t>FloorRequest messages identify the floor or floors being requested by c | ary of the floor (in third-party floor requests) in a BENEFICIARY-ID attribute.< | |||
arrying their 16-bit floor identifiers in FLOOR-ID attributes. If a FloorRequest | /t> | |||
message carries more than one floor identifier, the floor control server treats | <aside pn="section-4.1-2"> | |||
all the floor requests as an atomic package. That is, the floor control server | <t indent="0" pn="section-4.1-2.1">Third-party floor requests can be s | |||
either grants or denies all the floors in the FloorRequest message.</t> | ent, for example, by floor participants that have a BFCP connection to the floor | |||
<t>Floor control servers respond to FloorRequest messages with FloorReques | control server but that are not media participants (i.e., they do not handle an | |||
tStatus messages, which provide information about the status of the floor reques | y media).</t> | |||
t. The first FloorRequestStatus message is the response to the FloorRequest mess | </aside> | |||
age from the client, and therefore has the same Transaction ID as the FloorReque | <t indent="0" pn="section-4.1-3">FloorRequest messages identify the floo | |||
st.</t> | r or floors being requested by carrying their 16-bit floor identifiers in FLOOR- | |||
<t>Additionally, the first FloorRequestStatus message carries the Floor Re | ID attributes. If a FloorRequest message carries more than one floor identifier, | |||
quest ID in a FLOOR-REQUEST-INFORMATION attribute. Subsequent FloorRequestStatus | the floor control server treats all the floor requests as an atomic package. Th | |||
messages related to the same floor request will carry the same Floor Request ID | at is, the floor control server either grants or denies all the floors in the Fl | |||
. This way, the floor participant can associate them with the appropriate floor | oorRequest message.</t> | |||
request.</t> | <t indent="0" pn="section-4.1-4">Floor control servers respond to FloorR | |||
<t>Messages from the floor participant related to a particular floor reque | equest messages with FloorRequestStatus messages, which provide information abou | |||
st also use the same Floor Request ID as the first FloorRequestStatus Message fr | t the status of the floor request. The first FloorRequestStatus message is the r | |||
om the floor control server.</t> | esponse to the FloorRequest message from the client, and therefore has the same | |||
<t>Figures 2 and 3 below show examples of call flows where BFCP is used ov | Transaction ID as the FloorRequest.</t> | |||
er a reliable transport. <xref target="app:unrelcallflow"/> shows the same call | <t indent="0" pn="section-4.1-5">Additionally, the first FloorRequestSta | |||
flow examples using an unreliable transport.</t> | tus message carries the Floor Request ID in a FLOOR-REQUEST-INFORMATION attribut | |||
<t><xref target="fig:flow1"/> shows how a floor participant requests a flo | e. Subsequent FloorRequestStatus messages related to the same floor request will | |||
or, obtains it, and, at a later time, releases it. This figure illustrates the u | carry the same Floor Request ID. This way, the floor participant can associate | |||
se, among other things, of the Transaction ID and the FLOOR-REQUEST-ID attribute | them with the appropriate floor request.</t> | |||
.</t> | <t indent="0" pn="section-4.1-6">Messages from the floor participant rel | |||
<t><figure anchor="fig:flow1" title="Requesting and releasing a floor"> | ated to a particular floor request also use the same Floor Request ID as the fir | |||
<artwork> | st FloorRequestStatus message from the floor control server.</t> | |||
<![CDATA[ | <t indent="0" pn="section-4.1-7"><xref target="fig_flow1" format="defaul | |||
t" sectionFormat="of" derivedContent="Figure 2"/> and <xref target="fig_flow2" f | ||||
ormat="default" sectionFormat="of" derivedContent="Figure 3"/> show examples of | ||||
call flows where BFCP is used over a reliable transport. <xref target="app_unrel | ||||
callflow" format="default" sectionFormat="of" derivedContent="Appendix A"/> show | ||||
s the same call flow examples using an unreliable transport.</t> | ||||
<t indent="0" pn="section-4.1-8"><xref target="fig_flow1" format="defaul | ||||
t" sectionFormat="of" derivedContent="Figure 2"/> shows how a floor participant | ||||
requests a floor, obtains it, and, at a later time, releases it. This figure ill | ||||
ustrates the use, among other things, of the Transaction ID and the FLOOR-REQUES | ||||
T-ID attribute.</t> | ||||
<figure anchor="fig_flow1" align="left" suppress-title="false" pn="figur | ||||
e-2"> | ||||
<name slugifiedName="name-requesting-and-releasing-a-">Requesting and | ||||
releasing a floor</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-4.1-9.1"> | ||||
Floor Participant Floor Control | Floor Participant Floor Control | |||
Server | Server | |||
|(1) FloorRequest | | |(1) FloorRequest | | |||
|Transaction ID: 123 | | |Transaction ID: 123 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID: 543 | | |FLOOR-ID: 543 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(2) FloorRequestStatus | | |(2) FloorRequestStatus | | |||
|Transaction ID: 123 | | |Transaction ID: 123 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Pending | | | Request Status: Pending | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(3) FloorRequestStatus | | |(3) FloorRequestStatus | | |||
|Transaction ID: 0 | | |Transaction ID: 0 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
| Queue Position: 1st | | | Queue Position: 1st | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(4) FloorRequestStatus | | |(4) FloorRequestStatus | | |||
|Transaction ID: 0 | | |Transaction ID: 0 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Granted | | | Request Status: Granted | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(5) FloorRelease | | |(5) FloorRelease | | |||
|Transaction ID: 154 | | |Transaction ID: 154 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-ID: 789 | | |FLOOR-REQUEST-ID: 789 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(6) FloorRequestStatus | | |(6) FloorRequestStatus | | |||
|Transaction ID: 154 | | |Transaction ID: 154 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Released | | | Request Status: Released | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| ]]> | |<----------------------------------------------|</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <t indent="0" pn="section-4.1-10"><xref target="fig_flow2" format="defau | |||
<t><xref target="fig:flow2"/> shows how a floor participant requests to be | lt" sectionFormat="of" derivedContent="Figure 3"/> shows how a floor participant | |||
informed on the status of a floor. The first FloorStatus message from the floor | requests to be informed on the status of a floor. The first FloorStatus message | |||
control server is the response to the FloorQuery message and, as such, has the | from the floor control server is the response to the FloorQuery message and, as | |||
same Transaction ID as the FloorQuery message.</t> | such, has the same Transaction ID as the FloorQuery message.</t> | |||
<t>Subsequent FloorStatus messages consist of server-initiated transaction | <t indent="0" pn="section-4.1-11">Subsequent FloorStatus messages consis | |||
s, and therefore their Transaction ID is 0 given this example uses a reliable tr | t of server-initiated transactions, and therefore their Transaction ID is 0 give | |||
ansport. FloorStatus message (2) indicates that there are currently two floor re | n this example uses a reliable transport. FloorStatus message (2) indicates that | |||
quests for the floor whose Floor ID is 543. FloorStatus message (3) indicates th | there are currently two floor requests for the floor whose Floor ID is 543. Flo | |||
at the floor requests with Floor Request ID 764 has been granted, and the floor | orStatus message (3) indicates that the floor requests with Floor Request ID 764 | |||
request with Floor Request ID 635 is the first in the queue. FloorStatus message | has been granted, and the floor request with Floor Request ID 635 is the first | |||
(4) indicates that the floor request with Floor Request ID 635 has been granted | in the queue. FloorStatus message (4) indicates that the floor request with Floo | |||
.</t> | r Request ID 635 has been granted.</t> | |||
<t><figure anchor="fig:flow2" title="Obtaining status information about a | <figure anchor="fig_flow2" align="left" suppress-title="false" pn="figur | |||
floor"> | e-3"> | |||
<artwork> | <name slugifiedName="name-obtaining-status-informatio">Obtaining statu | |||
<![CDATA[ | s information about a floor</name> | |||
<artwork name="" type="" align="left" alt="" pn="section-4.1-12.1"> | ||||
Floor Participant Floor Control | Floor Participant Floor Control | |||
Server | Server | |||
|(1) FloorQuery | | |(1) FloorQuery | | |||
|Transaction ID: 257 | | |Transaction ID: 257 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID: 543 | | |FLOOR-ID: 543 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(2) FloorStatus | | |(2) FloorStatus | | |||
|Transaction ID: 257 | | |Transaction ID: 257 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID:543 | | |FLOOR-ID:543 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 764 | | | Floor Request ID: 764 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
| Queue Position: 1st | | | Queue Position: 1st | | |||
skipping to change at line 304 ¶ | skipping to change at line 798 ¶ | |||
| Beneficiary ID: 124 | | | Beneficiary ID: 124 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 635 | | | Floor Request ID: 635 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
| Queue Position: 2nd | | | Queue Position: 2nd | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
| BENEFICIARY-INFORMATION | | | BENEFICIARY-INFORMATION | | |||
| Beneficiary ID: 154 | | | Beneficiary ID: 154 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(3) FloorStatus | | |(3) FloorStatus | | |||
|Transaction ID: 0 | | |Transaction ID: 0 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID:543 | | |FLOOR-ID:543 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 764 | | | Floor Request ID: 764 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Granted | | | Request Status: Granted | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
skipping to change at line 327 ¶ | skipping to change at line 821 ¶ | |||
| Beneficiary ID: 124 | | | Beneficiary ID: 124 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 635 | | | Floor Request ID: 635 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
| Queue Position: 1st | | | Queue Position: 1st | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
| BENEFICIARY-INFORMATION | | | BENEFICIARY-INFORMATION | | |||
| Beneficiary ID: 154 | | | Beneficiary ID: 154 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(4) FloorStatus | | |(4) FloorStatus | | |||
|Transaction ID: 0 | | |Transaction ID: 0 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID:543 | | |FLOOR-ID:543 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 635 | | | Floor Request ID: 635 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Granted | | | Request Status: Granted | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
| BENEFICIARY-INFORMATION | | | BENEFICIARY-INFORMATION | | |||
| Beneficiary ID: 154 | | | Beneficiary ID: 154 | | |||
|<----------------------------------------------| ]]> | |<----------------------------------------------|</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <t indent="0" pn="section-4.1-13">FloorStatus messages contain informati | |||
<t>FloorStatus messages contain information about the floor requests they | on about the floor requests | |||
carry. For example, FloorStatus message (4) indicates that the floor request wit | they carry. For example, FloorStatus message (4) indicates that the | |||
h Floor Request ID 635 has as the beneficiary (i.e., the participant that holds | floor request with Floor Request ID 635 has as the beneficiary (i.e., | |||
the floor when a particular floor request is granted) the participant whose User | the participant that holds the floor when a particular floor request is | |||
ID is 154. The floor request applies only to the floor whose Floor ID is 543. T | granted) the participant whose User ID is 154. The floor request applies | |||
hat is, this is not a multi-floor floor request.</t> | only to the floor whose Floor ID is 543. That is, this is not a | |||
<t><list style="hanging"> | multi-floor floor request.</t> | |||
<t>A multi-floor floor request applies to more than one floor (e.g., a | <aside pn="section-4.1-14"> | |||
participant wants to be able to speak and write on the whiteboard at the same t | <t indent="0" pn="section-4.1-14.1">A multi-floor floor request applie | |||
ime). The floor control server treats a multi-floor floor request as an atomic p | s to more than one floor (e.g., a participant wants to be able to speak and writ | |||
ackage. That is, the floor control server either grants the request for all floo | e on the whiteboard at the same time). The floor control server treats a multi-f | |||
rs or denies the request for all floors.</t> | loor floor request as an atomic package. That is, the floor control server eithe | |||
</list></t> | r grants the request for all floors or denies the request for all floors.</t> | |||
</section> | </aside> | |||
</section> | ||||
<section title="Floor Chair to Floor Control Server Interface" anchor="sec:o | <section anchor="sec_overview_chair" numbered="true" toc="include" removeI | |||
verview:chair"> | nRFC="false" pn="section-4.2"> | |||
<t><xref target="fig:flow3"/> shows a floor chair instructing a floor cont | <name slugifiedName="name-floor-chair-to-floor-contro">Floor Chair to Fl | |||
rol server to grant a floor.</t> | oor Control Server Interface</name> | |||
<t><list style="empty"> | <t indent="0" pn="section-4.2-1"><xref target="fig_flow3" format="defaul | |||
<t>Note, however, that although the floor control server needs to take | t" sectionFormat="of" derivedContent="Figure 4"/> shows a floor chair instructin | |||
into consideration the instructions received in ChairAction messages (e.g., gra | g a floor control server to grant a floor.</t> | |||
nting a floor), it does not necessarily need to perform them exactly as requeste | <aside pn="section-4.2-2"> | |||
d by the floor chair. The operation that the floor control server performs depen | <t indent="0" pn="section-4.2-2.1">Note, however, that although the fl | |||
ds on the ChairAction message and on the internal state of the floor control ser | oor control server needs to take into consideration the instructions received in | |||
ver.</t> | ChairAction messages (e.g., granting a floor), it does not necessarily need to | |||
</list></t> | perform them exactly as requested by the floor chair. The operation that the flo | |||
<t>For example, a floor chair may send a ChairAction message granting a fl | or control server performs depends on the ChairAction message and on the interna | |||
oor that was requested as part of an atomic floor request operation that involve | l state of the floor control server.</t> | |||
d several floors. Even if the chair responsible for one of the floors instructs | </aside> | |||
the floor control server to grant the floor, the floor control server will not g | <t indent="0" pn="section-4.2-3">For example, a floor chair may send a C | |||
rant it until the chairs responsible for the other floors agree to grant them as | hairAction message granting a floor that was requested as part of an atomic floo | |||
well. In another example, a floor chair may instruct the floor control server t | r request operation that involved several floors. Even if the chair responsible | |||
o grant a floor to a participant. The floor control server needs to revoke the f | for one of the floors instructs the floor control server to grant the floor, the | |||
loor from its current holder before granting it to the new participant.</t> | floor control server will not grant it until the chairs responsible for the oth | |||
<t>So, the floor control server is ultimately responsible for keeping a co | er floors agree to grant them as well. In another example, a floor chair may ins | |||
herent floor state using instructions from floor chairs as input to this state.< | truct the floor control server to grant a floor to a participant. The floor cont | |||
/t> | rol server needs to revoke the floor from its current holder before granting it | |||
<t><figure anchor="fig:flow3" title="Chair instructing the floor control s | to the new participant.</t> | |||
erver"> | <t indent="0" pn="section-4.2-4">So, the floor control server is ultimat | |||
<artwork> | ely responsible for keeping a coherent floor state using instructions from floor | |||
<![CDATA[ | chairs as input to this state.</t> | |||
<figure anchor="fig_flow3" align="left" suppress-title="false" pn="figur | ||||
e-4"> | ||||
<name slugifiedName="name-chair-instructing-the-floor">Chair instructi | ||||
ng the floor control server</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-4.2-5.1"> | ||||
Floor Chair Floor Control | Floor Chair Floor Control | |||
Server | Server | |||
|(1) ChairAction | | |(1) ChairAction | | |||
|Transaction ID: 769 | | |Transaction ID: 769 | | |||
|User ID: 357 | | |User ID: 357 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 635 | | | Floor Request ID: 635 | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
| Request Status: Granted | | | Request Status: Granted | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(2) ChairActionAck | | |(2) ChairActionAck | | |||
|Transaction ID: 769 | | |Transaction ID: 769 | | |||
|User ID: 357 | | |User ID: 357 | | |||
|<----------------------------------------------| ]]> | |<----------------------------------------------|</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | </section> | |||
</section> | </section> | |||
</section> | <section anchor="sec_format" numbered="true" toc="include" removeInRFC="fals | |||
e" pn="section-5"> | ||||
<section title="Packet Format" anchor="sec:format"> | <name slugifiedName="name-packet-format">Packet Format</name> | |||
<t>BFCP packets consist of a 12-octet common header followed by attributes. | <t indent="0" pn="section-5-1">BFCP packets consist of a 12-octet COMMON-H | |||
All the protocol values MUST be sent in network byte order.</t> | EADER followed by attributes. All the protocol values <bcp14>MUST</bcp14> be sen | |||
t in network byte order.</t> | ||||
<section title="COMMON-HEADER Format" anchor="sec:format:common"> | <section anchor="sec_format_common" numbered="true" toc="include" removeIn | |||
<t>The following is the format of the common header.</t> | RFC="false" pn="section-5.1"> | |||
<t><figure title="COMMON-HEADER format" anchor="fig:common"> | <name slugifiedName="name-common-header-format">COMMON-HEADER Format</na | |||
<artwork><![CDATA[ | me> | |||
<t indent="0" pn="section-5.1-1">The following is the format of the COMM | ||||
ON-HEADER.</t> | ||||
<figure anchor="fig_common" align="left" suppress-title="false" pn="figu | ||||
re-5"> | ||||
<name slugifiedName="name-common-header-format-2">COMMON-HEADER format | ||||
</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.1-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Ver |R|F| Res | Primitive | Payload Length | | | Ver |R|F| Res | Primitive | Payload Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Conference ID | | | Conference ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Transaction ID | User ID | | | Transaction ID | User ID | | |||
+> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Fragment Offset (if F is set) | Fragment Length (if F is set) | | | | Fragment Offset (if F is set) | Fragment Length (if F is set) | | |||
+> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | |||
+---- These fragment fields are never present | +---- These fragment fields are never present | |||
when using reliable transports ]]> | when using reliable transports</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.1-3"> | |||
<t>Ver: This 3-bit field defines the version of BFCP that this message adh | <dt pn="section-5.1-3.1">Ver:</dt> | |||
eres to. This specification defines two versions: 1 and 2. The version field MUS | <dd pn="section-5.1-3.2">This 3-bit field defines the version of BFCP | |||
T be set to 1 when using BFCP over a reliable transport. The version field MUST | to which this message adheres. This specification defines two versions: 1 and 2. | |||
be set to 2 when using BFCP over an unreliable transport. If a floor control se | The version field <bcp14>MUST</bcp14> be set to 1 when using BFCP over a reliab | |||
rver receives a message with an unsupported version field value or a message wit | le transport. The version field <bcp14>MUST</bcp14> be set to 2 when using BFCP | |||
h a version number that is not permitted with the transport over which it was re | over an unreliable transport. If a floor control server receives a message with | |||
ceived, the server MUST indicate it does not support the protocol version by sen | an unsupported version field value or a message with a version number that is n | |||
ding an Error message with parameter value 12 (Unsupported Version). Note that | ot permitted with the transport over which it was received, the server <bcp14>MU | |||
BFCP entities supporting only the <xref target="RFC4582"/> subset will not suppo | ST</bcp14> indicate it does not support the protocol version by sending an Error | |||
rt this parameter value.</t> | message with parameter value 12 (Unsupported Version). Note that BFCP entities | |||
<t>R: The Transaction Responder (R) flag-bit has relevance only for use of | supporting only the <xref target="RFC4582" format="default" sectionFormat="of" | |||
BFCP over an unreliable transport. When cleared, it indicates that this message | derivedContent="3"/> subset will not support this parameter value.</dd> | |||
is a request initiating a new transaction, and the Transaction ID that follows | <dt pn="section-5.1-3.3">R:</dt> | |||
has been generated for this transaction. When set, it indicates that this messag | <dd pn="section-5.1-3.4">The Transaction Responder (R) flag bit has re | |||
e is a response to a previous request, and the Transaction ID that follows is th | levance only for use of BFCP over an unreliable transport. When cleared, it indi | |||
e one associated with that request. When BFCP is used over a reliable transport, | cates that this message is a request initiating a new transaction, and the Trans | |||
the flag has no significance and MUST be cleared by the sender and MUST be igno | action ID that follows has been generated for this transaction. When set, it ind | |||
red by the receiver.</t> | icates that this message is a response to a previous request, and the Transactio | |||
<t>F: The Fragmentation (F) flag-bit has relevance only for use of BFCP ov | n ID that follows is the one associated with that request. When BFCP is used ove | |||
er an unreliable transport. When cleared, the message is not fragmented. When se | r a reliable transport, the flag has no significance and <bcp14>MUST</bcp14> be | |||
t, it indicates that the message is a fragment of a large fragmented BFCP messag | cleared by the sender and <bcp14>MUST</bcp14> be ignored by the receiver.</dd> | |||
e. (The optional fields Fragment Offset and Fragment Length described below are | <dt pn="section-5.1-3.5">F:</dt> | |||
present only if the F flag is set). When BFCP is used over a reliable transport, | <dd pn="section-5.1-3.6">The Fragmentation (F) flag bit has relevance | |||
the flag has no significance and MUST be cleared by the sender and the flag MUS | only for use of BFCP over an unreliable transport. When cleared, the message is | |||
T be ignored by the receiver. In the latter case, the receiver should also proce | not fragmented. When set, it indicates that the message is a fragment of a large | |||
ss the COMMON-HEADER as not having the Fragment Offset and Fragment Length field | , fragmented BFCP message. (The optional fields Fragment Offset and Fragment Len | |||
s present.</t> | gth described below are present only if the F flag is set). When BFCP is used o | |||
<t>Res: The 3 bits in the reserved field MUST be set to zero by the sender | ver a reliable transport, the flag has no significance and <bcp14>MUST</bcp14> b | |||
of the message and MUST be ignored by the receiver.</t> | e cleared by the sender, and the flag <bcp14>MUST</bcp14> be ignored by the rece | |||
<t>Primitive: This 8-bit field identifies the main purpose of the message. | iver. In the latter case, the receiver should also ignore the Fragment Offset an | |||
The following primitive values are defined:</t> | d Fragment Length fields when processing the COMMON-HEADER. | |||
<texttable title="BFCP primitives" anchor="tab:primitives"> | </dd> | |||
<ttcol align="center">Value</ttcol> | <dt pn="section-5.1-3.7">Res:</dt> | |||
<ttcol>Primitive</ttcol> | <dd pn="section-5.1-3.8">The 3 bits in the reserved field <bcp14>MUST< | |||
<ttcol>Direction</ttcol> | /bcp14> be set to zero by the sender of the message and <bcp14>MUST</bcp14> be i | |||
<c>1</c> <c>FloorRequest</c> <c><![CDATA[P -> S]]></c> | gnored by the receiver.</dd> | |||
<c>2</c> <c>FloorRelease</c> <c><![CDATA[P -> S]]></c> | <dt pn="section-5.1-3.9">Primitive:</dt> | |||
<c>3</c> <c>FloorRequestQuery</c> <c><![CDATA[P -> S ; Ch -> S | <dd pn="section-5.1-3.10">This 8-bit field identifies the main purpose | |||
]]></c> | of the | |||
<c>4</c> <c>FloorRequestStatus</c> <c><![CDATA[P <- S ; Ch <- S | message. The following primitive values are defined:</dd> | |||
]]></c> | </dl> | |||
<c>5</c> <c>UserQuery</c> <c><![CDATA[P -> S ; Ch -> S | <table anchor="tab_primitives" align="center" pn="table-1"> | |||
]]></c> | <name slugifiedName="name-bfcp-primitives">BFCP primitives</name> | |||
<c>6</c> <c>UserStatus</c> <c><![CDATA[P <- S ; Ch <- S | <thead> | |||
]]></c> | <tr> | |||
<c>7</c> <c>FloorQuery</c> <c><![CDATA[P -> S ; Ch -> S | <th align="center" colspan="1" rowspan="1">Value</th> | |||
]]></c> | <th align="left" colspan="1" rowspan="1">Primitive</th> | |||
<c>8</c> <c>FloorStatus</c> <c><![CDATA[P <- S ; Ch <- S | <th align="left" colspan="1" rowspan="1">Direction</th> | |||
]]></c> | </tr> | |||
<c>9</c> <c>ChairAction</c> <c><![CDATA[ Ch -> S | </thead> | |||
]]></c> | <tbody> | |||
<c>10</c> <c>ChairActionAck</c> <c><![CDATA[ Ch <- S | <tr> | |||
]]></c> | <td align="center" colspan="1" rowspan="1">1</td> | |||
<c>11</c> <c>Hello</c> <c><![CDATA[P -> S ; Ch -> S | <td align="left" colspan="1" rowspan="1">FloorRequest</td> | |||
]]></c> | <td align="left" colspan="1" rowspan="1">P -> S</td> | |||
<c>12</c> <c>HelloAck</c> <c><![CDATA[P <- S ; Ch <- S | </tr> | |||
]]></c> | <tr> | |||
<c>13</c> <c>Error</c> <c><![CDATA[P <- S ; Ch <- S | <td align="center" colspan="1" rowspan="1">2</td> | |||
]]></c> | <td align="left" colspan="1" rowspan="1">FloorRelease</td> | |||
<c>14</c> <c>FloorRequestStatusAck</c> <c><![CDATA[P -> S ; Ch -> S | <td align="left" colspan="1" rowspan="1">P -> S</td> | |||
]]></c> | </tr> | |||
<c>15</c> <c>FloorStatusAck</c> <c><![CDATA[P -> S ; Ch -> S] | <tr> | |||
]></c> | <td align="center" colspan="1" rowspan="1">3</td> | |||
<c>16</c> <c>Goodbye</c> <c><![CDATA[P -> S ; Ch -> S | <td align="left" colspan="1" rowspan="1">FloorRequestQuery</td> | |||
; ]]></c> | <td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | |||
<c> </c> <c></c> <c><![CDATA[P <- S ; Ch <- S | S</td> | |||
]]></c> | </tr> | |||
<c>17</c> <c>GoodbyeAck</c> <c><![CDATA[P -> S ; Ch -> S | <tr> | |||
; ]]></c> | <td align="center" colspan="1" rowspan="1">4</td> | |||
<c> </c> <c></c> <c><![CDATA[P <- S ; Ch <- S | <td align="left" colspan="1" rowspan="1">FloorRequestStatus</td> | |||
]]></c> | <td align="left" colspan="1" rowspan="1">P <- S ; Ch <- | |||
<postamble> | S</td> | |||
S: Floor Control Server / P: Floor Participant / Ch: Floor Chair | </tr> | |||
</postamble> | <tr> | |||
</texttable> | <td align="center" colspan="1" rowspan="1">5</td> | |||
<t>Payload Length: This 16-bit field contains the length of the message in | <td align="left" colspan="1" rowspan="1">UserQuery</td> | |||
4-octet units, excluding the common header. If a Floor Control Server receives | <td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | |||
a message with an incorrect Payload Length field value, the receiving server MUS | S</td> | |||
T send an Error message with parameter value 13 (Incorrect Message Length) to in | </tr> | |||
dicate this and then discard the message. Other entities that receive a message | <tr> | |||
with an incorrect length MUST discard the message.</t> | <td align="center" colspan="1" rowspan="1">6</td> | |||
<t><list style="hanging"> | <td align="left" colspan="1" rowspan="1">UserStatus</td> | |||
<t>Note: BFCP is designed to achieve small message size, as explained | <td align="left" colspan="1" rowspan="1">P <- S ; Ch <- | |||
in <xref target="sec:intro"/>, and BFCP entities are required to keep the BFCP m | S</td> | |||
essage size smaller than the size limited by the 16-bit Payload Length field. To | </tr> | |||
convey information not strictly related to floor control, other protocols shoul | <tr> | |||
d be used such as the XCON framework (cf. <xref target="sec:scope"/>).</t> | <td align="center" colspan="1" rowspan="1">7</td> | |||
</list></t> | <td align="left" colspan="1" rowspan="1">FloorQuery</td> | |||
<t>Conference ID: This 32-bit unsigned integer field identifies the confer | <td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | |||
ence to which the message belongs. It is RECOMMENDED that the conference identi | S</td> | |||
fier be randomly chosen. (Note that the use of predictable conference identifie | </tr> | |||
rs in conjunction with a non-secure transport protocol makes BFCP susceptible to | <tr> | |||
off-path data injection attacks, where an attacker can forge a request or respo | <td align="center" colspan="1" rowspan="1">8</td> | |||
nse message.)</t> | <td align="left" colspan="1" rowspan="1">FloorStatus</td> | |||
<t>Transaction ID: This field contains a 16-bit value that allows users to | <td align="left" colspan="1" rowspan="1">P <- S ; Ch <- | |||
match a given message with its response (see <xref target="sec:transactions"/>) | S</td> | |||
.</t> | </tr> | |||
<t>User ID: This field contains a 16-bit unsigned integer that uniquely id | <tr> | |||
entifies a participant within a conference.</t> | <td align="center" colspan="1" rowspan="1">9</td> | |||
<t><list style="hanging"> | <td align="left" colspan="1" rowspan="1">ChairAction</td> | |||
<t>The identity used by a participant in BFCP, which is carried in the | <td align="left" colspan="1" rowspan="1"> Ch -> S< | |||
User ID field, is generally mapped to the identity used by the same participant | /td> | |||
in the session establishment protocol (e.g., in SIP). The way this mapping is p | </tr> | |||
erformed is outside the scope of this specification.</t> | <tr> | |||
</list></t> | <td align="center" colspan="1" rowspan="1">10</td> | |||
<t>Fragment Offset: This optional field is present only if the F flag is s | <td align="left" colspan="1" rowspan="1">ChairActionAck</td> | |||
et and contains a 16-bit value that specifies the number of 4-octet units contai | <td align="left" colspan="1" rowspan="1"> Ch <- S< | |||
ned in previous fragments, excluding the common header.</t> | /td> | |||
<t>Fragment Length: This optional field is present only if the F flag is s | </tr> | |||
et and contains a 16-bit value that specifies the number of 4-octet units contai | <tr> | |||
ned in this fragment, excluding the common header. BFCP entities that receive m | <td align="center" colspan="1" rowspan="1">11</td> | |||
essage fragments that, individually or collectively, exceed the Payload Length v | <td align="left" colspan="1" rowspan="1">Hello</td> | |||
alue MUST discard the message. Additionally, if the receiver is a Floor Control | <td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | |||
Server, it must also send an Error message with parameter value 13 (Incorrect M | S</td> | |||
essage Length)</t> | </tr> | |||
</section> | <tr> | |||
<td align="center" colspan="1" rowspan="1">12</td> | ||||
<section title="Attribute Format" anchor="sec:format:attributes"> | <td align="left" colspan="1" rowspan="1">HelloAck</td> | |||
<t>BFCP attributes are encoded in TLV (Type-Length-Value) format. Attribut | <td align="left" colspan="1" rowspan="1">P <- S ; Ch <- | |||
es are 32-bit aligned.</t> | S</td> | |||
<t><figure title="Attribute format" anchor="sec:format:tlv"> | </tr> | |||
<artwork> | <tr> | |||
<td align="center" colspan="1" rowspan="1">13</td> | ||||
<td align="left" colspan="1" rowspan="1">Error</td> | ||||
<td align="left" colspan="1" rowspan="1">P <- S ; Ch <- | ||||
S</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">14</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorRequestStatusAck</td | ||||
> | ||||
<td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | ||||
S</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">15</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorStatusAck</td> | ||||
<td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | ||||
S</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">16</td> | ||||
<td align="left" colspan="1" rowspan="1">Goodbye</td> | ||||
<td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | ||||
S ; P <- S ; Ch <- S</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">17</td> | ||||
<td align="left" colspan="1" rowspan="1">GoodbyeAck</td> | ||||
<td align="left" colspan="1" rowspan="1">P -> S ; Ch -> | ||||
S ; P <- S ; Ch <- S</td> | ||||
</tr> | ||||
</tbody> | ||||
<tfoot> | ||||
<tr> | ||||
<td align="left" colspan="3" rowspan="1"> | ||||
<t indent="0" pn="section-5.1-4.3.1.1.1">S: Floor Control Server | ||||
<br/>P: Floor Participant<br/>Ch: Floor Chair</t> | ||||
</td> | ||||
</tr> | ||||
</tfoot> | ||||
</table> | ||||
<t indent="0" pn="section-5.1-5"> | ||||
</t> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-5.1-6"> | ||||
<dt pn="section-5.1-6.1">Payload Length:</dt> | ||||
<dd pn="section-5.1-6.2">This 16-bit field contains the length of | ||||
the message in 4-octet units, excluding the COMMON-HEADER. If a floor | ||||
control server receives a message with an incorrect Payload Length | ||||
field value, the receiving server <bcp14>MUST</bcp14> send an Error | ||||
message with parameter value 13 (Incorrect Message Length) to indicate | ||||
this and then discard the message. Other entities that receive a | ||||
message with an incorrect length <bcp14>MUST</bcp14> discard the | ||||
message.</dd> | ||||
</dl> | ||||
<aside pn="section-5.1-7"> | ||||
<t indent="0" pn="section-5.1-7.1">Note: BFCP is designed to achieve s | ||||
mall message size, as explained in <xref target="sec_intro" format="default" sec | ||||
tionFormat="of" derivedContent="Section 1"/>, and BFCP entities are <bcp14>REQUI | ||||
RED</bcp14> to keep the BFCP message size smaller than the size limited by the 1 | ||||
6-bit Payload Length field. To convey information not strictly related to floor | ||||
control, other protocols should be used, such as the XCON Framework (cf. <xref t | ||||
arget="sec_scope" format="default" sectionFormat="of" derivedContent="Section 3" | ||||
/>).</t> | ||||
</aside> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-5.1-8"> | ||||
<dt pn="section-5.1-8.1">Conference ID:</dt> | ||||
<dd pn="section-5.1-8.2">This 32-bit unsigned integer field identifies | ||||
the conference to which the message belongs. It is <bcp14>RECOMMENDED</bcp14> | ||||
that the conference identifier be randomly chosen. (Note that the use of predic | ||||
table conference identifiers in conjunction with a nonsecure transport protocol | ||||
makes BFCP susceptible to off-path data injection attacks, where an attacker can | ||||
forge a request or response message.)</dd> | ||||
<dt pn="section-5.1-8.3">Transaction ID:</dt> | ||||
<dd pn="section-5.1-8.4">This field contains a 16-bit value that allow | ||||
s users to match a given message with its response (see <xref target="sec_transa | ||||
ctions" format="default" sectionFormat="of" derivedContent="Section 8"/>).</dd> | ||||
<dt pn="section-5.1-8.5">User ID:</dt> | ||||
<dd pn="section-5.1-8.6">This field contains a 16-bit unsigned integer | ||||
that uniquely identifies a participant within a conference.</dd> | ||||
</dl> | ||||
<aside pn="section-5.1-9"> | ||||
<t indent="0" pn="section-5.1-9.1">The identity used by a participant | ||||
in BFCP, which is carried in the User ID field, is generally mapped to the ident | ||||
ity used by the same participant in the session establishment protocol (e.g., in | ||||
SIP). The way this mapping is performed is outside the scope of this specificat | ||||
ion.</t> | ||||
</aside> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-5.1-10"> | ||||
<dt pn="section-5.1-10.1">Fragment Offset:</dt> | ||||
<dd pn="section-5.1-10.2">This optional field is present only if the F | ||||
flag is set and contains a 16-bit value that specifies the number of 4-octet un | ||||
its contained in previous fragments, excluding the COMMON-HEADER.</dd> | ||||
<dt pn="section-5.1-10.3">Fragment Length:</dt> | ||||
<dd pn="section-5.1-10.4">This optional field is present only if | ||||
the F flag is set and contains a 16-bit value that specifies the | ||||
number of 4-octet units contained in this fragment, excluding the | ||||
COMMON-HEADER. BFCP entities that receive message fragments that, | ||||
individually or collectively, exceed the Payload Length value | ||||
<bcp14>MUST</bcp14> discard the message. Additionally, if the | ||||
receiver is a floor control server, it <bcp14>MUST</bcp14> also send an E | ||||
rror message | ||||
with parameter value 13 (Incorrect Message Length)</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sec_format_attributes" numbered="true" toc="include" remo | ||||
veInRFC="false" pn="section-5.2"> | ||||
<name slugifiedName="name-attribute-format">Attribute Format</name> | ||||
<t indent="0" pn="section-5.2-1">BFCP attributes are encoded in TLV (Typ | ||||
e-Length-Value) format. Attributes are 32-bit aligned.</t> | ||||
<figure anchor="sec_format_tlv" align="left" suppress-title="false" pn=" | ||||
figure-6"> | ||||
<name slugifiedName="name-attribute-format-2">Attribute format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type |M| Length | | | | Type |M| Length | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | |||
/ Attribute Contents / | / Attribute Contents / | |||
/ / | / / | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | ||||
</figure> | </figure> | |||
</t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2-3"> | |||
<t>Type: This 7-bit field contains the type of the attribute. Each attribu | <dt pn="section-5.2-3.1">Type:</dt> | |||
te, identified by its type, has a particular format. The attribute formats defin | <dd pn="section-5.2-3.2"> | |||
ed are:</t> | <t indent="0" pn="section-5.2-3.2.1">This 7-bit field contains the t | |||
<t><list style="hanging"> | ype of the attribute. Each attribute, identified by its type, has a particular f | |||
<t>Unsigned16: The contents of the attribute consist of a 16-bit unsig | ormat. The attribute formats defined are:</t> | |||
ned integer.</t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2-3.2. | |||
<t>OctetString16: The contents of the attribute consist of 16 bits of | 2"> | |||
arbitrary data.</t> | <dt pn="section-5.2-3.2.2.1">Unsigned16:</dt> | |||
<t>OctetString: The contents of the attribute consist of arbitrary dat | <dd pn="section-5.2-3.2.2.2">The contents of the attribute consist | |||
a of variable length.</t> | of a 16-bit unsigned integer.</dd> | |||
<t>Grouped: The contents of the attribute consist of a sequence of att | <dt pn="section-5.2-3.2.2.3">OctetString16:</dt> | |||
ributes.</t> | <dd pn="section-5.2-3.2.2.4">The contents of the attribute consist | |||
<t>Note that extension attributes defined in the future may define new | of 16 bits of arbitrary data.</dd> | |||
attribute formats.</t> | <dt pn="section-5.2-3.2.2.5">OctetString:</dt> | |||
</list></t> | <dd pn="section-5.2-3.2.2.6">The contents of the attribute consist | |||
<t>The following attribute types are defined:</t> | of arbitrary data of variable length.</dd> | |||
<texttable title="BFCP attributes" anchor="tab:attributes"> | <dt pn="section-5.2-3.2.2.7">Grouped:</dt> | |||
<ttcol align="center">Type</ttcol> | <dd pn="section-5.2-3.2.2.8">The contents of the attribute consist | |||
<ttcol>Attribute</ttcol> | of a sequence of attributes.</dd> | |||
<ttcol>Format</ttcol> | </dl> | |||
<c>1</c> <c>BENEFICIARY-ID</c> <c>Unsigned16</c> | </dd> | |||
<c>2</c> <c>FLOOR-ID</c> <c>Unsigned16</c> | </dl> | |||
<c>3</c> <c>FLOOR-REQUEST-ID</c> <c>Unsigned16</c> | <aside pn="section-5.2-4"> | |||
<c>4</c> <c>PRIORITY</c> <c>OctetString16</c> | <t indent="0" pn="section-5.2-4.1">Note that extension attributes defi | |||
<c>5</c> <c>REQUEST-STATUS</c> <c>OctetString16</c> | ned in the future may define new attribute formats.</t> | |||
<c>6</c> <c>ERROR-CODE</c> <c>OctetString</c> | </aside> | |||
<c>7</c> <c>ERROR-INFO</c> <c>OctetString</c> | <t indent="0" pn="section-5.2-5">The following attribute types are defin | |||
<c>8</c> <c>PARTICIPANT-PROVIDED-INFO</c> <c>OctetString</c> | ed:</t> | |||
<c>9</c> <c>STATUS-INFO</c> <c>OctetString</c> | <table anchor="tab_attributes" align="center" pn="table-2"> | |||
<c>10</c> <c>SUPPORTED-ATTRIBUTES</c> <c>OctetString</c> | <name slugifiedName="name-bfcp-attributes">BFCP attributes</name> | |||
<c>11</c> <c>SUPPORTED-PRIMITIVES</c> <c>OctetString</c> | <thead> | |||
<c>12</c> <c>USER-DISPLAY-NAME</c> <c>OctetString</c> | <tr> | |||
<c>13</c> <c>USER-URI</c> <c>OctetString</c> | <th align="center" colspan="1" rowspan="1">Type</th> | |||
<c>14</c> <c>BENEFICIARY-INFORMATION</c> <c>Grouped</c> | <th align="left" colspan="1" rowspan="1">Attribute</th> | |||
<c>15</c> <c>FLOOR-REQUEST-INFORMATION</c> <c>Grouped</c> | <th align="left" colspan="1" rowspan="1">Format</th> | |||
<c>16</c> <c>REQUESTED-BY-INFORMATION</c> <c>Grouped</c> | </tr> | |||
<c>17</c> <c>FLOOR-REQUEST-STATUS</c> <c>Grouped</c> | </thead> | |||
<c>18</c> <c>OVERALL-REQUEST-STATUS</c> <c>Grouped</c> | <tbody> | |||
</texttable> | <tr> | |||
<t>M: The 'M' bit, known as the Mandatory bit, indicates whether support o | <td align="center" colspan="1" rowspan="1">1</td> | |||
f the attribute is required. If a Floor Control Server receives an unrecognized | <td align="left" colspan="1" rowspan="1">BENEFICIARY-ID</td> | |||
attribute with the 'M' bit set the server MUST send an Error message with param | <td align="left" colspan="1" rowspan="1">Unsigned16</td> | |||
eter value 4 (Unknown Mandatory Attribute) to indicate this. The 'M' bit is sign | </tr> | |||
ificant for extension attributes defined in other documents only. All attributes | <tr> | |||
specified in this document MUST be understood by the receiver so that the setti | <td align="center" colspan="1" rowspan="1">2</td> | |||
ng of the 'M' bit is irrelevant for these. Unrecognized attributes, such as tho | <td align="left" colspan="1" rowspan="1">FLOOR-ID</td> | |||
se that might be specified in future extensions, that do not have the "M" bit se | <td align="left" colspan="1" rowspan="1">Unsigned16</td> | |||
t are ignored, but the message is processed.</t> | </tr> | |||
<t>Length: This 8-bit field contains the length of the attribute in octets | <tr> | |||
, excluding any padding defined for specific attributes. The length of attribut | <td align="center" colspan="1" rowspan="1">3</td> | |||
es that are not grouped includes the Type, 'M' bit, and Length fields. The Lengt | <td align="left" colspan="1" rowspan="1">FLOOR-REQUEST-ID</td> | |||
h in grouped attributes is the length of the grouped attribute itself (including | <td align="left" colspan="1" rowspan="1">Unsigned16</td> | |||
Type, 'M' bit, and Length fields) plus the total length (including padding) of | </tr> | |||
all the included attributes.</t> | <tr> | |||
<t>Attribute Contents: The contents of the different attributes are define | <td align="center" colspan="1" rowspan="1">4</td> | |||
d in the following sections.</t> | <td align="left" colspan="1" rowspan="1">PRIORITY</td> | |||
<td align="left" colspan="1" rowspan="1">OctetString16</td> | ||||
<section title="BENEFICIARY-ID" anchor="sec:format:attributes:beneficiaryi | </tr> | |||
d"> | <tr> | |||
<t>The following is the format of the BENEFICIARY-ID attribute.</t> | <td align="center" colspan="1" rowspan="1">5</td> | |||
<t><figure title="BENEFICIARY-ID format" anchor="sec:format:beneficiary- | <td align="left" colspan="1" rowspan="1">REQUEST-STATUS</td> | |||
id"> | <td align="left" colspan="1" rowspan="1">OctetString16</td> | |||
<artwork> | </tr> | |||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">6</td> | ||||
<td align="left" colspan="1" rowspan="1">ERROR-CODE</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">7</td> | ||||
<td align="left" colspan="1" rowspan="1">ERROR-INFO</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">8</td> | ||||
<td align="left" colspan="1" rowspan="1">PARTICIPANT-PROVIDED-INFO | ||||
</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">9</td> | ||||
<td align="left" colspan="1" rowspan="1">STATUS-INFO</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">10</td> | ||||
<td align="left" colspan="1" rowspan="1">SUPPORTED-ATTRIBUTES</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">11</td> | ||||
<td align="left" colspan="1" rowspan="1">SUPPORTED-PRIMITIVES</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">12</td> | ||||
<td align="left" colspan="1" rowspan="1">USER-DISPLAY-NAME</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">13</td> | ||||
<td align="left" colspan="1" rowspan="1">USER-URI</td> | ||||
<td align="left" colspan="1" rowspan="1">OctetString</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">14</td> | ||||
<td align="left" colspan="1" rowspan="1">BENEFICIARY-INFORMATION</ | ||||
td> | ||||
<td align="left" colspan="1" rowspan="1">Grouped</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">15</td> | ||||
<td align="left" colspan="1" rowspan="1">FLOOR-REQUEST-INFORMATION | ||||
</td> | ||||
<td align="left" colspan="1" rowspan="1">Grouped</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">16</td> | ||||
<td align="left" colspan="1" rowspan="1">REQUESTED-BY-INFORMATION< | ||||
/td> | ||||
<td align="left" colspan="1" rowspan="1">Grouped</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">17</td> | ||||
<td align="left" colspan="1" rowspan="1">FLOOR-REQUEST-STATUS</td> | ||||
<td align="left" colspan="1" rowspan="1">Grouped</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">18</td> | ||||
<td align="left" colspan="1" rowspan="1">OVERALL-REQUEST-STATUS</t | ||||
d> | ||||
<td align="left" colspan="1" rowspan="1">Grouped</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-5.2-7"> | ||||
<dt pn="section-5.2-7.1">M:</dt> | ||||
<dd pn="section-5.2-7.2">The 'M' bit, known as the Mandatory bit, indi | ||||
cates whether support of the attribute is <bcp14>REQUIRED</bcp14>. If a floor c | ||||
ontrol server receives an unrecognized attribute with the 'M' bit set, the serve | ||||
r <bcp14>MUST</bcp14> send an Error message with parameter value 4 (Unknown Mand | ||||
atory Attribute) to indicate this. The 'M' bit is significant for extension attr | ||||
ibutes defined in other documents only. All attributes specified in this documen | ||||
t <bcp14>MUST</bcp14> be understood by the receiver so that the setting of the ' | ||||
M' bit is irrelevant for these. Unrecognized attributes, such as those that mig | ||||
ht be specified in future extensions, that do not have the 'M' bit set are ignor | ||||
ed, but the message is processed.</dd> | ||||
<dt pn="section-5.2-7.3">Length:</dt> | ||||
<dd pn="section-5.2-7.4">This 8-bit field contains the length of the a | ||||
ttribute in octets, excluding any padding defined for specific attributes. The | ||||
length of attributes that are not grouped includes the Type, 'M' bit, and Length | ||||
fields. The Length in grouped attributes is the length of the grouped attribute | ||||
itself (including Type, 'M' bit, and Length fields) plus the total length (incl | ||||
uding padding) of all the included attributes.</dd> | ||||
<dt pn="section-5.2-7.5">Attribute Contents:</dt> | ||||
<dd pn="section-5.2-7.6">The contents of the different | ||||
attributes are defined in the following sections.</dd> | ||||
</dl> | ||||
<section anchor="sec_format_attributes_beneficiaryid" numbered="true" to | ||||
c="include" removeInRFC="false" pn="section-5.2.1"> | ||||
<name slugifiedName="name-beneficiary-id">BENEFICIARY-ID</name> | ||||
<t indent="0" pn="section-5.2.1-1">The following is the format of the | ||||
BENEFICIARY-ID attribute.</t> | ||||
<figure anchor="sec_format_beneficiary-id" align="left" suppress-title | ||||
="false" pn="figure-7"> | ||||
<name slugifiedName="name-beneficiary-id-format">BENEFICIARY-ID form | ||||
at</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.1-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 0 0 1|M|0 0 0 0 0 1 0 0| Beneficiary ID | | |0 0 0 0 0 0 1|M|0 0 0 0 0 1 0 0| Beneficiary ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.1-3"> | |||
<t>Beneficiary ID: This field contains a 16-bit value that uniquely iden | <dt pn="section-5.2.1-3.1">Beneficiary ID:</dt> | |||
tifies a user within a conference.</t> | <dd pn="section-5.2.1-3.2">This field contains a 16-bit value that | |||
<t><list style="empty"> | uniquely identifies a user within a conference.</dd> | |||
<t>Note that although the formats of the Beneficiary ID and of the U | </dl> | |||
ser ID field in the common header are similar, their semantics are different. Th | <aside pn="section-5.2.1-4"> | |||
e Beneficiary ID is used in third-party floor requests and to request informatio | <t indent="0" pn="section-5.2.1-4.1">Note that although the formats | |||
n about a particular participant.</t> | of the Beneficiary ID and of the User ID field in the COMMON-HEADER are similar, | |||
</list></t> | their semantics are different. The Beneficiary ID is used in third-party floor | |||
</section> | requests and to request information about a particular participant.</t> | |||
</aside> | ||||
<section title="FLOOR-ID" anchor="sec:format:attributes:floorid"> | </section> | |||
<t>The following is the format of the FLOOR-ID attribute.</t> | <section anchor="sec_format_attributes_floorid" numbered="true" toc="inc | |||
<t><figure title="FLOOR-ID format" anchor="sec:format:floor-id"> | lude" removeInRFC="false" pn="section-5.2.2"> | |||
<artwork> | <name slugifiedName="name-floor-id">FLOOR-ID</name> | |||
<t indent="0" pn="section-5.2.2-1">The following is the format of the | ||||
FLOOR-ID attribute.</t> | ||||
<figure anchor="sec_format_floor-id" align="left" suppress-title="fals | ||||
e" pn="figure-8"> | ||||
<name slugifiedName="name-floor-id-format">FLOOR-ID format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.2-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 0 1 0|M|0 0 0 0 0 1 0 0| Floor ID | | |0 0 0 0 0 1 0|M|0 0 0 0 0 1 0 0| Floor ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.2-3"> | |||
<t>Floor ID: This field contains a 16-bit value that uniquely identifies | <dt pn="section-5.2.2-3.1">Floor ID:</dt> | |||
a floor within a conference.</t> | <dd pn="section-5.2.2-3.2">This field contains a 16-bit value that | |||
</section> | uniquely identifies a floor within a conference.</dd> | |||
</dl> | ||||
<section title="FLOOR-REQUEST-ID" anchor="sec:format:attributes:floorreque | </section> | |||
stid"> | <section anchor="sec_format_attributes_floorrequestid" numbered="true" t | |||
<t>The following is the format of the FLOOR-REQUEST-ID attribute.</t> | oc="include" removeInRFC="false" pn="section-5.2.3"> | |||
<t><figure title="FLOOR-REQUEST-ID format" anchor="sec:format:floor-requ | <name slugifiedName="name-floor-request-id">FLOOR-REQUEST-ID</name> | |||
est-id"> | <t indent="0" pn="section-5.2.3-1">The following is the format of the | |||
<artwork> | FLOOR-REQUEST-ID attribute.</t> | |||
<figure anchor="sec_format_floor-request-id" align="left" suppress-tit | ||||
le="false" pn="figure-9"> | ||||
<name slugifiedName="name-floor-request-id-format">FLOOR-REQUEST-ID | ||||
format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.3-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 0 1 1|M|0 0 0 0 0 1 0 0| Floor Request ID | | |0 0 0 0 0 1 1|M|0 0 0 0 0 1 0 0| Floor Request ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.3-3"> | |||
<t>Floor Request ID: This field contains a 16-bit value that identifies | <dt pn="section-5.2.3-3.1">Floor Request ID:</dt> | |||
a floor request at the floor control server.</t> | <dd pn="section-5.2.3-3.2">This field contains a 16-bit value | |||
</section> | that identifies a floor request at the floor control server.</dd> | |||
</dl> | ||||
<section title="PRIORITY" anchor="sec:format:attributes:priority"> | </section> | |||
<t>The following is the format of the PRIORITY attribute.</t> | <section anchor="sec_format_attributes_priority" numbered="true" toc="in | |||
<t><figure title="PRIORITY format" anchor="sec:format:priority"> | clude" removeInRFC="false" pn="section-5.2.4"> | |||
<artwork> | <name slugifiedName="name-priority">PRIORITY</name> | |||
<t indent="0" pn="section-5.2.4-1">The following is the format of the | ||||
PRIORITY attribute.</t> | ||||
<figure anchor="sec_format_priority" align="left" suppress-title="fals | ||||
e" pn="figure-10"> | ||||
<name slugifiedName="name-priority-format">PRIORITY format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.4-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 1 0 0|M|0 0 0 0 0 1 0 0|Prio | Reserved | | |0 0 0 0 1 0 0|M|0 0 0 0 0 1 0 0|Prio | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | ||||
</figure> | </figure> | |||
</t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.4-3"> | |||
<t>Prio: This field contains a 3-bit priority value, as shown in <xref t | <dt pn="section-5.2.4-3.1">Prio:</dt> | |||
arget="tab:priority"/>. Senders SHOULD NOT use values higher than 4 in this fiel | <dd pn="section-5.2.4-3.2">This field contains a 3-bit Priority valu | |||
d. Receivers MUST treat values higher than 4 as if the value received were 4 (Hi | e, as | |||
ghest). The default priority value when the PRIORITY attribute is missing is 2 ( | shown in <xref target="tab_priority" format="default" sectionFormat="of | |||
Normal).</t> | " derivedContent="Table 3"/>. Senders | |||
<texttable title="Priority values" anchor="tab:priority"> | <bcp14>SHOULD NOT</bcp14> use values higher than 4 in this | |||
<ttcol align="center">Value</ttcol> | field. Receivers <bcp14>MUST</bcp14> treat values higher than 4 as | |||
<ttcol>Priority</ttcol> | if the value received were 4 (Highest). The default Priority value | |||
<c>0</c> <c>Lowest</c> | when the PRIORITY attribute is missing is 2 (Normal).</dd> | |||
<c>1</c> <c>Low</c> | </dl> | |||
<c>2</c> <c>Normal</c> | <table anchor="tab_priority" align="center" pn="table-3"> | |||
<c>3</c> <c>High</c> | <name slugifiedName="name-priority-values">Priority values</name> | |||
<c>4</c> <c>Highest</c> | <thead> | |||
</texttable> | <tr> | |||
<t>Reserved: The 13 bits in the reserved field MUST be set to zero by th | <th align="center" colspan="1" rowspan="1">Value</th> | |||
e sender of the message and MUST be ignored by the receiver.</t> | <th align="left" colspan="1" rowspan="1">Priority</th> | |||
</section> | </tr> | |||
</thead> | ||||
<section title="REQUEST-STATUS" anchor="sec:format:attributes:req-status"> | <tbody> | |||
<t>The following is the format of the REQUEST-STATUS attribute.</t> | <tr> | |||
<t><figure title="REQUEST-STATUS format" anchor="sec:format:request-stat | <td align="center" colspan="1" rowspan="1">0</td> | |||
us"> | <td align="left" colspan="1" rowspan="1">Lowest</td> | |||
<artwork> | </tr> | |||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">1</td> | ||||
<td align="left" colspan="1" rowspan="1">Low</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">2</td> | ||||
<td align="left" colspan="1" rowspan="1">Normal</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">3</td> | ||||
<td align="left" colspan="1" rowspan="1">High</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">4</td> | ||||
<td align="left" colspan="1" rowspan="1">Highest</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-5.2.4-5"> | ||||
<dt pn="section-5.2.4-5.1">Reserved:</dt> | ||||
<dd pn="section-5.2.4-5.2">The 13 bits in the reserved field <bcp14> | ||||
MUST</bcp14> be set to zero by the sender of the message and <bcp14>MUST</bcp14> | ||||
be ignored by the receiver.</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sec_format_attributes_req-status" numbered="true" toc=" | ||||
include" removeInRFC="false" pn="section-5.2.5"> | ||||
<name slugifiedName="name-request-status">REQUEST-STATUS</name> | ||||
<t indent="0" pn="section-5.2.5-1">The following is the format of the | ||||
REQUEST-STATUS attribute.</t> | ||||
<figure anchor="sec_format_request-status" align="left" suppress-title | ||||
="false" pn="figure-11"> | ||||
<name slugifiedName="name-request-status-format">REQUEST-STATUS form | ||||
at</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.5-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 1 0 1|M|0 0 0 0 0 1 0 0|Request Status |Queue Position | | |0 0 0 0 1 0 1|M|0 0 0 0 0 1 0 0|Request Status |Queue Position | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.5-3"> | |||
<t>Request Status: This 8-bit field contains the status of the request, | <dt pn="section-5.2.5-3.1">Request Status:</dt> | |||
as described in the following table.</t> | <dd pn="section-5.2.5-3.2">This 8-bit field contains the status of t | |||
<texttable title="Request Status values" anchor="tab:requeststatusvalues | he request, as described in the following table.</dd> | |||
"> | </dl> | |||
<ttcol align="center">Value</ttcol> | <table anchor="tab_requeststatusvalues" align="center" pn="table-4"> | |||
<ttcol>Status</ttcol> | <name slugifiedName="name-request-status-values">Request Status valu | |||
<c>1</c> <c>Pending</c> | es</name> | |||
<c>2</c> <c>Accepted</c> | <thead> | |||
<c>3</c> <c>Granted</c> | <tr> | |||
<c>4</c> <c>Denied</c> | <th align="center" colspan="1" rowspan="1">Value</th> | |||
<c>5</c> <c>Cancelled</c> | <th align="left" colspan="1" rowspan="1">Status</th> | |||
<c>6</c> <c>Released</c> | </tr> | |||
<c>7</c> <c>Revoked</c> | </thead> | |||
</texttable> | <tbody> | |||
<t>Queue Position: This 8-bit field contains, when applicable, the posit | <tr> | |||
ion of the floor request in the floor request queue at the server. If the Reques | <td align="center" colspan="1" rowspan="1">1</td> | |||
t Status value is different from Accepted, if the floor control server does not | <td align="left" colspan="1" rowspan="1">Pending</td> | |||
implement a floor request queue, or if the floor control server does not want to | </tr> | |||
provide the client with this information, all the bits of this field SHOULD be | <tr> | |||
set to zero.</t> | <td align="center" colspan="1" rowspan="1">2</td> | |||
<t>A floor request is in Pending state if the floor control server needs | <td align="left" colspan="1" rowspan="1">Accepted</td> | |||
to contact a floor chair in order to accept the floor request, but has not done | </tr> | |||
it yet. Once the floor control chair accepts the floor request, the floor reque | <tr> | |||
st is moved to the Accepted state.</t> | <td align="center" colspan="1" rowspan="1">3</td> | |||
</section> | <td align="left" colspan="1" rowspan="1">Granted</td> | |||
</tr> | ||||
<section title="ERROR-CODE" anchor="sec:format:attributes:error-code"> | <tr> | |||
<t>The following is the format of the ERROR-CODE attribute.</t> | <td align="center" colspan="1" rowspan="1">4</td> | |||
<t><figure title="ERROR-CODE format" anchor="sec:format:error"> | <td align="left" colspan="1" rowspan="1">Denied</td> | |||
<artwork> | </tr> | |||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">5</td> | ||||
<td align="left" colspan="1" rowspan="1">Cancelled</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">6</td> | ||||
<td align="left" colspan="1" rowspan="1">Released</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">7</td> | ||||
<td align="left" colspan="1" rowspan="1">Revoked</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-5.2.5-5"> | ||||
<dt pn="section-5.2.5-5.1">Queue Position:</dt> | ||||
<dd pn="section-5.2.5-5.2">This 8-bit field contains, when | ||||
applicable, the position of the floor request in the floor request | ||||
queue at the server. If the Request Status value is different from | ||||
Accepted, if the floor control server does not implement a floor | ||||
request queue, or if the floor control server does not want to | ||||
provide the client with this information, all the bits of this field | ||||
<bcp14>SHOULD</bcp14> be set to zero.</dd> | ||||
</dl> | ||||
<t indent="0" pn="section-5.2.5-6">A floor request is in Pending state | ||||
if the floor control server needs to contact a floor chair in order to accept t | ||||
he floor request, but has not done it yet. Once the floor control chair accepts | ||||
the floor request, the floor request is moved to the Accepted state.</t> | ||||
</section> | ||||
<section anchor="sec_format_attributes_error-code" numbered="true" toc=" | ||||
include" removeInRFC="false" pn="section-5.2.6"> | ||||
<name slugifiedName="name-error-code">ERROR-CODE</name> | ||||
<t indent="0" pn="section-5.2.6-1">The following is the format of the | ||||
ERROR-CODE attribute.</t> | ||||
<figure anchor="sec_format_error" align="left" suppress-title="false" | ||||
pn="figure-12"> | ||||
<name slugifiedName="name-error-code-format">ERROR-CODE format</name | ||||
> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.6-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 1 1 0|M| Length | Error Code | | | |0 0 0 0 1 1 0|M| Length | Error Code | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | |||
| Error Specific Details | | | Error Specific Details | | |||
/ / | / / | |||
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.6-3"> | |||
<t>Error Code: This 8-bit field contains an error code from the followin | <dt pn="section-5.2.6-3.1">Error Code:</dt> | |||
g table. If an error code is not recognized by the receiver, then the receiver M | <dd pn="section-5.2.6-3.2">This 8-bit field contains an error code | |||
UST assume that an error exists, and therefore that the original message that tr | from the following table. If an error code is not recognized by the | |||
iggered the Error message to be sent is processed, but the nature of the error i | receiver, then the receiver <bcp14>MUST</bcp14> assume that an error | |||
s unclear.</t> | exists, and therefore that the original message that triggered the | |||
<texttable title="Error Code meaning" anchor="tab:errorcode"> | Error message to be sent is processed, but the nature of the error | |||
<ttcol align="center">Value</ttcol> | is unclear.</dd> | |||
<ttcol>Meaning</ttcol> | </dl> | |||
<c>1</c> <c>Conference does not Exist</c> | <table anchor="tab_errorcode" align="center" pn="table-5"> | |||
<c>2</c> <c>User does not Exist</c> | <name slugifiedName="name-error-code-meaning">Error Code meaning</na | |||
<c>3</c> <c>Unknown Primitive</c> | me> | |||
<c>4</c> <c>Unknown Mandatory Attribute</c> | <thead> | |||
<c>5</c> <c>Unauthorized Operation</c> | <tr> | |||
<c>6</c> <c>Invalid Floor ID</c> | <th align="center" colspan="1" rowspan="1">Value</th> | |||
<c>7</c> <c>Floor Request ID Does Not Exist</c> | <th align="left" colspan="1" rowspan="1">Meaning</th> | |||
<c>8</c> <c>You have Already Reached the Maximum Number of Ongoing Fl | </tr> | |||
oor Requests for this Floor</c> | </thead> | |||
<c>9</c> <c>Use TLS</c> | <tbody> | |||
<c>10</c> <c>Unable to Parse Message</c> | <tr> | |||
<c>11</c> <c>Use DTLS</c> | <td align="center" colspan="1" rowspan="1">1</td> | |||
<c>12</c> <c>Unsupported Version</c> | <td align="left" colspan="1" rowspan="1">Conference Does Not Exi | |||
<c>13</c> <c>Incorrect Message Length</c> | st</td> | |||
<c>14</c> <c>Generic Error</c> | </tr> | |||
</texttable> | <tr> | |||
<t><list style="empty"> | <td align="center" colspan="1" rowspan="1">2</td> | |||
<t>Note: The Generic Error error code is intended to be used when an | <td align="left" colspan="1" rowspan="1">User Does Not Exist</td | |||
error occurs and the other specific error codes do not apply.</t> | > | |||
</list></t> | </tr> | |||
<t>Error Specific Details: Present only for certain Error Codes. In this | <tr> | |||
document, only for Error Code 4 (Unknown Mandatory Attribute). See <xref target | <td align="center" colspan="1" rowspan="1">3</td> | |||
="sec:format:attributes:error-code:specific-4"/> for its definition.</t> | <td align="left" colspan="1" rowspan="1">Unknown Primitive</td> | |||
<t>Padding: One, two, or three octets of padding added so that the conte | </tr> | |||
nts of the ERROR-CODE attribute is 32-bit aligned. If the attribute is already 3 | <tr> | |||
2-bit aligned, no padding is needed.</t> | <td align="center" colspan="1" rowspan="1">4</td> | |||
<t>The Padding bits MUST be set to zero by the sender and MUST be ignore | <td align="left" colspan="1" rowspan="1">Unknown Mandatory Attri | |||
d by the receiver.</t> | bute</td> | |||
</tr> | ||||
<section title="Error-Specific Details for Error Code 4" anchor="sec:for | <tr> | |||
mat:attributes:error-code:specific-4"> | <td align="center" colspan="1" rowspan="1">5</td> | |||
<t>The following is the format of the Error-Specific Details field for | <td align="left" colspan="1" rowspan="1">Unauthorized Operation< | |||
Error Code 4.</t> | /td> | |||
<t><figure title="Unknown attributes format" anchor="sec:format:unknow | </tr> | |||
n-tlvs"> | <tr> | |||
<artwork> | <td align="center" colspan="1" rowspan="1">6</td> | |||
<td align="left" colspan="1" rowspan="1">Invalid Floor ID</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">7</td> | ||||
<td align="left" colspan="1" rowspan="1">Floor Request ID Does N | ||||
ot Exist</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">8</td> | ||||
<td align="left" colspan="1" rowspan="1">You have Already Reache | ||||
d the Maximum Number of Ongoing Floor Requests for This Floor</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">9</td> | ||||
<td align="left" colspan="1" rowspan="1">Use TLS</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">10</td> | ||||
<td align="left" colspan="1" rowspan="1">Unable to Parse Message | ||||
</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">11</td> | ||||
<td align="left" colspan="1" rowspan="1">Use DTLS</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">12</td> | ||||
<td align="left" colspan="1" rowspan="1">Unsupported Version</td | ||||
> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">13</td> | ||||
<td align="left" colspan="1" rowspan="1">Incorrect Message Lengt | ||||
h</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">14</td> | ||||
<td align="left" colspan="1" rowspan="1">Generic Error</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<aside pn="section-5.2.6-5"> | ||||
<t indent="0" pn="section-5.2.6-5.1">Note: The Generic Error error c | ||||
ode is intended to be used when an error occurs and the other specific error cod | ||||
es do not apply.</t> | ||||
</aside> | ||||
<dl indent="3" newline="false" spacing="normal" pn="section-5.2.6-6"> | ||||
<dt pn="section-5.2.6-6.1">Error Specific Details:</dt> | ||||
<dd pn="section-5.2.6-6.2">Present only for certain error codes. In | ||||
this document, this field is present only for Error Code 4 (Unknown Mandatory At | ||||
tribute). See <xref target="sec_format_attributes_error-code_specific-4" format= | ||||
"default" sectionFormat="of" derivedContent="Section 5.2.6.1"/> for its definiti | ||||
on.</dd> | ||||
<dt pn="section-5.2.6-6.3">Padding:</dt> | ||||
<dd pn="section-5.2.6-6.4"> | ||||
<t indent="0" pn="section-5.2.6-6.4.1">One, two, or three octets o | ||||
f padding added so that the contents of the ERROR-CODE attribute is 32-bit align | ||||
ed. If the attribute is already 32-bit aligned, no padding is needed.</t> | ||||
<t indent="0" pn="section-5.2.6-6.4.2">The Padding bits <bcp14>MUS | ||||
T</bcp14> be set to zero by the sender and <bcp14>MUST</bcp14> be ignored by the | ||||
receiver.</t> | ||||
</dd> | ||||
</dl> | ||||
<section anchor="sec_format_attributes_error-code_specific-4" numbered | ||||
="true" toc="include" removeInRFC="false" pn="section-5.2.6.1"> | ||||
<name slugifiedName="name-error-specific-details-for-">Error Specifi | ||||
c Details for Error Code 4</name> | ||||
<t indent="0" pn="section-5.2.6.1-1">The following is the format of | ||||
the Error Specific Details field for Error Code 4.</t> | ||||
<figure anchor="sec_format_unknown-tlvs" align="left" suppress-title | ||||
="false" pn="figure-13"> | ||||
<name slugifiedName="name-unknown-attributes-format">Unknown attri | ||||
butes format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.6.1-2 | ||||
.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Unknown Type|R| Unknown Type|R| Unknown Type|R| Unknown Type|R| | | Unknown Type|R| Unknown Type|R| Unknown Type|R| Unknown Type|R| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Unknown Type|R| Unknown Type|R| | | | Unknown Type|R| Unknown Type|R| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Unknown Type|R| Unknown Type|R| | | Unknown Type|R| Unknown Type|R| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.6.1- | |||
<t>Unknown Type: These 7-bit fields contain the Types of the attribute | 3"> | |||
s (which were present in the message that triggered the Error message) that were | <dt pn="section-5.2.6.1-3.1">Unknown Type:</dt> | |||
unknown to the receiver.</t> | <dd pn="section-5.2.6.1-3.2">These 7-bit fields contain the Types | |||
<t>R: This bit is reserved. It MUST be set to zero by the sender of th | of the attributes (which were present in the message that triggered the Error me | |||
e message and MUST be ignored by the receiver.</t> | ssage) that were unknown to the receiver.</dd> | |||
<dt pn="section-5.2.6.1-3.3">Reserved (R):</dt> | ||||
<dd pn="section-5.2.6.1-3.4">This bit is reserved. It <bcp14>MUST< | ||||
/bcp14> be | ||||
set to zero by the sender of the message and <bcp14>MUST</bcp14> | ||||
be ignored by the receiver.</dd> | ||||
</dl> | ||||
</section> | ||||
</section> | </section> | |||
</section> | <section anchor="sec_format_attributes_error-info" numbered="true" toc=" | |||
include" removeInRFC="false" pn="section-5.2.7"> | ||||
<section title="ERROR-INFO" anchor="sec:format:attributes:error-info"> | <name slugifiedName="name-error-info">ERROR-INFO</name> | |||
<t>The following is the format of the ERROR-INFO attribute.</t> | <t indent="0" pn="section-5.2.7-1">The following is the format of the | |||
<t><figure title="ERROR-INFO format" anchor="sec:format:error-info"> | ERROR-INFO attribute.</t> | |||
<artwork> | <figure anchor="sec_format_error-info" align="left" suppress-title="fa | |||
lse" pn="figure-14"> | ||||
<name slugifiedName="name-error-info-format">ERROR-INFO format</name | ||||
> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.7-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 0 1 1 1|M| Length | | | |0 0 0 0 1 1 1|M| Length | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | |||
/ Text / | / Text / | |||
/ +-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.7-3"> | |||
<t>Text: This field contains UTF-8 <xref target="RFC3629"/> encoded text | <dt pn="section-5.2.7-3.1">Text:</dt> | |||
.</t> | <dd pn="section-5.2.7-3.2"> | |||
<t>In some situations, the contents of the Text field may be generated b | <t indent="0" pn="section-5.2.7-3.2.1">This field contains UTF-8 e | |||
y an automaton. If this automaton has information about the preferred language o | ncoded text <xref target="RFC3629" format="default" sectionFormat="of" derivedCo | |||
f the receiver of a particular ERROR-INFO attribute, it MAY use this language to | ntent="9"/>.</t> | |||
generate the Text field.</t> | <t indent="0" pn="section-5.2.7-3.2.2">In some situations, the con | |||
<t>Padding: One, two, or three octets of padding added so that the conte | tents of the Text field may be generated by an automaton. If this automaton has | |||
nts of the ERROR-INFO attribute is 32-bit aligned. The Padding bits MUST be set | information about the preferred language of the receiver of a particular ERROR-I | |||
to zero by the sender and MUST be ignored by the receiver. If the attribute is a | NFO attribute, it <bcp14>MAY</bcp14> use this language to generate the Text fiel | |||
lready 32-bit aligned, no padding is needed.</t> | d.</t> | |||
</section> | </dd> | |||
<dt pn="section-5.2.7-3.3">Padding:</dt> | ||||
<section title="PARTICIPANT-PROVIDED-INFO" anchor="sec:format:attributes:h | <dd pn="section-5.2.7-3.4">One, two, or three octets of padding adde | |||
uman-read-info"> | d so | |||
<t>The following is the format of the PARTICIPANT-PROVIDED-INFO attribut | that the contents of the ERROR-INFO attribute is 32-bit aligned. The | |||
e.</t> | Padding bits <bcp14>MUST</bcp14> be set to zero by the sender and | |||
<t><figure title="PARTICIPANT-PROVIDED-INFO format" anchor="sec:format:h | <bcp14>MUST</bcp14> be ignored by the receiver. If the attribute is | |||
uman"> | already 32-bit aligned, no padding is needed.</dd> | |||
<artwork> | </dl> | |||
</section> | ||||
<section anchor="sec_format_attributes_human-read-info" numbered="true" | ||||
toc="include" removeInRFC="false" pn="section-5.2.8"> | ||||
<name slugifiedName="name-participant-provided-info">PARTICIPANT-PROVI | ||||
DED-INFO</name> | ||||
<t indent="0" pn="section-5.2.8-1">The following is the format of the | ||||
PARTICIPANT-PROVIDED-INFO attribute.</t> | ||||
<figure anchor="sec_format_human" align="left" suppress-title="false" | ||||
pn="figure-15"> | ||||
<name slugifiedName="name-participant-provided-info-f">PARTICIPANT-P | ||||
ROVIDED-INFO format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.8-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 0 0 0|M| Length | | | |0 0 0 1 0 0 0|M| Length | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | |||
/ Text / | / Text / | |||
/ +-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.8-3"> | |||
<t>Text: This field contains UTF-8 <xref target="RFC3629"/> encoded text | <dt pn="section-5.2.8-3.1">Text:</dt> | |||
.</t> | <dd pn="section-5.2.8-3.2">This field contains UTF-8 encoded text <x | |||
<t>Padding: One, two, or three octets of padding added so that the conte | ref target="RFC3629" format="default" sectionFormat="of" derivedContent="9"/>.</ | |||
nts of the PARTICIPANT-PROVIDED-INFO attribute is 32-bit aligned. The Padding bi | dd> | |||
ts MUST be set to zero by the sender and MUST be ignored by the receiver. If the | <dt pn="section-5.2.8-3.3">Padding:</dt> | |||
attribute is already 32-bit aligned, no padding is needed.</t> | <dd pn="section-5.2.8-3.4">One, two, or three octets of padding adde | |||
</section> | d so | |||
that the contents of the PARTICIPANT-PROVIDED-INFO attribute is | ||||
<section title="STATUS-INFO" anchor="sec:format:attributes:status-info"> | 32-bit aligned. The Padding bits <bcp14>MUST</bcp14> be set to zero | |||
<t>The following is the format of the STATUS-INFO attribute.</t> | by the sender and <bcp14>MUST</bcp14> be ignored by the receiver. If | |||
<t><figure title="STATUS-INFO format" anchor="sec:format:status"> | the attribute is already 32-bit aligned, no padding is needed.</dd> | |||
<artwork> | </dl> | |||
</section> | ||||
<section anchor="sec_format_attributes_status-info" numbered="true" toc= | ||||
"include" removeInRFC="false" pn="section-5.2.9"> | ||||
<name slugifiedName="name-status-info">STATUS-INFO</name> | ||||
<t indent="0" pn="section-5.2.9-1">The following is the format of the | ||||
STATUS-INFO attribute.</t> | ||||
<figure anchor="sec_format_status" align="left" suppress-title="false" | ||||
pn="figure-16"> | ||||
<name slugifiedName="name-status-info-format">STATUS-INFO format</na | ||||
me> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.9-2.1"> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 0 0 1|M| Length | | | |0 0 0 1 0 0 1|M| Length | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | |||
/ Text / | / Text / | |||
/ +-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.9-3"> | |||
<t>Text: This field contains UTF-8 <xref target="RFC3629"/> encoded text | <dt pn="section-5.2.9-3.1">Text:</dt> | |||
.</t> | <dd pn="section-5.2.9-3.2"> | |||
<t>In some situations, the contents of the Text field may be generated b | <t indent="0" pn="section-5.2.9-3.2.1">This field contains UTF-8 e | |||
y an automaton. If this automaton has information about the preferred language o | ncoded text <xref target="RFC3629" format="default" sectionFormat="of" derivedCo | |||
f the receiver of a particular STATUS-INFO attribute, it MAY use this language t | ntent="9"/>.</t> | |||
o generate the Text field.</t> | <t indent="0" pn="section-5.2.9-3.2.2">In some situations, the con | |||
<t>Padding: One, two, or three octets of padding added so that the conte | tents of the Text field may be generated by an automaton. If this automaton has | |||
nts of the STATUS-INFO attribute is 32-bit aligned. The Padding bits MUST be set | information about the preferred language of the receiver of a particular STATUS- | |||
to zero by the sender and MUST be ignored by the receiver. If the attribute is | INFO attribute, it <bcp14>MAY</bcp14> use this language to generate the Text fie | |||
already 32-bit aligned, no padding is needed.</t> | ld.</t> | |||
</section> | </dd> | |||
<dt pn="section-5.2.9-3.3">Padding:</dt> | ||||
<section title="SUPPORTED-ATTRIBUTES" anchor="sec:format:attributes:suppor | <dd pn="section-5.2.9-3.4">One, two, or three octets of padding adde | |||
ted-tlvs"> | d so | |||
<t>The following is the format of the SUPPORTED-ATTRIBUTES attribute.</t | that the contents of the STATUS-INFO attribute is 32-bit | |||
> | aligned. The Padding bits <bcp14>MUST</bcp14> be set to zero by the | |||
<t><figure title="SUPPORTED-ATTRIBUTES format" anchor="fig:format:suppor | sender and <bcp14>MUST</bcp14> be ignored by the receiver. If the | |||
ted-tlvs"> | attribute is already 32-bit aligned, no padding is needed.</dd> | |||
<artwork> | </dl> | |||
</section> | ||||
<section anchor="sec_format_attributes_supported-tlvs" numbered="true" t | ||||
oc="include" removeInRFC="false" pn="section-5.2.10"> | ||||
<name slugifiedName="name-supported-attributes">SUPPORTED-ATTRIBUTES</ | ||||
name> | ||||
<t indent="0" pn="section-5.2.10-1">The following is the format of the | ||||
SUPPORTED-ATTRIBUTES attribute.</t> | ||||
<figure anchor="fig_format_supported-tlvs" align="left" suppress-title | ||||
="false" pn="figure-17"> | ||||
<name slugifiedName="name-supported-attributes-format">SUPPORTED-ATT | ||||
RIBUTES format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.10-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 0 1 0|M| Length | Supp. Attr. |R| Supp. Attr. |R| | |0 0 0 1 0 1 0|M| Length | Supp. Attr. |R| Supp. Attr. |R| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Supp. Attr. |R| Supp. Attr. |R| Supp. Attr. |R| Supp. Attr. |R| | | Supp. Attr. |R| Supp. Attr. |R| Supp. Attr. |R| Supp. Attr. |R| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
/ / | / / | |||
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.10-3"> | |||
<t>Supp. Attr.: These fields contain the Types of the attributes that ar | <dt pn="section-5.2.10-3.1">Supp. Attr.:</dt> | |||
e supported by the floor control server in the following format:</t> | <dd pn="section-5.2.10-3.2">These fields contain the | |||
<t>R: Reserved: This bit MUST be set to zero upon transmission and MUST | BFCP attribute types that are supported by the floor control server. | |||
be ignored upon reception.</t> | See <xref target="tab_attributes" format="default" sectionFormat="of" derivedCon | |||
<t>Padding: One, two, or three octets of padding added so that the conte | tent="Table 2"/> for the list | |||
nts of the SUPPORTED-ATTRIBUTES attribute is 32-bit aligned. If the attribute is | of BFCP attributes.</dd> | |||
already 32-bit aligned, no padding is needed.</t> | <dt pn="section-5.2.10-3.3">Reserved (R):</dt> | |||
<t>The Padding bits MUST be set to zero by the sender and MUST be ignore | <dd pn="section-5.2.10-3.4">This bit <bcp14>MUST</bcp14> be set to z | |||
d by the receiver.</t> | ero upon transmission and <bcp14>MUST</bcp14> be ignored upon reception.</dd> | |||
</section> | <dt pn="section-5.2.10-3.5">Padding:</dt> | |||
<dd pn="section-5.2.10-3.6"> | ||||
<section title="SUPPORTED-PRIMITIVES" anchor="sec:format:attributes:suppor | <t indent="0" pn="section-5.2.10-3.6.1">One, two, or three octets | |||
ted-reqs"> | of padding added so that the contents of the SUPPORTED-ATTRIBUTES attribute is 3 | |||
<t>The following is the format of the SUPPORTED-PRIMITIVES attribute.</t | 2-bit aligned. If the attribute is already 32-bit aligned, no padding is needed. | |||
> | </t> | |||
<t><figure title="SUPPORTED-PRIMITIVES format" anchor="fig:format:suppor | <t indent="0" pn="section-5.2.10-3.6.2">The Padding bits <bcp14>MU | |||
ted-reqs"> | ST</bcp14> be set to zero by the sender | |||
<artwork> | and <bcp14>MUST</bcp14> be ignored by the receiver.</t> | |||
</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sec_format_attributes_supported-reqs" numbered="true" t | ||||
oc="include" removeInRFC="false" pn="section-5.2.11"> | ||||
<name slugifiedName="name-supported-primitives">SUPPORTED-PRIMITIVES</ | ||||
name> | ||||
<t indent="0" pn="section-5.2.11-1">The following is the format of the | ||||
SUPPORTED-PRIMITIVES attribute.</t> | ||||
<figure anchor="fig_format_supported-reqs" align="left" suppress-title | ||||
="false" pn="figure-18"> | ||||
<name slugifiedName="name-supported-primitives-format">SUPPORTED-PRI | ||||
MITIVES format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.11-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 0 1 1|M| Length | Primitive | Primitive | | |0 0 0 1 0 1 1|M| Length | Primitive | Primitive | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Primitive | Primitive | Primitive | Primitive | | | Primitive | Primitive | Primitive | Primitive | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
/ / | / / | |||
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.11-3"> | |||
<t>Primitive: These fields contain the types of the BFCP messages that a | <dt pn="section-5.2.11-3.1">Primitive:</dt> | |||
re supported by the floor control server. See <xref target="tab:primitives"/> fo | <dd pn="section-5.2.11-3.2">These fields contain the types of the BF | |||
r the list of BFCP primitives.</t> | CP messages that are supported by the floor control server. See <xref target="ta | |||
<t>Padding: One, two, or three octets of padding added so that the conte | b_primitives" format="default" sectionFormat="of" derivedContent="Table 1"/> for | |||
nts of the SUPPORTED-PRIMITIVES attribute is 32-bit aligned. If the attribute is | the list of BFCP primitives.</dd> | |||
already 32-bit aligned, no padding is needed.</t> | <dt pn="section-5.2.11-3.3">Padding:</dt> | |||
<t>The Padding bits MUST be set to zero by the sender and MUST be ignore | <dd pn="section-5.2.11-3.4"> | |||
d by the receiver.</t> | <t indent="0" pn="section-5.2.11-3.4.1">One, two, or three octets | |||
</section> | of padding added so that the contents of the SUPPORTED-PRIMITIVES attribute is 3 | |||
2-bit aligned. If the attribute is already 32-bit aligned, no padding is needed. | ||||
<section title="USER-DISPLAY-NAME" anchor="sec:format:attributes:user-disp | </t> | |||
lay-name"> | <t indent="0" pn="section-5.2.11-3.4.2">The Padding bits <bcp14>MU | |||
<t>The following is the format of the USER-DISPLAY-NAME attribute.</t> | ST</bcp14> be set to zero by the sender | |||
<t><figure title="USER-DISPLAY-NAME format" anchor="sec:format:user-disp | and <bcp14>MUST</bcp14> be ignored by the receiver.</t> | |||
lay"> | </dd> | |||
<artwork> | </dl> | |||
</section> | ||||
<section anchor="sec_format_attributes_user-display-name" numbered="true | ||||
" toc="include" removeInRFC="false" pn="section-5.2.12"> | ||||
<name slugifiedName="name-user-display-name">USER-DISPLAY-NAME</name> | ||||
<t indent="0" pn="section-5.2.12-1">The following is the format of the | ||||
USER-DISPLAY-NAME attribute.</t> | ||||
<figure anchor="sec_format_user-display" align="left" suppress-title=" | ||||
false" pn="figure-19"> | ||||
<name slugifiedName="name-user-display-name-format">USER-DISPLAY-NAM | ||||
E format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.12-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 1 0 0|M| Length | | | |0 0 0 1 1 0 0|M| Length | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | |||
/ Text / | / Text / | |||
/ +-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.12-3"> | |||
<t>Text: This field contains the UTF-8 encoded name of the user.</t> | <dt pn="section-5.2.12-3.1">Text:</dt> | |||
<t>Padding: One, two, or three octets of padding added so that the conte | <dd pn="section-5.2.12-3.2">This field contains the UTF-8 encoded na | |||
nts of the USER-DISPLAY-NAME attribute is 32-bit aligned. The Padding bits MUST | me of the user.</dd> | |||
be set to zero by the sender and MUST be ignored by the receiver. If the attribu | <dt pn="section-5.2.12-3.3">Padding:</dt> | |||
te is already 32-bit aligned, no padding is needed.</t> | <dd pn="section-5.2.12-3.4">One, two, or three octets of padding add | |||
</section> | ed so | |||
that the contents of the USER-DISPLAY-NAME attribute is 32-bit | ||||
<section title="USER-URI" anchor="sec:format:attributes:user-uri"> | aligned. The Padding bits <bcp14>MUST</bcp14> be set to zero by the | |||
<t>The following is the format of the USER-URI attribute.</t> | sender and <bcp14>MUST</bcp14> be ignored by the receiver. If the | |||
<t><figure title="USER-URI format" anchor="sec:format:user-uri"> | attribute is already 32-bit aligned, no padding is needed.</dd> | |||
<artwork> | </dl> | |||
</section> | ||||
<section anchor="sec_format_attributes_user-uri" numbered="true" toc="in | ||||
clude" removeInRFC="false" pn="section-5.2.13"> | ||||
<name slugifiedName="name-user-uri">USER-URI</name> | ||||
<t indent="0" pn="section-5.2.13-1">The following is the format of the | ||||
USER-URI attribute.</t> | ||||
<figure anchor="sec_format_user-uri" align="left" suppress-title="fals | ||||
e" pn="figure-20"> | ||||
<name slugifiedName="name-user-uri-format">USER-URI format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.13-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 1 0 1|M| Length | | | |0 0 0 1 1 0 1|M| Length | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | |||
/ Text / | / Text / | |||
/ +-+-+-+-+-+-+-+-+ | / +-+-+-+-+-+-+-+-+ | |||
| | Padding | | | | Padding | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.13-3"> | |||
<t>Text: This field contains the UTF-8 encoded user's contact URI, that | <dt pn="section-5.2.13-3.1">Text:</dt> | |||
is, the URI used by the user to set up the resources (e.g., media streams) that | <dd pn="section-5.2.13-3.2">This field contains the UTF-8 encoded us | |||
are controlled by BFCP. For example, in the context of a conference set up by SI | er's contact URI, that is, the URI used by the user to set up the resources (e.g | |||
P, the USER-URI attribute would carry the SIP URI of the user.</t> | ., media streams) that are controlled by BFCP. For example, in the context of a | |||
<t><list style="hanging"> | conference set up by SIP, the USER-URI attribute would carry the SIP URI of the | |||
<t>Messages containing a user's URI in a USER-URI attribute also con | user.</dd> | |||
tain the user's User ID. This way, a client receiving such a message can correla | </dl> | |||
te the user's URI (e.g., the SIP URI the user used to join a conference) with th | <aside pn="section-5.2.13-4"> | |||
e user's User ID.</t> | <t indent="0" pn="section-5.2.13-4.1">Messages containing a user's U | |||
</list></t> | RI in a USER-URI attribute also contain the user's User ID. This way, a client r | |||
<t>Padding: One, two, or three octets of padding added so that the conte | eceiving such a message can correlate the user's URI (e.g., the SIP URI the user | |||
nts of the USER-URI attribute is 32-bit aligned. The Padding bits MUST be set to | used to join a conference) with the user's User ID.</t> | |||
zero by the sender and MUST be ignored by the receiver. If the attribute is alr | </aside> | |||
eady 32-bit aligned, no padding is needed.</t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.13-5"> | |||
</section> | <dt pn="section-5.2.13-5.1">Padding:</dt> | |||
<dd pn="section-5.2.13-5.2">One, two, or three octets of padding add | ||||
<section title="BENEFICIARY-INFORMATION" anchor="sec:format:attributes:ben | ed so | |||
-info"> | that the contents of the USER-URI attribute is 32-bit aligned. The | |||
<t>The BENEFICIARY-INFORMATION attribute is a grouped attribute that con | Padding bits <bcp14>MUST</bcp14> be set to zero by the sender and | |||
sists of a header, which is referred to as BENEFICIARY-INFORMATION-HEADER, follo | <bcp14>MUST</bcp14> be ignored by the receiver. If the attribute is | |||
wed by a sequence of attributes. The following is the format of the BENEFICIARY- | already 32-bit aligned, no padding is needed.</dd> | |||
INFORMATION-HEADER:</t> | </dl> | |||
<t><figure title="BENEFICIARY-INFORMATION-HEADER format" anchor="fig:for | </section> | |||
mat:ben-information-header"> | <section anchor="sec_format_attributes_ben-info" numbered="true" toc="in | |||
<artwork> | clude" removeInRFC="false" pn="section-5.2.14"> | |||
<name slugifiedName="name-beneficiary-information">BENEFICIARY-INFORMA | ||||
TION</name> | ||||
<t indent="0" pn="section-5.2.14-1">The BENEFICIARY-INFORMATION attrib | ||||
ute is a grouped attribute that consists of a header, which is referred to as BE | ||||
NEFICIARY-INFORMATION-HEADER, followed by a sequence of attributes. The followin | ||||
g is the format of the BENEFICIARY-INFORMATION-HEADER:</t> | ||||
<figure anchor="fig_format_ben-information-header" align="left" suppre | ||||
ss-title="false" pn="figure-21"> | ||||
<name slugifiedName="name-beneficiary-information-hea">BENEFICIARY-I | ||||
NFORMATION-HEADER format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.14-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 1 1 0|M| Length | Beneficiary ID | | |0 0 0 1 1 1 0|M| Length | Beneficiary ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.14-3"> | |||
<t>Beneficiary ID: This field contains a 16-bit value that uniquely iden | <dt pn="section-5.2.14-3.1">Beneficiary ID:</dt> | |||
tifies a user within a conference.</t> | <dd pn="section-5.2.14-3.2">This field contains a 16-bit value that | |||
<t>The following is the ABNF (Augmented Backus-Naur Form) <xref target=" | uniquely identifies a user within a conference.</dd> | |||
RFC5234"/> of the BENEFICIARY-INFORMATION grouped attribute. (EXTENSION-ATTRIBUT | </dl> | |||
E refers to extension attributes that may be defined in the future.)</t> | <t indent="0" pn="section-5.2.14-4">The following is the ABNF (Augment | |||
<t><figure title="BENEFICIARY-INFORMATION format" anchor="fig:ben-inform | ed Backus-Naur Form) <xref target="RFC5234" format="default" sectionFormat="of" | |||
ation"> | derivedContent="5"/> of the BENEFICIARY-INFORMATION | |||
<artwork> | grouped attribute. (EXTENSION-ATTRIBUTE refers to extension | |||
BENEFICIARY-INFORMATION = BENEFICIARY-INFORMATION-HEADER | attributes that may be defined in the future.)</t> | |||
[USER-DISPLAY-NAME] | <figure anchor="fig_ben-information" align="left" suppress-title="fals | |||
[USER-URI] | e" pn="figure-22"> | |||
*EXTENSION-ATTRIBUTE | <name slugifiedName="name-beneficiary-information-for">BENEFICIARY-I | |||
</artwork> | NFORMATION format</name> | |||
</figure></t> | <sourcecode name="" type="abnf" markers="false" pn="section-5.2.14-5 | |||
</section> | .1"> | |||
BENEFICIARY-INFORMATION = BENEFICIARY-INFORMATION-HEADER | ||||
<section title="FLOOR-REQUEST-INFORMATION" anchor="sec:format:attributes:f | [USER-DISPLAY-NAME] | |||
loor-req-info"> | [USER-URI] | |||
<t>The FLOOR-REQUEST-INFORMATION attribute is a grouped attribute that c | *EXTENSION-ATTRIBUTE</sourcecode> | |||
onsists of a header, which is referred to as FLOOR-REQUEST-INFORMATION-HEADER, f | </figure> | |||
ollowed by a sequence of attributes. The following is the format of the FLOOR-RE | </section> | |||
QUEST-INFORMATION-HEADER:</t> | <section anchor="sec_format_attributes_floor-req-info" numbered="true" t | |||
<t><figure title="FLOOR-REQUEST-INFORMATION-HEADER format" anchor="fig:f | oc="include" removeInRFC="false" pn="section-5.2.15"> | |||
ormat:request-information-header"> | <name slugifiedName="name-floor-request-information">FLOOR-REQUEST-INF | |||
<artwork> | ORMATION</name> | |||
<t indent="0" pn="section-5.2.15-1">The FLOOR-REQUEST-INFORMATION attr | ||||
ibute is a grouped attribute that consists of a header, which is referred to as | ||||
FLOOR-REQUEST-INFORMATION-HEADER, followed by a sequence of attributes. The foll | ||||
owing is the format of the FLOOR-REQUEST-INFORMATION-HEADER:</t> | ||||
<figure anchor="fig_format_request-information-header" align="left" su | ||||
ppress-title="false" pn="figure-23"> | ||||
<name slugifiedName="name-floor-request-information-h">FLOOR-REQUEST | ||||
-INFORMATION-HEADER format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.15-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 0 1 1 1 1|M| Length | Floor Request ID | | |0 0 0 1 1 1 1|M| Length | Floor Request ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.15-3"> | |||
<t>Floor Request ID: This field contains a 16-bit value that identifies | <dt pn="section-5.2.15-3.1">Floor Request ID:</dt> | |||
a floor request at the floor control server.</t> | <dd pn="section-5.2.15-3.2">This field contains a 16-bit value | |||
<t>The following is the ABNF of the FLOOR-REQUEST-INFORMATION grouped at | that identifies a floor request at the floor control server.</dd> | |||
tribute. (EXTENSION-ATTRIBUTE refers to extension attributes that may be defined | </dl> | |||
in the future.)</t> | <t indent="0" pn="section-5.2.15-4">The following is the ABNF of the F | |||
<t><figure title="FLOOR-REQUEST-INFORMATION format" anchor="fig:floor-re | LOOR-REQUEST-INFORMATION | |||
quest-information"> | grouped attribute. (EXTENSION-ATTRIBUTE refers to extension | |||
<artwork> | attributes that may be defined in the future.)</t> | |||
<figure anchor="fig_floor-request-information" align="left" suppress-t | ||||
itle="false" pn="figure-24"> | ||||
<name slugifiedName="name-floor-request-information-f">FLOOR-REQUEST | ||||
-INFORMATION format</name> | ||||
<sourcecode name="" type="abnf" markers="false" pn="section-5.2.15-5 | ||||
.1"> | ||||
FLOOR-REQUEST-INFORMATION = FLOOR-REQUEST-INFORMATION-HEADER | FLOOR-REQUEST-INFORMATION = FLOOR-REQUEST-INFORMATION-HEADER | |||
[OVERALL-REQUEST-STATUS] | [OVERALL-REQUEST-STATUS] | |||
1*FLOOR-REQUEST-STATUS | 1*FLOOR-REQUEST-STATUS | |||
[BENEFICIARY-INFORMATION] | [BENEFICIARY-INFORMATION] | |||
[REQUESTED-BY-INFORMATION] | [REQUESTED-BY-INFORMATION] | |||
[PRIORITY] | [PRIORITY] | |||
[PARTICIPANT-PROVIDED-INFO] | [PARTICIPANT-PROVIDED-INFO] | |||
*EXTENSION-ATTRIBUTE | *EXTENSION-ATTRIBUTE</sourcecode> | |||
</artwork> | </figure> | |||
</figure></t> | </section> | |||
</section> | <section anchor="sec_format_attributes_req-by-info" numbered="true" toc= | |||
"include" removeInRFC="false" pn="section-5.2.16"> | ||||
<section title="REQUESTED-BY-INFORMATION" anchor="sec:format:attributes:re | <name slugifiedName="name-requested-by-information">REQUESTED-BY-INFOR | |||
q-by-info"> | MATION</name> | |||
<t>The REQUESTED-BY-INFORMATION attribute is a grouped attribute that co | <t indent="0" pn="section-5.2.16-1">The REQUESTED-BY-INFORMATION attri | |||
nsists of a header, which is referred to as REQUESTED-BY-INFORMATION-HEADER, fol | bute is a grouped attribute that consists of a header, which is referred to as R | |||
lowed by a sequence of attributes. The following is the format of the REQUESTED- | EQUESTED-BY-INFORMATION-HEADER, followed by a sequence of attributes. The follow | |||
BY-INFORMATION-HEADER:</t> | ing is the format of the REQUESTED-BY-INFORMATION-HEADER:</t> | |||
<t><figure title="REQUESTED-BY-INFORMATION-HEADER format" anchor="fig:fo | <figure anchor="fig_format_req-by-information-header" align="left" sup | |||
rmat:req-by-information-header"> | press-title="false" pn="figure-25"> | |||
<artwork> | <name slugifiedName="name-requested-by-information-he">REQUESTED-BY- | |||
INFORMATION-HEADER format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.16-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 1 0 0 0 0|M| Length | Requested-by ID | | |0 0 1 0 0 0 0|M| Length | Requested-by ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.16-3"> | |||
<t>Requested-by ID: This field contains a 16-bit value that uniquely ide | <dt pn="section-5.2.16-3.1">Requested-by ID:</dt> | |||
ntifies a user within a conference.</t> | <dd pn="section-5.2.16-3.2">This field contains a 16-bit value | |||
<t>The following is the ABNF of the REQUESTED-BY-INFORMATION grouped att | that uniquely identifies a user within a conference.</dd> | |||
ribute. (EXTENSION-ATTRIBUTE refers to extension attributes that may be defined | </dl> | |||
in the future.)</t> | <t indent="0" pn="section-5.2.16-4">The following is the ABNF of the R | |||
<t><figure title="REQUESTED-BY-INFORMATION format" anchor="fig:reqby-inf | EQUESTED-BY-INFORMATION grouped | |||
ormation"> | attribute. (EXTENSION-ATTRIBUTE refers to extension attributes that | |||
<artwork> | may be defined in the future.)</t> | |||
REQUESTED-BY-INFORMATION = REQUESTED-BY-INFORMATION-HEADER | <figure anchor="fig_reqby-information" align="left" suppress-title="fa | |||
[USER-DISPLAY-NAME] | lse" pn="figure-26"> | |||
[USER-URI] | <name slugifiedName="name-requested-by-information-fo">REQUESTED-BY- | |||
*EXTENSION-ATTRIBUTE | INFORMATION format</name> | |||
</artwork> | <sourcecode name="" type="abnf" markers="false" pn="section-5.2.16-5 | |||
</figure></t> | .1"> | |||
</section> | REQUESTED-BY-INFORMATION = REQUESTED-BY-INFORMATION-HEADER | |||
[USER-DISPLAY-NAME] | ||||
<section title="FLOOR-REQUEST-STATUS" anchor="sec:format:attributes:floor- | [USER-URI] | |||
req-status"> | *EXTENSION-ATTRIBUTE</sourcecode> | |||
<t>The FLOOR-REQUEST-STATUS attribute is a grouped attribute that consis | </figure> | |||
ts of a header, which is referred to as FLOOR-REQUEST-STATUS-HEADER, followed by | </section> | |||
a sequence of attributes. The following is the format of the FLOOR-REQUEST-STAT | <section anchor="sec_format_attributes_floor-req-status" numbered="true" | |||
US-HEADER:</t> | toc="include" removeInRFC="false" pn="section-5.2.17"> | |||
<t><figure title="FLOOR-REQUEST-STATUS-HEADER format" anchor="fig:format | <name slugifiedName="name-floor-request-status">FLOOR-REQUEST-STATUS</ | |||
:floor-req-status-header"> | name> | |||
<artwork> | <t indent="0" pn="section-5.2.17-1">The FLOOR-REQUEST-STATUS attribute | |||
is a grouped attribute that consists of a header, which is referred to as FLOOR | ||||
-REQUEST-STATUS-HEADER, followed by a sequence of attributes. The following is t | ||||
he format of the FLOOR-REQUEST-STATUS-HEADER:</t> | ||||
<figure anchor="fig_format_floor-req-status-header" align="left" suppr | ||||
ess-title="false" pn="figure-27"> | ||||
<name slugifiedName="name-floor-request-status-header">FLOOR-REQUEST | ||||
-STATUS-HEADER format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.17-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 1 0 0 0 1|M| Length | Floor ID | | |0 0 1 0 0 0 1|M| Length | Floor ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.17-3"> | |||
<t>Floor ID: this field contains a 16-bit value that uniquely identifies | <dt pn="section-5.2.17-3.1">Floor ID:</dt> | |||
a floor within a conference.</t> | <dd pn="section-5.2.17-3.2">this field contains a 16-bit value that | |||
<t>The following is the ABNF of the FLOOR-REQUEST-STATUS grouped attribu | uniquely identifies a floor within a conference.</dd> | |||
te. (EXTENSION-ATTRIBUTE refers to extension attributes that may be defined in t | </dl> | |||
he future.)</t> | <t indent="0" pn="section-5.2.17-4">The following is the ABNF of the F | |||
<t><figure title="FLOOR-REQUEST-STATUS format" anchor="fig:floor-req-sta | LOOR-REQUEST-STATUS grouped attribute. (EXTENSION-ATTRIBUTE refers to extension | |||
tus"> | attributes that may be defined in the future.)</t> | |||
<artwork> | <figure anchor="fig_floor-req-status" align="left" suppress-title="fal | |||
FLOOR-REQUEST-STATUS = FLOOR-REQUEST-STATUS-HEADER | se" pn="figure-28"> | |||
[REQUEST-STATUS] | <name slugifiedName="name-floor-request-status-format">FLOOR-REQUEST | |||
[STATUS-INFO] | -STATUS format</name> | |||
*EXTENSION-ATTRIBUTE | <sourcecode name="" type="abnf" markers="false" pn="section-5.2.17-5 | |||
</artwork> | .1"> | |||
</figure></t> | FLOOR-REQUEST-STATUS = FLOOR-REQUEST-STATUS-HEADER | |||
</section> | [REQUEST-STATUS] | |||
[STATUS-INFO] | ||||
<section title="OVERALL-REQUEST-STATUS" anchor="sec:format:attributes:over | *EXTENSION-ATTRIBUTE</sourcecode> | |||
all-req-status"> | </figure> | |||
<t>The OVERALL-REQUEST-STATUS attribute is a grouped attribute that cons | </section> | |||
ists of a header, which is referred to as OVERALL-REQUEST-STATUS-HEADER, followe | <section anchor="sec_format_attributes_overall-req-status" numbered="tru | |||
d by a sequence of attributes. The following is the format of the OVERALL-REQUES | e" toc="include" removeInRFC="false" pn="section-5.2.18"> | |||
T-STATUS-HEADER:</t> | <name slugifiedName="name-overall-request-status">OVERALL-REQUEST-STAT | |||
<t><figure title="OVERALL-REQUEST-STATUS-HEADER format" anchor="fig:form | US</name> | |||
at:overall-req-status-header"> | <t indent="0" pn="section-5.2.18-1">The OVERALL-REQUEST-STATUS attribu | |||
<artwork> | te is a grouped attribute that consists of a header, which is referred to as OVE | |||
RALL-REQUEST-STATUS-HEADER, followed by a sequence of attributes. The following | ||||
is the format of the OVERALL-REQUEST-STATUS-HEADER:</t> | ||||
<figure anchor="fig_format_overall-req-status-header" align="left" sup | ||||
press-title="false" pn="figure-29"> | ||||
<name slugifiedName="name-overall-request-status-head">OVERALL-REQUE | ||||
ST-STATUS-HEADER format</name> | ||||
<artwork name="" type="" align="left" alt="" pn="section-5.2.18-2.1" | ||||
> | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|0 0 1 0 0 1 0|M| Length | Floor Request ID | | |0 0 1 0 0 1 0|M| Length | Floor Request ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <dl indent="3" newline="false" spacing="normal" pn="section-5.2.18-3"> | |||
<t>Floor Request ID: this field contains a 16-bit value that identifies | <dt pn="section-5.2.18-3.1">Floor Request ID:</dt> | |||
a floor request at the floor control server.</t> | <dd pn="section-5.2.18-3.2">This field contains a 16-bit value that | |||
<t>The following is the ABNF of the OVERALL-REQUEST-STATUS grouped attri | identifies a floor request at the floor control server.</dd> | |||
bute. (EXTENSION-ATTRIBUTE refers to extension attributes that may be defined in | </dl> | |||
the future.)</t> | <t indent="0" pn="section-5.2.18-4">The following is the ABNF of the O | |||
<t><figure title="OVERALL-REQUEST-STATUS format" anchor="fig:overall-req | VERALL-REQUEST-STATUS grouped attribute. (EXTENSION-ATTRIBUTE refers to extensio | |||
-status"> | n attributes that may be defined in the future.)</t> | |||
<artwork> | <figure anchor="fig_overall-req-status" align="left" suppress-title="f | |||
OVERALL-REQUEST-STATUS = OVERALL-REQUEST-STATUS-HEADER | alse" pn="figure-30"> | |||
[REQUEST-STATUS] | <name slugifiedName="name-overall-request-status-form">OVERALL-REQUE | |||
[STATUS-INFO] | ST-STATUS format</name> | |||
*EXTENSION-ATTRIBUTE | <sourcecode name="" type="abnf" markers="false" pn="section-5.2.18-5 | |||
</artwork> | .1"> | |||
</figure></t> | OVERALL-REQUEST-STATUS = OVERALL-REQUEST-STATUS-HEADER | |||
[REQUEST-STATUS] | ||||
[STATUS-INFO] | ||||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
</figure> | ||||
</section> | ||||
</section> | </section> | |||
</section> | <section anchor="sec_msg_format" numbered="true" toc="include" removeInRFC | |||
="false" pn="section-5.3"> | ||||
<section title="Message Format" anchor="sec:msg_format"> | <name slugifiedName="name-message-format">Message Format</name> | |||
<t>This section contains the normative ABNF (Augmented Backus-Naur Form) < | <t indent="0" pn="section-5.3-1">This section contains the normative ABN | |||
xref target="RFC5234"/> of the BFCP messages. Extension attributes that may be d | F (Augmented Backus-Naur Form) <xref target="RFC5234" format="default" sectionFo | |||
efined in the future are referred to as EXTENSION-ATTRIBUTE in the ABNF.</t> | rmat="of" derivedContent="5"/> of the BFCP messages. Extension attributes that m | |||
ay be defined in the future are referred to as EXTENSION-ATTRIBUTE in the ABNF.< | ||||
<section title="FloorRequest" anchor="sec:msg_format:FloorRequest"> | /t> | |||
<t>Floor participants request a floor by sending a FloorRequest message | <section anchor="sec_msg_format_FloorRequest" numbered="true" toc="inclu | |||
to the floor control server. The following is the format of the FloorRequest mes | de" removeInRFC="false" pn="section-5.3.1"> | |||
sage:</t> | <name slugifiedName="name-floorrequest">FloorRequest</name> | |||
<t><figure title="FloorRequest format" anchor="fig:floorequest"> | <t indent="0" pn="section-5.3.1-1">Floor participants request a floor | |||
<artwork> | by sending a FloorRequest message to the floor control server. The following is | |||
the format of the FloorRequest message:</t> | ||||
<figure anchor="fig_floorequest" align="left" suppress-title="false" p | ||||
n="figure-31"> | ||||
<name slugifiedName="name-floorrequest-format">FloorRequest format</ | ||||
name> | ||||
<sourcecode name="" type="abnf" markers="false" pn="section-5.3.1-2. | ||||
1"> | ||||
FloorRequest = COMMON-HEADER | FloorRequest = COMMON-HEADER | |||
1*FLOOR-ID | 1*FLOOR-ID | |||
[BENEFICIARY-ID] | [BENEFICIARY-ID] | |||
[PARTICIPANT-PROVIDED-INFO] | [PARTICIPANT-PROVIDED-INFO] | |||
[PRIORITY] | [PRIORITY] | |||
*EXTENSION-ATTRIBUTE | *EXTENSION-ATTRIBUTE</sourcecode> | |||
</artwork> | </figure> | |||
</figure></t> | </section> | |||
</section> | <section anchor="sec_msg_format_FloorRelease" numbered="true" toc="inclu | |||
de" removeInRFC="false" pn="section-5.3.2"> | ||||
<section title="FloorRelease" anchor="sec:msg_format:FloorRelease"> | <name slugifiedName="name-floorrelease">FloorRelease</name> | |||
<t>Floor participants release a floor by sending a FloorRelease message | <t indent="0" pn="section-5.3.2-1">Floor participants release a floor | |||
to the floor control server. Floor participants also use the FloorRelease messag | by sending a FloorRelease message to the floor control server. Floor participant | |||
e to cancel pending floor requests. The following is the format of the FloorRele | s also use the FloorRelease message to cancel pending floor requests. The follow | |||
ase message:</t> | ing is the format of the FloorRelease message:</t> | |||
<t><figure title="FloorRelease format" anchor="fig:floorelease"> | <figure anchor="fig_floorelease" align="left" suppress-title="false" p | |||
<artwork> | n="figure-32"> | |||
FloorRelease = COMMON-HEADER | <name slugifiedName="name-floorrelease-format">FloorRelease format</ | |||
FLOOR-REQUEST-ID | name> | |||
*EXTENSION-ATTRIBUTE | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.2-2. | |||
</artwork> | 1"> | |||
</figure></t> | FloorRelease = COMMON-HEADER | |||
</section> | FLOOR-REQUEST-ID | |||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
<section title="FloorRequestQuery" anchor="sec:msg_format:FloorRequestQuer | </figure> | |||
y"> | </section> | |||
<t>Floor participants and floor chairs request information about a floor | <section anchor="sec_msg_format_FloorRequestQuery" numbered="true" toc=" | |||
request by sending a FloorRequestQuery message to the floor control server. The | include" removeInRFC="false" pn="section-5.3.3"> | |||
following is the format of the FloorRequestQuery message:</t> | <name slugifiedName="name-floorrequestquery">FloorRequestQuery</name> | |||
<t><figure title="FloorRequestQuery format" anchor="fig:floorrequestinfo | <t indent="0" pn="section-5.3.3-1">Floor participants and floor chairs | |||
"> | request information about a floor request by sending a FloorRequestQuery messag | |||
<artwork> | e to the floor control server. The following is the format of the FloorRequestQu | |||
FloorRequestQuery = COMMON-HEADER | ery message:</t> | |||
FLOOR-REQUEST-ID | <figure anchor="fig_floorrequestinfo" align="left" suppress-title="fal | |||
*EXTENSION-ATTRIBUTE | se" pn="figure-33"> | |||
</artwork> | <name slugifiedName="name-floorrequestquery-format">FloorRequestQuer | |||
</figure></t> | y format</name> | |||
</section> | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.3-2. | |||
1"> | ||||
<section title="FloorRequestStatus" anchor="sec:msg_format:FloorRequestSta | FloorRequestQuery = COMMON-HEADER | |||
tus"> | FLOOR-REQUEST-ID | |||
<t>The floor control server informs floor participants and floor chairs | *EXTENSION-ATTRIBUTE</sourcecode> | |||
about the status of their floor requests by sending them FloorRequestStatus mess | </figure> | |||
ages. The following is the format of the FloorRequestStatus message:</t> | </section> | |||
<t><figure title="FloorRequestStatus format" anchor="fig:floorrequeststa | <section anchor="sec_msg_format_FloorRequestStatus" numbered="true" toc= | |||
tus"> | "include" removeInRFC="false" pn="section-5.3.4"> | |||
<artwork> | <name slugifiedName="name-floorrequeststatus">FloorRequestStatus</name | |||
FloorRequestStatus = COMMON-HEADER | > | |||
FLOOR-REQUEST-INFORMATION | <t indent="0" pn="section-5.3.4-1">The floor control server informs fl | |||
*EXTENSION-ATTRIBUTE | oor participants and floor chairs about the status of their floor requests by se | |||
</artwork> | nding them FloorRequestStatus messages. The following is the format of the Floor | |||
</figure></t> | RequestStatus message:</t> | |||
</section> | <figure anchor="fig_floorrequeststatus" align="left" suppress-title="f | |||
alse" pn="figure-34"> | ||||
<section title="UserQuery" anchor="sec:msg_format:UserQuery"> | <name slugifiedName="name-floorrequeststatus-format">FloorRequestSta | |||
<t>Floor participants and floor chairs request information about a parti | tus format</name> | |||
cipant and the floor requests related to this participant by sending a UserQuery | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.4-2. | |||
message to the floor control server. The following is the format of the UserQue | 1"> | |||
ry message:</t> | FloorRequestStatus = COMMON-HEADER | |||
<t><figure title="UserQuery format" anchor="fig:userinfowanted"> | FLOOR-REQUEST-INFORMATION | |||
<artwork> | *EXTENSION-ATTRIBUTE</sourcecode> | |||
UserQuery = COMMON-HEADER | </figure> | |||
[BENEFICIARY-ID] | </section> | |||
*EXTENSION-ATTRIBUTE | <section anchor="sec_msg_format_UserQuery" numbered="true" toc="include" | |||
</artwork> | removeInRFC="false" pn="section-5.3.5"> | |||
</figure></t> | <name slugifiedName="name-userquery">UserQuery</name> | |||
</section> | <t indent="0" pn="section-5.3.5-1">Floor participants and floor chairs | |||
request information about a participant and the floor requests related to this | ||||
<section title="UserStatus" anchor="sec:msg_format:UserStatus"> | participant by sending a UserQuery message to the floor control server. The foll | |||
<t>The floor control server provides information about participants and | owing is the format of the UserQuery message:</t> | |||
their related floor requests to floor participants and floor chairs by sending t | <figure anchor="fig_userinfowanted" align="left" suppress-title="false | |||
hem UserStatus messages. The following is the format of the UserStatus message:< | " pn="figure-35"> | |||
/t> | <name slugifiedName="name-userquery-format">UserQuery format</name> | |||
<t><figure title="UserStatus format" anchor="fig:userstatus"> | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.5-2. | |||
<artwork> | 1"> | |||
UserStatus = COMMON-HEADER | UserQuery = COMMON-HEADER | |||
[BENEFICIARY-INFORMATION] | [BENEFICIARY-ID] | |||
*FLOOR-REQUEST-INFORMATION | *EXTENSION-ATTRIBUTE</sourcecode> | |||
*EXTENSION-ATTRIBUTE | </figure> | |||
</artwork> | </section> | |||
</figure></t> | <section anchor="sec_msg_format_UserStatus" numbered="true" toc="include | |||
</section> | " removeInRFC="false" pn="section-5.3.6"> | |||
<name slugifiedName="name-userstatus">UserStatus</name> | ||||
<section title="FloorQuery" anchor="sec:msg_format:FloorQuery"> | <t indent="0" pn="section-5.3.6-1">The floor control server provides i | |||
<t>Floor participants and floor chairs request information about a floor | nformation about participants and their related floor requests to floor particip | |||
or floors by sending a FloorQuery message to the floor control server. The foll | ants and floor chairs by sending them UserStatus messages. The following is the | |||
owing is the format of the FloorQuery message:</t> | format of the UserStatus message:</t> | |||
<t><figure title="FloorQuery format" anchor="fig:floorinfo"> | <figure anchor="fig_userstatus" align="left" suppress-title="false" pn | |||
<artwork> | ="figure-36"> | |||
FloorQuery = COMMON-HEADER | <name slugifiedName="name-userstatus-format">UserStatus format</name | |||
> | ||||
<sourcecode name="" type="abnf" markers="false" pn="section-5.3.6-2. | ||||
1"> | ||||
UserStatus = COMMON-HEADER | ||||
[BENEFICIARY-INFORMATION] | ||||
*FLOOR-REQUEST-INFORMATION | ||||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
</figure> | ||||
</section> | ||||
<section anchor="sec_msg_format_FloorQuery" numbered="true" toc="include | ||||
" removeInRFC="false" pn="section-5.3.7"> | ||||
<name slugifiedName="name-floorquery">FloorQuery</name> | ||||
<t indent="0" pn="section-5.3.7-1">Floor participants and floor chairs | ||||
request information about a floor or floors by sending a FloorQuery message to | ||||
the floor control server. The following is the format of the FloorQuery message: | ||||
</t> | ||||
<figure anchor="fig_floorinfo" align="left" suppress-title="false" pn= | ||||
"figure-37"> | ||||
<name slugifiedName="name-floorquery-format">FloorQuery format</name | ||||
> | ||||
<sourcecode name="" type="abnf" markers="false" pn="section-5.3.7-2. | ||||
1"> | ||||
FloorQuery = COMMON-HEADER | ||||
*FLOOR-ID | ||||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
</figure> | ||||
</section> | ||||
<section anchor="sec_msg_format_FloorStatus" numbered="true" toc="includ | ||||
e" removeInRFC="false" pn="section-5.3.8"> | ||||
<name slugifiedName="name-floorstatus">FloorStatus</name> | ||||
<t indent="0" pn="section-5.3.8-1">The floor control server informs fl | ||||
oor participants and floor chairs about the status (e.g., the current holder) of | ||||
a floor by sending them FloorStatus messages. The following is the format of th | ||||
e FloorStatus message:</t> | ||||
<figure anchor="fig_floorstatus" align="left" suppress-title="false" p | ||||
n="figure-38"> | ||||
<name slugifiedName="name-floorstatus-format">FloorStatus format</na | ||||
me> | ||||
<sourcecode name="" type="abnf" markers="false" pn="section-5.3.8-2. | ||||
1"> | ||||
FloorStatus = COMMON-HEADER | ||||
*FLOOR-ID | *FLOOR-ID | |||
*EXTENSION-ATTRIBUTE | *FLOOR-REQUEST-INFORMATION | |||
</artwork> | *EXTENSION-ATTRIBUTE</sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section anchor="sec_msg_format_ChairAction" numbered="true" toc="includ | ||||
<section title="FloorStatus" anchor="sec:msg_format:FloorStatus"> | e" removeInRFC="false" pn="section-5.3.9"> | |||
<t>The floor control server informs floor participants and floor chairs | <name slugifiedName="name-chairaction">ChairAction</name> | |||
about the status (e.g., the current holder) of a floor by sending them FloorStat | <t indent="0" pn="section-5.3.9-1">Floor chairs send instructions to f | |||
us messages. The following is the format of the FloorStatus message:</t> | loor control servers by sending them ChairAction messages. The following is the | |||
<t><figure title="FloorStatus format" anchor="fig:floorstatus"> | format of the ChairAction message:</t> | |||
<artwork> | <figure anchor="fig_chairaction" align="left" suppress-title="false" p | |||
FloorStatus = COMMON-HEADER | n="figure-39"> | |||
*FLOOR-ID | <name slugifiedName="name-chairaction-format">ChairAction format</na | |||
*FLOOR-REQUEST-INFORMATION | me> | |||
*EXTENSION-ATTRIBUTE | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.9-2. | |||
</artwork> | 1"> | |||
</figure></t> | ChairAction = COMMON-HEADER | |||
</section> | FLOOR-REQUEST-INFORMATION | |||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
<section title="ChairAction" anchor="sec:msg_format:ChairAction"> | </figure> | |||
<t>Floor chairs send instructions to floor control servers by sending th | </section> | |||
em ChairAction messages. The following is the format of the ChairAction message: | <section anchor="sec_msg_format_ChairActionAck" numbered="true" toc="inc | |||
</t> | lude" removeInRFC="false" pn="section-5.3.10"> | |||
<t><figure title="ChairAction format" anchor="fig:chairaction"> | <name slugifiedName="name-chairactionack">ChairActionAck</name> | |||
<artwork> | <t indent="0" pn="section-5.3.10-1">Floor control servers confirm that | |||
ChairAction = COMMON-HEADER | they have accepted a ChairAction message by sending a ChairActionAck message. T | |||
FLOOR-REQUEST-INFORMATION | he following is the format of the ChairActionAck message:</t> | |||
*EXTENSION-ATTRIBUTE | <figure anchor="fig_chairactionack" align="left" suppress-title="false | |||
</artwork> | " pn="figure-40"> | |||
</figure></t> | <name slugifiedName="name-chairactionack-format">ChairActionAck form | |||
</section> | at</name> | |||
<sourcecode name="" type="abnf" markers="false" pn="section-5.3.10-2 | ||||
<section title="ChairActionAck" anchor="sec:msg_format:ChairActionAck"> | .1"> | |||
<t>Floor control servers confirm that they have accepted a ChairAction m | ChairActionAck = COMMON-HEADER | |||
essage by sending a ChairActionAck message. The following is the format of the C | *EXTENSION-ATTRIBUTE</sourcecode> | |||
hairActionAck message:</t> | </figure> | |||
<t><figure title="ChairActionAck format" anchor="fig:chairactionack"> | </section> | |||
<artwork> | <section anchor="sec_msg_format_Hello" numbered="true" toc="include" rem | |||
ChairActionAck = COMMON-HEADER | oveInRFC="false" pn="section-5.3.11"> | |||
*EXTENSION-ATTRIBUTE | <name slugifiedName="name-hello">Hello</name> | |||
</artwork> | <t indent="0" pn="section-5.3.11-1">Floor participants and floor chair | |||
</figure></t> | s <bcp14>MAY</bcp14> check the liveness of floor control servers by sending a He | |||
</section> | llo message. Additionally, clients communicating with a floor control server ov | |||
er an unreliable transport use the Hello message to initiate communication with | ||||
<section title="Hello" anchor="sec:msg_format:Hello"> | the server. The following is the format of the Hello message:</t> | |||
<t>Floor participants and floor chairs MAY check the liveliness of floor | <figure anchor="fig_hello" align="left" suppress-title="false" pn="fig | |||
control servers by sending a Hello message. Additionally, clients communicatin | ure-41"> | |||
g with a floor control server over a an unreliable transport use the Hello messa | <name slugifiedName="name-hello-format">Hello format</name> | |||
ge to initiate communication with the server. The following is the format of th | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.11-2 | |||
e Hello message:</t> | .1"> | |||
<t><figure title="Hello format" anchor="fig:hello"> | Hello = COMMON-HEADER | |||
<artwork> | *EXTENSION-ATTRIBUTE</sourcecode> | |||
Hello = COMMON-HEADER | </figure> | |||
*EXTENSION-ATTRIBUTE | </section> | |||
</artwork> | <section anchor="sec_msg_format_HelloAck" numbered="true" toc="include" | |||
</figure></t> | removeInRFC="false" pn="section-5.3.12"> | |||
</section> | <name slugifiedName="name-helloack">HelloAck</name> | |||
<t indent="0" pn="section-5.3.12-1">Floor control servers confirm that | ||||
<section title="HelloAck" anchor="sec:msg_format:HelloAck"> | they are alive on reception of a Hello message by sending a HelloAck message. T | |||
<t>Floor control servers confirm that they are alive on reception of a H | he following is the format of the HelloAck message:</t> | |||
ello message by sending a HelloAck message. The following is the format of the H | <figure anchor="fig_helloack" align="left" suppress-title="false" pn=" | |||
elloAck message:</t> | figure-42"> | |||
<t><figure title="HelloAck format" anchor="fig:helloack"> | <name slugifiedName="name-helloack-format">HelloAck format</name> | |||
<artwork> | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.12-2 | |||
HelloAck = COMMON-HEADER | .1"> | |||
SUPPORTED-PRIMITIVES | HelloAck = COMMON-HEADER | |||
SUPPORTED-ATTRIBUTES | SUPPORTED-PRIMITIVES | |||
*EXTENSION-ATTRIBUTE | SUPPORTED-ATTRIBUTES | |||
</artwork> | *EXTENSION-ATTRIBUTE</sourcecode> | |||
</figure></t> | </figure> | |||
</section> | </section> | |||
<section anchor="sec_msg_format_Error" numbered="true" toc="include" rem | ||||
<section title="Error" anchor="sec:msg_format:Error"> | oveInRFC="false" pn="section-5.3.13"> | |||
<t>Floor control servers inform floor participants and floor chairs abou | <name slugifiedName="name-error">Error</name> | |||
t errors processing requests by sending them Error messages. The following is th | <t indent="0" pn="section-5.3.13-1">Floor control servers inform floor | |||
e format of the Error message:</t> | participants and floor chairs about errors processing requests by sending them | |||
<t><figure title="Error format" anchor="fig:error"> | Error messages. The following is the format of the Error message:</t> | |||
<artwork> | <figure anchor="fig_error" align="left" suppress-title="false" pn="fig | |||
Error = COMMON-HEADER | ure-43"> | |||
ERROR-CODE | <name slugifiedName="name-error-format">Error format</name> | |||
[ERROR-INFO] | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.13-2 | |||
*EXTENSION-ATTRIBUTE | .1"> | |||
</artwork> | Error = COMMON-HEADER | |||
</figure></t> | ERROR-CODE | |||
</section> | [ERROR-INFO] | |||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
<section title="FloorRequestStatusAck"> | </figure> | |||
<t>When communicating over an unreliable transport, floor participants a | </section> | |||
nd chairs acknowledge the receipt of a subsequent FloorRequestStatus message fro | <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | |||
m the floor control server (cf. <xref target="sec:server:request:subsequent"/>) | .3.14"> | |||
by sending a FloorRequestStatusAck message. The following is the format of the F | <name slugifiedName="name-floorrequeststatusack">FloorRequestStatusAck | |||
loorRequestStatusAck message:</t> | </name> | |||
<t><figure align="left" anchor="FloorRequestStatusAck" title="FloorReque | <t indent="0" pn="section-5.3.14-1">When communicating over an unrelia | |||
stStatusAck format"> | ble transport, floor participants and chairs acknowledge the receipt of a subseq | |||
<artwork align="left"><![CDATA[ | uent FloorRequestStatus message from the floor control server (cf. <xref target= | |||
FloorRequestStatusAck = (COMMON-HEADER) | "sec_server_request_subsequent" format="default" sectionFormat="of" derivedConte | |||
*EXTENSION-ATTRIBUTE ]]></artwork> | nt="Section 13.1.2"/>) by sending a FloorRequestStatusAck message. The following | |||
</figure></t> | is the format of the FloorRequestStatusAck message:</t> | |||
</section> | <figure anchor="FloorRequestStatusAck" align="left" suppress-title="fa | |||
lse" pn="figure-44"> | ||||
<section title="FloorStatusAck"> | <name slugifiedName="name-floorrequeststatusack-forma">FloorRequestS | |||
<t>When communicating over an unreliable transport, floor participants a | tatusAck format</name> | |||
nd chairs acknowledge the receipt of a subsequent FloorStatus message from the f | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.14-2 | |||
loor control server (cf. <xref target="sec:server:floorinfo:subsequent"/>) by se | .1"> | |||
nding a FloorStatusAck message. The following is the format of the FloorStatusAc | FloorRequestStatusAck = (COMMON-HEADER) | |||
k message:</t> | *EXTENSION-ATTRIBUTE</sourcecode> | |||
<t><figure align="left" anchor="FloorStatusAck" title="FloorStatusAck fo | </figure> | |||
rmat"> | </section> | |||
<artwork align="left"><![CDATA[ | <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | |||
FloorStatusAck = (COMMON-HEADER) | .3.15"> | |||
*EXTENSION-ATTRIBUTE ]]></artwork> | <name slugifiedName="name-floorstatusack">FloorStatusAck</name> | |||
</figure></t> | <t indent="0" pn="section-5.3.15-1">When communicating over an unrelia | |||
</section> | ble transport, floor participants and chairs acknowledge the receipt of a subseq | |||
uent FloorStatus message from the floor control server (cf. <xref target="sec_se | ||||
<section title="Goodbye"> | rver_floorinfo_subsequent" format="default" sectionFormat="of" derivedContent="S | |||
<t>BFCP entities communicating over an unreliable transport that wish to | ection 13.5.2"/>) by sending a FloorStatusAck message. The following is the form | |||
dissociate themselves from their remote participant do so through the transmiss | at of the FloorStatusAck message:</t> | |||
ion of a Goodbye. The following is the format of the Goodbye message:</t> | <figure anchor="FloorStatusAck" align="left" suppress-title="false" pn | |||
<t><figure align="left" anchor="Goodbye" title="Goodbye format"> | ="figure-45"> | |||
<artwork align="left"><![CDATA[ | <name slugifiedName="name-floorstatusack-format">FloorStatusAck form | |||
Goodbye = (COMMON-HEADER) | at</name> | |||
*EXTENSION-ATTRIBUTE ]]></artwork> | <sourcecode name="" type="abnf" markers="false" pn="section-5.3.15-2 | |||
</figure></t> | .1"> | |||
</section> | FloorStatusAck = (COMMON-HEADER) | |||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
<section title="GoodbyeAck"> | </figure> | |||
<t>BFCP entities communicating over an unreliable transport acknowledge | </section> | |||
the receipt of a Goodbye message from a peer. The following is the format of the | <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | |||
GoodbyeAck message:</t> | .3.16"> | |||
<t><figure align="left" anchor="GoodbyeAck" title="GoodbyeAck format"> | <name slugifiedName="name-goodbye">Goodbye</name> | |||
<artwork align="left"><![CDATA[ | <t indent="0" pn="section-5.3.16-1">BFCP entities communicating over a | |||
GoodbyeAck = (COMMON-HEADER) | n unreliable transport that wish to dissociate themselves from their remote part | |||
*EXTENSION-ATTRIBUTE ]]></artwork> | icipant do so through the transmission of a Goodbye. The following is the format | |||
</figure></t> | of the Goodbye message:</t> | |||
<figure anchor="Goodbye" align="left" suppress-title="false" pn="figur | ||||
e-46"> | ||||
<name slugifiedName="name-goodbye-format">Goodbye format</name> | ||||
<sourcecode name="" type="abnf" markers="false" pn="section-5.3.16-2 | ||||
.1"> | ||||
Goodbye = (COMMON-HEADER) | ||||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
</figure> | ||||
</section> | ||||
<section numbered="true" toc="include" removeInRFC="false" pn="section-5 | ||||
.3.17"> | ||||
<name slugifiedName="name-goodbyeack">GoodbyeAck</name> | ||||
<t indent="0" pn="section-5.3.17-1">BFCP entities communicating over a | ||||
n unreliable transport acknowledge the receipt of a Goodbye message from a peer. | ||||
The following is the format of the GoodbyeAck message:</t> | ||||
<figure anchor="GoodbyeAck" align="left" suppress-title="false" pn="fi | ||||
gure-47"> | ||||
<name slugifiedName="name-goodbyeack-format">GoodbyeAck format</name | ||||
> | ||||
<sourcecode name="" type="abnf" markers="false" pn="section-5.3.17-2 | ||||
.1"> | ||||
GoodbyeAck = (COMMON-HEADER) | ||||
*EXTENSION-ATTRIBUTE</sourcecode> | ||||
</figure> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | <section anchor="sec_transport" numbered="true" toc="include" removeInRFC="f | |||
alse" pn="section-6"> | ||||
<section title="Transport" anchor="sec:transport"> | <name slugifiedName="name-transport">Transport</name> | |||
<t>The transport over which BFCP entities exchange messages depends on the i | <t indent="0" pn="section-6-1">The transport over which BFCP entities exch | |||
nformation the clients obtain for how to to contact the floor control server, as | ange messages depends on the information the clients obtain for contacting the f | |||
described in <xref target="sec:scope:info"/>. Two transports are supported: TCP | loor control server, as described in <xref target="sec_scope_info" format="defau | |||
, appropriate where connectivity is not impeded by network elements such as NAT | lt" sectionFormat="of" derivedContent="Section 3.2"/>. Two transports are suppor | |||
devices or media relays; and UDP for those deployments where TCP may not be appl | ted: TCP, which is appropriate where connectivity is not impeded by network elem | |||
icable or appropriate.</t> | ents such as NAT devices or media relays; and UDP for those deployments where TC | |||
P may not be applicable or appropriate.</t> | ||||
<t><list style="empty"> | <aside pn="section-6-2"> | |||
<t>Informational note: In practice, products are configured to try one t | <t indent="0" pn="section-6-2.1">Note: In practice, products are configu | |||
ransport first and use the other transport as a fallback. Whether TCP or UDP is | red to try one transport first and then use the other transport as a fallback. W | |||
chosen as underlying transport depends on the type of product and the deployment | hether TCP or UDP is chosen as underlying transport depends on the type of produ | |||
environment. See <xref target="app:motivation"/> for additional considerations. | ct and the deployment environment. See <xref target="app_motivation" format="def | |||
</t> | ault" sectionFormat="of" derivedContent="Appendix B"/> for additional considerat | |||
</list></t> | ions.</t> | |||
</aside> | ||||
<section anchor="tcp_transport" title="Reliable Transport"> | <section anchor="tcp_transport" numbered="true" toc="include" removeInRFC= | |||
<t>BFCP entities may elect to exchange BFCP messages using TCP connections | "false" pn="section-6.1"> | |||
. TCP provides an in-order reliable delivery of a stream of bytes. Consequently, | <name slugifiedName="name-reliable-transport">Reliable Transport</name> | |||
message framing needs to be implemented in the application layer. BFCP implemen | <t indent="0" pn="section-6.1-1">BFCP entities may elect to exchange BFC | |||
ts application-layer framing using TLV-encoded attributes.</t> | P messages using TCP connections. TCP provides an in-order reliable delivery of | |||
<t>A client MUST NOT use more than one TCP connection to communicate with | a stream of bytes. Consequently, message framing needs to be implemented in the | |||
a given floor control server within a conference. Nevertheless, if the same phys | application layer. BFCP implements application-layer framing using TLV-encoded a | |||
ical box handles different clients (e.g., a floor chair and a floor participant) | ttributes.</t> | |||
, which are identified by different User IDs, a separate connection per client i | <t indent="0" pn="section-6.1-2">A client <bcp14>MUST NOT</bcp14> use mo | |||
s allowed.</t> | re than one TCP connection to communicate with a given floor control server with | |||
<t>If a BFCP entity (a client or a floor control server) receives data tha | in a conference. Nevertheless, if the same physical box handles different client | |||
t cannot be parsed, the entity MUST close the TCP connection, and the connection | s (e.g., a floor chair and a floor participant), which are identified by differe | |||
SHOULD be reestablished. Similarly, if a TCP connection cannot deliver a BFCP m | nt User IDs, a separate connection per client is allowed.</t> | |||
essage and times out or receives an ICMP port unreachable message mid-connection | <t indent="0" pn="section-6.1-3">If a BFCP entity (a client or a floor c | |||
, the TCP connection SHOULD be reestablished.</t> | ontrol server) receives data that cannot be parsed, the entity <bcp14>MUST</bcp1 | |||
<t>The way connection reestablishment is handled depends on how the client | 4> close the TCP connection, and the connection <bcp14>SHOULD</bcp14> be reestab | |||
obtains information to contact the floor control server. Once the TCP connectio | lished. Similarly, if a TCP connection cannot deliver a BFCP message and times o | |||
n is reestablished, the client MAY resend those messages for which it did not ge | ut or receives an ICMP port unreachable message mid-connection, the TCP connecti | |||
t a response from the floor control server.</t> | on <bcp14>SHOULD</bcp14> be reestablished.</t> | |||
<t>If a floor control server detects that the TCP connection towards one o | <t indent="0" pn="section-6.1-4">The way connection reestablishment is h | |||
f the floor participants is lost, it is up to the local policy of the floor cont | andled depends on how the client obtains information to contact the floor contro | |||
rol server what to do with the pending floor requests of the floor participant. | l server. Once the TCP connection is reestablished, the client <bcp14>MAY</bcp14 | |||
In any case, it is RECOMMENDED that the floor control server keep the floor requ | > resend those messages for which it did not get a response from the floor contr | |||
ests (i.e., that it does not cancel them) while the TCP connection is reestablis | ol server.</t> | |||
hed.</t> | <t indent="0" pn="section-6.1-5">If a floor control server detects that | |||
<t>If a client wishes to end its BFCP connection with a floor control serv | the TCP connection towards one of the floor participants is lost, it is up to th | |||
er, the client closes (i.e., a graceful close) the TCP connection towards the fl | e local policy of the floor control server what to do with the pending floor req | |||
oor control server. If a floor control server wishes to end its BFCP connection | uests of the floor participant. In any case, it is <bcp14>RECOMMENDED</bcp14> th | |||
with a client (e.g., the Focus of the conference informs the floor control serv | at the floor control server keep the floor requests (i.e., that it does not canc | |||
er that the client has been kicked out from the conference), the floor control s | el them) while the TCP connection is reestablished.</t> | |||
erver closes (i.e., a graceful close) the TCP connection towards the client.</t> | <t indent="0" pn="section-6.1-6">If a client wishes to end its BFCP conn | |||
<t>In cases where a BFCP entity reestablishes a connection due to protocol | ection with a floor control server, the client closes (i.e., a graceful close) t | |||
errors as described above, the entity SHOULD NOT repeatedly reestablish the con | he TCP connection towards the floor control server. If a floor control server w | |||
nection. Rather, if the same protocol errors persist, the entity MUST cease att | ishes to end its BFCP connection with a client (e.g., the focus of the conferenc | |||
empts and SHOULD report the error to the human user and/or log the event. This | e informs the floor control server that the client has been kicked out of the co | |||
does not preclude the entity from reestablishing a connection when facing a diff | nference), the floor control server closes (i.e., a graceful close) the TCP conn | |||
erent set of errors. That said, entities MUST avoid overloading the server with | ection towards the client.</t> | |||
reestablishment requests. A connection MUST NOT be reestablished too frequentl | <t indent="0" pn="section-6.1-7">In cases where a BFCP entity reestablis | |||
y. The frequency is a matter of implementation, but SHOULD NOT be attempted mor | hes a connection due to protocol errors as described above, the entity <bcp14>SH | |||
e than once in a 30 second period of time.</t> | OULD NOT</bcp14> repeatedly reestablish the connection. Rather, if the same pro | |||
</section> | tocol errors persist, the entity <bcp14>MUST</bcp14> cease attempts and <bcp14>S | |||
HOULD</bcp14> report the error to the human user and/or log the event. This doe | ||||
<section anchor="udp_transport" title="Unreliable Transport"> | s not preclude the entity from reestablishing a connection when facing a differe | |||
<t>BFCP entities may elect to exchange BFCP messages using UDP datagrams. | nt set of errors. That said, entities <bcp14>MUST</bcp14> avoid overloading the | |||
UDP is an unreliable transport where neither delivery nor ordering is assured. E | server with reestablishment requests. A connection <bcp14>MUST NOT</bcp14> be | |||
ach BFCP UDP datagram MUST contain exactly one BFCP message or message fragment. | reestablished too frequently. The frequency is a matter of implementation, but | |||
To keep large BFCP messages from being fragmented at the IP layer, the fragment | <bcp14>SHOULD NOT</bcp14> be attempted more than once in a 30 second period of t | |||
ation of BFCP messages that exceed the path MTU size is performed at the BFCP le | ime.</t> | |||
vel. Considerations related to fragmentation are covered in <xref target="fragme | ||||
ntation_handling"/>. The message format for BFCP messages is the same regardless | ||||
of whether the messages are sent in UDP datagrams or over a TCP stream.</t> | ||||
<t>Clients MUST announce their presence to the floor control server by sen | ||||
ding a Hello message. The floor control server responds to the Hello message wit | ||||
h a HelloAck message. The client considers the floor control service as present | ||||
and available only upon receiving the HelloAck message. The behavior when timers | ||||
fire, including the determination that a connection is broken, is described in | ||||
<xref target="timers"/>.</t> | ||||
<t>As described in <xref target="sec:transactions"/>, each request sent by | ||||
a floor participant or chair forms a client transaction that expects an acknowl | ||||
edgement message back from the floor control server within a transaction failure | ||||
window. Concordantly, messages sent by the floor control server that initiate | ||||
new transactions (e.g., FloorStatus announcements as part of a FloorQuery subsc | ||||
ription) require acknowledgement messages from the floor participant and chair e | ||||
ntities to which they were sent.</t> | ||||
<t>If a Floor Control Server receives data that cannot be parsed, the rece | ||||
iving server MUST send an Error message with parameter value 10 (Unable to parse | ||||
message) indicating receipt of a malformed message, given that it is possible t | ||||
o parse the received message to such an extent that an Error message may be buil | ||||
t.</t> | ||||
<t>Entities MUST have at most one outstanding request transaction per peer | ||||
at any one time. Implicit subscriptions occur for a client-initiated request t | ||||
ransaction whose acknowledgement is implied by the first server-initiated respon | ||||
se for that transaction, followed by zero of more subsequent server-initiated me | ||||
ssages corresponding to the same transaction. An example is a FloorRequest messa | ||||
ge for which there are potentially multiple responses from the floor control ser | ||||
ver as it processes intermediate states until a terminal state (e.g., Granted or | ||||
Denied) is attained. The subsequent changes in state for the request are new tr | ||||
ansactions whose Transaction ID is determined by the floor control server and wh | ||||
ose receipt by the client participant is acknowledged with a FloorRequestStatusA | ||||
ck message.</t> | ||||
<t>By restricting entities to having at most one pending transaction open | ||||
in a BFCP connection, both the out-of-order receipt of messages as well as the p | ||||
ossibility for congestion are mitigated. Additional details regarding congestion | ||||
control are provided in <xref target="congestion"/>. A server-initiated request | ||||
(e.g., a FloorStatus with an update from the floor control server) received by | ||||
a participant before the initial FloorRequestStatus message that closes the clie | ||||
nt-initiated transaction that was instigated by the FloorRequest MUST be treated | ||||
as superseding the information conveyed in any such late arriving response. As | ||||
the floor control server cannot send a second update to the implicit floor statu | ||||
s subscription until the first is acknowledged, ordinality is maintained.</t> | ||||
<t>If a client wishes to end its BFCP connection with a floor control serv | ||||
er, it is REQUIRED that the client send a Goodbye message to dissociate itself f | ||||
rom any allocated resources. If a floor control server wishes to end its BFCP co | ||||
nnection with a client (e.g., the Focus of the conference informs the floor cont | ||||
rol server that the client has been kicked out from the conference), it is REQUI | ||||
RED that the floor control server send a Goodbye message towards the client.</t> | ||||
<!-- Commented out. RFC 5018 behaviour for unreliable transport is explici | ||||
tly not supported, cf. anchor="sec:scope:info". In the unlikely case we need UDP | ||||
/DTLS support outside offer/answer, a RFC5018bis is needed. | ||||
<t>RFC 5018 <xref target="RFC5018"/> specifies how to establish a TCP | ||||
connection to a floor control server outside the context of an offer/answer exc | ||||
hange. When using UDP the same set of data is needed for a BFCP connection as li | ||||
sted in <xref target="RFC5018"/>, Section 3, i.e. transport address of the serve | ||||
r, the conference identifier, and the user identifier. The procedures and consid | ||||
erations for resolving a host name into an IP address also applies to BFCP over | ||||
an unreliable transport. In <xref target="RFC5018"/>, Section 4 applies, but whe | ||||
n using BFCP over an unreliable transport the floor control server that receives | ||||
a BFCP message over UDP (no DTLS) SHOULD request the use of DTLS by generating | ||||
an Error message with an Error code with a value of 11 (Use DTLS). A floor contr | ||||
ol server that is configured to require DTLS MUST request the use of DTLS this w | ||||
ay. The recommendations for authentication in <xref target="RFC5018"/>, Section | ||||
5 and the security considerations in <xref target="RFC5018"/>, Section 6 also ap | ||||
ply when an unreliable transport is used, both for certificate-based server auth | ||||
entication and for client authentication based on a pre-shared secret.</t> --> | ||||
<section anchor="congestion" title="Congestion Control"> | ||||
<t>BFCP may be characterized to generate "low data-volume" traffic, per | ||||
the classification in <xref target="RFC5405"/>. Nevertheless is it necessary to | ||||
ensure suitable and necessary congestion control mechanisms are used for BFCP ov | ||||
er UDP. As described in <xref target="udp_transport"/>, within the same BFCP con | ||||
nection, every entity - client or server - is only allowed to send one request a | ||||
t a time, and await the acknowledging response. This way at most one datagram is | ||||
sent per RTT given the message is not lost during transmission. In case the mes | ||||
sage is lost, the request retransmission timer T1 specified in <xref target="tim | ||||
ers_retrans"/> will fire and the message is retransmitted up to three times, in | ||||
addition to the original transmission of the message. The default initial interv | ||||
al MUST be set to 500ms, but is adjusted dynamically as described in <xref targe | ||||
t="timers_retrans"/>. The interval MUST be doubled after each retransmission at | ||||
tempt. This is similar to the specification of the timer A and its initial value | ||||
T1 in SIP as described in Section 17.1.1.2 of <xref target="RFC3261"/>, except | ||||
that the value of T1 in this protocol is not fixed from one transaction to anoth | ||||
er.</t> | ||||
</section> | ||||
<section anchor="icmp" title="ICMP Error Handling"> | ||||
<t>ICMP is not usable when BFCP is running over an unreliable transport | ||||
due to risks associated with off-path attacks. Any ICMP messages associated wit | ||||
h BFCP running over an unreliable transport MUST be ignored.</t> | ||||
</section> | ||||
<section anchor="fragmentation_handling" title="Fragmentation Handling"> | ||||
<t>When using UDP, a single BFCP message could be fragmented at the IP l | ||||
ayer if its overall size exceeds the path MTU of the network. To avoid this happ | ||||
ening at the IP layer, a fragmentation scheme for BFCP is defined below.</t> | ||||
<t>BFCP is designed for achieving small message size, due to the binary | ||||
encoding as described in <xref target="sec:intro"/>. The fragmentation scheme is | ||||
therefore deliberately kept simple and straightforward, since the probability o | ||||
f fragmentation of BFCP messages being required is small. By design, the fragmen | ||||
tation scheme does not acknowledge individual BFCP message fragments. The whole | ||||
BFCP message is acknowledged if received completely.</t> | ||||
<t>BFCP entities SHOULD consider the path MTU size available between the | ||||
sender and the receiver and MAY run MTU discovery, such as <xref target="RFC119 | ||||
1"/><xref target="RFC1981"/><xref target="RFC4821"/>, for this purpose.</t> | ||||
<t>When transmitting a BFCP message with size greater than the path MTU, | ||||
the sender MUST fragment the message into a series of N contiguous data ranges. | ||||
The size of each of these N messages MUST be smaller than the path MTU to help | ||||
prevent fragmentation overlap attacks. The value for N is defined as ceil((mess | ||||
age size - COMMON-HEADER size) / (path MTU size - COMMON-HEADER size)), where ce | ||||
il is the integer ceiling function and the COMMON-HEADER size includes the Fragm | ||||
ent Offset and Fragment Length fields. The sender then creates N BFCP fragment | ||||
messages (one for each data range) with the same Transaction ID. The size of eac | ||||
h of these N messages, with the COMMON-HEADER included, MUST be smaller than the | ||||
path MTU. The F flag in the COMMON-HEADER in all the fragments is set to indica | ||||
te fragmentation of the BFCP message.</t> | ||||
<t>For each of these fragments the Fragment Offset and Fragment Length f | ||||
ields are included in the COMMON-HEADER. The Fragment Offset field denotes the n | ||||
umber of 4-octet units contained in the previous fragments, excluding the common | ||||
header. The Fragment Length contains the length of the fragment itself, also ex | ||||
cluding the common header. Note that the Payload Length field contains the lengt | ||||
h of the entire, unfragmented message.</t> | ||||
<t>When a BFCP implementation receives a BFCP message fragment, it MUST | ||||
buffer the fragment until either it has received the entire BFCP message, or unt | ||||
il the Response Retransmission Timer expires. The state machine should handle th | ||||
e BFCP message only after all the fragments for the message have been received.< | ||||
/t> | ||||
<t>If a fragment of a BFCP message is lost, the sender will not receive | ||||
an acknowledgement for the message. Therefore the sender will retransmit the mes | ||||
sage with same transaction ID as specified in <xref target="timers"/>. If the ac | ||||
knowledgement message sent by the receiver is lost, then the entire message will | ||||
be resent by the sender. The receiver MUST then retransmit the acknowledgement. | ||||
The receiver MAY discard an incomplete buffer utilizing the Response Retransmis | ||||
sion Timer, starting the timer after the receipt of the first fragment.</t> | ||||
<t><list style="empty"> | ||||
<t>A Denial of Service (DoS) attack utilizing the fragmentation sche | ||||
me described above is mitigated by the fact that the Response Retransmission Tim | ||||
er is started after receipt of the first BFCP message fragment. In addition, the | ||||
Payload Length field can be compared with the Fragment Offset and Fragment Leng | ||||
th fields to verify the message fragments as they arrive. To make DoS attacks wi | ||||
th spoofed IP addresses difficult, BFCP entities SHOULD use the cookie exchange | ||||
mechanism in DTLS <xref target="RFC6347"/>.</t> | ||||
</list></t> | ||||
<t>When deciding message fragment size based on path MTU, the BFCP fragm | ||||
entation handling should take into account how the DTLS record framing expands t | ||||
he datagram size as described in Section 4.1.1.1 of <xref target="RFC6347"/>.</t | ||||
> | ||||
</section> | </section> | |||
<section anchor="udp_transport" numbered="true" toc="include" removeInRFC= | ||||
<section anchor="nat_traversal" title="NAT Traversal"> | "false" pn="section-6.2"> | |||
<t>One of the key benefits when using UDP for BFCP communication is the | <name slugifiedName="name-unreliable-transport">Unreliable Transport</na | |||
ability to leverage the existing NAT traversal infrastructure and strategies dep | me> | |||
loyed to facilitate transport of the media associated with the video conferencin | <t indent="0" pn="section-6.2-1">BFCP entities may elect to exchange BFC | |||
g sessions. Depending on the given deployment, this infrastructure typically inc | P messages using UDP datagrams. UDP is an unreliable transport where neither del | |||
ludes some subset of ICE <xref target="RFC5245"/>.</t> | ivery nor ordering is assured. Each BFCP UDP datagram <bcp14>MUST</bcp14> contai | |||
<t>In order to facilitate the initial establishment of NAT bindings, and | n exactly one BFCP message or message fragment. To keep large BFCP messages from | |||
to maintain those bindings once established, BFCP entities using an unreliable | being fragmented at the IP layer, the fragmentation of BFCP messages that excee | |||
transport are RECOMMENDED to use STUN <xref target="RFC5389"/> Binding Indicatio | d the path MTU size is performed at the BFCP level. Considerations related to fr | |||
n for keep-alives, as described for ICE <xref target="RFC5245"/>. Section 6.7 of | agmentation are covered in <xref target="fragmentation_handling" format="default | |||
<xref target="RFC5763"/> provides useful recommendations for middlebox interact | " sectionFormat="of" derivedContent="Section 6.2.3"/>. The message format for BF | |||
ion when DTLS is used.</t> | CP messages is the same regardless of whether the messages are sent in UDP datag | |||
<t><list style="empty"> | rams or over a TCP stream.</t> | |||
<t>Informational note: Since the version number is set to 2 when BFC | <t indent="0" pn="section-6.2-2">Clients <bcp14>MUST</bcp14> announce th | |||
P is used over an unreliable transport, cf. the Ver field in <xref target="sec:f | eir presence to the floor control server by sending a Hello message. The floor c | |||
ormat:common"/>, it is straight forward to distinguish between STUN and BFCP pac | ontrol server responds to the Hello message with a HelloAck message. The client | |||
kets even without checking the STUN magic cookie <xref target="RFC5389"/>.</t> | considers the floor control server as present and available only upon receiving | |||
</list></t> | the HelloAck message. The behavior when timers fire, including the determination | |||
<t>In order to facilitate traversal of BFCP packets through NATs, BFCP e | that a connection is broken, is described in <xref target="timers" format="defa | |||
ntities using an unreliable transport are RECOMMENDED to use symmetric ports for | ult" sectionFormat="of" derivedContent="Section 8.3"/>.</t> | |||
sending and receiving BFCP packets, as recommended for RTP/RTCP <xref target="R | <t indent="0" pn="section-6.2-3">As described in <xref target="sec_trans | |||
FC4961"/>.</t> | actions" format="default" sectionFormat="of" derivedContent="Section 8"/>, each | |||
request sent by a floor participant or chair forms a client transaction that exp | ||||
ects an acknowledgement message from the floor control server within a transacti | ||||
on failure window. Concordantly, messages sent by the floor control server tha | ||||
t initiate new transactions (e.g., FloorStatus announcements as part of a FloorQ | ||||
uery subscription) require acknowledgement messages from the floor participant a | ||||
nd chair entities to which they were sent.</t> | ||||
<t indent="0" pn="section-6.2-4">If a floor control server receives data | ||||
that cannot be parsed, the receiving server <bcp14>MUST</bcp14> send an Error m | ||||
essage with parameter value 10 (Unable to Parse Message) indicating receipt of a | ||||
malformed message, given that it is possible to parse the received message to s | ||||
uch an extent that an Error message may be built.</t> | ||||
<t indent="0" pn="section-6.2-5">Entities <bcp14>MUST</bcp14> have at mo | ||||
st one outstanding request transaction per peer at any one time. Implicit subsc | ||||
riptions occur for a client-initiated request transaction whose acknowledgement | ||||
is implied by the first server-initiated response for that transaction, followed | ||||
by zero of more subsequent server-initiated messages corresponding to the same | ||||
transaction. An example is a FloorRequest message for which there are potentiall | ||||
y multiple responses from the floor control server as it processes intermediate | ||||
states until a terminal state (e.g., Granted or Denied) is attained. The subsequ | ||||
ent changes in state for the request are new transactions whose Transaction ID i | ||||
s determined by the floor control server and whose receipt by the client partici | ||||
pant is acknowledged with a FloorRequestStatusAck message.</t> | ||||
<t indent="0" pn="section-6.2-6">By restricting entities to having at mo | ||||
st one pending transaction open in a BFCP connection, both the out-of-order rece | ||||
ipt of messages as well as the possibility for congestion are mitigated. Additio | ||||
nal details regarding congestion control are provided in <xref target="congestio | ||||
n" format="default" sectionFormat="of" derivedContent="Section 6.2.1"/>. | ||||
If a participant receives a server-initiated request (e.g., a | ||||
FloorStatus from the floor control server) while waiting for a | ||||
response to a client-initiated transaction (e.g., the participant | ||||
sent a FloorRequest and is waiting for a FloorRequestStatus | ||||
response), then the participant <bcp14>MUST</bcp14> treat the server-initiate | ||||
d | ||||
request as superseding any response to its client-initiated | ||||
transaction. | ||||
As the floor control server cannot send a second update to the implicit floor st | ||||
atus subscription until the first is acknowledged, ordinality is maintained.</t> | ||||
<t indent="0" pn="section-6.2-7">If a client wishes to end its BFCP conn | ||||
ection with a floor control server, it is <bcp14>REQUIRED</bcp14> that the clien | ||||
t send a Goodbye message to dissociate itself from any allocated resources. If a | ||||
floor control server wishes to end its BFCP connection with a client (e.g., the | ||||
focus of the conference informs the floor control server that the client has be | ||||
en kicked out from the conference), it is <bcp14>REQUIRED</bcp14> that the floor | ||||
control server send a Goodbye message towards the client.</t> | ||||
<section anchor="congestion" numbered="true" toc="include" removeInRFC=" | ||||
false" pn="section-6.2.1"> | ||||
<name slugifiedName="name-congestion-control">Congestion Control</name | ||||
> | ||||
<t indent="0" pn="section-6.2.1-1">BFCP may be characterized as genera | ||||
ting "low data-volume" traffic, per the classification in <xref target="RFC8085" | ||||
format="default" sectionFormat="of" derivedContent="15"/>. Nevertheless, it is | ||||
necessary to ensure that suitable and necessary congestion control mechanisms ar | ||||
e used for BFCP over UDP. As described in <xref target="udp_transport" format="d | ||||
efault" sectionFormat="of" derivedContent="Section 6.2"/>, within the same BFCP | ||||
connection, every entity -- client or server -- is only allowed to send one requ | ||||
est at a time, and await the acknowledging response. This way, at most one datag | ||||
ram is sent per RTT given the message is not lost during transmission. If the me | ||||
ssage is lost, the request retransmission timer T1 specified in <xref target="ti | ||||
mers_retrans" format="default" sectionFormat="of" derivedContent="Section 8.3.1" | ||||
/> will fire, and the message is retransmitted up to three times, in addition to | ||||
the original transmission of the message. The default initial interval <bcp14>M | ||||
UST</bcp14> be set to 500 ms, but is adjusted dynamically as described in <xref | ||||
target="timers_retrans" format="default" sectionFormat="of" derivedContent="Sect | ||||
ion 8.3.1"/>. The interval <bcp14>MUST</bcp14> be doubled after each retransmis | ||||
sion attempt. This is similar to the specification of the timer A and its initia | ||||
l value T1 in SIP as described in <xref target="RFC3261" section="17.1.1.2" sect | ||||
ionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3261# | ||||
section-17.1.1.2" derivedContent="20"/>, except that the value of T1 in this pro | ||||
tocol is not fixed from one transaction to another.</t> | ||||
</section> | ||||
<section anchor="icmp" numbered="true" toc="include" removeInRFC="false" | ||||
pn="section-6.2.2"> | ||||
<name slugifiedName="name-icmp-error-handling">ICMP Error Handling</na | ||||
me> | ||||
<t indent="0" pn="section-6.2.2-1">ICMP is not usable when BFCP is run | ||||
ning over an unreliable transport | ||||
due to risks associated with off-path attacks. Any ICMP messages associated wit | ||||
h BFCP running over an unreliable transport <bcp14>MUST</bcp14> be ignored.</t> | ||||
</section> | ||||
<section anchor="fragmentation_handling" numbered="true" toc="include" r | ||||
emoveInRFC="false" pn="section-6.2.3"> | ||||
<name slugifiedName="name-fragmentation-handling">Fragmentation Handli | ||||
ng</name> | ||||
<t indent="0" pn="section-6.2.3-1">When using UDP, a single BFCP messa | ||||
ge could be fragmented at the IP layer if its overall size exceeds the path MTU | ||||
of the network. To avoid this happening at the IP layer, a fragmentation scheme | ||||
for BFCP is defined below.</t> | ||||
<t indent="0" pn="section-6.2.3-2">BFCP is designed for achieving smal | ||||
l message size, due to the binary encoding as described in <xref target="sec_int | ||||
ro" format="default" sectionFormat="of" derivedContent="Section 1"/>. The fragme | ||||
ntation scheme is therefore deliberately kept simple and straightforward, since | ||||
the probability of fragmentation of BFCP messages is small. By design, the fragm | ||||
entation scheme does not acknowledge individual BFCP message fragments. The whol | ||||
e BFCP message is acknowledged if received completely.</t> | ||||
<t indent="0" pn="section-6.2.3-3">BFCP entities <bcp14>SHOULD</bcp14> | ||||
consider the path MTU size | ||||
available between the sender and the receiver and <bcp14>MAY</bcp14> | ||||
run MTU discovery, such as described in <xref target="RFC1191" format=" | ||||
default" sectionFormat="of" derivedContent="25"/>, <xref target="RFC8201" format | ||||
="default" sectionFormat="of" derivedContent="26"/>, and <xref target="RFC4821" | ||||
format="default" sectionFormat="of" derivedContent="27"/>, for this purpose.</t> | ||||
<t indent="0" pn="section-6.2.3-4">When transmitting a BFCP message wi | ||||
th a size greater than the path MTU, the sender <bcp14>MUST</bcp14> fragment the | ||||
message into a series of N contiguous data ranges. The size of each of these N | ||||
messages <bcp14>MUST</bcp14> be smaller than the path MTU to help prevent fragm | ||||
entation overlap attacks. The value for N is defined as ceil((message size -- CO | ||||
MMON-HEADER size) / (path MTU size -- COMMON-HEADER size)), where ceil is the in | ||||
teger ceiling function, and the COMMON-HEADER size includes the Fragment Offset | ||||
and Fragment Length fields. The sender then creates N BFCP fragment messages (o | ||||
ne for each data range) with the same Transaction ID. The size of each of these | ||||
N messages, with the COMMON-HEADER included, <bcp14>MUST</bcp14> be smaller than | ||||
the path MTU. The F flag in the COMMON-HEADER in all the fragments is set to in | ||||
dicate fragmentation of the BFCP message.</t> | ||||
<t indent="0" pn="section-6.2.3-5">For each of these fragments, the Fr | ||||
agment Offset and Fragment Length fields are included in the COMMON-HEADER. The | ||||
Fragment Offset field denotes the number of 4-octet units contained in the previ | ||||
ous fragments, excluding the COMMON-HEADER. The Fragment Length contains the len | ||||
gth of the fragment itself, also excluding the COMMON-HEADER. Note that the Payl | ||||
oad Length field contains the length of the entire, unfragmented message.</t> | ||||
<t indent="0" pn="section-6.2.3-6">When a BFCP implementation receives | ||||
a BFCP message fragment, it <bcp14>MUST</bcp14> buffer the fragment until eithe | ||||
r it has received the entire BFCP message, or until the Response Retransmission | ||||
Timer expires. The state machine should handle the BFCP message only after all t | ||||
he fragments of the message have been received.</t> | ||||
<t indent="0" pn="section-6.2.3-7">If a fragment of a BFCP message is | ||||
lost, the sender will not receive an acknowledgement for the message. Therefore | ||||
the sender will retransmit the message with same transaction ID as specified in | ||||
<xref target="timers" format="default" sectionFormat="of" derivedContent="Sectio | ||||
n 8.3"/>. If the acknowledgement message sent by the receiver is lost, then the | ||||
entire message will be resent by the sender. The receiver <bcp14>MUST</bcp14> th | ||||
en retransmit the acknowledgement. The receiver <bcp14>MAY</bcp14> discard an in | ||||
complete buffer utilizing the Response Retransmission Timer, starting the timer | ||||
after the receipt of the first fragment.</t> | ||||
<aside pn="section-6.2.3-8"> | ||||
<t indent="0" pn="section-6.2.3-8.1">A Denial of Service (DoS) attac | ||||
k utilizing the fragmentation scheme described above is mitigated by the fact th | ||||
at the Response Retransmission Timer is started after receipt of the first BFCP | ||||
message fragment. In addition, the Payload Length field can be compared with the | ||||
Fragment Offset and Fragment Length fields to verify the message fragments as t | ||||
hey arrive. To make DoS attacks with spoofed IP addresses difficult, BFCP entiti | ||||
es <bcp14>SHOULD</bcp14> use the cookie exchange mechanism in DTLS <xref target= | ||||
"RFC6347" format="default" sectionFormat="of" derivedContent="8"/>.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-6.2.3-9">When deciding the size of the messa | ||||
ge fragment based on path MTU, the BFCP fragmentation handling should take into | ||||
account how the DTLS record framing expands the datagram size as described in <x | ||||
ref target="RFC6347" section="4.1.1.1" sectionFormat="of" format="default" deriv | ||||
edLink="https://rfc-editor.org/rfc/rfc6347#section-4.1.1.1" derivedContent="8"/> | ||||
.</t> | ||||
</section> | ||||
<section anchor="nat_traversal" numbered="true" toc="include" removeInRF | ||||
C="false" pn="section-6.2.4"> | ||||
<name slugifiedName="name-nat-traversal">NAT Traversal</name> | ||||
<t indent="0" pn="section-6.2.4-1">One of the key benefits of using UD | ||||
P for BFCP communication is the ability to leverage the existing NAT traversal i | ||||
nfrastructure and strategies deployed to facilitate transport of the media assoc | ||||
iated with the video conferencing sessions. Depending on the given deployment, t | ||||
his infrastructure typically includes some subset of Interactive Connectivity Es | ||||
tablishment (ICE) <xref target="RFC8445" format="default" sectionFormat="of" der | ||||
ivedContent="16"/>.</t> | ||||
<t indent="0" pn="section-6.2.4-2">In order to facilitate the initial | ||||
establishment of NAT bindings, and to maintain those bindings once established, | ||||
BFCP entities using an unreliable transport are <bcp14>RECOMMENDED</bcp14> to us | ||||
e STUN <xref target="RFC5389" format="default" sectionFormat="of" derivedContent | ||||
="14"/> Binding Indication for keepalives, as described for ICE <xref target="RF | ||||
C8445" format="default" sectionFormat="of" derivedContent="16"/>. <xref target=" | ||||
RFC5763" section="6.7" sectionFormat="of" format="default" derivedLink="https:// | ||||
rfc-editor.org/rfc/rfc5763#section-6.7" derivedContent="28"/> provides useful re | ||||
commendations for middlebox interaction when DTLS is used.</t> | ||||
<aside pn="section-6.2.4-3"> | ||||
<t indent="0" pn="section-6.2.4-3.1">Note: Since the version number | ||||
is set to 2 when BFCP is used over an unreliable transport, cf. the Ver field in | ||||
<xref target="sec_format_common" format="default" sectionFormat="of" derivedCon | ||||
tent="Section 5.1"/>, it is straightforward to distinguish between STUN and BFCP | ||||
packets even without checking the STUN magic cookie <xref target="RFC5389" form | ||||
at="default" sectionFormat="of" derivedContent="14"/>.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-6.2.4-4">In order to facilitate traversal of | ||||
BFCP packets through NATs, BFCP entities using an unreliable transport are <bcp | ||||
14>RECOMMENDED</bcp14> to use symmetric ports for sending and receiving BFCP pac | ||||
kets, as recommended for RTP/RTP Control Protocol (RTCP) <xref target="RFC4961" | ||||
format="default" sectionFormat="of" derivedContent="13"/>.</t> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | <section anchor="sec_lower-security" numbered="true" toc="include" removeInR | |||
FC="false" pn="section-7"> | ||||
<section title="Lower-Layer Security" anchor="sec:lower-security"> | <name slugifiedName="name-lower-layer-security">Lower-Layer Security</name | |||
<t>BFCP relies on lower-layer security mechanisms to provide replay and inte | > | |||
grity protection and confidentiality. BFCP floor control servers and clients (w | <t indent="0" pn="section-7-1">BFCP relies on lower-layer security mechani | |||
hich include both floor participants and floor chairs) MUST support TLS for tran | sms to provide replay and integrity protection and confidentiality. BFCP floor | |||
sport over TCP <xref target="RFC5246"/> and MUST support DTLS <xref target="RFC6 | control servers and clients (which include both floor participants and floor cha | |||
347"/> for transport over UDP. Any BFCP entity MAY support other security mechan | irs) <bcp14>MUST</bcp14> support TLS for transport over TCP <xref target="RFC844 | |||
isms.</t> | 6" format="default" sectionFormat="of" derivedContent="11"/> and <bcp14>MUST</bc | |||
<t>BFCP entities MUST support, at a minimum, the TLS_RSA_WITH_AES_128_CBC_SH | p14> support DTLS <xref target="RFC6347" format="default" sectionFormat="of" der | |||
A cipher suite <xref target="RFC5246"/> for backwards compatibility with existin | ivedContent="8"/> for transport over UDP. Any BFCP entity <bcp14>MAY</bcp14> sup | |||
g implementations of RFC 4582. In accordance with the recommendations and guidel | port other security mechanisms.</t> | |||
ines in <xref target="RFC7525"/>, BFCP entities SHOULD support the following cip | <t indent="0" pn="section-7-2">BFCP entities <bcp14>MUST</bcp14> support, | |||
her suites:</t> | at a minimum, the TLS_RSA_WITH_AES_128_CBC_SHA cipher suite <xref target="RFC524 | |||
<t><list style="symbols"> | 6" format="default" sectionFormat="of" derivedContent="7"/> for backwards compat | |||
<t>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256</t> | ibility with existing implementations of RFC 4582. In accordance with the recomm | |||
<t>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</t> | endations and guidelines in <xref target="RFC7525" format="default" sectionForma | |||
<t>TLS_DHE_RSA_WITH_AES_256_GCM_SHA384</t> | t="of" derivedContent="30"/>, BFCP entities <bcp14>SHOULD</bcp14> support the fo | |||
<t>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</t> | llowing cipher suites:</t> | |||
</list></t> | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-7-3 | |||
</section> | "> | |||
<li pn="section-7-3.1">TLS_DHE_RSA_WITH_AES_128_GCM_SHA256</li> | ||||
<section title="Protocol Transactions" anchor="sec:transactions"> | <li pn="section-7-3.2">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</li> | |||
<t>In BFCP, there are two types of transactions: client-initiated transactio | <li pn="section-7-3.3">TLS_DHE_RSA_WITH_AES_256_GCM_SHA384</li> | |||
ns and server-initiated transactions.</t> | <li pn="section-7-3.4">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</li> | |||
<t>Client-initiated transactions consist of a request from a client to a flo | </ul> | |||
or control server and a response from the floor control server to the client.</t | ||||
> | ||||
<t>Server-initiated transactions have different requirements and behavior de | ||||
pending on underlying transport:</t> | ||||
<t><list style="hanging"> | ||||
<t>When using a reliable transport, server-initiated transactions consis | ||||
t of a single message from a floor control server to a client (notifications). T | ||||
hey do not trigger any response.</t> | ||||
<t>When using an unreliable transport, server-initiated transactions con | ||||
sist of a request from a floor control server to a client and a response from th | ||||
e client to the floor control server.</t> | ||||
</list></t> | ||||
<t>When using BFCP over an unreliable transport, retransmission timer T1 (se | ||||
e <xref target="timers"/>) MUST be used for all requests until the transaction i | ||||
s completed. Note that while T1 varies over time, it remains constant for the d | ||||
uration of a given transaction and is only updated at the completion of a transa | ||||
ction.</t> | ||||
<section title="Client Behavior" anchor="sec:transactions:client"> | ||||
<t>A client starting a client-initiated transaction MUST set the Conferenc | ||||
e ID in the common header of the message to the Conference ID for the conference | ||||
that the client obtained previously.</t> | ||||
<t>The client MUST set the Transaction ID value in the common header to a | ||||
number that is different from 0 and that MUST NOT be reused in another message f | ||||
rom the client until a response from the server is received for the transaction. | ||||
The client uses the Transaction ID value to match this message with the respons | ||||
e from the floor control server. When using BFCP over an unreliable transport, i | ||||
t is important to choose a Transaction ID value that lets the receiver distingui | ||||
sh the reception of the next message in a sequence of BFCP messages from a retra | ||||
nsmission of a previous message. Therefore, BFCP entities using an unreliable t | ||||
ransport MUST use monotonically increasing Transaction ID values (except for wra | ||||
p-around).</t> | ||||
<t>A client receiving a server-initiated transaction over an unreliable tr | ||||
ansport MUST copy the Transaction ID from the request received from the server i | ||||
nto the response.</t> | ||||
</section> | ||||
<section title="Server Behavior" anchor="sec:transactions:server"> | ||||
<t>A floor control server sending a response within a client-initiated tra | ||||
nsaction MUST copy the Conference ID, the Transaction ID, and the User ID from t | ||||
he request received from the client into the response.</t> | ||||
<t>Server-initiated transactions MUST contain a Transaction ID equal to 0 | ||||
when BFCP is used over a reliable transport. Over an unreliable transport, the T | ||||
ransaction ID shall have the same properties as for client-initiated transaction | ||||
s. The server uses the Transaction ID value to match this message with the respo | ||||
nse from the floor participant or floor chair.</t> | ||||
</section> | </section> | |||
<section anchor="sec_transactions" numbered="true" toc="include" removeInRFC | ||||
<section anchor="timers" title="Timers"> | ="false" pn="section-8"> | |||
<t>When BFCP entities are communicating over an unreliable transport, two | <name slugifiedName="name-protocol-transactions">Protocol Transactions</na | |||
retransmission timers are employed to help mitigate against loss of datagrams. R | me> | |||
etransmission and response caching are not required when BFCP entities communica | <t indent="0" pn="section-8-1">In BFCP, there are two types of transaction | |||
te over a reliable transport.</t> | s: client-initiated transactions and server-initiated transactions.</t> | |||
<t indent="0" pn="section-8-2">Client-initiated transactions consist of a | ||||
<section anchor="timers_retrans" title="Request Retransmission Timer, T1"> | request from a client to a floor control server and a response from the floor co | |||
<t>T1 is a timer that schedules retransmission of a request until an app | ntrol server to the client.</t> | |||
ropriate response is received or until the maximum number of retransmissions hav | <t indent="0" pn="section-8-3">Server-initiated transactions have differen | |||
e occurred. The timer is computed using the smoothed round-trip time algorithm d | t requirements and behavior depending on underlying transport:</t> | |||
efind in <xref target="RFC2988"/> with an initial retransmission timeout (RTO) v | <ul empty="true" spacing="normal" bare="false" indent="3" pn="section-8-4" | |||
alue of 500ms and clock granularity (G) of 100ms. In contrast to step 2.4 of Se | > | |||
ction 2 of <xref target="RFC2988"/>, if the computed value of RTO is less than 5 | <li pn="section-8-4.1">When using a reliable transport, server-initiated | |||
00ms, then RTO shall be set to 500ms. Timer T1 MUST be adjusted with the recept | transactions consist of a single message from a floor control server to a clien | |||
ion of a response to each request transmitted in order to compute an accurate RT | t (notifications). They do not trigger any response.</li> | |||
O value, which is the effective T1 value. The RTT value R is the time in millis | <li pn="section-8-4.2">When using an unreliable transport, server-initia | |||
econds from the point when a request is transmitted to the time the initial resp | ted transactions consist of a request from a floor control server to a client an | |||
onse to that request is received. Responses to retransmitted packets MUST NOT b | d a response from the client to the floor control server.</li> | |||
e used to recompute the RTO value, as one cannot determine if a response is to a | </ul> | |||
n initial or retransmitted request. If T1 always expires on the initial transmi | <t indent="0" pn="section-8-5">When using BFCP over an unreliable transpor | |||
ssion of a new request, this would suggest the recommended initial T1 (and RTO) | t, retransmission timer T1 (see <xref target="timers" format="default" sectionFo | |||
value is too low and SHOULD be increased by doubling the initial values of T1 (a | rmat="of" derivedContent="Section 8.3"/>) <bcp14>MUST</bcp14> be used for all re | |||
nd RTO) until T1 does not expire when sending a new request.</t> | quests until the transaction is completed. Note that while T1 varies over time, | |||
<t>When retransmitting a request, timer T1 is doubled with each retransm | it remains constant for the duration of a given transaction and is only updated | |||
ission, failing after three unacknowledged retransmission attempts.</t> | at the completion of a transaction.</t> | |||
<t>If a valid response is not received for a client- or server-initiated | <section anchor="sec_transactions_client" numbered="true" toc="include" re | |||
transaction, the implementation MUST consider the BFCP connection as broken. Im | moveInRFC="false" pn="section-8.1"> | |||
plementations SHOULD follow the reestablishment procedure described in section 6 | <name slugifiedName="name-client-behavior">Client Behavior</name> | |||
.</t> | <t indent="0" pn="section-8.1-1">A client starting a client-initiated tr | |||
ansaction <bcp14>MUST</bcp14> set the Conference ID in the COMMON-HEADER of the | ||||
message to the Conference ID for the conference that the client obtained previou | ||||
sly.</t> | ||||
<t indent="0" pn="section-8.1-2">The client <bcp14>MUST</bcp14> set the | ||||
Transaction ID value in the COMMON-HEADER to a number that is different from 0 a | ||||
nd that <bcp14>MUST NOT</bcp14> be reused in another message from the client unt | ||||
il a response from the server is received for the transaction. The client uses t | ||||
he Transaction ID value to match this message with the response from the floor c | ||||
ontrol server. When using BFCP over an unreliable transport, it is important to | ||||
choose a Transaction ID value that lets the receiver distinguish the reception o | ||||
f the next message in a sequence of BFCP messages from a retransmission of a pre | ||||
vious message. Therefore, BFCP entities using an unreliable transport <bcp14>MUS | ||||
T</bcp14> use monotonically increasing Transaction ID values (except for wrap-ar | ||||
ound).</t> | ||||
<t indent="0" pn="section-8.1-3">A client receiving a server-initiated t | ||||
ransaction over an unreliable transport <bcp14>MUST</bcp14> copy the Transaction | ||||
ID from the request received from the server into the response.</t> | ||||
</section> | </section> | |||
<section anchor="sec_transactions_server" numbered="true" toc="include" re | ||||
<section anchor="timers_cache" title="Response Retransmission Timer, T2"> | moveInRFC="false" pn="section-8.2"> | |||
<t>T2 is a timer that, when fired, signals that the BFCP entity can rele | <name slugifiedName="name-server-behavior">Server Behavior</name> | |||
ase knowledge of the transaction against which it is running. It is started upon | <t indent="0" pn="section-8.2-1">A floor control server sending a respon | |||
the first transmission of the response to a request and is the only mechanism b | se within a client-initiated transaction <bcp14>MUST</bcp14> copy the Conference | |||
y which that response is released by the BFCP entity. Any subsequent retransmiss | ID, the Transaction ID, and the User ID from the request received from the clie | |||
ions of the same request can be responded to by replaying the cached response, w | nt into the response.</t> | |||
hilst that value is retained until the timer has fired. Refer to <xref target="f | <t indent="0" pn="section-8.2-2">Server-initiated transactions <bcp14>MU | |||
ragmentation_handling"/> for the role this timer has in the fragmentation handli | ST</bcp14> contain a Transaction ID equal to zero when BFCP is used over a relia | |||
ng scheme.</t> | ble transport. Over an unreliable transport, the Transaction ID shall have the s | |||
ame properties as for client-initiated transactions. The server uses the Transac | ||||
tion ID value to match this message with the response from the floor participant | ||||
or floor chair.</t> | ||||
</section> | </section> | |||
<section anchor="timers" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="timers_values" title="Timer Values"> | pn="section-8.3"> | |||
<t>The table below defines the different timers required when BFCP entit | <name slugifiedName="name-timers">Timers</name> | |||
ies communicate over an unreliable transport.</t> | <t indent="0" pn="section-8.3-1">When BFCP entities are communicating ov | |||
<texttable anchor="timertable" title="Timers"> | er an unreliable transport, two retransmission timers are employed to help mitig | |||
<ttcol align='center'>Timer</ttcol> | ate the loss of datagrams. Retransmission and response caching are not required | |||
<ttcol align='left'>Description</ttcol> | when BFCP entities communicate over a reliable transport.</t> | |||
<ttcol align='center'>Value/s</ttcol> | <section anchor="timers_retrans" numbered="true" toc="include" removeInR | |||
<c>T1</c> <c>Initial request retransmission timer</c> <c>0.5s (initial) | FC="false" pn="section-8.3.1"> | |||
</c> | <name slugifiedName="name-request-retransmission-time">Request Retrans | |||
<c>T2</c> <c>Response retransmission timer</c> <c>(T1*2^4)*1.25< | mission Timer, T1</name> | |||
/c> | <t indent="0" pn="section-8.3.1-1">T1 is a timer that schedules retran | |||
</texttable> | smission of a request until an appropriate response is received or until the max | |||
<t></t> | imum number of retransmissions has occurred. The timer is computed using the smo | |||
<t>The initial value for T1 is 500ms, which is an estimate of the RTT fo | othed round-trip time algorithm defined in <xref target="RFC6298" format="defaul | |||
r completing the transaction. Computation of this value follows the procedures | t" sectionFormat="of" derivedContent="2"/> with an initial retransmission timeou | |||
described in <xref target="timers_retrans"/>, which includes exponential backoff | t (RTO) value of 500 ms and clock granularity (G) of 100 ms. In contrast to ste | |||
s on retransmissions.</t> | p 2.4 of <xref target="RFC6298" section="2" sectionFormat="of" format="default" | |||
<t>T2 MUST be set such that it encompasses all legal retransmissions per | derivedLink="https://rfc-editor.org/rfc/rfc6298#section-2" derivedContent="2"/>, | |||
T1 plus a factor to accommodate network latency between BFCP entities, processi | if the computed value of RTO is less than 500 ms, then RTO shall be set to 500 | |||
ng delays, etc.</t> | ms. Timer T1 <bcp14>MUST</bcp14> be adjusted with the reception of a response t | |||
o each request transmitted in order to compute an accurate RTO value, which is t | ||||
he effective T1 value. The RTT value R is the time in milliseconds from the tim | ||||
e when a request is transmitted to the time the initial response to that request | ||||
is received. Responses to retransmitted packets <bcp14>MUST NOT</bcp14> be use | ||||
d to recompute the RTO value, as one cannot determine if a response is to an ini | ||||
tial or retransmitted request. If T1 always expires on the initial transmission | ||||
of a new request, this would suggest the recommended initial T1 (and RTO) value | ||||
is too low and <bcp14>SHOULD</bcp14> be increased by doubling the initial value | ||||
s of T1 (and RTO) until T1 does not expire when sending a new request.</t> | ||||
<t indent="0" pn="section-8.3.1-2">When retransmitting a request, time | ||||
r T1 is doubled with each retransmission, failing after three unacknowledged ret | ||||
ransmission attempts.</t> | ||||
<t indent="0" pn="section-8.3.1-3">If a valid response is not received | ||||
for a client- or server-initiated transaction, the implementation <bcp14>MUST</ | ||||
bcp14> consider the BFCP connection as broken. Implementations <bcp14>SHOULD</bc | ||||
p14> follow the reestablishment procedure described in <xref target="sec_transpo | ||||
rt" format="default" sectionFormat="of" derivedContent="Section 6"/>.</t> | ||||
</section> | ||||
<section anchor="timers_cache" numbered="true" toc="include" removeInRFC | ||||
="false" pn="section-8.3.2"> | ||||
<name slugifiedName="name-response-retransmission-tim">Response Retran | ||||
smission Timer, T2</name> | ||||
<t indent="0" pn="section-8.3.2-1">T2 is a timer that, when fired, sig | ||||
nals that the BFCP entity can release knowledge of the transaction against which | ||||
it is running. It is started upon the first transmission of the response to a r | ||||
equest and is the only mechanism by which that response is released by the BFCP | ||||
entity. Any subsequent retransmissions of the same request can be responded to b | ||||
y replaying the cached response, while that value is retained until the timer ha | ||||
s fired. Refer to <xref target="fragmentation_handling" format="default" section | ||||
Format="of" derivedContent="Section 6.2.3"/> for this timer's role in the fragme | ||||
ntation handling scheme.</t> | ||||
</section> | ||||
<section anchor="timers_values" numbered="true" toc="include" removeInRF | ||||
C="false" pn="section-8.3.3"> | ||||
<name slugifiedName="name-timer-values">Timer Values</name> | ||||
<t indent="0" pn="section-8.3.3-1">The table below defines the differe | ||||
nt timers required when BFCP entities communicate over an unreliable transport.< | ||||
/t> | ||||
<table anchor="timertable" align="center" pn="table-6"> | ||||
<name slugifiedName="name-timers-2">Timers</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="center" colspan="1" rowspan="1">Timer</th> | ||||
<th align="left" colspan="1" rowspan="1">Description</th> | ||||
<th align="center" colspan="1" rowspan="1">Value/s</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">T1</td> | ||||
<td align="left" colspan="1" rowspan="1">Initial request retrans | ||||
mission timer</td> | ||||
<td align="center" colspan="1" rowspan="1">0.5 s (initial)</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">T2</td> | ||||
<td align="left" colspan="1" rowspan="1">Response retransmission | ||||
timer</td> | ||||
<td align="center" colspan="1" rowspan="1">(T1*2<sup>4</sup>)*1. | ||||
25</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t indent="0" pn="section-8.3.3-3">The initial value for T1 is 500 ms, | ||||
which is an estimate of the RTT for completing the transaction. Computation of | ||||
this value follows the procedures described in <xref target="timers_retrans" fo | ||||
rmat="default" sectionFormat="of" derivedContent="Section 8.3.1"/>, which includ | ||||
es exponential backoffs on retransmissions.</t> | ||||
<t indent="0" pn="section-8.3.3-4">T2 <bcp14>MUST</bcp14> be set such | ||||
that it encompasses all legal retransmissions per T1 plus a factor to accommodat | ||||
e network latency between BFCP entities, processing delays, etc.</t> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | <section anchor="sec_auth" numbered="true" toc="include" removeInRFC="false" | |||
pn="section-9"> | ||||
<section title="Authentication and Authorization" anchor="sec:auth"> | <name slugifiedName="name-authentication-and-authoriz">Authentication and | |||
<t>BFCP clients SHOULD authenticate the floor control server before sending | Authorization</name> | |||
any BFCP message to it or accepting any BFCP message from it. Similarly, floor c | <t indent="0" pn="section-9-1">BFCP clients <bcp14>SHOULD</bcp14> authenti | |||
ontrol servers SHOULD authenticate a client before accepting any BFCP message fr | cate the floor control server before sending any BFCP message to it or accepting | |||
om it or sending any BFCP message to it.</t> | any BFCP message from it. Similarly, floor control servers <bcp14>SHOULD</bcp14 | |||
<t>If the signaling or control protocol traffic used to set up the conferenc | > authenticate a client before accepting any BFCP message from it or sending any | |||
e is authenticated and confidentiality and integrity protected, and the extensio | BFCP message to it.</t> | |||
ns in this document are supported, the BFCP clients MUST authenticate the floor | <t indent="0" pn="section-9-2">If the signaling or control protocol traffi | |||
control server and the floor control servers MUST authenticate the client before | c used to set up the conference is authenticated and confidentiality and integri | |||
communicating as described above. Note that BFCP entities supporting only the < | ty protected, and the extensions in this document are supported, the BFCP client | |||
xref target="RFC4582"/> subset may not comply with this mandatory authentication | s <bcp14>MUST</bcp14> authenticate the floor control server, and the floor contr | |||
requirement.</t> | ol servers <bcp14>MUST</bcp14> authenticate the client before communicating as d | |||
<t>BFCP supports TLS/DTLS mutual authentication between clients and floor co | escribed above. Note that BFCP entities supporting only the <xref target="RFC458 | |||
ntrol servers, as specified in <xref target="sec:auth:tls"/>. This is the RECOMM | 2" format="default" sectionFormat="of" derivedContent="3"/> subset may not compl | |||
ENDED authentication mechanism in BFCP.</t> | y with this mandatory authentication requirement.</t> | |||
<t>Note that future extensions may define additional authentication mechanis | <t indent="0" pn="section-9-3">BFCP supports TLS/DTLS mutual authenticatio | |||
ms.</t> | n between clients and floor control servers, as specified in <xref target="sec_a | |||
<t>In addition to authenticating BFCP messages, floor control servers need t | uth_tls" format="default" sectionFormat="of" derivedContent="Section 9.1"/>. Thi | |||
o authorize them. On receiving an authenticated BFCP message, the floor control | s is the <bcp14>RECOMMENDED</bcp14> authentication mechanism in BFCP.</t> | |||
server checks whether the client sending the message is authorized. If the clien | <t indent="0" pn="section-9-4">Note that future extensions may define addi | |||
t is not authorized to perform the operation being requested, the floor control | tional authentication mechanisms.</t> | |||
server generates an Error message, as described in <xref target="sec:server:erro | <t indent="0" pn="section-9-5">In addition to authenticating BFCP messages | |||
r"/>, with an Error code with a value of 5 (Unauthorized Operation). Messages fr | , floor control servers need to authorize them. On receiving an authenticated BF | |||
om a client that cannot be authorized MUST NOT be processed further.</t> | CP message, the floor control server checks whether the client sending the messa | |||
ge is authorized. If the client is not authorized to perform the operation being | ||||
<section title="TLS/DTLS Based Mutual Authentication" anchor="sec:auth:tls"> | requested, the floor control server generates an Error message, as described in | |||
<t>BFCP supports TLS/DTLS based mutual authentication between clients and | <xref target="sec_server_error" format="default" sectionFormat="of" derivedCont | |||
floor control servers. If TLS/DTLS is used, an initial integrity-protected chan | ent="Section 13.8"/>, with an error code with a value of 5 (Unauthorized Operati | |||
nel is REQUIRED between the client and the floor control server that can be used | on). Messages from a client that cannot be authorized <bcp14>MUST NOT</bcp14> be | |||
to exchange their certificates (which MAY be self-signed certificates) or, more | processed further.</t> | |||
commonly, the fingerprints of these certificates. These certificates are used | <section anchor="sec_auth_tls" numbered="true" toc="include" removeInRFC=" | |||
at TLS/DTLS establishment time.</t> | false" pn="section-9.1"> | |||
<t><list style="hanging"> | <name slugifiedName="name-tls-dtls-based-mutual-authe">TLS/DTLS Based Mu | |||
<t>The implementation of such an integrity-protected channel using SIP | tual Authentication</name> | |||
and the SDP offer/answer model is described in <xref target="I-D.ietf-bfcpbis-r | <t indent="0" pn="section-9.1-1">BFCP supports TLS/DTLS based mutual aut | |||
fc4583bis"/>.</t> | hentication between clients and floor control servers. If TLS/DTLS is used, an | |||
</list></t> | initial integrity-protected channel is <bcp14>REQUIRED</bcp14> between the clien | |||
<t>BFCP messages received over an authenticated TLS/DTLS connection are co | t and the floor control server that can be used to exchange their certificates ( | |||
nsidered authenticated. A floor control server that receives a BFCP message over | which <bcp14>MAY</bcp14> be self-signed certificates) or, more commonly, the fin | |||
TCP/UDP (no TLS/DTLS) MAY request the use of TLS/DTLS by generating an Error me | gerprints of these certificates. These certificates are used at TLS/DTLS estab | |||
ssage, as described in <xref target="sec:server:error"/>, with an Error code wit | lishment time.</t> | |||
h a value of 9 (Use TLS) or a value of 11 (Use DTLS) respectively. Clients con | <aside pn="section-9.1-2"> | |||
figured to require the use of TLS/DTLS MUST ignore unauthenticated messages.</t> | <t indent="0" pn="section-9.1-2.1">The implementation of such an integ | |||
<t>Note that future extensions may define additional authentication mechan | rity-protected channel using SIP and the SDP offer/answer model is described in | |||
isms that may not require an initial integrity-protected channel (e.g., authenti | <xref target="RFC8856" format="default" sectionFormat="of" derivedContent="12"/> | |||
cation based on certificates signed by a certificate authority).</t> | .</t> | |||
<t>As described in <xref target="sec:auth"/>, floor control servers need t | </aside> | |||
o perform authorization before processing any message. In particular, the floor | <t indent="0" pn="section-9.1-3">BFCP messages received over an authenti | |||
control server MUST check that messages arriving over a given authenticated TLS/ | cated TLS/DTLS connection are considered authenticated. A floor control server t | |||
DTLS connection use an authorized User ID (i.e., a User ID that the user that es | hat receives a BFCP message over TCP/UDP (no TLS/DTLS) <bcp14>MAY</bcp14> reques | |||
tablished the authenticated TLS/DTLS connection is allowed to use).</t> | t the use of TLS/DTLS by generating an Error message, as described in <xref targ | |||
</section> | et="sec_server_error" format="default" sectionFormat="of" derivedContent="Sectio | |||
</section> | n 13.8"/>, with an error code with a value of 9 (Use TLS) or a value of 11 (Use | |||
DTLS) respectively. Clients configured to require the use of TLS/DTLS <bcp14>M | ||||
<section title="Floor Participant Operations" anchor="sec:participant"> | UST</bcp14> ignore unauthenticated messages.</t> | |||
<t>This section specifies how floor participants can perform different opera | <t indent="0" pn="section-9.1-4">Note that future extensions may define | |||
tions, such as requesting a floor, using the protocol elements described in earl | additional authentication mechanisms that may not require an initial integrity-p | |||
ier sections. <xref target="sec:chair"/> specifies operations that are specific | rotected channel (e.g., authentication based on certificates signed by a certifi | |||
to floor chairs, such as instructing the floor control server to grant or revoke | cate authority).</t> | |||
a floor, and <xref target="sec:client"/> specifies operations that can be perfo | <t indent="0" pn="section-9.1-5">As described in <xref target="sec_auth" | |||
rmed by any client (i.e., both floor participants and floor chairs).</t> | format="default" sectionFormat="of" derivedContent="Section 9"/>, floor control | |||
servers need to perform authorization before processing any message. In particu | ||||
<section title="Requesting a Floor" anchor="sec:participant:request"> | lar, the floor control server <bcp14>MUST</bcp14> check that messages arriving o | |||
<t>A floor participant that wishes to request one or more floors does so b | ver a given authenticated TLS/DTLS connection use an authorized User ID (i.e., a | |||
y sending a FloorRequest message to the floor control server.</t> | User ID that the user that established the authenticated TLS/DTLS connection is | |||
allowed to use).</t> | ||||
<section title="Sending a FloorRequest Message" anchor="sec:participant:re | ||||
quest:send"> | ||||
<t>The ABNF in <xref target="sec:msg_format:FloorRequest"/> describes th | ||||
e attributes that a FloorRequest message can contain. In addition, the ABNF spec | ||||
ifies normatively which of these attributes are mandatory, and which ones are op | ||||
tional.</t> | ||||
<t>The floor participant sets the Conference ID and the Transaction ID i | ||||
n the common header following the rules given in <xref target="sec:transactions: | ||||
client"/>.</t> | ||||
<t>The floor participant sets the User ID in the common header to the fl | ||||
oor participant's identifier. If the sender of the FloorRequest message (identi | ||||
fied by the User ID) is not the participant that would eventually get the floor | ||||
(i.e., a third-party floor request), the sender SHOULD add a BENEFICIARY-ID attr | ||||
ibute to the message identifying the beneficiary of the floor.</t> | ||||
<t><list style="hanging"> | ||||
<t>Note that the name space for both the User ID and the Beneficiary | ||||
ID is the same. That is, a given participant is identified by a single 16-bit v | ||||
alue that can be used in the User ID in the common header and in several attribu | ||||
tes: BENEFICIARY-ID, BENEFICIARY-INFORMATION, and REQUESTED-BY-INFORMATION.</t> | ||||
</list></t> | ||||
<t>The floor participant MUST insert at least one FLOOR-ID attribute in | ||||
the FloorRequest message. If the client inserts more than one FLOOR-ID attribute | ||||
, the floor control server will treat all the floor requests as an atomic packag | ||||
e. That is, the floor control server will either grant or deny all the floors in | ||||
the FloorRequest message.</t> | ||||
<t>The floor participant may use a PARTICIPANT-PROVIDED-INFO attribute t | ||||
o state the reason why the floor or floors are being requested. The Text field i | ||||
n the PARTICIPANT-PROVIDED-INFO attribute is intended for human consumption.</t> | ||||
<t>The floor participant may request that the server handle the floor re | ||||
quest with a certain priority using a PRIORITY attribute.</t> | ||||
</section> | </section> | |||
</section> | ||||
<section title="Receiving a Response" anchor="sec:client:request:response" | <section anchor="sec_participant" numbered="true" toc="include" removeInRFC= | |||
> | "false" pn="section-10"> | |||
<t>A message from the floor control server is considered a response to t | <name slugifiedName="name-floor-participant-operation">Floor Participant O | |||
he FloorRequest message if the message from the floor control server has the sam | perations</name> | |||
e Conference ID, Transaction ID, and User ID as the FloorRequest message, as des | <t indent="0" pn="section-10-1">This section specifies how floor participa | |||
cribed in <xref target="sec:transactions:client"/>. On receiving such a response | nts can perform different operations, such as requesting a floor, using the prot | |||
, the floor participant follows the rules in <xref target="sec:auth"/> that rela | ocol elements described in earlier sections. <xref target="sec_chair" format="de | |||
te to floor control server authentication.</t> | fault" sectionFormat="of" derivedContent="Section 11"/> specifies operations tha | |||
<t>The successful processing of a FloorRequest message at the floor cont | t are specific to floor chairs, such as instructing the floor control server to | |||
rol server involves generating one or several FloorRequestStatus messages. The f | grant or revoke a floor, and <xref target="sec_client" format="default" sectionF | |||
loor participant obtains a Floor Request ID in the Floor Request ID field of a F | ormat="of" derivedContent="Section 12"/> specifies operations that can be perfor | |||
LOOR-REQUEST-INFORMATION attribute in the first FloorRequestStatus message from | med by any client (i.e., both floor participants and floor chairs).</t> | |||
the floor control server. Subsequent FloorRequestStatus messages from the floor | <section anchor="sec_participant_request" numbered="true" toc="include" re | |||
control server regarding the same floor request will carry the same Floor Reques | moveInRFC="false" pn="section-10.1"> | |||
t ID in a FLOOR-REQUEST-INFORMATION attribute as the initial FloorRequestStatus | <name slugifiedName="name-requesting-a-floor">Requesting a Floor</name> | |||
message. This way, the floor participant can associate subsequent incoming Floor | <t indent="0" pn="section-10.1-1">A floor participant that wishes to req | |||
RequestStatus messages with the ongoing floor request.</t> | uest one or more floors does so by sending a FloorRequest message to the floor c | |||
<t>The floor participant obtains information about the status of the flo | ontrol server.</t> | |||
or request in the FLOOR-REQUEST-INFORMATION attribute of each of the FloorReques | <section anchor="sec_participant_request_send" numbered="true" toc="incl | |||
tStatus messages received from the floor control server. This attribute is a gro | ude" removeInRFC="false" pn="section-10.1.1"> | |||
uped attribute, and as such it includes a number of attributes that provide info | <name slugifiedName="name-sending-a-floorrequest-mess">Sending a Floor | |||
rmation about the floor request.</t> | Request Message</name> | |||
<t>The OVERALL-REQUEST-STATUS attribute provides information about the o | <t indent="0" pn="section-10.1.1-1">The ABNF in <xref target="sec_msg_ | |||
verall status of the floor request. If the Request Status value is Granted, all | format_FloorRequest" format="default" sectionFormat="of" derivedContent="Section | |||
the floors that were requested in the FloorRequest message have been granted. If | 5.3.1"/> describes the attributes that a FloorRequest message can contain. In a | |||
the Request Status value is Denied, all the floors that were requested in the F | ddition, the ABNF specifies normatively which of these attributes are mandatory, | |||
loorRequest message have been denied. A floor request is considered to be ongoin | and which ones are optional.</t> | |||
g while it is in the Pending, Accepted, or Granted states. If the floor request | <t indent="0" pn="section-10.1.1-2">The floor participant sets the Con | |||
value is unknown, then the response is still processed. However, no meaningful | ference ID and the Transaction ID in the COMMON-HEADER following the rules given | |||
value can be reported to the user.</t> | in <xref target="sec_transactions_client" format="default" sectionFormat="of" d | |||
<t>The STATUS-INFO attribute, if present, provides extra information tha | erivedContent="Section 8.1"/>.</t> | |||
t the floor participant can display to the user.</t> | <t indent="0" pn="section-10.1.1-3">The floor participant sets the Use | |||
<t>The FLOOR-REQUEST-STATUS attributes provide information about the sta | r ID in the COMMON-HEADER to the floor participant's identifier. If the sender | |||
tus of the floor request as it relates to a particular floor. The STATUS-INFO a | of the FloorRequest message (identified by the User ID) is not the participant t | |||
ttribute, if present, provides extra information that the floor participant can | hat would eventually get the floor (i.e., a third-party floor request), the send | |||
display to the user.</t> | er <bcp14>SHOULD</bcp14> add a BENEFICIARY-ID attribute to the message identifyi | |||
<t>The BENEFICIARY-INFORMATION attribute identifies the beneficiary of t | ng the beneficiary of the floor.</t> | |||
he floor request in third-party floor requests. The REQUESTED-BY-INFORMATION at | <aside pn="section-10.1.1-4"> | |||
tribute need not be present in FloorRequestStatus messages received by the floor | <t indent="0" pn="section-10.1.1-4.1">Note that the namespace for bo | |||
participant that requested the floor, as this floor participant is already iden | th the User ID and the Beneficiary ID is the same. That is, a given participant | |||
tified by the User ID in the common header.</t> | is identified by a single 16-bit value that can be used in the User ID in the CO | |||
<t>The PRIORITY attribute, when present, contains the priority that was | MMON-HEADER and in several attributes: BENEFICIARY-ID, BENEFICIARY-INFORMATION, | |||
requested by the generator of the FloorRequest message.</t> | and REQUESTED-BY-INFORMATION.</t> | |||
<t>If the response is an Error message, the floor control server could n | </aside> | |||
ot process the FloorRequest message for some reason, which is described in the E | <t indent="0" pn="section-10.1.1-5">The floor participant <bcp14>MUST< | |||
rror message.</t> | /bcp14> insert at least one FLOOR-ID attribute in the FloorRequest message. If t | |||
he client inserts more than one FLOOR-ID attribute, the floor control server wil | ||||
l treat all the floor requests as an atomic package. That is, the floor control | ||||
server will either grant or deny all the floors in the FloorRequest message.</t> | ||||
<t indent="0" pn="section-10.1.1-6">The floor participant may use a PA | ||||
RTICIPANT-PROVIDED-INFO attribute to state the reason why the floor or floors ar | ||||
e being requested. The Text field in the PARTICIPANT-PROVIDED-INFO attribute is | ||||
intended for human consumption.</t> | ||||
<t indent="0" pn="section-10.1.1-7">The floor participant may request | ||||
that the server handle the floor request with a certain priority using a PRIORIT | ||||
Y attribute.</t> | ||||
</section> | ||||
<section anchor="sec_client_request_response" numbered="true" toc="inclu | ||||
de" removeInRFC="false" pn="section-10.1.2"> | ||||
<name slugifiedName="name-receiving-a-response">Receiving a Response</ | ||||
name> | ||||
<t indent="0" pn="section-10.1.2-1">A message from the floor control s | ||||
erver is considered a response to the FloorRequest message if the message from t | ||||
he floor control server has the same Conference ID, Transaction ID, and User ID | ||||
as the FloorRequest message, as described in <xref target="sec_transactions_clie | ||||
nt" format="default" sectionFormat="of" derivedContent="Section 8.1"/>. On recei | ||||
ving such a response, the floor participant follows the rules in <xref target="s | ||||
ec_auth" format="default" sectionFormat="of" derivedContent="Section 9"/> that r | ||||
elate to floor control server authentication.</t> | ||||
<t indent="0" pn="section-10.1.2-2">The successful processing of a Flo | ||||
orRequest message at the floor control server involves generating one or several | ||||
FloorRequestStatus messages. The floor participant obtains a Floor Request ID i | ||||
n the Floor Request ID field of a FLOOR-REQUEST-INFORMATION attribute in the fir | ||||
st FloorRequestStatus message from the floor control server. Subsequent FloorReq | ||||
uestStatus messages from the floor control server regarding the same floor reque | ||||
st will carry the same Floor Request ID in a FLOOR-REQUEST-INFORMATION attribute | ||||
as the initial FloorRequestStatus message. This way, the floor participant can | ||||
associate subsequent incoming FloorRequestStatus messages with the ongoing floor | ||||
request.</t> | ||||
<t indent="0" pn="section-10.1.2-3">The floor participant obtains info | ||||
rmation about the status of the floor request in the FLOOR-REQUEST-INFORMATION a | ||||
ttribute of each of the FloorRequestStatus messages received from the floor cont | ||||
rol server. This attribute is a grouped attribute, and as such it includes a num | ||||
ber of attributes that provide information about the floor request.</t> | ||||
<t indent="0" pn="section-10.1.2-4">The OVERALL-REQUEST-STATUS attribu | ||||
te provides information about the overall status of the floor request. If the Re | ||||
quest Status value is Granted, all the floors that were requested in the FloorRe | ||||
quest message have been granted. If the Request Status value is Denied, all the | ||||
floors that were requested in the FloorRequest message have been denied. A floor | ||||
request is considered to be ongoing while it is in the Pending, Accepted, or Gr | ||||
anted states. If the floor request value is unknown, then the response is still | ||||
processed. However, no meaningful value can be reported to the user.</t> | ||||
<t indent="0" pn="section-10.1.2-5">The STATUS-INFO attribute, if pres | ||||
ent, provides extra information that the floor participant can display to the us | ||||
er.</t> | ||||
<t indent="0" pn="section-10.1.2-6">The FLOOR-REQUEST-STATUS attribute | ||||
s provide information about the status of the floor request as it relates to a p | ||||
articular floor. The STATUS-INFO attribute, if present, provides extra informat | ||||
ion that the floor participant can display to the user.</t> | ||||
<t indent="0" pn="section-10.1.2-7">The BENEFICIARY-INFORMATION attrib | ||||
ute identifies the beneficiary of the floor request in third-party floor request | ||||
s. The REQUESTED-BY-INFORMATION attribute need not be present in FloorRequestSt | ||||
atus messages received by the floor participant that requested the floor, as thi | ||||
s floor participant is already identified by the User ID in the COMMON-HEADER.</ | ||||
t> | ||||
<t indent="0" pn="section-10.1.2-8">The PRIORITY attribute, when prese | ||||
nt, contains the priority that was requested by the generator of the FloorReques | ||||
t message.</t> | ||||
<t indent="0" pn="section-10.1.2-9">If the response is an Error messag | ||||
e, the floor control server could not process the FloorRequest message for some | ||||
reason, which is described in the Error message.</t> | ||||
</section> | ||||
<section anchor="sec_recept_frsm" numbered="true" toc="include" removeIn | ||||
RFC="false" pn="section-10.1.3"> | ||||
<name slugifiedName="name-reception-of-a-subsequent-f">Reception of a | ||||
Subsequent FloorRequestStatus Message</name> | ||||
<t indent="0" pn="section-10.1.3-1">When communicating over an unrelia | ||||
ble transport and upon receiving a FloorRequestStatus message from a floor contr | ||||
ol server, the participant <bcp14>MUST</bcp14> respond with a FloorRequestStatus | ||||
Ack message within the transaction failure window to complete the transaction.</ | ||||
t> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="sec_participant_cancel" numbered="true" toc="include" rem | ||||
<section title="Reception of a Subsequent FloorRequestStatus Message" anch | oveInRFC="false" pn="section-10.2"> | |||
or="sec:recept:frsm"> | <name slugifiedName="name-cancelling-a-floor-request-">Cancelling a Floo | |||
<t>When communicating over an unreliable transport and upon receiving a F | r Request and Releasing a Floor</name> | |||
loorRequestStatus message from a floor control server, the participant MUST resp | <t indent="0" pn="section-10.2-1">A floor participant that wishes to can | |||
ond with a FloorRequestStatusAck message within the transaction failure window t | cel an ongoing floor request does so by sending a FloorRelease message to the fl | |||
o complete the transaction.</t> | oor control server. The FloorRelease message is also used by floor participants | |||
that hold a floor and would like to release it.</t> | ||||
<section anchor="sec_participant_cancel_send" numbered="true" toc="inclu | ||||
de" removeInRFC="false" pn="section-10.2.1"> | ||||
<name slugifiedName="name-sending-a-floorrelease-mess">Sending a Floor | ||||
Release Message</name> | ||||
<t indent="0" pn="section-10.2.1-1">The ABNF in <xref target="sec_msg_ | ||||
format_FloorRelease" format="default" sectionFormat="of" derivedContent="Section | ||||
5.3.2"/> describes the attributes that a FloorRelease message can contain. In a | ||||
ddition, the ABNF specifies normatively which of these attributes are mandatory, | ||||
and which ones are optional.</t> | ||||
<t indent="0" pn="section-10.2.1-2">The floor participant sets the Con | ||||
ference ID and the Transaction ID in the COMMON-HEADER following the rules given | ||||
in <xref target="sec_transactions_client" format="default" sectionFormat="of" d | ||||
erivedContent="Section 8.1"/>. The floor participant sets the User ID in the COM | ||||
MON-HEADER to the floor participant's identifier.</t> | ||||
<aside pn="section-10.2.1-3"> | ||||
<t indent="0" pn="section-10.2.1-3.1">Note that the FloorRelease mes | ||||
sage is used to release a floor or floors that were granted and to cancel ongoin | ||||
g floor requests (from the protocol perspective, both are ongoing floor requests | ||||
). Using the same message in both situations helps resolve the race condition th | ||||
at occurs when the FloorRelease message and the FloorGrant message cross each ot | ||||
her on the wire.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-10.2.1-4">The floor participant uses the FLO | ||||
OR-REQUEST-ID that was received in the response to the FloorRequest message that | ||||
the FloorRelease message is cancelling.</t> | ||||
<aside pn="section-10.2.1-5"> | ||||
<t indent="0" pn="section-10.2.1-5.1">Note that if the floor partici | ||||
pant requested several floors as an atomic operation (i.e., in a single FloorReq | ||||
uest message), all the floors are released as an atomic operation as well (i.e., | ||||
all are released at the same time).</t> | ||||
</aside> | ||||
</section> | ||||
<section anchor="sec_participant_cancel_response" numbered="true" toc="i | ||||
nclude" removeInRFC="false" pn="section-10.2.2"> | ||||
<name slugifiedName="name-receiving-a-response-2">Receiving a Response | ||||
</name> | ||||
<t indent="0" pn="section-10.2.2-1">A message from the floor control s | ||||
erver is considered a response to the FloorRelease message if the message from t | ||||
he floor control server has the same Conference ID, Transaction ID, and User ID | ||||
as the FloorRelease message, as described in <xref target="sec_transactions_clie | ||||
nt" format="default" sectionFormat="of" derivedContent="Section 8.1"/>. On recei | ||||
ving such a response, the floor participant follows the rules in <xref target="s | ||||
ec_auth" format="default" sectionFormat="of" derivedContent="Section 9"/> that r | ||||
elate to floor control server authentication.</t> | ||||
<t indent="0" pn="section-10.2.2-2">If the response is a FloorRequestS | ||||
tatus message, the Request Status value in the OVERALL-REQUEST-STATUS attribute | ||||
(within the FLOOR-REQUEST-INFORMATION grouped attribute) will be Cancelled or Re | ||||
leased.</t> | ||||
<t indent="0" pn="section-10.2.2-3">If the response is an Error messag | ||||
e, the floor control server could not process the FloorRequest message for some | ||||
reason, which is described in the Error message.</t> | ||||
<t indent="0" pn="section-10.2.2-4">It is possible that the FloorRelea | ||||
se message crosses on the wire with a FloorRequestStatus message from the server | ||||
with a Request Status different from Cancelled or Released. In any case, such a | ||||
FloorRequestStatus message will not be a response to the FloorRelease message, | ||||
as its Transaction ID will not match that of the FloorRelease.</t> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec_chair" numbered="true" toc="include" removeInRFC="false | ||||
<section title="Cancelling a Floor Request and Releasing a Floor" anchor="se | " pn="section-11"> | |||
c:participant:cancel"> | <name slugifiedName="name-chair-operations">Chair Operations</name> | |||
<t>A floor participant that wishes to cancel an ongoing floor request does | <t indent="0" pn="section-11-1">This section specifies how floor chairs ca | |||
so by sending a FloorRelease message to the floor control server. The FloorRele | n instruct the floor control server to grant or revoke a floor using the protoco | |||
ase message is also used by floor participants that hold a floor and would like | l elements described in earlier sections.</t> | |||
to release it.</t> | <t indent="0" pn="section-11-2">Floor chairs that wish to send instruction | |||
s to a floor control server do so by sending a ChairAction message.</t> | ||||
<section title="Sending a FloorRelease Message" anchor="sec:participant:ca | <section anchor="sec_chair_send" numbered="true" toc="include" removeInRFC | |||
ncel:send"> | ="false" pn="section-11.1"> | |||
<t>The ABNF in <xref target="sec:msg_format:FloorRelease"/> describes th | <name slugifiedName="name-sending-a-chairaction-messa">Sending a ChairAc | |||
e attributes that a FloorRelease message can contain. In addition, the ABNF spec | tion Message</name> | |||
ifies normatively which of these attributes are mandatory, and which ones are op | <t indent="0" pn="section-11.1-1">The ABNF in <xref target="sec_msg_form | |||
tional.</t> | at_ChairAction" format="default" sectionFormat="of" derivedContent="Section 5.3. | |||
<t>The floor participant sets the Conference ID and the Transaction ID i | 9"/> describes the attributes that a ChairAction message can contain. In additio | |||
n the common header following the rules given in <xref target="sec:transactions: | n, the ABNF specifies normatively which of these attributes are mandatory, and w | |||
client"/>. The floor participant sets the User ID in the common header to the fl | hich ones are optional.</t> | |||
oor participant's identifier.</t> | <t indent="0" pn="section-11.1-2">The floor chair sets the Conference ID | |||
<t><list style="empty"> | and the Transaction ID in the COMMON-HEADER following the rules given in <xref | |||
<t>Note that the FloorRelease message is used to release a floor or | target="sec_transactions_client" format="default" sectionFormat="of" derivedCont | |||
floors that were granted and to cancel ongoing floor requests (from the protocol | ent="Section 8.1"/>. The floor chair sets the User ID in the COMMON-HEADER to th | |||
perspective, both are ongoing floor requests). Using the same message in both s | e floor chair's identifier.</t> | |||
ituations helps resolve the race condition that occurs when the FloorRelease mes | <t indent="0" pn="section-11.1-3">The ChairAction message contains instr | |||
sage and the FloorGrant message cross each other on the wire.</t> | uctions that apply to one or more floors within a particular floor request. The | |||
</list></t> | floor or floors are identified by the FLOOR-REQUEST-STATUS attributes and the fl | |||
<t>The floor participant uses the FLOOR-REQUEST-ID that was received in | oor request is identified by the FLOOR-REQUEST-INFORMATION-HEADER, which are car | |||
the response to the FloorRequest message that the FloorRelease message is cancel | ried in the ChairAction message.</t> | |||
ling.</t> | <t indent="0" pn="section-11.1-4">For example, if a floor request consis | |||
<t><list style="empty"> | ts of two floors that depend on different floor chairs, each floor chair will gr | |||
<t>Note that if the floor participant requested several floors as an | ant its floor within the floor request. Once both chairs have granted their floo | |||
atomic operation (i.e., in a single FloorRequest message), all the floors are r | r, the floor control server will grant the floor request as a whole. On the othe | |||
eleased as an atomic operation as well (i.e., all are released at the same time) | r hand, if one of the floor chairs denies its floor, the floor control server wi | |||
.</t> | ll deny the floor request as a whole, regardless of the other floor chair's deci | |||
</list></t> | sion.</t> | |||
<t indent="0" pn="section-11.1-5">The floor chair provides the new statu | ||||
s of the floor request as it relates to a particular floor using a FLOOR-REQUEST | ||||
-STATUS attribute. If the new status of the floor request is Accepted, the floor | ||||
chair <bcp14>MAY</bcp14> use the Queue Position field to provide a queue positi | ||||
on for the floor request. If the floor chair does not wish to provide a queue po | ||||
sition, all the bits of the Queue Position field <bcp14>MUST</bcp14> be set to z | ||||
ero. The floor chair <bcp14>MUST</bcp14> use the Status Revoked to revoke a floo | ||||
r that was granted (i.e., Granted status) and <bcp14>MUST</bcp14> use the Status | ||||
Denied to reject floor requests in any other status (e.g., Pending and Accepted | ||||
).</t> | ||||
<t indent="0" pn="section-11.1-6">The floor chair <bcp14>MAY</bcp14> add | ||||
an OVERALL-REQUEST-STATUS attribute to the ChairAction message to provide a new | ||||
overall status for the floor request. If the new overall status of the floor r | ||||
equest is Accepted, the floor chair can use the Queue Position field to provide | ||||
a queue position for the floor request.</t> | ||||
<aside pn="section-11.1-7"> | ||||
<t indent="0" pn="section-11.1-7.1">Note that a particular floor contr | ||||
ol server can implement a different queue for each floor containing all the floo | ||||
r requests that relate to that particular floor, a general queue for all floor r | ||||
equests, or both. Also note that a floor request can involve several floors and | ||||
that a ChairAction message can only deal with a subset of these floors (e.g., i | ||||
f a single floor chair is not authorized to manage all the floors). In this cas | ||||
e, the floor control server will combine the instructions received from the diff | ||||
erent floor chairs in FLOOR-REQUEST-STATUS attributes to come up with the overal | ||||
l status of the floor request.</t> | ||||
<t indent="0" pn="section-11.1-7.2">Note that, while the action of a f | ||||
loor chair may communicate information in the OVERALL-REQUEST-STATUS attribute, | ||||
the floor control server may override, modify, or ignore this field's content.</ | ||||
t> | ||||
</aside> | ||||
<t indent="0" pn="section-11.1-8">The floor chair <bcp14>MAY</bcp14> inc | ||||
lude STATUS-INFO attributes to state the reason why the floor or floors are bein | ||||
g accepted, granted, or revoked. The Text in the STATUS-INFO attribute is intend | ||||
ed for human consumption.</t> | ||||
</section> | </section> | |||
<section anchor="sec_chair_instruct_response" numbered="true" toc="include | ||||
<section title="Receiving a Response" anchor="sec:participant:cancel:respo | " removeInRFC="false" pn="section-11.2"> | |||
nse"> | <name slugifiedName="name-receiving-a-response-3">Receiving a Response</ | |||
<t>A message from the floor control server is considered a response to t | name> | |||
he FloorRelease message if the message from the floor control server has the sam | <t indent="0" pn="section-11.2-1">A message from the floor control serve | |||
e Conference ID, Transaction ID, and User ID as the FloorRelease message, as des | r is considered a response to the ChairAction message if the message from the se | |||
cribed in <xref target="sec:transactions:client"/>. On receiving such a response | rver has the same Conference ID, Transaction ID, and User ID as the ChairAction | |||
, the floor participant follows the rules in <xref target="sec:auth"/> that rela | message, as described in <xref target="sec_transactions_client" format="default" | |||
te to floor control server authentication.</t> | sectionFormat="of" derivedContent="Section 8.1"/>. On receiving such a response | |||
<t>If the response is a FloorRequestStatus message, the Request Status v | , the floor chair follows the rules in <xref target="sec_auth" format="default" | |||
alue in the OVERALL-REQUEST-STATUS attribute (within the FLOOR-REQUEST-INFORMATI | sectionFormat="of" derivedContent="Section 9"/> that relate to floor control ser | |||
ON grouped attribute) will be Cancelled or Released.</t> | ver authentication.</t> | |||
<t>If the response is an Error message, the floor control server could n | <t indent="0" pn="section-11.2-2">A ChairActionAck message from the floo | |||
ot process the FloorRequest message for some reason, which is described in the E | r control server confirms that the floor control server has accepted the ChairAc | |||
rror message.</t> | tion message. An Error message indicates that the floor control server could not | |||
<t>It is possible that the FloorRelease message crosses on the wire with | process the ChairAction message for some reason, which is described in the Erro | |||
a FloorRequestStatus message from the server with a Request Status different fr | r message.</t> | |||
om Cancelled or Released. In any case, such a FloorRequestStatus message will no | ||||
t be a response to the FloorRelease message, as its Transaction ID will not matc | ||||
h that of the FloorRelease.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | <section anchor="sec_client" numbered="true" toc="include" removeInRFC="fals | |||
e" pn="section-12"> | ||||
<section title="Chair Operations" anchor="sec:chair"> | <name slugifiedName="name-general-client-operations">General Client Operat | |||
<t>This section specifies how floor chairs can instruct the floor control se | ions</name> | |||
rver to grant or revoke a floor using the protocol elements described in earlier | <t indent="0" pn="section-12-1">This section specifies operations that can | |||
sections.</t> | be performed by any client. That is, they are not specific to floor participant | |||
<t>Floor chairs that wish to send instructions to a floor control server do | s or floor chairs. They can be performed by both.</t> | |||
so by sending a ChairAction message.</t> | <section anchor="sec_client_floorinfo" numbered="true" toc="include" remov | |||
eInRFC="false" pn="section-12.1"> | ||||
<section title="Sending a ChairAction Message" anchor="sec:chair:send"> | <name slugifiedName="name-requesting-information-abou">Requesting Inform | |||
<t>The ABNF in <xref target="sec:msg_format:ChairAction"/> describes the a | ation about Floors</name> | |||
ttributes that a ChairAction message can contain. In addition, the ABNF specifie | <t indent="0" pn="section-12.1-1">A client can obtain information about | |||
s normatively which of these attributes are mandatory, and which ones are option | the status of a floor or floors in different ways, which include using BFCP and | |||
al.</t> | using out-of-band mechanisms. Clients using BFCP to obtain such information use | |||
<t>The floor chair sets the Conference ID and the Transaction ID in the co | the procedures described in this section. </t> | |||
mmon header following the rules given in <xref target="sec:transactions:client"/ | <t indent="0" pn="section-12.1-2">Clients request information about the | |||
>. The floor chair sets the User ID in the common header to the floor chair's id | status of one or several floors by sending a FloorQuery message to the floor con | |||
entifier.</t> | trol server.</t> | |||
<t>The ChairAction message contains instructions that apply to one or more | <section anchor="sec_client_floorinfo_send" numbered="true" toc="include | |||
floors within a particular floor request. The floor or floors are identified by | " removeInRFC="false" pn="section-12.1.1"> | |||
the FLOOR-REQUEST-STATUS attributes and the floor request is identified by the | <name slugifiedName="name-sending-a-floorquery-messag">Sending a Floor | |||
FLOOR-REQUEST-INFORMATION-HEADER, which are carried in the ChairAction message.< | Query Message</name> | |||
/t> | <t indent="0" pn="section-12.1.1-1">The ABNF in <xref target="sec_msg_ | |||
<t>For example, if a floor request consists of two floors that depend on d | format_FloorQuery" format="default" sectionFormat="of" derivedContent="Section 5 | |||
ifferent floor chairs, each floor chair will grant its floor within the floor re | .3.7"/> describes the attributes that a FloorQuery message can contain. In addit | |||
quest. Once both chairs have granted their floor, the floor control server will | ion, the ABNF specifies normatively which of these attributes are mandatory, and | |||
grant the floor request as a whole. On the other hand, if one of the floor chair | which ones are optional.</t> | |||
s denies its floor, the floor control server will deny the floor request as a wh | <t indent="0" pn="section-12.1.1-2">The client sets the Conference ID | |||
ole, regardless of the other floor chair's decision.</t> | and the Transaction ID in the COMMON-HEADER following the rules given in <xref t | |||
<t>The floor chair provides the new status of the floor request as it rela | arget="sec_transactions_client" format="default" sectionFormat="of" derivedConte | |||
tes to a particular floor using a FLOOR-REQUEST-STATUS attribute. If the new sta | nt="Section 8.1"/>. The client sets the User ID in the COMMON-HEADER to the clie | |||
tus of the floor request is Accepted, the floor chair MAY use the Queue Position | nt's identifier.</t> | |||
field to provide a queue position for the floor request. If the floor chair doe | <t indent="0" pn="section-12.1.1-3">The client inserts in the message | |||
s not wish to provide a queue position, all the bits of the Queue Position field | all the Floor IDs it wants to receive information about. The floor control serve | |||
MUST be set to zero. The floor chair MUST use the Status Revoked to revoke a fl | r will send periodic information about all of these floors. If the client does n | |||
oor that was granted (i.e., Granted status) and MUST use the Status Denied to re | ot want to receive information about a particular floor any longer, it sends a n | |||
ject floor requests in any other status (e.g., Pending and Accepted).</t> | ew FloorQuery message removing the FLOOR-ID of this floor. If the client does no | |||
<t>The floor chair MAY add an OVERALL-REQUEST-STATUS attribute to the Chai | t want to receive information about any floor any longer, it sends a FloorQuery | |||
rAction message to provide a new overall status for the floor request. If the n | message with no FLOOR-ID attribute.</t> | |||
ew overall status of the floor request is Accepted, the floor chair can use the | </section> | |||
Queue Position field to provide a queue position for the floor request.</t> | <section anchor="sec_client_floorinfo_response" numbered="true" toc="inc | |||
<t><list style="hanging"> | lude" removeInRFC="false" pn="section-12.1.2"> | |||
<t>Note that a particular floor control server can implement a differe | <name slugifiedName="name-receiving-a-response-4">Receiving a Response | |||
nt queue for each floor containing all the floor requests that relate to that pa | </name> | |||
rticular floor, a general queue for all floor requests, or both. Also note that | <t indent="0" pn="section-12.1.2-1">A message from the floor control s | |||
a floor request can involve several floors and that a ChairAction message can o | erver is considered a response to the FloorQuery message if the message from the | |||
nly deal with a subset of these floors (e.g., if a single floor chair is not aut | floor control server has the same Conference ID, Transaction ID, and User ID as | |||
horized to manage all the floors). In this case, the floor control server will | the FloorQuery message, as described in <xref target="sec_transactions_client" | |||
combine the instructions received from the different floor chairs in FLOOR-REQUE | format="default" sectionFormat="of" derivedContent="Section 8.1"/>. On receiving | |||
ST-STATUS attributes to come up with the overall status of the floor request.</t | such a response, the client follows the rules in <xref target="sec_auth" format | |||
> | ="default" sectionFormat="of" derivedContent="Section 9"/> that relate to floor | |||
<t>Note that, while the action of a floor chair may communicate inform | control server authentication.</t> | |||
ation in the OVERALL-REQUEST-STATUS attribute, the floor control server may over | <t indent="0" pn="section-12.1.2-2">On reception of the FloorQuery mes | |||
ride, modify, or ignore this field's content.</t> | sage, the floor control server <bcp14>MUST</bcp14> respond with a FloorStatus me | |||
</list></t> | ssage or with an Error message. If the response is a FloorStatus message, it wil | |||
<t>The floor chair MAY include STATUS-INFO attributes to state the reason | l contain information about one of the floors the client requested information a | |||
why the floor or floors are being accepted, granted, or revoked. The Text in the | bout. If the client did not include any FLOOR-ID attribute in its FloorQuery mes | |||
STATUS-INFO attribute is intended for human consumption.</t> | sage (i.e., the client does not want to receive information about any floor any | |||
</section> | longer), the FloorStatus message from the floor control server will not include | |||
any FLOOR-ID attribute either. </t> | ||||
<section title="Receiving a Response" anchor="sec:chair:instruct:response"> | <t indent="0" pn="section-12.1.2-3">FloorStatus messages that carry in | |||
<t>A message from the floor control server is considered a response to the | formation about a floor contain a FLOOR-ID attribute that identifies the floor. | |||
ChairAction message if the message from the server has the same Conference ID, | After this attribute, FloorStatus messages contain information about existing (o | |||
Transaction ID, and User ID as the ChairAction message, as described in <xref ta | ne or more) floor requests that relate to that floor. The information about each | |||
rget="sec:transactions:client"/>. On receiving such a response, the floor chair | particular floor request is encoded in a FLOOR-REQUEST-INFORMATION attribute. T | |||
follows the rules in <xref target="sec:auth"/> that relate to floor control serv | his grouped attribute carries a Floor Request ID that identifies the floor reque | |||
er authentication.</t> | st, followed by a set of attributes that provide information about the floor req | |||
<t>A ChairActionAck message from the floor control server confirms that th | uest.</t> | |||
e floor control server has accepted the ChairAction message. An Error message in | <t indent="0" pn="section-12.1.2-4">After the first FloorStatus, the f | |||
dicates that the floor control server could not process the ChairAction message | loor control server will continue sending FloorStatus messages, periodically inf | |||
for some reason, which is described in the Error message.</t> | orming the client about changes on the floors the client requested information a | |||
</section> | bout.</t> | |||
</section> | </section> | |||
<section anchor="sec_recept_fsm" numbered="true" toc="include" removeInR | ||||
<section title="General Client Operations" anchor="sec:client"> | FC="false" pn="section-12.1.3"> | |||
<t>This section specifies operations that can be performed by any client. Th | <name slugifiedName="name-reception-of-a-subsequent-fl">Reception of a | |||
at is, they are not specific to floor participants or floor chairs. They can be | Subsequent FloorStatus Message</name> | |||
performed by both.</t> | <t indent="0" pn="section-12.1.3-1">When communicating over an unrelia | |||
ble transport and upon receiving a FloorStatus message from a floor control serv | ||||
<section title="Requesting Information about Floors" anchor="sec:client:floo | er, the participant <bcp14>MUST</bcp14> respond with a FloorStatusAck message wi | |||
rinfo"> | thin the transaction failure window to complete the transaction.</t> | |||
<t>A client can obtain information about the status of a floor or floors i | </section> | |||
n different ways, which include using BFCP and using out-of-band mechanisms. Cli | ||||
ents using BFCP to obtain such information use the procedures described in this | ||||
section. </t> | ||||
<t>Clients request information about the status of one or several floors b | ||||
y sending a FloorQuery message to the floor control server.</t> | ||||
<section title="Sending a FloorQuery Message" anchor="sec:client:floorinfo | ||||
:send"> | ||||
<t>The ABNF in <xref target="sec:msg_format:FloorQuery"/> describes the | ||||
attributes that a FloorQuery message can contain. In addition, the ABNF specifie | ||||
s normatively which of these attributes are mandatory, and which ones are option | ||||
al.</t> | ||||
<t>The client sets the Conference ID and the Transaction ID in the commo | ||||
n header following the rules given in <xref target="sec:transactions:client"/>. | ||||
The client sets the User ID in the common header to the client's identifier.</t> | ||||
<t>The client inserts in the message all the Floor IDs it wants to recei | ||||
ve information about. The floor control server will send periodic information ab | ||||
out all of these floors. If the client does not want to receive information abou | ||||
t a particular floor any longer, it sends a new FloorQuery message removing the | ||||
FLOOR-ID of this floor. If the client does not want to receive information about | ||||
any floor any longer, it sends a FloorQuery message with no FLOOR-ID attribute. | ||||
</t> | ||||
</section> | </section> | |||
<section anchor="sec_client_info" numbered="true" toc="include" removeInRF | ||||
<section title="Receiving a Response" anchor="sec:client:floorinfo:respons | C="false" pn="section-12.2"> | |||
e"> | <name slugifiedName="name-requesting-information-about">Requesting Infor | |||
<t>A message from the floor control server is considered a response to t | mation about Floor Requests</name> | |||
he FloorQuery message if the message from the floor control server has the same | <t indent="0" pn="section-12.2-1">A client can obtain information about | |||
Conference ID, Transaction ID, and User ID as the FloorQuery message, as describ | the status of one or several floor requests in different ways, which include usi | |||
ed in <xref target="sec:transactions:client"/>. On receiving such a response, th | ng BFCP and using out-of-band mechanisms. Clients using BFCP to obtain such info | |||
e client follows the rules in <xref target="sec:auth"/> that relate to floor con | rmation use the procedures described in this section.</t> | |||
trol server authentication.</t> | <t indent="0" pn="section-12.2-2">Clients request information about the | |||
<t>On reception of the FloorQuery message, the floor control server MUST | current status of a floor request by sending a FloorRequestQuery message to the | |||
respond with a FloorStatus message or with an Error message. If the response is | floor control server.</t> | |||
a FloorStatus message, it will contain information about one of the floors the | <t indent="0" pn="section-12.2-3">Requesting information about a particu | |||
client requested information about. If the client did not include any FLOOR-ID a | lar floor request is useful in a number of situations. For example, on reception | |||
ttribute in its FloorQuery message (i.e., the client does not want to receive in | of a FloorRequest message, a floor control server may choose to return FloorReq | |||
formation about any floor any longer), the FloorStatus message from the floor co | uestStatus messages only when the floor request changes its state (e.g., from Ac | |||
ntrol server will not include any FLOOR-ID attribute either. </t> | cepted to Granted), but not when the floor request advances in its queue. In thi | |||
<t>FloorStatus messages that carry information about a floor contain a F | s situation, if the user requests it, the floor participant can use a FloorReque | |||
LOOR-ID attribute that identifies the floor. After this attribute, FloorStatus m | stQuery message to poll the floor control server for the status of the floor req | |||
essages contain information about existing (one or more) floor requests that rel | uest.</t> | |||
ate to that floor. The information about each particular floor request is encode | <section anchor="sec_client_info_send" numbered="true" toc="include" rem | |||
d in a FLOOR-REQUEST-INFORMATION attribute. This grouped attribute carries a Flo | oveInRFC="false" pn="section-12.2.1"> | |||
or Request ID that identifies the floor request, followed by a set of attributes | <name slugifiedName="name-sending-a-floorrequestquery">Sending a Floor | |||
that provide information about the floor request.</t> | RequestQuery Message</name> | |||
<t>After the first FloorStatus, the floor control server will continue s | <t indent="0" pn="section-12.2.1-1">The ABNF in <xref target="sec_msg_ | |||
ending FloorStatus messages, periodically informing the client about changes on | format_FloorRequestQuery" format="default" sectionFormat="of" derivedContent="Se | |||
the floors the client requested information about.</t> | ction 5.3.3"/> describes the attributes that a FloorRequestQuery message can con | |||
tain. In addition, the ABNF specifies normatively which of these attributes are | ||||
mandatory, and which ones are optional.</t> | ||||
<t indent="0" pn="section-12.2.1-2">The client sets the Conference ID | ||||
and the Transaction ID in the COMMON-HEADER following the rules given in <xref t | ||||
arget="sec_transactions_client" format="default" sectionFormat="of" derivedConte | ||||
nt="Section 8.1"/>. The client sets the User ID in the COMMON-HEADER to the clie | ||||
nt's identifier.</t> | ||||
<t indent="0" pn="section-12.2.1-3">The client <bcp14>MUST</bcp14> ins | ||||
ert a FLOOR-REQUEST-ID attribute that identifies the floor request at the floor | ||||
control server.</t> | ||||
</section> | ||||
<section anchor="sec_client_info_response" numbered="true" toc="include" | ||||
removeInRFC="false" pn="section-12.2.2"> | ||||
<name slugifiedName="name-receiving-a-response-5">Receiving a Response | ||||
</name> | ||||
<t indent="0" pn="section-12.2.2-1">A message from the floor control s | ||||
erver is considered a response to the FloorRequestQuery message if the message f | ||||
rom the floor control server has the same Conference ID, Transaction ID, and Use | ||||
r ID as the FloorRequestQuery message, as described in <xref target="sec_transac | ||||
tions_client" format="default" sectionFormat="of" derivedContent="Section 8.1"/> | ||||
. On receiving such a response, the client follows the rules in <xref target="s | ||||
ec_auth" format="default" sectionFormat="of" derivedContent="Section 9"/> that r | ||||
elate to floor control server authentication.</t> | ||||
<t indent="0" pn="section-12.2.2-2">If the response is a FloorRequestS | ||||
tatus message, the client obtains information about the status of the FloorReque | ||||
st the client requested information about in a FLOOR-REQUEST-INFORMATION attribu | ||||
te.</t> | ||||
<t indent="0" pn="section-12.2.2-3">If the response is an Error messag | ||||
e, the floor control server could not process the FloorRequestQuery message for | ||||
some reason, which is described in the Error message.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="sec_client_user" numbered="true" toc="include" removeInRF | ||||
<section title="Reception of a Subsequent FloorStatus Message" anchor="sec | C="false" pn="section-12.3"> | |||
:recept:fsm"> | <name slugifiedName="name-requesting-information-about-">Requesting Info | |||
<t>When communicating over an unreliable transport and upon receiving a F | rmation about a User</name> | |||
loorStatus message from a floor control server, the participant MUST respond wit | <t indent="0" pn="section-12.3-1">A client can obtain information about | |||
h a FloorStatusAck message within the transaction failure window to complete the | a participant and the floor requests related to this participant in different wa | |||
transaction.</t> | ys, which include using BFCP and using out-of-band mechanisms. Clients using BFC | |||
P to obtain such information use the procedures described in this section.</t> | ||||
<t indent="0" pn="section-12.3-2">Clients request information about a pa | ||||
rticipant and the floor requests related to this participant by sending a UserQu | ||||
ery message to the floor control server.</t> | ||||
<t indent="0" pn="section-12.3-3">This functionality may be useful for f | ||||
loor chairs or floor participants interested in the display name and the URI of | ||||
a particular floor participant. In addition, a floor participant may find it use | ||||
ful to request information about itself. For example, a floor participant, after | ||||
experiencing connectivity problems (e.g., its TCP connection with the floor con | ||||
trol server was down for a while and eventually was re-established), may need to | ||||
request information about all the floor requests associated to itself that stil | ||||
l exist.</t> | ||||
<section anchor="sec_client_user_send" numbered="true" toc="include" rem | ||||
oveInRFC="false" pn="section-12.3.1"> | ||||
<name slugifiedName="name-sending-a-userquery-message">Sending a UserQ | ||||
uery Message</name> | ||||
<t indent="0" pn="section-12.3.1-1">The ABNF in <xref target="sec_msg_ | ||||
format_UserQuery" format="default" sectionFormat="of" derivedContent="Section 5. | ||||
3.5"/> describes the attributes that a UserQuery message can contain. In additio | ||||
n, the ABNF specifies normatively which of these attributes are mandatory, and w | ||||
hich ones are optional.</t> | ||||
<t indent="0" pn="section-12.3.1-2">The client sets the Conference ID | ||||
and the Transaction ID in the COMMON-HEADER following the rules given in <xref t | ||||
arget="sec_transactions_client" format="default" sectionFormat="of" derivedConte | ||||
nt="Section 8.1"/>. The client sets the User ID in the COMMON-HEADER to the clie | ||||
nt's identifier.</t> | ||||
<t indent="0" pn="section-12.3.1-3">If the floor participant the clien | ||||
t is requesting information about is not the client issuing the UserQuery messag | ||||
e (which is identified by the User ID in the COMMON-HEADER of the message), the | ||||
client <bcp14>MUST</bcp14> insert a BENEFICIARY-ID attribute.</t> | ||||
</section> | ||||
<section anchor="sec_client_user_response" numbered="true" toc="include" | ||||
removeInRFC="false" pn="section-12.3.2"> | ||||
<name slugifiedName="name-receiving-a-response-6">Receiving a Response | ||||
</name> | ||||
<t indent="0" pn="section-12.3.2-1">A message from the floor control s | ||||
erver is considered a response to the UserQuery message if the message from the | ||||
floor control server has the same Conference ID, Transaction ID, and User ID as | ||||
the UserQuery message, as described in <xref target="sec_transactions_client" fo | ||||
rmat="default" sectionFormat="of" derivedContent="Section 8.1"/>. On receiving | ||||
such a response, the client follows the rules in <xref target="sec_auth" format= | ||||
"default" sectionFormat="of" derivedContent="Section 9"/> that relate to floor c | ||||
ontrol server authentication.</t> | ||||
<t indent="0" pn="section-12.3.2-2">If the response is a UserStatus me | ||||
ssage, the client obtains information about the floor participant in a BENEFICIA | ||||
RY-INFORMATION grouped attribute and about the status of the floor requests asso | ||||
ciated with the floor participant in FLOOR-REQUEST-INFORMATION attributes.</t> | ||||
<t indent="0" pn="section-12.3.2-3">If the response is an Error messag | ||||
e, the floor control server could not process the UserQuery message for some rea | ||||
son, which is described in the Error message.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="sec_client_hello" numbered="true" toc="include" removeInR | ||||
FC="false" pn="section-12.4"> | ||||
<name slugifiedName="name-obtaining-the-capabilities-">Obtaining the Cap | ||||
abilities of a Floor Control Server</name> | ||||
<t indent="0" pn="section-12.4-1">A client that wishes to obtain the cap | ||||
abilities of a floor control server does so by sending a Hello message to the fl | ||||
oor control server.</t> | ||||
<section anchor="sec_client_hello_send" numbered="true" toc="include" re | ||||
moveInRFC="false" pn="section-12.4.1"> | ||||
<name slugifiedName="name-sending-a-hello-message">Sending a Hello Mes | ||||
sage</name> | ||||
<t indent="0" pn="section-12.4.1-1">The ABNF in <xref target="sec_msg_ | ||||
format_Hello" format="default" sectionFormat="of" derivedContent="Section 5.3.11 | ||||
"/> describes the attributes that a Hello message can contain. In addition, the | ||||
ABNF specifies normatively which of these attributes are mandatory, and which on | ||||
es are optional.</t> | ||||
<t indent="0" pn="section-12.4.1-2">The client sets the Conference ID | ||||
and the Transaction ID in the COMMON-HEADER following the rules given in <xref t | ||||
arget="sec_transactions_client" format="default" sectionFormat="of" derivedConte | ||||
nt="Section 8.1"/>. The client sets the User ID in the COMMON-HEADER to the clie | ||||
nt's identifier.</t> | ||||
</section> | ||||
<section anchor="sec_client_hello_responses" numbered="true" toc="includ | ||||
e" removeInRFC="false" pn="section-12.4.2"> | ||||
<name slugifiedName="name-receiving-responses">Receiving Responses</na | ||||
me> | ||||
<t indent="0" pn="section-12.4.2-1">A message from the floor control s | ||||
erver is considered a response to the Hello message by the client if the message | ||||
from the floor control server has the same Conference ID, Transaction ID, and U | ||||
ser ID as the Hello message, as described in <xref target="sec_transactions_clie | ||||
nt" format="default" sectionFormat="of" derivedContent="Section 8.1"/>. On recei | ||||
ving such a response, the client follows the rules in <xref target="sec_auth" fo | ||||
rmat="default" sectionFormat="of" derivedContent="Section 9"/> that relate to fl | ||||
oor control server authentication.</t> | ||||
<t indent="0" pn="section-12.4.2-2">If the response is a HelloAck mess | ||||
age, the floor control server could process the Hello message successfully. The | ||||
SUPPORTED-PRIMITIVES and SUPPORTED-ATTRIBUTES attributes indicate which primitiv | ||||
es and attributes, respectively, are supported by the server.</t> | ||||
<t indent="0" pn="section-12.4.2-3">If the response is an Error messag | ||||
e, the floor control server could not process the Hello message for some reason, | ||||
which is described in the Error message.</t> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec_server" numbered="true" toc="include" removeInRFC="fals | ||||
<section title="Requesting Information about Floor Requests" anchor="sec:cli | e" pn="section-13"> | |||
ent:info"> | <name slugifiedName="name-floor-control-server-operat">Floor Control Serve | |||
<t>A client can obtain information about the status of one or several floo | r Operations</name> | |||
r requests in different ways, which include using BFCP and using out-of-band mec | <t indent="0" pn="section-13-1">This section specifies how floor control s | |||
hanisms. Clients using BFCP to obtain such information use the procedures descri | ervers can perform different operations, such as granting a floor, using the pro | |||
bed in this section.</t> | tocol elements described in earlier sections.</t> | |||
<t>Clients request information about the current status of a floor request | <t indent="0" pn="section-13-2">On reception of a message from a client, t | |||
by sending a FloorRequestQuery message to the floor control server.</t> | he floor control server <bcp14>MUST</bcp14> check whether the value of the primi | |||
<t>Requesting information about a particular floor request is useful in a | tive is supported. If it is not, the floor control server <bcp14>MUST</bcp14> s | |||
number of situations. For example, on reception of a FloorRequest message, a flo | end an Error message, as described in <xref target="sec_server_error" format="de | |||
or control server may choose to return FloorRequestStatus messages only when the | fault" sectionFormat="of" derivedContent="Section 13.8"/>, with Error Code 3 (Un | |||
floor request changes its state (e.g., from Accepted to Granted), but not when | known Primitive).</t> | |||
the floor request advances in its queue. In this situation, if the user requests | <t indent="0" pn="section-13-3">On reception of a message from a client, t | |||
it, the floor participant can use a FloorRequestQuery message to poll the floor | he floor control server <bcp14>MUST</bcp14> check whether the value of the Confe | |||
control server for the status of the floor request.</t> | rence ID matched an existing conference. If it does not, the floor control serve | |||
r <bcp14>MUST</bcp14> send an Error message, as described in <xref target="sec_s | ||||
<section title="Sending a FloorRequestQuery Message" anchor="sec:client:in | erver_error" format="default" sectionFormat="of" derivedContent="Section 13.8"/> | |||
fo:send"> | , with Error Code 1 (Conference Does Not Exist).</t> | |||
<t>The ABNF in <xref target="sec:msg_format:FloorRequestQuery"/> describ | <t indent="0" pn="section-13-4">On reception of a message from a client, t | |||
es the attributes that a FloorRequestQuery message can contain. In addition, the | he floor control server follows the rules in <xref target="sec_auth" format="def | |||
ABNF specifies normatively which of these attributes are mandatory, and which o | ault" sectionFormat="of" derivedContent="Section 9"/> that relate to the authent | |||
nes are optional.</t> | ication of the message.</t> | |||
<t>The client sets the Conference ID and the Transaction ID in the commo | <t indent="0" pn="section-13-5">On reception of a message from a client, t | |||
n header following the rules given in <xref target="sec:transactions:client"/>. | he floor control server <bcp14>MUST</bcp14> check whether it understands all the | |||
The client sets the User ID in the common header to the client's identifier.</t> | mandatory ('M' bit set) attributes in the message. If the floor control server | |||
<t>The client MUST insert a FLOOR-REQUEST-ID attribute that identifies t | does not understand all of them, the floor control server <bcp14>MUST</bcp14> se | |||
he floor request at the floor control server.</t> | nd an Error message, as described in <xref target="sec_server_error" format="def | |||
ault" sectionFormat="of" derivedContent="Section 13.8"/>, with Error Code 4 (Unk | ||||
nown Mandatory Attribute). The Error message <bcp14>SHOULD</bcp14> list the attr | ||||
ibutes that were not understood.</t> | ||||
<section anchor="sec_server_request" numbered="true" toc="include" removeI | ||||
nRFC="false" pn="section-13.1"> | ||||
<name slugifiedName="name-reception-of-a-floorrequest">Reception of a Fl | ||||
oorRequest Message</name> | ||||
<t indent="0" pn="section-13.1-1">On reception of a FloorRequest message | ||||
, the floor control server follows the rules in <xref target="sec_auth" format=" | ||||
default" sectionFormat="of" derivedContent="Section 9"/> that relate to client a | ||||
uthentication and authorization. If while processing the FloorRequest message, t | ||||
he floor control server encounters an error, it <bcp14>MUST</bcp14> generate an | ||||
Error response following the procedures described in <xref target="sec_server_er | ||||
ror" format="default" sectionFormat="of" derivedContent="Section 13.8"/>.</t> | ||||
<aside pn="section-13.1-2"> | ||||
<t indent="0" pn="section-13.1-2.1">BFCP allows floor participants to | ||||
have several ongoing floor requests for the same floor (e.g., the same floor par | ||||
ticipant can occupy more than one position in a queue at the same time). A floor | ||||
control server that only supports a certain number of ongoing floor requests pe | ||||
r floor participant (e.g., one) can use Error Code 8 (You have Already Reached t | ||||
he Maximum Number of Ongoing Floor Requests for This Floor) to inform the floor | ||||
participant.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-13.1-3">When communicating over an unreliable | ||||
transport and upon receiving a FloorRequest from a participant, the floor contro | ||||
l server <bcp14>MUST</bcp14> respond with a FloorRequestStatus message within th | ||||
e transaction failure window to complete the transaction.</t> | ||||
<section anchor="sec_server_request_first" numbered="true" toc="include" | ||||
removeInRFC="false" pn="section-13.1.1"> | ||||
<name slugifiedName="name-generating-the-first-floorr">Generating the | ||||
First FloorRequestStatus Message</name> | ||||
<t indent="0" pn="section-13.1.1-1">The successful processing of a Flo | ||||
orRequest message by a floor control server involves generating one or several F | ||||
loorRequestStatus messages, the first of which <bcp14>SHOULD</bcp14> be generate | ||||
d as soon as possible. If the floor control server cannot accept, grant, or deny | ||||
the floor request right away (e.g., a decision from a chair is needed), it <bcp | ||||
14>SHOULD</bcp14> use a Request Status value of Pending in the OVERALL-REQUEST-S | ||||
TATUS attribute (within the FLOOR-REQUEST-INFORMATION grouped attribute) of the | ||||
first FloorRequestStatus message it generates.</t> | ||||
<aside pn="section-13.1.1-2"> | ||||
<t indent="0" pn="section-13.1.1-2.1">The policy that a floor contro | ||||
l server follows to grant or deny floors is outside the scope of this document. | ||||
A given floor control server may perform these decisions automatically while ano | ||||
ther may contact a human acting as a chair every time a decision needs to be mad | ||||
e.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-13.1.1-3">The floor control server <bcp14>MU | ||||
ST</bcp14> copy the Conference ID, the Transaction ID, and the User ID from the | ||||
FloorRequest into the FloorRequestStatus, as described in <xref target="sec_tran | ||||
sactions_server" format="default" sectionFormat="of" derivedContent="Section 8.2 | ||||
"/>. Additionally, the floor control server <bcp14>MUST</bcp14> add a FLOOR-REQU | ||||
EST-INFORMATION grouped attribute to the FloorRequestStatus. The attributes cont | ||||
ained in this grouped attribute carry information about the floor request.</t> | ||||
<t indent="0" pn="section-13.1.1-4">The floor control server <bcp14>MU | ||||
ST</bcp14> assign an identifier that is unique within the conference to this flo | ||||
or request, and <bcp14>MUST</bcp14> insert it in the Floor Request ID field of t | ||||
he FLOOR-REQUEST-INFORMATION attribute. This identifier will be used by the floo | ||||
r participant (or by a chair or chairs) to refer to this specific floor request | ||||
in the future.</t> | ||||
<t indent="0" pn="section-13.1.1-5">The floor control server <bcp14>MU | ||||
ST</bcp14> copy the Floor IDs in the FLOOR-ID attributes of the FloorRequest int | ||||
o the FLOOR-REQUEST-STATUS attributes in the FLOOR-REQUEST-INFORMATION grouped a | ||||
ttribute. These Floor IDs identify the floors being requested (i.e., the floors | ||||
associated with this particular floor request).</t> | ||||
<t indent="0" pn="section-13.1.1-6">The floor control server <bcp14>SH | ||||
OULD</bcp14> copy (if present) the contents of the BENEFICIARY-ID attribute from | ||||
the FloorRequest into a BENEFICIARY-INFORMATION attribute inside the FLOOR-REQU | ||||
EST-INFORMATION grouped attribute. Additionally, the floor control server <bcp14 | ||||
>MAY</bcp14> provide the display name and the URI of the beneficiary in this BEN | ||||
EFICIARY-INFORMATION attribute.</t> | ||||
<t indent="0" pn="section-13.1.1-7">The floor control server <bcp14>MA | ||||
Y</bcp14> provide information about the requester of the floor in a REQUESTED-BY | ||||
-INFORMATION attribute inside the FLOOR-REQUEST-INFORMATION grouped attribute.</ | ||||
t> | ||||
<t indent="0" pn="section-13.1.1-8">The floor control server <bcp14>MA | ||||
Y</bcp14> copy (if present) the PRIORITY attribute from the FloorRequest into th | ||||
e FLOOR-REQUEST-INFORMATION grouped attribute.</t> | ||||
<aside pn="section-13.1.1-9"> | ||||
<t indent="0" pn="section-13.1.1-9.1">Note that this attribute carri | ||||
es the priority requested by the participant. The priority that the floor contro | ||||
l server assigns to the floor request depends on the priority requested by the p | ||||
articipant and the rights the participant has according to the policy of the con | ||||
ference. For example, a participant that is only allowed to use the Normal prior | ||||
ity may request Highest priority for a floor request. In that case, the floor co | ||||
ntrol server would ignore the priority requested by the participant.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-13.1.1-10">The floor control server <bcp14>M | ||||
AY</bcp14> copy (if present) the PARTICIPANT-PROVIDED-INFO attribute from the Fl | ||||
oorRequest into the FLOOR-REQUEST-INFORMATION grouped attribute.</t> | ||||
</section> | ||||
<section anchor="sec_server_request_subsequent" numbered="true" toc="inc | ||||
lude" removeInRFC="false" pn="section-13.1.2"> | ||||
<name slugifiedName="name-generation-of-subsequent-fl">Generation of S | ||||
ubsequent FloorRequestStatus Messages</name> | ||||
<t indent="0" pn="section-13.1.2-1">A floor request is considered to b | ||||
e ongoing as long as it is not in the Cancelled, Released, or Revoked states. If | ||||
the OVERALL-REQUEST-STATUS attribute (inside the FLOOR-REQUEST-INFORMATION grou | ||||
ped attribute) of the first FloorRequestStatus message generated by the floor co | ||||
ntrol server did not indicate any of these states, the floor control server will | ||||
need to send subsequent FloorRequestStatus messages.</t> | ||||
<t indent="0" pn="section-13.1.2-2">When the status of the floor reque | ||||
st changes, the floor control server <bcp14>SHOULD</bcp14> send new FloorRequest | ||||
Status messages with the appropriate Request Status. The floor control server <b | ||||
cp14>MUST</bcp14> add a FLOOR-REQUEST-INFORMATION attribute with a Floor Request | ||||
ID equal to the one sent in the first FloorRequestStatus message to any new Flo | ||||
orRequestStatus related to the same floor request. (The Floor Request ID identif | ||||
ies the floor request to which the FloorRequestStatus applies.)</t> | ||||
<t indent="0" pn="section-13.1.2-3">When using BFCP over a reliable tr | ||||
ansport, the floor control server <bcp14>MUST</bcp14> set the Transaction ID of | ||||
subsequent FloorRequestStatus messages to zero. When using BFCP over an unreliab | ||||
le transport, the Transaction ID <bcp14>MUST</bcp14> be non-zero and unique in t | ||||
he context of outstanding transactions over an unreliable transport as described | ||||
in <xref target="sec_transactions" format="default" sectionFormat="of" derivedC | ||||
ontent="Section 8"/>.</t> | ||||
<aside pn="section-13.1.2-4"> | ||||
<t indent="0" pn="section-13.1.2-4.1">The rate at which the floor co | ||||
ntrol server sends FloorRequestStatus messages is a matter of local policy. A fl | ||||
oor control server may choose to send a new FloorRequestStatus message every tim | ||||
e the floor request moves in the floor request queue, while another may choose o | ||||
nly to send a new FloorRequestStatus message when the floor request is Granted o | ||||
r Denied.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-13.1.2-5">The floor control server may add a | ||||
STATUS-INFO attribute to any of the FloorRequestStatus messages it generates to | ||||
provide extra information about its decisions regarding the floor request (e.g. | ||||
, why it was denied).</t> | ||||
<aside pn="section-13.1.2-6"> | ||||
<t indent="0" pn="section-13.1.2-6.1">Floor participants and floor c | ||||
hairs may request to be informed about the status of a floor following the proce | ||||
dures in <xref target="sec_client_floorinfo" format="default" sectionFormat="of" | ||||
derivedContent="Section 12.1"/>. If the processing of a floor request changes t | ||||
he status of a floor (e.g., the floor request is granted and consequently the fl | ||||
oor has a new holder), the floor control server needs to follow the procedures i | ||||
n <xref target="sec_server_floorinfo" format="default" sectionFormat="of" derive | ||||
dContent="Section 13.5"/> to inform the clients that have requested that informa | ||||
tion.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-13.1.2-7">The COMMON-HEADER and the rest of | ||||
the attributes are the same as in the first FloorRequestStatus message.</t> | ||||
<t indent="0" pn="section-13.1.2-8">The floor control server can disca | ||||
rd the state information about a particular floor request when this reaches a st | ||||
atus of Cancelled, Released, or Revoked.</t> | ||||
<t indent="0" pn="section-13.1.2-9">When communicating over an unrelia | ||||
ble transport and a FloorRequestStatusAck message is not received within the tra | ||||
nsaction failure window, the floor control server <bcp14>MUST</bcp14> retransmit | ||||
the FloorRequestStatus message according to <xref target="udp_transport" format | ||||
="default" sectionFormat="of" derivedContent="Section 6.2"/>.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="sec_server_requestinfo" numbered="true" toc="include" rem | ||||
<section title="Receiving a Response" anchor="sec:client:info:response"> | oveInRFC="false" pn="section-13.2"> | |||
<t>A message from the floor control server is considered a response to t | <name slugifiedName="name-reception-of-a-floorrequestq">Reception of a F | |||
he FloorRequestQuery message if the message from the floor control server has th | loorRequestQuery Message</name> | |||
e same Conference ID, Transaction ID, and User ID as the FloorRequestQuery messa | <t indent="0" pn="section-13.2-1">On reception of a FloorRequestQuery me | |||
ge, as described in <xref target="sec:transactions:client"/>. On receiving such | ssage, the floor control server follows the rules in <xref target="sec_auth" for | |||
a response, the client follows the rules in <xref target="sec:auth"/> that rela | mat="default" sectionFormat="of" derivedContent="Section 9"/> that relate to cli | |||
te to floor control server authentication.</t> | ent authentication and authorization. If while processing the FloorRequestQuery | |||
<t>If the response is a FloorRequestStatus message, the client obtains i | message, the floor control server encounters an error, it <bcp14>MUST</bcp14> ge | |||
nformation about the status of the FloorRequest the client requested information | nerate an Error response following the procedures described in <xref target="sec | |||
about in a FLOOR-REQUEST-INFORMATION attribute.</t> | _server_error" format="default" sectionFormat="of" derivedContent="Section 13.8" | |||
<t>If the response is an Error message, the floor control server could n | />.</t> | |||
ot process the FloorRequestQuery message for some reason, which is described in | <t indent="0" pn="section-13.2-2">The successful processing of a FloorRe | |||
the Error message.</t> | questQuery message by a floor control server involves generating a FloorRequestS | |||
tatus message, which <bcp14>SHOULD</bcp14> be generated as soon as possible.</t> | ||||
<t indent="0" pn="section-13.2-3">When communicating over an unreliable | ||||
transport and upon receiving a FloorRequestQuery from a participant, the floor c | ||||
ontrol server <bcp14>MUST</bcp14> respond with a FloorRequestStatus message with | ||||
in the transaction failure window to complete the transaction.</t> | ||||
<t indent="0" pn="section-13.2-4">The floor control server <bcp14>MUST</ | ||||
bcp14> copy the Conference ID, the Transaction ID, and the User ID from the Floo | ||||
rRequestQuery message into the FloorRequestStatus message, as described in <xref | ||||
target="sec_transactions_server" format="default" sectionFormat="of" derivedCon | ||||
tent="Section 8.2"/>. Additionally, the floor control server <bcp14>MUST</bcp14> | ||||
include information about the floor request in the FLOOR-REQUEST-INFORMATION gr | ||||
ouped attribute to the FloorRequestStatus.</t> | ||||
<t indent="0" pn="section-13.2-5">The floor control server <bcp14>MUST</ | ||||
bcp14> copy the contents of the FLOOR-REQUEST-ID attribute from the FloorRequest | ||||
Query message into the Floor Request ID field of the FLOOR-REQUEST-INFORMATION a | ||||
ttribute.</t> | ||||
<t indent="0" pn="section-13.2-6">The floor control server <bcp14>MUST</ | ||||
bcp14> add FLOOR-REQUEST-STATUS attributes to the FLOOR-REQUEST-INFORMATION grou | ||||
ped attribute identifying the floors being requested (i.e., the floors associate | ||||
d with the floor request identified by the FLOOR-REQUEST-ID attribute).</t> | ||||
<t indent="0" pn="section-13.2-7">The floor control server <bcp14>SHOULD | ||||
</bcp14> add a BENEFICIARY-ID attribute to the FLOOR-REQUEST-INFORMATION grouped | ||||
attribute identifying the beneficiary of the floor request. Additionally, the | ||||
floor control server <bcp14>MAY</bcp14> provide the display name and the URI of | ||||
the beneficiary in this BENEFICIARY-INFORMATION attribute.</t> | ||||
<t indent="0" pn="section-13.2-8">The floor control server <bcp14>MAY</b | ||||
cp14> provide information about the requester of the floor in a REQUESTED-BY-INF | ||||
ORMATION attribute inside the FLOOR-REQUEST-INFORMATION grouped attribute.</t> | ||||
<t indent="0" pn="section-13.2-9">The floor control server <bcp14>MAY</b | ||||
cp14> provide the reason why the floor participant requested the floor in a PART | ||||
ICIPANT-PROVIDED-INFO.</t> | ||||
<t indent="0" pn="section-13.2-10">The floor control server <bcp14>MAY</ | ||||
bcp14> also add to the FLOOR-REQUEST-INFORMATION grouped attribute a PRIORITY at | ||||
tribute with the Priority value requested for the floor request and a STATUS-INF | ||||
O attribute with extra information about the floor request.</t> | ||||
<t indent="0" pn="section-13.2-11">The floor control server <bcp14>MUST< | ||||
/bcp14> add an OVERALL-REQUEST-STATUS attribute to the FLOOR-REQUEST-INFORMATION | ||||
grouped attribute with the current status of the floor request. The floor contr | ||||
ol server <bcp14>MAY</bcp14> provide information about the status of the floor r | ||||
equest as it relates to each of the floors being requested in the FLOOR-REQUEST- | ||||
STATUS attributes.</t> | ||||
</section> | </section> | |||
</section> | <section anchor="sec_server_userinfo" numbered="true" toc="include" remove | |||
InRFC="false" pn="section-13.3"> | ||||
<section title="Requesting Information about a User" anchor="sec:client:user | <name slugifiedName="name-reception-of-a-userquery-me">Reception of a Us | |||
"> | erQuery Message</name> | |||
<t>A client can obtain information about a participant and the floor reque | <t indent="0" pn="section-13.3-1">On reception of a UserQuery message, t | |||
sts related to this participant in different ways, which include using BFCP and | he floor control server follows the rules in <xref target="sec_auth" format="def | |||
using out-of-band mechanisms. Clients using BFCP to obtain such information use | ault" sectionFormat="of" derivedContent="Section 9"/> that relate to client auth | |||
the procedures described in this section.</t> | entication and authorization. If while processing the UserQuery message, the flo | |||
<t>Clients request information about a participant and the floor requests | or control server encounters an error, it <bcp14>MUST</bcp14> generate an Error | |||
related to this participant by sending a UserQuery message to the floor control | response following the procedures described in <xref target="sec_server_error" f | |||
server.</t> | ormat="default" sectionFormat="of" derivedContent="Section 13.8"/>.</t> | |||
<t>This functionality may be useful for floor chairs or floor participants | <t indent="0" pn="section-13.3-2">The successful processing of a UserQue | |||
interested in the display name and the URI of a particular floor participant. I | ry message by a floor control server involves generating a UserStatus message, w | |||
n addition, a floor participant may find it useful to request information about | hich <bcp14>SHOULD</bcp14> be generated as soon as possible.</t> | |||
itself. For example, a floor participant, after experiencing connectivity proble | <t indent="0" pn="section-13.3-3">When communicating over an unreliable | |||
ms (e.g., its TCP connection with the floor control server was down for a while | transport and upon receiving a UserQuery from a participant, the floor control s | |||
and eventually was re-established), may need to request information about all th | erver <bcp14>MUST</bcp14> respond with a UserStatus message within the transacti | |||
e floor requests associated to itself that still exist.</t> | on failure window to complete the transaction.</t> | |||
<t indent="0" pn="section-13.3-4">The floor control server <bcp14>MUST</ | ||||
<section title="Sending a UserQuery Message" anchor="sec:client:user:send" | bcp14> copy the Conference ID, the Transaction ID, and the User ID from the User | |||
> | Query message into the UserStatus message, as described in <xref target="sec_tra | |||
<t>The ABNF in <xref target="sec:msg_format:UserQuery"/> describes the a | nsactions_server" format="default" sectionFormat="of" derivedContent="Section 8. | |||
ttributes that a UserQuery message can contain. In addition, the ABNF specifies | 2"/>.</t> | |||
normatively which of these attributes are mandatory, and which ones are optional | <t indent="0" pn="section-13.3-5">The sender of the UserQuery message is | |||
.</t> | requesting information about all the floor requests associated with a given par | |||
<t>The client sets the Conference ID and the Transaction ID in the commo | ticipant (i.e., the floor requests where the participant is either the beneficia | |||
n header following the rules given in <xref target="sec:transactions:client"/>. | ry or the requester). This participant is identified by a BENEFICIARY-ID attribu | |||
The client sets the User ID in the common header to the client's identifier.</t> | te or, in the absence of a BENEFICIARY-ID attribute, by a the User ID in the COM | |||
<t>If the floor participant the client is requesting information about i | MON-HEADER of the UserQuery message.</t> | |||
s not the client issuing the UserQuery message (which is identified by the User | <t indent="0" pn="section-13.3-6">The floor control server <bcp14>MUST</ | |||
ID in the common header of the message), the client MUST insert a BENEFICIARY-ID | bcp14> copy, if present, the contents of the BENEFICIARY-ID attribute from the U | |||
attribute.</t> | serQuery message into a BENEFICIARY-INFORMATION attribute in the UserStatus mess | |||
age. Additionally, the floor control server <bcp14>MAY</bcp14> provide the displ | ||||
ay name and the URI of the participant about which the UserStatus message provid | ||||
es information in this BENEFICIARY-INFORMATION attribute.</t> | ||||
<t indent="0" pn="section-13.3-7">The floor control server <bcp14>SHOULD | ||||
</bcp14> add to the UserStatus message a FLOOR-REQUEST-INFORMATION grouped attri | ||||
bute for each floor request related to the participant about which the message p | ||||
rovides information (i.e., the floor requests where the participant is either th | ||||
e beneficiary or the requester). For each FLOOR-REQUEST-INFORMATION attribute, t | ||||
he floor control server follows the following steps.</t> | ||||
<t indent="0" pn="section-13.3-8">The floor control server <bcp14>MUST</ | ||||
bcp14> identify the floor request the FLOOR-REQUEST-INFORMATION attribute applie | ||||
s to by filling the Floor Request ID field of the FLOOR-REQUEST-INFORMATION attr | ||||
ibute.</t> | ||||
<t indent="0" pn="section-13.3-9">The floor control server <bcp14>MUST</ | ||||
bcp14> add FLOOR-REQUEST-STATUS attributes to the FLOOR-REQUEST-INFORMATION grou | ||||
ped attribute identifying the floors being requested (i.e., the floors associate | ||||
d with the floor request identified by the FLOOR-REQUEST-ID attribute).</t> | ||||
<t indent="0" pn="section-13.3-10">The floor control server <bcp14>SHOUL | ||||
D</bcp14> add a BENEFICIARY-ID attribute to the FLOOR-REQUEST-INFORMATION groupe | ||||
d attribute identifying the beneficiary of the floor request. Additionally, the | ||||
floor control server <bcp14>MAY</bcp14> provide the display name and the URI of | ||||
the beneficiary in this BENEFICIARY-INFORMATION attribute.</t> | ||||
<t indent="0" pn="section-13.3-11">The floor control server <bcp14>MAY</ | ||||
bcp14> provide information about the requester of the floor in a REQUESTED-BY-IN | ||||
FORMATION attribute inside the FLOOR-REQUEST-INFORMATION grouped attribute.</t> | ||||
<t indent="0" pn="section-13.3-12">The floor control server <bcp14>MAY</ | ||||
bcp14> provide the reason why the floor participant requested the floor in a PAR | ||||
TICIPANT-PROVIDED-INFO.</t> | ||||
<t indent="0" pn="section-13.3-13">The floor control server <bcp14>MAY</ | ||||
bcp14> also add to the FLOOR-REQUEST-INFORMATION grouped attribute a PRIORITY at | ||||
tribute with the Priority value requested for the floor request.</t> | ||||
<t indent="0" pn="section-13.3-14">The floor control server <bcp14>MUST< | ||||
/bcp14> include the current status of the floor request in an OVERALL-REQUEST-ST | ||||
ATUS attribute to the FLOOR-REQUEST-INFORMATION grouped attribute. The floor con | ||||
trol server <bcp14>MAY</bcp14> add a STATUS-INFO attribute with extra informatio | ||||
n about the floor request.</t> | ||||
<t indent="0" pn="section-13.3-15">The floor control server <bcp14>MAY</ | ||||
bcp14> provide information about the status of the floor request as it relates t | ||||
o each of the floors being requested in the FLOOR-REQUEST-STATUS attributes.</t> | ||||
</section> | </section> | |||
<section anchor="sec_server_release" numbered="true" toc="include" removeI | ||||
<section title="Receiving a Response" anchor="sec:client:user:response"> | nRFC="false" pn="section-13.4"> | |||
<t>A message from the floor control server is considered a response to t | <name slugifiedName="name-reception-of-a-floorrelease">Reception of a Fl | |||
he UserQuery message if the message from the floor control server has the same C | oorRelease Message</name> | |||
onference ID, Transaction ID, and User ID as the UserQuery message, as described | <t indent="0" pn="section-13.4-1">On reception of a FloorRelease message | |||
in <xref target="sec:transactions:client"/>. On receiving such a response, the | , the floor control server follows the rules in <xref target="sec_auth" format=" | |||
client follows the rules in <xref target="sec:auth"/> that relate to floor cont | default" sectionFormat="of" derivedContent="Section 9"/> that relate to client a | |||
rol server authentication.</t> | uthentication and authorization. If while processing the FloorRelease message, t | |||
<t>If the response is a UserStatus message, the client obtains informati | he floor control server encounters an error, it <bcp14>MUST</bcp14> generate an | |||
on about the floor participant in a BENEFICIARY-INFORMATION grouped attribute an | Error response following the procedures described in <xref target="sec_server_er | |||
d about the status of the floor requests associated with the floor participant i | ror" format="default" sectionFormat="of" derivedContent="Section 13.8"/>.</t> | |||
n FLOOR-REQUEST-INFORMATION attributes.</t> | <t indent="0" pn="section-13.4-2">The successful processing of a FloorRe | |||
<t>If the response is an Error message, the floor control server could n | lease message by a floor control server involves generating a FloorRequestStatus | |||
ot process the UserQuery message for some reason, which is described in the Erro | message, which <bcp14>SHOULD</bcp14> be generated as soon as possible.</t> | |||
r message.</t> | <t indent="0" pn="section-13.4-3">When communicating over an unreliable | |||
transport and upon receiving a FloorRelease from a participant, the floor contro | ||||
l server <bcp14>MUST</bcp14> respond with a FloorRequestStatus message within th | ||||
e transaction failure window to complete the transaction.</t> | ||||
<t indent="0" pn="section-13.4-4">The floor control server <bcp14>MUST</ | ||||
bcp14> copy the Conference ID, the Transaction ID, and the User ID from the Floo | ||||
rRelease message into the FloorRequestStatus message, as described in <xref targ | ||||
et="sec_transactions_server" format="default" sectionFormat="of" derivedContent= | ||||
"Section 8.2"/>.</t> | ||||
<t indent="0" pn="section-13.4-5">The floor control server <bcp14>MUST</ | ||||
bcp14> add a FLOOR-REQUEST-INFORMATION grouped attribute to the FloorRequestStat | ||||
us. The attributes contained in this grouped attribute carry information about t | ||||
he floor request.</t> | ||||
<t indent="0" pn="section-13.4-6">The FloorRelease message identifies th | ||||
e floor request it applies to using a FLOOR-REQUEST-ID. The floor control server | ||||
<bcp14>MUST</bcp14> copy the contents of the FLOOR-REQUEST-ID attribute from th | ||||
e FloorRelease message into the Floor Request ID field of the FLOOR-REQUEST-INFO | ||||
RMATION attribute.</t> | ||||
<t indent="0" pn="section-13.4-7">The floor control server <bcp14>MUST</ | ||||
bcp14> identify the floors being released (i.e., the floors associated with the | ||||
floor request identified by the FLOOR-REQUEST-ID attribute) in FLOOR-REQUEST-STA | ||||
TUS attributes to the FLOOR-REQUEST-INFORMATION grouped attribute.</t> | ||||
<t indent="0" pn="section-13.4-8">The floor control server <bcp14>MUST</ | ||||
bcp14> add an OVERALL-REQUEST-STATUS attribute to the FLOOR-REQUEST-INFORMATION | ||||
grouped attribute. The Request Status value <bcp14>SHOULD</bcp14> be Released, | ||||
if the floor (or floors) had been previously granted, or Cancelled, if the floor | ||||
(or floors) had not been previously granted. The floor control server <bcp14>M | ||||
AY</bcp14> add a STATUS-INFO attribute with extra information about the floor re | ||||
quest.</t> | ||||
</section> | </section> | |||
</section> | <section anchor="sec_server_floorinfo" numbered="true" toc="include" remov | |||
eInRFC="false" pn="section-13.5"> | ||||
<section title="Obtaining the Capabilities of a Floor Control Server" anchor | <name slugifiedName="name-reception-of-a-floorquery-m">Reception of a Fl | |||
="sec:client:hello"> | oorQuery Message</name> | |||
<t>A client that wishes to obtain the capabilities of a floor control serv | <t indent="0" pn="section-13.5-1">On reception of a FloorQuery message, | |||
er does so by sending a Hello message to the floor control server.</t> | the floor control server follows the rules in <xref target="sec_auth" format="de | |||
fault" sectionFormat="of" derivedContent="Section 9"/> that relate to client aut | ||||
<section title="Sending a Hello Message" anchor="sec:client:hello:send"> | hentication. If while processing the FloorQuery message, the floor control serve | |||
<t>The ABNF in <xref target="sec:msg_format:Hello"/> describes the attri | r encounters an error, it <bcp14>MUST</bcp14> generate an Error response followi | |||
butes that a Hello message can contain. In addition, the ABNF specifies normativ | ng the procedures described in <xref target="sec_server_error" format="default" | |||
ely which of these attributes are mandatory, and which ones are optional.</t> | sectionFormat="of" derivedContent="Section 13.8"/>.</t> | |||
<t>The client sets the Conference ID and the Transaction ID in the commo | <t indent="0" pn="section-13.5-2">When communicating over an unreliable | |||
n header following the rules given in <xref target="sec:transactions:client"/>. | transport and upon receiving a FloorQuery from a participant, the floor control | |||
The client sets the User ID in the common header to the client's identifier.</t> | server <bcp14>MUST</bcp14> respond with a FloorStatus message within the transac | |||
tion failure window to complete the transaction.</t> | ||||
<t indent="0" pn="section-13.5-3">A floor control server receiving a Flo | ||||
orQuery message from a client <bcp14>SHOULD</bcp14> keep this client informed ab | ||||
out the status of the floors identified by FLOOR-ID attributes in the FloorQuery | ||||
message. Floor control servers keep clients informed by using FloorStatus messa | ||||
ges.</t> | ||||
<t indent="0" pn="section-13.5-4">An individual FloorStatus message carr | ||||
ies information about a single floor. So, when a FloorQuery message requests inf | ||||
ormation about more than one floor, the floor control server needs to send separ | ||||
ate FloorStatus messages for different floors.</t> | ||||
<t indent="0" pn="section-13.5-5">The information FloorQuery messages ca | ||||
rry may depend on the user requesting the information. For example, a chair may | ||||
be able to receive information about pending requests, while a regular user may | ||||
not be authorized to do so.</t> | ||||
<section anchor="sec_server_floorinfo_first" numbered="true" toc="includ | ||||
e" removeInRFC="false" pn="section-13.5.1"> | ||||
<name slugifiedName="name-generation-of-the-first-flo">Generation of t | ||||
he First FloorStatus Message</name> | ||||
<t indent="0" pn="section-13.5.1-1">The successful processing of a Flo | ||||
orQuery message by a floor control server involves generating one or several Flo | ||||
orStatus messages, the first of which <bcp14>SHOULD</bcp14> be generated as soon | ||||
as possible.</t> | ||||
<t indent="0" pn="section-13.5.1-2">The floor control server <bcp14>MU | ||||
ST</bcp14> copy the Conference ID, the Transaction ID, and the User ID from the | ||||
FloorQuery message into the FloorStatus message, as described in <xref target="s | ||||
ec_transactions_server" format="default" sectionFormat="of" derivedContent="Sect | ||||
ion 8.2"/>.</t> | ||||
<t indent="0" pn="section-13.5.1-3">If the FloorQuery message did not | ||||
contain any FLOOR-ID attribute, the floor control server sends the FloorStatus m | ||||
essage without adding any additional attribute and does not send any subsequent | ||||
FloorStatus message to the floor participant.</t> | ||||
<t indent="0" pn="section-13.5.1-4">If the FloorQuery message containe | ||||
d one or more FLOOR-ID attributes, the floor control server chooses one from amo | ||||
ng them and adds this FLOOR-ID attribute to the FloorStatus message. The floor c | ||||
ontrol server <bcp14>SHOULD</bcp14> add a FLOOR-REQUEST-INFORMATION grouped attr | ||||
ibute for each floor request associated to the floor. Each FLOOR-REQUEST-INFORMA | ||||
TION grouped attribute contains a number of attributes that provide information | ||||
about the floor request. For each FLOOR-REQUEST-INFORMATION attribute, the floor | ||||
control server follows the following steps.</t> | ||||
<t indent="0" pn="section-13.5.1-5">The floor control server <bcp14>MU | ||||
ST</bcp14> identify the floor request the FLOOR-REQUEST-INFORMATION attribute ap | ||||
plies to by filling the Floor Request ID field of the FLOOR-REQUEST-INFORMATION | ||||
attribute.</t> | ||||
<t indent="0" pn="section-13.5.1-6">The floor control server <bcp14>MU | ||||
ST</bcp14> add FLOOR-REQUEST-STATUS attributes to the FLOOR-REQUEST-INFORMATION | ||||
grouped attribute identifying the floors being requested (i.e., the floors assoc | ||||
iated with the floor request identified by the FLOOR-REQUEST-ID attribute).</t> | ||||
<t indent="0" pn="section-13.5.1-7">The floor control server <bcp14>SH | ||||
OULD</bcp14> add a BENEFICIARY-ID attribute to the FLOOR-REQUEST-INFORMATION gro | ||||
uped attribute identifying the beneficiary of the floor request. Additionally, | ||||
the floor control server <bcp14>MAY</bcp14> provide the display name and the URI | ||||
of the beneficiary in this BENEFICIARY-INFORMATION attribute.</t> | ||||
<t indent="0" pn="section-13.5.1-8">The floor control server <bcp14>MA | ||||
Y</bcp14> provide information about the requester of the floor in a REQUESTED-BY | ||||
-INFORMATION attribute inside the FLOOR-REQUEST-INFORMATION grouped attribute.</ | ||||
t> | ||||
<t indent="0" pn="section-13.5.1-9">The floor control server <bcp14>MA | ||||
Y</bcp14> provide the reason why the floor participant requested the floor in a | ||||
PARTICIPANT-PROVIDED-INFO.</t> | ||||
<t indent="0" pn="section-13.5.1-10">The floor control server <bcp14>M | ||||
AY</bcp14> also add to the FLOOR-REQUEST-INFORMATION grouped attribute a PRIORIT | ||||
Y attribute with the Priority value requested for the floor request.</t> | ||||
<t indent="0" pn="section-13.5.1-11">The floor control server <bcp14>M | ||||
UST</bcp14> add an OVERALL-REQUEST-STATUS attribute to the FLOOR-REQUEST-INFORMA | ||||
TION grouped attribute with the current status of the floor request. The floor c | ||||
ontrol server <bcp14>MAY</bcp14> add a STATUS-INFO attribute with extra informat | ||||
ion about the floor request.</t> | ||||
<t indent="0" pn="section-13.5.1-12">The floor control server <bcp14>M | ||||
AY</bcp14> provide information about the status of the floor request as it relat | ||||
es to each of the floors being requested in the FLOOR-REQUEST-STATUS attributes. | ||||
</t> | ||||
</section> | ||||
<section anchor="sec_server_floorinfo_subsequent" numbered="true" toc="i | ||||
nclude" removeInRFC="false" pn="section-13.5.2"> | ||||
<name slugifiedName="name-generation-of-subsequent-flo">Generation of | ||||
Subsequent FloorStatus Messages</name> | ||||
<t indent="0" pn="section-13.5.2-1">If the FloorQuery message carried | ||||
more than one FLOOR-ID attribute, the floor control server <bcp14>SHOULD</bcp14> | ||||
generate a FloorStatus message for each of them (except for the FLOOR-ID attrib | ||||
ute chosen for the first FloorStatus message) as soon as possible. These FloorSt | ||||
atus messages are generated following the same rules as those for the first Floo | ||||
rStatus message (see <xref target="sec_server_floorinfo_first" format="default" | ||||
sectionFormat="of" derivedContent="Section 13.5.1"/>), but their Transaction ID | ||||
is 0 when using a reliable transport and non-zero and unique in the context of o | ||||
utstanding transactions when using an unreliable transport (cf. <xref target="se | ||||
c_transactions" format="default" sectionFormat="of" derivedContent="Section 8"/> | ||||
).</t> | ||||
<t indent="0" pn="section-13.5.2-2">After generating these messages, t | ||||
he floor control server sends FloorStatus messages, periodically keeping the cli | ||||
ent informed about all the floors for which the client requested information. Th | ||||
e Transaction ID of these messages <bcp14>MUST</bcp14> be 0 when using a reliabl | ||||
e transport and non-zero and unique in the context of outstanding transactions w | ||||
hen using an unreliable transport (cf. <xref target="sec_transactions" format="d | ||||
efault" sectionFormat="of" derivedContent="Section 8"/>).</t> | ||||
<aside pn="section-13.5.2-3"> | ||||
<t indent="0" pn="section-13.5.2-3.1">The rate at which the floor co | ||||
ntrol server sends FloorStatus messages is a matter of local policy. A floor con | ||||
trol server may choose to send a new FloorStatus message every time a new floor | ||||
request arrives, while another may choose to only send a new FloorStatus message | ||||
when a new floor request is Granted.</t> | ||||
</aside> | ||||
<t indent="0" pn="section-13.5.2-4">When communicating over an unrelia | ||||
ble transport and a FloorStatusAck message is not received within the transactio | ||||
n failure window, the floor control server <bcp14>MUST</bcp14> retransmit the Fl | ||||
oorStatus message according to <xref target="udp_transport" format="default" sec | ||||
tionFormat="of" derivedContent="Section 6.2"/>.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="sec_server_chairaction" numbered="true" toc="include" rem | ||||
<section title="Receiving Responses" anchor="sec:client:hello:responses"> | oveInRFC="false" pn="section-13.6"> | |||
<t>A message from the floor control server is considered a response to t | <name slugifiedName="name-reception-of-a-chairaction-">Reception of a Ch | |||
he Hello message by the client if the message from the floor control server has | airAction Message</name> | |||
the same Conference ID, Transaction ID, and User ID as the Hello message, as des | <t indent="0" pn="section-13.6-1">On reception of a ChairAction message, | |||
cribed in <xref target="sec:transactions:client"/>. On receiving such a response | the floor control server follows the rules in <xref target="sec_auth" format="d | |||
, the client follows the rules in <xref target="sec:auth"/> that relate to floor | efault" sectionFormat="of" derivedContent="Section 9"/> that relate to client au | |||
control server authentication.</t> | thentication and authorization. If while processing the ChairAction message, the | |||
<t>If the response is a HelloAck message, the floor control server could | floor control server encounters an error, it <bcp14>MUST</bcp14> generate an Er | |||
process the Hello message successfully. The SUPPORTED-PRIMITIVES and SUPPORTED- | ror response following the procedures described in <xref target="sec_server_erro | |||
ATTRIBUTES attributes indicate which primitives and attributes, respectively, ar | r" format="default" sectionFormat="of" derivedContent="Section 13.8"/>.</t> | |||
e supported by the server.</t> | <t indent="0" pn="section-13.6-2">The successful processing of a ChairAc | |||
<t>If the response is an Error message, the floor control server could n | tion message by a floor control server involves generating a ChairActionAck mess | |||
ot process the Hello message for some reason, which is described in the Error me | age, which <bcp14>SHOULD</bcp14> be generated as soon as possible.</t> | |||
ssage.</t> | <t indent="0" pn="section-13.6-3">When communicating over an unreliable | |||
transport and upon receiving a ChairAction from a chair, the floor control serve | ||||
r <bcp14>MUST</bcp14> respond with a ChairActionAck message within the transacti | ||||
on failure window to complete the transaction.</t> | ||||
<t indent="0" pn="section-13.6-4">The floor control server <bcp14>MUST</ | ||||
bcp14> copy the Conference ID, the Transaction ID, and the User ID from the Chai | ||||
rAction message into the ChairActionAck message, as described in <xref target="s | ||||
ec_transactions_server" format="default" sectionFormat="of" derivedContent="Sect | ||||
ion 8.2"/>.</t> | ||||
<t indent="0" pn="section-13.6-5">The floor control server needs to take | ||||
into consideration the operation requested in the ChairAction message (e.g., gr | ||||
anting a floor) but does not necessarily need to perform it as requested by the | ||||
floor chair. The operation that the floor control server performs depends on the | ||||
ChairAction message and on the internal state of the floor control server.</t> | ||||
<t indent="0" pn="section-13.6-6">For example, a floor chair may send a | ||||
ChairAction message granting a floor that was requested as part of an atomic flo | ||||
or request operation that involved several floors. Even if the chair responsible | ||||
for one of the floors instructs the floor control server to grant the floor, th | ||||
e floor control server will not grant it until the chairs responsible for the ot | ||||
her floors agree to grant them as well.</t> | ||||
<t indent="0" pn="section-13.6-7">So, the floor control server is ultima | ||||
tely responsible for keeping a coherent floor state using instructions from floo | ||||
r chairs as input to this state.</t> | ||||
<t indent="0" pn="section-13.6-8">If the new Status in the ChairAction m | ||||
essage is Accepted and all the bits of the Queue Position field are zero, the fl | ||||
oor chair is requesting that the floor control server assign a queue position (e | ||||
.g., the last in the queue) to the floor request based on the local policy of th | ||||
e floor control server. (Of course, such a request only applies if the floor con | ||||
trol server implements a queue.)</t> | ||||
</section> | </section> | |||
</section> | <section anchor="sec_server_helloack" numbered="true" toc="include" remove | |||
</section> | InRFC="false" pn="section-13.7"> | |||
<name slugifiedName="name-reception-of-a-hello-messag">Reception of a He | ||||
<section title="Floor Control Server Operations" anchor="sec:server"> | llo Message</name> | |||
<t>This section specifies how floor control servers can perform different op | <t indent="0" pn="section-13.7-1">On reception of a Hello message, the f | |||
erations, such as granting a floor, using the protocol elements described in ear | loor control server follows the rules in <xref target="sec_auth" format="default | |||
lier sections.</t> | " sectionFormat="of" derivedContent="Section 9"/> that relate to client authenti | |||
<t>On reception of a message from a client, the floor control server MUST ch | cation. If while processing the Hello message, the floor control server encounte | |||
eck whether the value of the Primitive is supported. If it is not, the floor co | rs an error, it <bcp14>MUST</bcp14> generate an Error response following the pro | |||
ntrol server MUST send an Error message, as described in <xref target="sec:serve | cedures described in <xref target="sec_server_error" format="default" sectionFor | |||
r:error"/>, with Error code 3 (Unknown Primitive).</t> | mat="of" derivedContent="Section 13.8"/>.</t> | |||
<t>On reception of a message from a client, the floor control server MUST ch | <t indent="0" pn="section-13.7-2">If the version of BFCP specified in th | |||
eck whether the value of the Conference ID matched an existing conference. If it | e version field of the COMMON-HEADER is supported by the floor control server, i | |||
does not, the floor control server MUST send an Error message, as described in | t <bcp14>MUST</bcp14> respond with the same version number in the HelloAck; this | |||
<xref target="sec:server:error"/>, with Error code 1 (Conference does not Exist) | defines the version for all subsequent BFCP messages within this BFCP Connectio | |||
.</t> | n.</t> | |||
<t>On reception of a message from a client, the floor control server follows | <t indent="0" pn="section-13.7-3">When communicating over an unreliable | |||
the rules in <xref target="sec:auth"/> that relate to the authentication of the | transport and upon receiving a Hello from a participant, the floor control serve | |||
message.</t> | r <bcp14>MUST</bcp14> respond with a HelloAck message within the transaction fai | |||
<t>On reception of a message from a client, the floor control server MUST ch | lure window to complete the transaction.</t> | |||
eck whether it understands all the mandatory ('M' bit set) attributes in the mes | <t indent="0" pn="section-13.7-4">The successful processing of a Hello m | |||
sage. If the floor control server does not understand all of them, the floor con | essage by a floor control server involves generating a HelloAck message, which < | |||
trol server MUST send an Error message, as described in <xref target="sec:server | bcp14>SHOULD</bcp14> be generated as soon as possible. The floor control server | |||
:error"/>, with Error code 4 (Unknown Mandatory Attribute). The Error message SH | <bcp14>MUST</bcp14> copy the Conference ID, the Transaction ID, and the User ID | |||
OULD list the attributes that were not understood.</t> | from the Hello into the HelloAck, as described in <xref target="sec_transactions | |||
_server" format="default" sectionFormat="of" derivedContent="Section 8.2"/>.</t> | ||||
<section title="Reception of a FloorRequest Message" anchor="sec:server:requ | <t indent="0" pn="section-13.7-5">The floor control server <bcp14>MUST</ | |||
est"> | bcp14> add a SUPPORTED-PRIMITIVES attribute to the HelloAck message listing all | |||
<t>On reception of a FloorRequest message, the floor control server follow | the primitives (i.e., BFCP messages) supported by the floor control server.</t> | |||
s the rules in <xref target="sec:auth"/> that relate to client authentication an | <t indent="0" pn="section-13.7-6">The floor control server <bcp14>MUST</ | |||
d authorization. If while processing the FloorRequest message, the floor control | bcp14> add a SUPPORTED-ATTRIBUTES attribute to the HelloAck message listing all | |||
server encounters an error, it MUST generate an Error response following the pr | the attributes supported by the floor control server.</t> | |||
ocedures described in <xref target="sec:server:error"/>.</t> | ||||
<t><list style="hanging"> | ||||
<t>BFCP allows floor participants to have several ongoing floor reques | ||||
ts for the same floor (e.g., the same floor participant can occupy more than one | ||||
position in a queue at the same time). A floor control server that only support | ||||
s a certain number of ongoing floor requests per floor participant (e.g., one) c | ||||
an use Error Code 8 (You have Already Reached the Maximum Number of Ongoing Floo | ||||
r Requests for this Floor) to inform the floor participant.</t> | ||||
</list></t> | ||||
<t>When communicating over an unreliable transport and upon receiving a Fl | ||||
oorRequest from a participant, the floor control server MUST respond with a Floo | ||||
rRequestStatus message within the transaction failure window to complete the tra | ||||
nsaction.</t> | ||||
<section title="Generating the First FloorRequestStatus Message" anchor="s | ||||
ec:server:request:first"> | ||||
<t>The successful processing of a FloorRequest message by a floor contro | ||||
l server involves generating one or several FloorRequestStatus messages, the fir | ||||
st of which SHOULD be generated as soon as possible. If the floor control server | ||||
cannot accept, grant, or deny the floor request right away (e.g., a decision fr | ||||
om a chair is needed), it SHOULD use a Request Status value of Pending in the OV | ||||
ERALL-REQUEST-STATUS attribute (within the FLOOR-REQUEST-INFORMATION grouped att | ||||
ribute) of the first FloorRequestStatus message it generates.</t> | ||||
<t><list style="hanging"> | ||||
<t>The policy that a floor control server follows to grant or deny f | ||||
loors is outside the scope of this document. A given floor control server may pe | ||||
rform these decisions automatically while another may contact a human acting as | ||||
a chair every time a decision needs to be made.</t> | ||||
</list></t> | ||||
<t>The floor control server MUST copy the Conference ID, the Transaction | ||||
ID, and the User ID from the FloorRequest into the FloorRequestStatus, as descr | ||||
ibed in <xref target="sec:transactions:server"/>. Additionally, the floor contro | ||||
l server MUST add a FLOOR-REQUEST-INFORMATION grouped attribute to the FloorRequ | ||||
estStatus. The attributes contained in this grouped attribute carry information | ||||
about the floor request.</t> | ||||
<t>The floor control server MUST assign an identifier that is unique wit | ||||
hin the conference to this floor request, and MUST insert it in the Floor Reques | ||||
t ID field of the FLOOR-REQUEST-INFORMATION attribute. This identifier will be u | ||||
sed by the floor participant (or by a chair or chairs) to refer to this specific | ||||
floor request in the future.</t> | ||||
<t>The floor control server MUST copy the Floor IDs in the FLOOR-ID attr | ||||
ibutes of the FloorRequest into the FLOOR-REQUEST-STATUS attributes in the FLOOR | ||||
-REQUEST-INFORMATION grouped attribute. These Floor IDs identify the floors bein | ||||
g requested (i.e., the floors associated with this particular floor request).</t | ||||
> | ||||
<t>The floor control server SHOULD copy (if present) the contents of the | ||||
BENEFICIARY-ID attribute from the FloorRequest into a BENEFICIARY-INFORMATION a | ||||
ttribute inside the FLOOR-REQUEST-INFORMATION grouped attribute. Additionally, t | ||||
he floor control server MAY provide the display name and the URI of the benefici | ||||
ary in this BENEFICIARY-INFORMATION attribute.</t> | ||||
<t>The floor control server MAY provide information about the requester | ||||
of the floor in a REQUESTED-BY-INFORMATION attribute inside the FLOOR-REQUEST-IN | ||||
FORMATION grouped attribute.</t> | ||||
<t>The floor control server MAY copy (if present) the PRIORITY attribute | ||||
from the FloorRequest into the FLOOR-REQUEST-INFORMATION grouped attribute.</t> | ||||
<!-- note: assumed bug in RFC 4582. s/PARTICIPANT-PROVIDED-INFO attr/PRIORITY a | ||||
ttr/ --> | ||||
<t><list style="empty"> | ||||
<t>Note that this attribute carries the priority requested by the | ||||
participant. The priority that the floor control server assigns to the floor req | ||||
uest depends on the priority requested by the participant and the rights the par | ||||
ticipant has according to the policy of the conference. For example, a participa | ||||
nt that is only allowed to use the Normal priority may request Highest priority | ||||
for a floor request. In that case, the floor control server would ignore the pri | ||||
ority requested by the participant.</t> | ||||
</list></t> | ||||
<t>The floor control server MAY copy (if present) the PARTICIPANT-PROVID | ||||
ED-INFO attribute from the FloorRequest into the FLOOR-REQUEST-INFORMATION group | ||||
ed attribute.</t> | ||||
</section> | </section> | |||
<section anchor="sec_server_error" numbered="true" toc="include" removeInR | ||||
<section title="Generation of Subsequent FloorRequestStatus Messages" anch | FC="false" pn="section-13.8"> | |||
or="sec:server:request:subsequent"> | <name slugifiedName="name-error-message-generation">Error Message Genera | |||
<t>A floor request is considered to be ongoing as long as it is not in t | tion</name> | |||
he Cancelled, Released, or Revoked states. If the OVERALL-REQUEST-STATUS attribu | <t indent="0" pn="section-13.8-1">Error messages are always sent in resp | |||
te (inside the FLOOR-REQUEST-INFORMATION grouped attribute) of the first FloorRe | onse to a previous message from the client as part of a client-initiated transac | |||
questStatus message generated by the floor control server did not indicate any o | tion. The ABNF in <xref target="sec_msg_format_Error" format="default" sectionFo | |||
f these states, the floor control server will need to send subsequent FloorReque | rmat="of" derivedContent="Section 5.3.13"/> describes the attributes that an Err | |||
stStatus messages.</t> | or message can contain. In addition, the ABNF specifies normatively which of the | |||
<t>When the status of the floor request changes, the floor control serve | se attributes are mandatory and which ones are optional.</t> | |||
r SHOULD send new FloorRequestStatus messages with the appropriate Request Statu | <t indent="0" pn="section-13.8-2">The floor control server <bcp14>MUST</ | |||
s. The floor control server MUST add a FLOOR-REQUEST-INFORMATION attribute with | bcp14> copy the Conference ID, the Transaction ID, and the User ID from the mess | |||
a Floor Request ID equal to the one sent in the first FloorRequestStatus message | age from the client into the Error message, as described in <xref target="sec_tr | |||
to any new FloorRequestStatus related to the same floor request. (The Floor Req | ansactions_server" format="default" sectionFormat="of" derivedContent="Section 8 | |||
uest ID identifies the floor request to which the FloorRequestStatus applies.)</ | .2"/>.</t> | |||
t> | <t indent="0" pn="section-13.8-3">The floor control server <bcp14>MUST</ | |||
<t>When using BFCP over a reliable transport, the floor control server M | bcp14> add an ERROR-CODE attribute to the Error message. The ERROR-CODE attribut | |||
UST set the Transaction ID of subsequent FloorRequestStatus messages to 0. When | e contains an error code from <xref target="tab_errorcode" format="default" sect | |||
using BFCP over an unreliable transport, the Transaction ID MUST be non-zero and | ionFormat="of" derivedContent="Table 5"/>. Additionally, the floor control serve | |||
unique in the context of outstanding transactions over an unreliable transport | r may add an ERROR-INFO attribute with extra information about the error.</t> | |||
as described in <xref target="sec:transactions"/>.</t> | ||||
<t><list style="hanging"> | ||||
<t>The rate at which the floor control server sends FloorRequestStat | ||||
us messages is a matter of local policy. A floor control server may choose to se | ||||
nd a new FloorRequestStatus message every time the floor request moves in the fl | ||||
oor request queue, while another may choose only to send a new FloorRequestStatu | ||||
s message when the floor request is Granted or Denied.</t> | ||||
</list></t> | ||||
<t>The floor control server may add a STATUS-INFO attribute to any of th | ||||
e FloorRequestStatus messages it generates to provide extra information about it | ||||
s decisions regarding the floor request (e.g., why it was denied).</t> | ||||
<t><list style="hanging"> | ||||
<t>Floor participants and floor chairs may request to be informed ab | ||||
out the status of a floor following the procedures in <xref target="sec:client:f | ||||
loorinfo"/>. If the processing of a floor request changes the status of a floor | ||||
(e.g., the floor request is granted and consequently the floor has a new holder) | ||||
, the floor control server needs to follow the procedures in <xref target="sec:s | ||||
erver:floorinfo"/> to inform the clients that have requested that information.</ | ||||
t> | ||||
</list></t> | ||||
<t>The common header and the rest of the attributes are the same as in t | ||||
he first FloorRequestStatus message.</t> | ||||
<t>The floor control server can discard the state information about a pa | ||||
rticular floor request when this reaches a status of Cancelled, Released, or Rev | ||||
oked.</t> | ||||
<t>When communicating over an unreliable transport and a FloorRequestSta | ||||
tusAck message is not received within the transaction failure window, the floor | ||||
control server MUST retransmit the FloorRequestStatus message according to <xref | ||||
target="udp_transport"/>.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec_security" numbered="true" toc="include" removeInRFC="fa | ||||
<section title="Reception of a FloorRequestQuery Message" anchor="sec:server | lse" pn="section-14"> | |||
:requestinfo"> | <name slugifiedName="name-security-considerations">Security Considerations | |||
<t>On reception of a FloorRequestQuery message, the floor control server f | </name> | |||
ollows the rules in <xref target="sec:auth"/> that relate to client authenticati | <t indent="0" pn="section-14-1">BFCP uses TLS/DTLS to provide mutual authe | |||
on and authorization. If while processing the FloorRequestQuery message, the flo | ntication between clients and servers. TLS/DTLS also provides replay and integri | |||
or control server encounters an error, it MUST generate an Error response follow | ty protection and confidentiality. It is <bcp14>RECOMMENDED</bcp14> that TLS/DT | |||
ing the procedures described in <xref target="sec:server:error"/>.</t> | LS with an encryption algorithm according to <xref target="sec_lower-security" f | |||
<t>The successful processing of a FloorRequestQuery message by a floor con | ormat="default" sectionFormat="of" derivedContent="Section 7"/> always be used. | |||
trol server involves generating a FloorRequestStatus message, which SHOULD be ge | In cases where signaling/control traffic is properly protected, as described in | |||
nerated as soon as possible.</t> | <xref target="sec_auth" format="default" sectionFormat="of" derivedContent="Sec | |||
<t>When communicating over an unreliable transport and upon receiving a Fl | tion 9"/>, it is <bcp14>REQUIRED</bcp14> to use a mandated encryption algorithm. | |||
oorRequestQuery from a participant, the floor control server MUST respond with a | BFCP entities <bcp14>MAY</bcp14> use other security mechanisms to interwork wi | |||
FloorRequestStatus message within the transaction failure window to complete th | th legacy implementation that do not use TLS/DTLS as long as these mechanisms pr | |||
e transaction.</t> | ovide similar security properties. An example of other mechanisms to effectivel | |||
<t>The floor control server MUST copy the Conference ID, the Transaction I | y secure a nonsecure BFCP connection is IPsec <xref target="RFC4301" format="def | |||
D, and the User ID from the FloorRequestQuery message into the FloorRequestStatu | ault" sectionFormat="of" derivedContent="21"/>.</t> | |||
s message, as described in <xref target="sec:transactions:server"/>. Additionall | <t indent="0" pn="section-14-2">The remainder of this section analyzes som | |||
y, the floor control server MUST include information about the floor request in | e of the threats against BFCP and how they are addressed.</t> | |||
the FLOOR-REQUEST-INFORMATION grouped attribute to the FloorRequestStatus.</t> | <t indent="0" pn="section-14-3">An attacker may attempt to impersonate a c | |||
<t>The floor control server MUST copy the contents of the FLOOR-REQUEST-ID | lient (a floor participant or a floor chair) in order to generate forged floor r | |||
attribute from the FloorRequestQuery message into the Floor Request ID field of | equests or to grant or deny existing floor requests. Client impersonation is avo | |||
the FLOOR-REQUEST-INFORMATION attribute.</t> | ided by having servers only accept BFCP messages over authenticated TLS/DTLS con | |||
<t>The floor control server MUST add FLOOR-REQUEST-STATUS attributes to th | nections. The floor control server assumes that attackers cannot hijack the TLS/ | |||
e FLOOR-REQUEST-INFORMATION grouped attribute identifying the floors being reque | DTLS connection and, therefore, that messages over the TLS/DTLS connection come | |||
sted (i.e., the floors associated with the floor request identified by the FLOOR | from the client that was initially authenticated.</t> | |||
-REQUEST-ID attribute).</t> | <t indent="0" pn="section-14-4">An attacker may attempt to impersonate a f | |||
<t>The floor control server SHOULD add a BENEFICIARY-ID attribute to the F | loor control server. A successful attacker would be able to make clients think t | |||
LOOR-REQUEST-INFORMATION grouped attribute identifying the beneficiary of the fl | hat they hold a particular floor so that they would try to access a resource (e. | |||
oor request. Additionally, the floor control server MAY provide the display nam | g., sending media) without having legitimate rights to access it. Floor control | |||
e and the URI of the beneficiary in this BENEFICIARY-INFORMATION attribute.</t> | server impersonation is avoided by having servers only accept BFCP messages over | |||
<t>The floor control server MAY provide information about the requester of | authenticated TLS/DTLS connections, as well as ensuring clients only send and a | |||
the floor in a REQUESTED-BY-INFORMATION attribute inside the FLOOR-REQUEST-INFO | ccept messages over authenticated TLS/DTLS connections.</t> | |||
RMATION grouped attribute.</t> | <t indent="0" pn="section-14-5">Attackers may attempt to modify messages e | |||
<t>The floor control server MAY provide the reason why the floor participa | xchanged by a client and a floor control server. The integrity protection provid | |||
nt requested the floor in a PARTICIPANT-PROVIDED-INFO.</t> | ed by TLS/DTLS connections prevents this attack.</t> | |||
<t>The floor control server MAY also add to the FLOOR-REQUEST-INFORMATION | <t indent="0" pn="section-14-6">An attacker may attempt to fetch a valid m | |||
grouped attribute a PRIORITY attribute with the Priority value requested for the | essage sent by a client to a floor control server and replay it over a connectio | |||
floor request and a STATUS-INFO attribute with extra information about the floo | n between the attacker and the floor control server. This attack is prevented by | |||
r request.</t> | having floor control servers check that messages arriving over a given authenti | |||
<t>The floor control server MUST add an OVERALL-REQUEST-STATUS attribute t | cated TLS/DTLS connection use an authorized user ID (i.e., a user ID that the us | |||
o the FLOOR-REQUEST-INFORMATION grouped attribute with the current status of the | er that established the authenticated TLS/DTLS connection is allowed to use).</t | |||
floor request. The floor control server MAY provide information about the statu | > | |||
s of the floor request as it relates to each of the floors being requested in th | <t indent="0" pn="section-14-7">Attackers may attempt to pick messages fro | |||
e FLOOR-REQUEST-STATUS attributes.</t> | m the network to get access to confidential information between the floor contro | |||
</section> | l server and a client (e.g., why a floor request was denied). TLS/DTLS confident | |||
iality prevents this attack. Therefore, it is <bcp14>REQUIRED</bcp14> that TLS/D | ||||
<section title="Reception of a UserQuery Message" anchor="sec:server:userinf | TLS be used with an encryption algorithm according to <xref target="sec_lower-se | |||
o"> | curity" format="default" sectionFormat="of" derivedContent="Section 7"/>.</t> | |||
<t>On reception of a UserQuery message, the floor control server follows t | ||||
he rules in <xref target="sec:auth"/> that relate to client authentication and a | ||||
uthorization. If while processing the UserQuery message, the floor control serve | ||||
r encounters an error, it MUST generate an Error response following the procedur | ||||
es described in <xref target="sec:server:error"/>.</t> | ||||
<t>The successful processing of a UserQuery message by a floor control ser | ||||
ver involves generating a UserStatus message, which SHOULD be generated as soon | ||||
as possible.</t> | ||||
<t>When communicating over an unreliable transport and upon receiving a Us | ||||
erQuery from a participant, the floor control server MUST respond with a UserSta | ||||
tus message within the transaction failure window to complete the transaction.</ | ||||
t> | ||||
<t>The floor control server MUST copy the Conference ID, the Transaction I | ||||
D, and the User ID from the UserQuery message into the UserStatus message, as de | ||||
scribed in <xref target="sec:transactions:server"/>.</t> | ||||
<t>The sender of the UserQuery message is requesting information about all | ||||
the floor requests associated with a given participant (i.e., the floor request | ||||
s where the participant is either the beneficiary or the requester). This partic | ||||
ipant is identified by a BENEFICIARY-ID attribute or, in the absence of a BENEFI | ||||
CIARY-ID attribute, by a the User ID in the common header of the UserQuery messa | ||||
ge.</t> | ||||
<t>The floor control server MUST copy, if present, the contents of the BEN | ||||
EFICIARY-ID attribute from the UserQuery message into a BENEFICIARY-INFORMATION | ||||
attribute in the UserStatus message. Additionally, the floor control server MAY | ||||
provide the display name and the URI of the participant about which the UserStat | ||||
us message provides information in this BENEFICIARY-INFORMATION attribute.</t> | ||||
<t>The floor control server SHOULD add to the UserStatus message a FLOOR-R | ||||
EQUEST-INFORMATION grouped attribute for each floor request related to the parti | ||||
cipant about which the message provides information (i.e., the floor requests wh | ||||
ere the participant is either the beneficiary or the requester). For each FLOOR- | ||||
REQUEST-INFORMATION attribute, the floor control server follows the following st | ||||
eps.</t> | ||||
<t>The floor control server MUST identify the floor request the FLOOR-REQU | ||||
EST-INFORMATION attribute applies to by filling the Floor Request ID field of th | ||||
e FLOOR-REQUEST-INFORMATION attribute.</t> | ||||
<t>The floor control server MUST add FLOOR-REQUEST-STATUS attributes to th | ||||
e FLOOR-REQUEST-INFORMATION grouped attribute identifying the floors being reque | ||||
sted (i.e., the floors associated with the floor request identified by the FLOOR | ||||
-REQUEST-ID attribute).</t> | ||||
<t>The floor control server SHOULD add a BENEFICIARY-ID attribute to the F | ||||
LOOR-REQUEST-INFORMATION grouped attribute identifying the beneficiary of the fl | ||||
oor request. Additionally, the floor control server MAY provide the display nam | ||||
e and the URI of the beneficiary in this BENEFICIARY-INFORMATION attribute.</t> | ||||
<t>The floor control server MAY provide information about the requester of | ||||
the floor in a REQUESTED-BY-INFORMATION attribute inside the FLOOR-REQUEST-INFO | ||||
RMATION grouped attribute.</t> | ||||
<t>The floor control server MAY provide the reason why the floor participa | ||||
nt requested the floor in a PARTICIPANT-PROVIDED-INFO.</t> | ||||
<t>The floor control server MAY also add to the FLOOR-REQUEST-INFORMATION | ||||
grouped attribute a PRIORITY attribute with the Priority value requested for the | ||||
floor request.</t> | ||||
<t>The floor control server MUST include the current status of the floor r | ||||
equest in an OVERALL-REQUEST-STATUS attribute to the FLOOR-REQUEST-INFORMATION g | ||||
rouped attribute. The floor control server MAY add a STATUS-INFO attribute with | ||||
extra information about the floor request.</t> | ||||
<t>The floor control server MAY provide information about the status of th | ||||
e floor request as it relates to each of the floors being requested in the FLOOR | ||||
-REQUEST-STATUS attributes.</t> | ||||
</section> | ||||
<section title="Reception of a FloorRelease Message" anchor="sec:server:rele | ||||
ase"> | ||||
<t>On reception of a FloorRelease message, the floor control server follow | ||||
s the rules in <xref target="sec:auth"/> that relate to client authentication an | ||||
d authorization. If while processing the FloorRelease message, the floor control | ||||
server encounters an error, it MUST generate an Error response following the pr | ||||
ocedures described in <xref target="sec:server:error"/>.</t> | ||||
<t>The successful processing of a FloorRelease message by a floor control | ||||
server involves generating a FloorRequestStatus message, which SHOULD be generat | ||||
ed as soon as possible.</t> | ||||
<t>When communicating over an unreliable transport and upon receiving a Fl | ||||
oorRelease from a participant, the floor control server MUST respond with a Floo | ||||
rRequestStatus message within the transaction failure window to complete the tra | ||||
nsaction.</t> | ||||
<t>The floor control server MUST copy the Conference ID, the Transaction I | ||||
D, and the User ID from the FloorRelease message into the FloorRequestStatus mes | ||||
sage, as described in <xref target="sec:transactions:server"/>.</t> | ||||
<t>The floor control server MUST add a FLOOR-REQUEST-INFORMATION grouped a | ||||
ttribute to the FloorRequestStatus. The attributes contained in this grouped att | ||||
ribute carry information about the floor request.</t> | ||||
<t>The FloorRelease message identifies the floor request it applies to usi | ||||
ng a FLOOR-REQUEST-ID. The floor control server MUST copy the contents of the FL | ||||
OOR-REQUEST-ID attribute from the FloorRelease message into the Floor Request ID | ||||
field of the FLOOR-REQUEST-INFORMATION attribute.</t> | ||||
<t>The floor control server MUST identify the floors being released (i.e., | ||||
the floors associated with the floor request identified by the FLOOR-REQUEST-ID | ||||
attribute) in FLOOR-REQUEST-STATUS attributes to the FLOOR-REQUEST-INFORMATION | ||||
grouped attribute.</t> | ||||
<t>The floor control server MUST add an OVERALL-REQUEST-STATUS attribute t | ||||
o the FLOOR-REQUEST-INFORMATION grouped attribute. The Request Status value SHO | ||||
ULD be Released, if the floor (or floors) had been previously granted, or Cancel | ||||
led, if the floor (or floors) had not been previously granted. The floor contro | ||||
l server MAY add a STATUS-INFO attribute with extra information about the floor | ||||
request.</t> | ||||
</section> | </section> | |||
<section anchor="sec_iana" numbered="true" toc="include" removeInRFC="false" | ||||
<section title="Reception of a FloorQuery Message" anchor="sec:server:floori | pn="section-15"> | |||
nfo"> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
<t>On reception of a FloorQuery message, the floor control server follows | <t indent="0" pn="section-15-1">The IANA has created a registry for BFCP p | |||
the rules in <xref target="sec:auth"/> that relate to client authentication. If | arameters called "The Binary Floor Control Protocol (BFCP) Parameters". This reg | |||
while processing the FloorQuery message, the floor control server encounters an | istry has a number of subregistries, which are described in the following sectio | |||
error, it MUST generate an Error response following the procedures described in | ns.</t> | |||
<xref target="sec:server:error"/>.</t> | <section numbered="true" toc="include" removeInRFC="false" pn="section-15. | |||
<t>When communicating over an unreliable transport and upon receiving a Fl | 1"> | |||
oorQuery from a participant, the floor control server MUST respond with a FloorS | <name slugifiedName="name-attributes-subregistry">Attributes Subregistry | |||
tatus message within the transaction failure window to complete the transaction. | </name> | |||
</t> | <t indent="0" pn="section-15.1-1">This section establishes the "Attribut | |||
<t>A floor control server receiving a FloorQuery message from a client SHO | es" subregistry under the BFCP | |||
ULD keep this client informed about the status of the floors identified by FLOOR | Parameters registry. As per the terminology in RFC 8126 <xref target="RFC | |||
-ID attributes in the FloorQuery message. Floor Control Servers keep clients inf | 8126" format="default" sectionFormat="of" derivedContent="6"/>, the registration | |||
ormed by using FloorStatus messages.</t> | policy for BFCP | |||
<t>An individual FloorStatus message carries information about a single fl | attributes is "Specification Required". For the purposes of this | |||
oor. So, when a FloorQuery message requests information about more than one floo | subregistry, the BFCP attributes for which IANA registration is | |||
r, the floor control server needs to send separate FloorStatus messages for diff | requested <bcp14>MUST</bcp14> be defined by a Standards Track | |||
erent floors.</t> | RFC. Such an RFC <bcp14>MUST</bcp14> specify the attribute's type, | |||
<t>The information FloorQuery messages carry may depend on the user reques | name, format, and semantics.</t> | |||
ting the information. For example, a chair may be able to receive information ab | <t indent="0" pn="section-15.1-2">For each BFCP attribute, the IANA regi | |||
out pending requests, while a regular user may not be authorized to do so.</t> | sters its type, its name, and | |||
the reference to the RFC where the attribute is defined. The following | ||||
<section title="Generation of the First FloorStatus Message" anchor="sec:s | table contains the initial values of this subregistry.</t> | |||
erver:floorinfo:first"> | <table anchor="tab_iana-attributes" align="center" pn="table-7"> | |||
<t>The successful processing of a FloorQuery message by a floor control | <name slugifiedName="name-initial-values-of-the-bfcp-">Initial values | |||
server involves generating one or several FloorStatus messages, the first of whi | of the BFCP Attributes subregistry</name> | |||
ch SHOULD be generated as soon as possible.</t> | <thead> | |||
<t>The floor control server MUST copy the Conference ID, the Transaction | <tr> | |||
ID, and the User ID from the FloorQuery message into the FloorStatus message, a | <th align="center" colspan="1" rowspan="1">Type</th> | |||
s described in <xref target="sec:transactions:server"/>.</t> | <th align="left" colspan="1" rowspan="1">Attribute</th> | |||
<t>If the FloorQuery message did not contain any FLOOR-ID attribute, the | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
floor control server sends the FloorStatus message without adding any additiona | </tr> | |||
l attribute and does not send any subsequent FloorStatus message to the floor pa | </thead> | |||
rticipant.</t> | <tbody> | |||
<t>If the FloorQuery message contained one or more FLOOR-ID attributes, | <tr> | |||
the floor control server chooses one from among them and adds this FLOOR-ID attr | <td align="center" colspan="1" rowspan="1">1</td> | |||
ibute to the FloorStatus message. The floor control server SHOULD add a FLOOR-RE | <td align="left" colspan="1" rowspan="1">BENEFICIARY-ID</td> | |||
QUEST-INFORMATION grouped attribute for each floor request associated to the flo | <td align="left" colspan="1" rowspan="1">RFC 8855</td> | |||
or. Each FLOOR-REQUEST-INFORMATION grouped attribute contains a number of attrib | </tr> | |||
utes that provide information about the floor request. For each FLOOR-REQUEST-IN | <tr> | |||
FORMATION attribute, the floor control server follows the following steps.</t> | <td align="center" colspan="1" rowspan="1">2</td> | |||
<t>The floor control server MUST identify the floor request the FLOOR-RE | <td align="left" colspan="1" rowspan="1">FLOOR-ID</td> | |||
QUEST-INFORMATION attribute applies to by filling the Floor Request ID field of | <td align="left" colspan="1" rowspan="1">RFC 8855</td> | |||
the FLOOR-REQUEST-INFORMATION attribute.</t> | </tr> | |||
<t>The floor control server MUST add FLOOR-REQUEST-STATUS attributes to | <tr> | |||
the FLOOR-REQUEST-INFORMATION grouped attribute identifying the floors being req | <td align="center" colspan="1" rowspan="1">3</td> | |||
uested (i.e., the floors associated with the floor request identified by the FLO | <td align="left" colspan="1" rowspan="1">FLOOR-REQUEST-ID</td> | |||
OR-REQUEST-ID attribute).</t> | <td align="left" colspan="1" rowspan="1">RFC 8855</td> | |||
<t>The floor control server SHOULD add a BENEFICIARY-ID attribute to the | </tr> | |||
FLOOR-REQUEST-INFORMATION grouped attribute identifying the beneficiary of the | <tr> | |||
floor request. Additionally, the floor control server MAY provide the display n | <td align="center" colspan="1" rowspan="1">4</td> | |||
ame and the URI of the beneficiary in this BENEFICIARY-INFORMATION attribute.</t | <td align="left" colspan="1" rowspan="1">PRIORITY</td> | |||
> | <td align="left" colspan="1" rowspan="1">RFC 8855</td> | |||
<t>The floor control server MAY provide information about the requester | </tr> | |||
of the floor in a REQUESTED-BY-INFORMATION attribute inside the FLOOR-REQUEST-IN | <tr> | |||
FORMATION grouped attribute.</t> | <td align="center" colspan="1" rowspan="1">5</td> | |||
<t>The floor control server MAY provide the reason why the floor partici | <td align="left" colspan="1" rowspan="1">REQUEST-STATUS</td> | |||
pant requested the floor in a PARTICIPANT-PROVIDED-INFO.</t> | <td align="left" colspan="1" rowspan="1">RFC 8855</td> | |||
<t>The floor control server MAY also add to the FLOOR-REQUEST-INFORMATIO | </tr> | |||
N grouped attribute a PRIORITY attribute with the Priority value requested for t | <tr> | |||
he floor request.</t> | <td align="center" colspan="1" rowspan="1">6</td> | |||
<t>The floor control server MUST add an OVERALL-REQUEST-STATUS attribute | <td align="left" colspan="1" rowspan="1">ERROR-CODE</td> | |||
to the FLOOR-REQUEST-INFORMATION grouped attribute with the current status of t | <td align="left" colspan="1" rowspan="1">RFC 8855</td> | |||
he floor request. The floor control server MAY add a STATUS-INFO attribute with | </tr> | |||
extra information about the floor request.</t> | <tr> | |||
<t>The floor control server MAY provide information about the status of | <td align="center" colspan="1" rowspan="1">7</td> | |||
the floor request as it relates to each of the floors being requested in the FLO | <td align="left" colspan="1" rowspan="1">ERROR-INFO</td> | |||
OR-REQUEST-STATUS attributes.</t> | <td align="left" colspan="1" rowspan="1">RFC 8855</td> | |||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">8</td> | ||||
<td align="left" colspan="1" rowspan="1">PARTICIPANT-PROVIDED-INFO | ||||
</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">9</td> | ||||
<td align="left" colspan="1" rowspan="1">STATUS-INFO</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">10</td> | ||||
<td align="left" colspan="1" rowspan="1">SUPPORTED-ATTRIBUTES</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">11</td> | ||||
<td align="left" colspan="1" rowspan="1">SUPPORTED-PRIMITIVES</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">12</td> | ||||
<td align="left" colspan="1" rowspan="1">USER-DISPLAY-NAME</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">13</td> | ||||
<td align="left" colspan="1" rowspan="1">USER-URI</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">14</td> | ||||
<td align="left" colspan="1" rowspan="1">BENEFICIARY-INFORMATION</ | ||||
td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">15</td> | ||||
<td align="left" colspan="1" rowspan="1">FLOOR-REQUEST-INFORMATION | ||||
</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">16</td> | ||||
<td align="left" colspan="1" rowspan="1">REQUESTED-BY-INFORMATION< | ||||
/td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">17</td> | ||||
<td align="left" colspan="1" rowspan="1">FLOOR-REQUEST-STATUS</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">18</td> | ||||
<td align="left" colspan="1" rowspan="1">OVERALL-REQUEST-STATUS</t | ||||
d> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section anchor="sec_iana_primitive" numbered="true" toc="include" removeI | ||||
<section title="Generation of Subsequent FloorStatus Messages" anchor="sec | nRFC="false" pn="section-15.2"> | |||
:server:floorinfo:subsequent"> | <name slugifiedName="name-primitives-subregistry">Primitives Subregistry | |||
<t>If the FloorQuery message carried more than one FLOOR-ID attribute, t | </name> | |||
he floor control server SHOULD generate a FloorStatus message for each of them ( | <t indent="0" pn="section-15.2-1">This section establishes the "Primitiv | |||
except for the FLOOR-ID attribute chosen for the first FloorStatus message) as s | es" subregistry under the | |||
oon as possible. These FloorStatus messages are generated following the same rul | BFCP Parameters registry. As per the terminology in RFC 8126 <xref target | |||
es as those for the first FloorStatus message (see <xref target="sec:server:floo | ="RFC8126" format="default" sectionFormat="of" derivedContent="6"/>, the registr | |||
rinfo:first"/>), but their Transaction ID is 0 when using a reliable transport a | ation policy for BFCP | |||
nd non-zero and unique in the context of outstanding transactions when using an | primitives is "Specification Required". For the purposes of this | |||
unreliable transport (cf. <xref target="sec:transactions"/>).</t> | subregistry, the BFCP primitives for which IANA registration is | |||
<t>After generating these messages, the floor control server sends Floor | requested <bcp14>MUST</bcp14> be defined by a Standards Track | |||
Status messages, periodically keeping the client informed about all the floors f | RFC. Such an RFC <bcp14>MUST</bcp14> specify the primitive's value, | |||
or which the client requested information. The Transaction ID of these messages | name, format, and semantics.</t> | |||
MUST be 0 when using a reliable transport and non-zero and unique in the context | <t indent="0" pn="section-15.2-2">For each BFCP primitive, the IANA regi | |||
of outstanding transactions when using an unreliable transport (cf. <xref targe | sters its value, its name, and the reference to the RFC where the primitive is d | |||
t="sec:transactions"/>).</t> | efined. The following table contains the initial values of this subregistry.</t> | |||
<t><list style="hanging"> | <table anchor="tab_iana-primitives" align="center" pn="table-8"> | |||
<t>The rate at which the floor control server sends FloorStatus mess | <name slugifiedName="name-initial-values-of-the-bfcp-p">Initial values | |||
ages is a matter of local policy. A floor control server may choose to send a ne | of the BFCP Primitives subregistry</name> | |||
w FloorStatus message every time a new floor request arrives, while another may | <thead> | |||
choose to only send a new FloorStatus message when a new floor request is Grante | <tr> | |||
d.</t> | <th align="center" colspan="1" rowspan="1">Value</th> | |||
</list></t> | <th align="left" colspan="1" rowspan="1">Primitive</th> | |||
<t>When communicating over an unreliable transport and a FloorStatusAck | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
message is not received within the transaction failure window, the floor control | </tr> | |||
server MUST retransmit the FloorStatus message according to <xref target="udp_t | </thead> | |||
ransport"/>.</t> | <tbody> | |||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">1</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorRequest</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">2</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorRelease</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">3</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorRequestQuery</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">4</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorRequestStatus</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">5</td> | ||||
<td align="left" colspan="1" rowspan="1">UserQuery</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">6</td> | ||||
<td align="left" colspan="1" rowspan="1">UserStatus</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">7</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorQuery</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">8</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorStatus</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">9</td> | ||||
<td align="left" colspan="1" rowspan="1">ChairAction</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">10</td> | ||||
<td align="left" colspan="1" rowspan="1">ChairActionAck</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">11</td> | ||||
<td align="left" colspan="1" rowspan="1">Hello</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">12</td> | ||||
<td align="left" colspan="1" rowspan="1">HelloAck</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">13</td> | ||||
<td align="left" colspan="1" rowspan="1">Error</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">14</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorRequestStatusAck</td | ||||
> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">15</td> | ||||
<td align="left" colspan="1" rowspan="1">FloorStatusAck</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">16</td> | ||||
<td align="left" colspan="1" rowspan="1">Goodbye</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">17</td> | ||||
<td align="left" colspan="1" rowspan="1">GoodbyeAck</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section numbered="true" toc="include" removeInRFC="false" pn="section-15. | ||||
3"> | ||||
<name slugifiedName="name-request-statuses-subregistr">Request Statuses | ||||
Subregistry</name> | ||||
<t indent="0" pn="section-15.3-1">This section establishes the "Request | ||||
Statuses" subregistry under the | ||||
BFCP Parameters registry. As per the terminology in RFC 8126 <xref target | ||||
="RFC8126" format="default" sectionFormat="of" derivedContent="6"/>, the registr | ||||
ation policy for BFCP | ||||
request statuses is "Specification Required". For the purposes of | ||||
this subregistry, the BFCP request statuses for which IANA registration | ||||
is requested <bcp14>MUST</bcp14> be defined by a Standards Track | ||||
RFC. Such an RFC <bcp14>MUST</bcp14> specify the value and the | ||||
semantics of the request status.</t> | ||||
<t indent="0" pn="section-15.3-2">For each BFCP request status, the IANA | ||||
registers its value, its meaning, and the reference to the RFC where the reques | ||||
t status is defined. The following table contains the initial values of this sub | ||||
registry.</t> | ||||
<table anchor="tab_iana-requeststatusvalues" align="center" pn="table-9" | ||||
> | ||||
<name slugifiedName="name-initial-values-of-the-reque">Initial values | ||||
of the Request Statuses subregistry</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="center" colspan="1" rowspan="1">Value</th> | ||||
<th align="left" colspan="1" rowspan="1">Status</th> | ||||
<th align="left" colspan="1" rowspan="1">Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">1</td> | ||||
<td align="left" colspan="1" rowspan="1">Pending</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">2</td> | ||||
<td align="left" colspan="1" rowspan="1">Accepted</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">3</td> | ||||
<td align="left" colspan="1" rowspan="1">Granted</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">4</td> | ||||
<td align="left" colspan="1" rowspan="1">Denied</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">5</td> | ||||
<td align="left" colspan="1" rowspan="1">Cancelled</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">6</td> | ||||
<td align="left" colspan="1" rowspan="1">Released</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">7</td> | ||||
<td align="left" colspan="1" rowspan="1">Revoked</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="sec_iana_errorcode" numbered="true" toc="include" removeI | ||||
nRFC="false" pn="section-15.4"> | ||||
<name slugifiedName="name-error-codes-subregistry">Error Codes Subregist | ||||
ry</name> | ||||
<t indent="0" pn="section-15.4-1">This section establishes the "Error Co | ||||
des" subregistry under the BFCP | ||||
Parameters registry. As per the terminology in RFC 8126 <xref target="RFC | ||||
8126" format="default" sectionFormat="of" derivedContent="6"/>, the registration | ||||
policy for BFCP | ||||
error codes is "Specification Required". For the purposes of | ||||
this subregistry, the BFCP error codes for which IANA registration is | ||||
requested <bcp14>MUST</bcp14> be defined by a Standards Track | ||||
RFC. Such an RFC <bcp14>MUST</bcp14> specify the value and the | ||||
semantics of the error code, and any Error Specific Details that apply | ||||
to it.</t> | ||||
<t indent="0" pn="section-15.4-2">For each BFCP primitive, the IANA regi | ||||
sters its value, its meaning, and the reference to the RFC where the primitive i | ||||
s defined. The following table contains the initial values of this subregistry.< | ||||
/t> | ||||
<table anchor="tab_iana-errorcode" align="center" pn="table-10"> | ||||
<name slugifiedName="name-initial-values-of-the-error">Initial values | ||||
of the Error Codes subregistry</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="center" colspan="1" rowspan="1">Value</th> | ||||
<th align="left" colspan="1" rowspan="1">Meaning</th> | ||||
<th align="left" colspan="1" rowspan="1">Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">1</td> | ||||
<td align="left" colspan="1" rowspan="1">Conference Does Not Exist | ||||
</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">2</td> | ||||
<td align="left" colspan="1" rowspan="1">User Does Not Exist</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">3</td> | ||||
<td align="left" colspan="1" rowspan="1">Unknown Primitive</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">4</td> | ||||
<td align="left" colspan="1" rowspan="1">Unknown Mandatory Attribu | ||||
te</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">5</td> | ||||
<td align="left" colspan="1" rowspan="1">Unauthorized Operation</t | ||||
d> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">6</td> | ||||
<td align="left" colspan="1" rowspan="1">Invalid Floor ID</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">7</td> | ||||
<td align="left" colspan="1" rowspan="1">Floor Request ID Does Not | ||||
Exist</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">8</td> | ||||
<td align="left" colspan="1" rowspan="1">You have Already Reached | ||||
the Maximum Number | ||||
of Ongoing Floor Requests for This Floor</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">9</td> | ||||
<td align="left" colspan="1" rowspan="1">Use TLS</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">10</td> | ||||
<td align="left" colspan="1" rowspan="1">Unable to Parse Message</ | ||||
td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">11</td> | ||||
<td align="left" colspan="1" rowspan="1">Use DTLS</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">12</td> | ||||
<td align="left" colspan="1" rowspan="1">Unsupported Version</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">13</td> | ||||
<td align="left" colspan="1" rowspan="1">Incorrect Message Length< | ||||
/td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="center" colspan="1" rowspan="1">14</td> | ||||
<td align="left" colspan="1" rowspan="1">Generic Error</td> | ||||
<td align="left" colspan="1" rowspan="1">RFC 8855</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sec_changes" numbered="true" toc="include" removeInRFC="fal | ||||
<section title="Reception of a ChairAction Message" anchor="sec:server:chair | se" pn="section-16"> | |||
action"> | <name slugifiedName="name-changes-from-rfc-4582">Changes from RFC 4582</na | |||
<t>On reception of a ChairAction message, the floor control server follows | me> | |||
the rules in <xref target="sec:auth"/> that relate to client authentication and | <t indent="0" pn="section-16-1">The following is the list of technical cha | |||
authorization. If while processing the ChairAction message, the floor control s | nges and other non-trivial fixes from <xref target="RFC4582" format="default" se | |||
erver encounters an error, it MUST generate an Error response following the proc | ctionFormat="of" derivedContent="3"/>.</t> | |||
edures described in <xref target="sec:server:error"/>.</t> | <section numbered="true" toc="include" removeInRFC="false" pn="section-16. | |||
<t>The successful processing of a ChairAction message by a floor control s | 1"> | |||
erver involves generating a ChairActionAck message, which SHOULD be generated as | <name slugifiedName="name-extensions-for-an-unreliabl">Extensions for an | |||
soon as possible.</t> | Unreliable Transport</name> | |||
<t>When communicating over an unreliable transport and upon receiving a Ch | <t indent="0" pn="section-16.1-1">The main purpose of this work was to r | |||
airAction from a chair, the floor control server MUST respond with a ChairAction | evise the specification to support BFCP over an unreliable transport, resulting | |||
Ack message within the transaction failure window to complete the transaction.</ | in the following changes:</t> | |||
t> | <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-16 | |||
<t>The floor control server MUST copy the Conference ID, the Transaction I | .1-2"> | |||
D, and the User ID from the ChairAction message into the ChairActionAck message, | <li pn="section-16.1-2.1" derivedCounter="1."> | |||
as described in <xref target="sec:transactions:server"/>.</t> | <t indent="0" pn="section-16.1-2.1.1">Overview of Operation (<xref t | |||
<t>The floor control server needs to take into consideration the operation | arget="sec_overview" format="default" sectionFormat="of" derivedContent="Section | |||
requested in the ChairAction message (e.g., granting a floor) but does not nece | 4"/>):</t> | |||
ssarily need to perform it as requested by the floor chair. The operation that t | <t indent="0" pn="section-16.1-2.1.2"> | |||
he floor control server performs depends on the ChairAction message and on the i | Changed the description of client-initiated and server-initiated tra | |||
nternal state of the floor control server.</t> | nsactions, referring to <xref target="sec_transactions" format="default" section | |||
<t>For example, a floor chair may send a ChairAction message granting a fl | Format="of" derivedContent="Section 8"/>.</t> | |||
oor that was requested as part of an atomic floor request operation that involve | </li> | |||
d several floors. Even if the chair responsible for one of the floors instructs | <li pn="section-16.1-2.2" derivedCounter="2."> | |||
the floor control server to grant the floor, the floor control server will not g | <t indent="0" pn="section-16.1-2.2.1">COMMON-HEADER Format (<xref ta | |||
rant it until the chairs responsible for the other floors agree to grant them as | rget="sec_format_common" format="default" sectionFormat="of" derivedContent="Sec | |||
well.</t> | tion 5.1"/>):</t> | |||
<t>So, the floor control server is ultimately responsible for keeping a co | <t indent="0" pn="section-16.1-2.2.2"> | |||
herent floor state using instructions from floor chairs as input to this state.< | Ver(sion) field, where the value 2 is used for the extensions for an | |||
/t> | unreliable transport. Added new R and F flag bits for an unreliable transport. | |||
<t>If the new Status in the ChairAction message is Accepted and all the bi | Res(erved) field is now 3 bit. New optional Fragment Offset and Fragment Length | |||
ts of the Queue Position field are zero, the floor chair is requesting that the | fields.</t> | |||
floor control server assign a queue position (e.g., the last in the queue) to th | </li> | |||
e floor request based on the local policy of the floor control server. (Of cours | <li pn="section-16.1-2.3" derivedCounter="3."> | |||
e, such a request only applies if the floor control server implements a queue.)< | <t indent="0" pn="section-16.1-2.3.1">New primitives (<xref target=" | |||
/t> | sec_format_common" format="default" sectionFormat="of" derivedContent="Section 5 | |||
</section> | .1"/>):</t> | |||
<t indent="0" pn="section-16.1-2.3.2"> | ||||
<section title="Reception of a Hello Message" anchor="sec:server:helloack"> | ||||
<t>On reception of a Hello message, the floor control server follows the r | ||||
ules in <xref target="sec:auth"/> that relate to client authentication. If while | ||||
processing the Hello message, the floor control server encounters an error, it | ||||
MUST generate an Error response following the procedures described in <xref targ | ||||
et="sec:server:error"/>.</t> | ||||
<t>If the version of BFCP specified in the Version field of the COMMON-HEA | ||||
DER is supported by the floor control server, it MUST respond with the same vers | ||||
ion number in the HelloAck; this defines the version for all subsequent BFCP mes | ||||
sages within this BFCP Connection.</t> | ||||
<t>When communicating over an unreliable transport and upon receiving a He | ||||
llo from a participant, the floor control server MUST respond with a HelloAck me | ||||
ssage within the transaction failure window to complete the transaction.</t> | ||||
<t>The successful processing of a Hello message by a floor control server | ||||
involves generating a HelloAck message, which SHOULD be generated as soon as pos | ||||
sible. The floor control server MUST copy the Conference ID, the Transaction ID, | ||||
and the User ID from the Hello into the HelloAck, as described in <xref target= | ||||
"sec:transactions:server"/>.</t> | ||||
<t>The floor control server MUST add a SUPPORTED-PRIMITIVES attribute to t | ||||
he HelloAck message listing all the primitives (i.e., BFCP messages) supported b | ||||
y the floor control server.</t> | ||||
<t>The floor control server MUST add a SUPPORTED-ATTRIBUTES attribute to t | ||||
he HelloAck message listing all the attributes supported by the floor control se | ||||
rver.</t> | ||||
</section> | ||||
<section title="Error Message Generation" anchor="sec:server:error"> | ||||
<t>Error messages are always sent in response to a previous message from t | ||||
he client as part of a client-initiated transaction. The ABNF in <xref target="s | ||||
ec:msg_format:Error"/> describes the attributes that an Error message can contai | ||||
n. In addition, the ABNF specifies normatively which of these attributes are man | ||||
datory and which ones are optional.</t> | ||||
<t>The floor control server MUST copy the Conference ID, the Transaction I | ||||
D, and the User ID from the message from the client into the Error message, as d | ||||
escribed in <xref target="sec:transactions:server"/>.</t> | ||||
<t>The floor control server MUST add an ERROR-CODE attribute to the Error | ||||
message. The ERROR-CODE attribute contains an Error Code from <xref target="tab: | ||||
errorcode"/>. Additionally, the floor control server may add an ERROR-INFO attri | ||||
bute with extra information about the error.</t> | ||||
</section> | ||||
</section> | ||||
<section title="Security Considerations" anchor="sec:security"> | ||||
<t>BFCP uses TLS/DTLS to provide mutual authentication between clients and s | ||||
ervers. TLS/DTLS also provides replay and integrity protection and confidentiali | ||||
ty. It is RECOMMENDED that TLS/DTLS with an encryption algorithm according to < | ||||
xref target="sec:lower-security"/> always be used. In cases where signaling/con | ||||
trol traffic is properly protected, as described in <xref target="sec:auth"/> it | ||||
is REQUIRED to use a mandated encryption algorithm. BFCP entities MAY use othe | ||||
r security mechanisms to interwork with legacy implementation that do not use TL | ||||
S/DTLS as long as these mechanisms provide similar security properties. An exam | ||||
ple of other mechanisms is IPSec <xref target="RFC4301"/> to effectively secure | ||||
a non-secure BFCP connection.</t> | ||||
<t>The remainder of this section analyzes some of the threats against BFCP a | ||||
nd how they are addressed.</t> | ||||
<t>An attacker may attempt to impersonate a client (a floor participant or a | ||||
floor chair) in order to generate forged floor requests or to grant or deny exi | ||||
sting floor requests. Client impersonation is avoided by having servers only acc | ||||
ept BFCP messages over authenticated TLS/DTLS connections. The floor control ser | ||||
ver assumes that attackers cannot hijack the TLS/DTLS connection and, therefore, | ||||
that messages over the TLS/DTLS connection come from the client that was initia | ||||
lly authenticated.</t> | ||||
<t>An attacker may attempt to impersonate a floor control server. A successf | ||||
ul attacker would be able to make clients think that they hold a particular floo | ||||
r so that they would try to access a resource (e.g., sending media) without havi | ||||
ng legitimate rights to access it. Floor control server impersonation is avoided | ||||
by having servers only accept BFCP messages over authenticated TLS/DTLS connect | ||||
ions, as well as ensuring clients only send and accept messages over authenticat | ||||
ed TLS/DTLS connections.</t> | ||||
<t>Attackers may attempt to modify messages exchanged by a client and a floo | ||||
r control server. The integrity protection provided by TLS/DTLS connections prev | ||||
ents this attack.</t> | ||||
<t>An attacker may attempt to fetch a valid message sent by a client to a fl | ||||
oor control server and replay it over a connection between the attacker and the | ||||
floor control server. This attack is prevented by having floor control servers c | ||||
heck that messages arriving over a given authenticated TLS/DTLS connection use a | ||||
n authorized user ID (i.e., a user ID that the user that established the authent | ||||
icated TLS/DTLS connection is allowed to use).</t> | ||||
<t>Attackers may attempt to pick messages from the network to get access to | ||||
confidential information between the floor control server and a client (e.g., wh | ||||
y a floor request was denied). TLS/DTLS confidentiality prevents this attack. Th | ||||
erefore, it is REQUIRED that TLS/DTLS be used with an encryption algorithm accor | ||||
ding to <xref target="sec:lower-security"/>.</t> | ||||
</section> | ||||
<section title="IANA Considerations" anchor="sec:iana"> | ||||
<t><list style="empty"> | ||||
<t>[Note to IANA: Much of this text exists from the previous version of | ||||
this document. While the old and new additions to the registries are presented | ||||
here, the items for which IANA needs to take action with respect to this draft a | ||||
re highlighted with "Note to IANA", as with this note and the one immediately fo | ||||
llowing. Throughout this document, though, RFC XXXX needs to be replaced with t | ||||
his RFC and the IANA registries for BFCP should to refer only to this RFC.]</t> | ||||
</list></t> | ||||
<t><list style="empty"> | ||||
<t>[Note to IANA: This section instructs the IANA to register new entrie | ||||
s in the BFCP Primitive subregistry in <xref target="sec:iana:primitive"/> and f | ||||
or the BFCP Error Code subregistry in <xref target="sec:iana:errorcode"/>.]</t> | ||||
</list></t> | ||||
<t>The IANA has created a registry for BFCP parameters called "Binary Floor | ||||
Control Protocol (BFCP) Parameters". This registry has a number of subregistries | ||||
, which are described in the following sections.</t> | ||||
<section title="Attribute Subregistry"> | ||||
<t>This section establishes the Attribute subregistry under the BFCP Param | ||||
eters registry. As per the terminology in RFC 5226 <xref target="RFC5226"/>, the | ||||
registration policy for BFCP attributes shall be "Specification Required". For | ||||
the purposes of this subregistry, the BFCP attributes for which IANA registratio | ||||
n is requested MUST be defined by a standards-track RFC. Such an RFC MUST specif | ||||
y the attribute's type, name, format, and semantics.</t> | ||||
<t>For each BFCP attribute, the IANA registers its type, its name, and the | ||||
reference to the RFC where the attribute is defined. The following table contai | ||||
ns the initial values of this subregistry.</t> | ||||
<texttable title="Initial values of the BFCP Attribute subregistry" | ||||
anchor="tab:iana-attributes"> | ||||
<ttcol align="center">Type</ttcol> | ||||
<ttcol>Attribute</ttcol> | ||||
<ttcol>Reference</ttcol> | ||||
<c>1</c> <c>BENEFICIARY-ID</c> <c>[RFC XXXX]</c> | ||||
<c>2</c> <c>FLOOR-ID</c> <c>[RFC XXXX]</c> | ||||
<c>3</c> <c>FLOOR-REQUEST-ID</c> <c>[RFC XXXX]</c> | ||||
<c>4</c> <c>PRIORITY</c> <c>[RFC XXXX]</c> | ||||
<c>5</c> <c>REQUEST-STATUS</c> <c>[RFC XXXX]</c> | ||||
<c>6</c> <c>ERROR-CODE</c> <c>[RFC XXXX]</c> | ||||
<c>7</c> <c>ERROR-INFO</c> <c>[RFC XXXX]</c> | ||||
<c>8</c> <c>PARTICIPANT-PROVIDED-INFO</c> <c>[RFC XXXX]</c> | ||||
<c>9</c> <c>STATUS-INFO</c> <c>[RFC XXXX]</c> | ||||
<c>10</c> <c>SUPPORTED-ATTRIBUTES</c> <c>[RFC XXXX]</c> | ||||
<c>11</c> <c>SUPPORTED-PRIMITIVES</c> <c>[RFC XXXX]</c> | ||||
<c>12</c> <c>USER-DISPLAY-NAME</c> <c>[RFC XXXX]</c> | ||||
<c>13</c> <c>USER-URI</c> <c>[RFC XXXX]</c> | ||||
<c>14</c> <c>BENEFICIARY-INFORMATION</c> <c>[RFC XXXX]</c> | ||||
<c>15</c> <c>FLOOR-REQUEST-INFORMATION</c> <c>[RFC XXXX]</c> | ||||
<c>16</c> <c>REQUESTED-BY-INFORMATION</c> <c>[RFC XXXX]</c> | ||||
<c>17</c> <c>FLOOR-REQUEST-STATUS</c> <c>[RFC XXXX]</c> | ||||
<c>18</c> <c>OVERALL-REQUEST-STATUS</c> <c>[RFC XXXX]</c> | ||||
</texttable> | ||||
</section> | ||||
<section title="Primitive Subregistry" anchor="sec:iana:primitive"> | ||||
<t><list style="empty"> | ||||
<t>[Note to IANA: This section instructs the IANA to register the foll | ||||
owing new values for the BFCP Primitive subregistry: FloorRequestStatusAck, Floo | ||||
rStatusAck, Goodbye, and GoodbyeAck.]</t> | ||||
</list></t> | ||||
<t>This section establishes the Primitive subregistry under the BFCP Param | ||||
eters registry. As per the terminology in RFC 5226 <xref target="RFC5226"/>, the | ||||
registration policy for BFCP primitives shall be "Specification Required". For | ||||
the purposes of this subregistry, the BFCP primitives for which IANA registratio | ||||
n is requested MUST be defined by a standards-track RFC. Such an RFC MUST specif | ||||
y the primitive's value, name, format, and semantics.</t> | ||||
<t>For each BFCP primitive, the IANA registers its value, its name, and th | ||||
e reference to the RFC where the primitive is defined. The following table conta | ||||
ins the initial values of this subregistry.</t> | ||||
<texttable title="Initial values of the BFCP primitive subregistry" anchor | ||||
="tab:iana-primitives"> | ||||
<ttcol align="center">Value</ttcol> | ||||
<ttcol>Primitive</ttcol> | ||||
<ttcol>Reference</ttcol> | ||||
<c>1</c> <c>FloorRequest</c> <c>[RFC XXXX]</c> | ||||
<c>2</c> <c>FloorRelease</c> <c>[RFC XXXX]</c> | ||||
<c>3</c> <c>FloorRequestQuery</c> <c>[RFC XXXX]</c> | ||||
<c>4</c> <c>FloorRequestStatus</c> <c>[RFC XXXX]</c> | ||||
<c>5</c> <c>UserQuery</c> <c>[RFC XXXX]</c> | ||||
<c>6</c> <c>UserStatus</c> <c>[RFC XXXX]</c> | ||||
<c>7</c> <c>FloorQuery</c> <c>[RFC XXXX]</c> | ||||
<c>8</c> <c>FloorStatus</c> <c>[RFC XXXX]</c> | ||||
<c>9</c> <c>ChairAction</c> <c>[RFC XXXX]</c> | ||||
<c>10</c> <c>ChairActionAck</c> <c>[RFC XXXX]</c> | ||||
<c>11</c> <c>Hello</c> <c>[RFC XXXX]</c> | ||||
<c>12</c> <c>HelloAck</c> <c>[RFC XXXX]</c> | ||||
<c>13</c> <c>Error</c> <c>[RFC XXXX]</c> | ||||
<c>14</c> <c>FloorRequestStatusAck</c> <c>[RFC XXXX]</c> | ||||
<c>15</c> <c>FloorStatusAck</c> <c>[RFC XXXX]</c> | ||||
<c>16</c> <c>Goodbye</c> <c>[RFC XXXX]</c> | ||||
<c>17</c> <c>GoodbyeAck</c> <c>[RFC XXXX]</c> | ||||
</texttable> | ||||
</section> | ||||
<section title="Request Status Subregistry"> | ||||
<t>This section establishes the Request Status subregistry under the BFCP | ||||
Parameters registry. As per the terminology in RFC 5226 <xref target="RFC5226"/> | ||||
, the registration policy for BFCP request status shall be "Specification Requir | ||||
ed". For the purposes of this subregistry, the BFCP request status for which IAN | ||||
A registration is requested MUST be defined by a standards-track RFC. Such an RF | ||||
C MUST specify the value and the semantics of the request status.</t> | ||||
<t>For each BFCP request status, the IANA registers its value, its meaning | ||||
, and the reference to the RFC where the request status is defined. The followin | ||||
g table contains the initial values of this subregistry.</t> | ||||
<texttable title="Initial values of the Request Status subregistry" anchor | ||||
="tab:iana-requeststatusvalues"> | ||||
<ttcol align="center">Value</ttcol> | ||||
<ttcol>Status</ttcol> | ||||
<ttcol>Reference</ttcol> | ||||
<c>1</c> <c>Pending</c> <c>[RFC XXXX]</c> | ||||
<c>2</c> <c>Accepted</c> <c>[RFC XXXX]</c> | ||||
<c>3</c> <c>Granted</c> <c>[RFC XXXX]</c> | ||||
<c>4</c> <c>Denied</c> <c>[RFC XXXX]</c> | ||||
<c>5</c> <c>Cancelled</c> <c>[RFC XXXX]</c> | ||||
<c>6</c> <c>Released</c> <c>[RFC XXXX]</c> | ||||
<c>7</c> <c>Revoked</c> <c>[RFC XXXX]</c> | ||||
</texttable> | ||||
</section> | ||||
<section title="Error Code Subregistry" anchor="sec:iana:errorcode"> | ||||
<t><list style="empty"> | ||||
<t>[Note to IANA: This section instructs the IANA to register the foll | ||||
owing new values for the BFCP Error Code subregistry: 10, 11, 12, 13 and 14.]</t | ||||
> | ||||
</list></t> | ||||
<t>This section establishes the Error Code subregistry under the BFCP Para | ||||
meters registry. As per the terminology in RFC 5226 <xref target="RFC5226"/>, th | ||||
e registration policy for BFCP error codes shall be "Specification Required". Fo | ||||
r the purposes of this subregistry, the BFCP error codes for which IANA registra | ||||
tion is requested MUST be defined by a standards-track RFC. Such an RFC MUST spe | ||||
cify the value and the semantics of the error code, and any Error Specific Detai | ||||
ls that apply to it.</t> | ||||
<t>For each BFCP primitive, the IANA registers its value, its meaning, and | ||||
the reference to the RFC where the primitive is defined. The following table co | ||||
ntains the initial values of this subregistry.</t> | ||||
<texttable title="Initial Values of the Error Code subregistry" anchor="ta | ||||
b:iana-errorcode"> | ||||
<ttcol align="center">Value</ttcol> | ||||
<ttcol>Meaning</ttcol> | ||||
<ttcol>Reference</ttcol> | ||||
<c>1</c> <c>Conference does not Exist</c> <c>[RFC XXXX]</c> | ||||
<c>2</c> <c>User does not Exist</c> <c>[RFC XXXX]</c> | ||||
<c>3</c> <c>Unknown Primitive</c> <c>[RFC XXXX]</c> | ||||
<c>4</c> <c>Unknown Mandatory Attribute</c> <c>[RFC XXXX]</c> | ||||
<c>5</c> <c>Unauthorized Operation</c> <c>[RFC XXXX]</c> | ||||
<c>6</c> <c>Invalid Floor ID</c> <c>[RFC XXXX]</c> | ||||
<c>7</c> <c>Floor Request ID Does Not Exist</c> <c>[RFC XXXX]</c> | ||||
<c>8</c> <c>You have Already Reached the Maximum</c> <c>[RFC XXXX]</c> | ||||
<c></c> <c> Number of Ongoing Floor Requests for</c> <c></c> | ||||
<c></c> <c> this Floor</c> <c></c> | ||||
<c>9</c> <c>Use TLS</c> <c>[RFC XXXX]</c> | ||||
<c>10</c> <c>Unable to parse message</c> <c>[RFC XXXX]</c> | ||||
<c>11</c> <c>Use DTLS</c> <c>[RFC XXXX]</c> | ||||
<c>12</c> <c>Unsupported Version</c> <c>[RFC XXXX]</c> | ||||
<c>13</c> <c>Incorrect Message Length</c> <c>[RFC XXXX]</c> | ||||
<c>14</c> <c>Generic Error</c> <c>[RFC XXXX]</c> | ||||
</texttable> | ||||
</section> | ||||
</section> | ||||
<section title="Changes from RFC 4582" anchor="sec:changes"> | ||||
<t>Following is the list of technical changes and other non-trivial fixes fr | ||||
om <xref target="RFC4582"/>.</t> | ||||
<section title="Extensions for an unreliable transport"> | ||||
<t>Main purpose of this work was to revise the specification to support BF | ||||
CP over an unreliable transport, resulting in the following changes:</t> | ||||
<t><list style="numbers"> | ||||
<t>Overview of Operation (<xref target="sec:overview"/>):<vspace/> | ||||
Changed the description of client-initiated and server-initiated tra | ||||
nsactions, referring to <xref target="sec:transactions"/>.</t> | ||||
<t>COMMON-HEADER Format (<xref target="sec:format:common"/>):<vspace/> | ||||
Ver(sion) field, where the value 2 is used for the extensions for an | ||||
unreliable transport. Added new R and F flag-bits for an unreliable transport. | ||||
Res(erved) field is now 3 bit. New optional Fragment Offset and Fragment Length | ||||
fields.</t> | ||||
<t>New primitives (<xref target="sec:format:common"/>):<vspace/> | ||||
Added four new primitives: FloorRequestStatusAck, FloorStatusAck, Go odbye, and GoodbyeAck.</t> | Added four new primitives: FloorRequestStatusAck, FloorStatusAck, Go odbye, and GoodbyeAck.</t> | |||
<t>New error codes (<xref target="sec:format:attributes:error-code"/>) | </li> | |||
:<vspace/> | <li pn="section-16.1-2.4" derivedCounter="4."> | |||
Added three new error codes: "Unable to Parse Message", "Use DTLS" a | <t indent="0" pn="section-16.1-2.4.1">New error codes (<xref target= | |||
nd "Unsupported Version". Note that two additional error codes were added, see < | "sec_format_attributes_error-code" format="default" sectionFormat="of" derivedCo | |||
xref target="sec:changes:other"/>.</t> | ntent="Section 5.2.6"/>):</t> | |||
<t>ABNF for new primitives (<xref target="sec:msg_format"/>):<vspace/> | <t indent="0" pn="section-16.1-2.4.2"> | |||
New subsections with normative ABNF for the new primitives.</t> | Added three new error codes: "Unable to Parse Message", "Use DTLS" a | |||
<t>Transport split in two (<xref target="sec:transport"/>):<vspace/> | nd "Unsupported Version". Note that two additional error codes were added, see < | |||
<xref target="sec:transport"/> specifying the transport was split in | xref target="sec_changes_other" format="default" sectionFormat="of" derivedConte | |||
two subsections; <xref target="tcp_transport"/> for a reliable transport and <x | nt="Section 16.2"/>.</t> | |||
ref target="udp_transport"/> for an unreliable transport. Where the specificatio | </li> | |||
n for an unreliable transport amongst other issues deals with reliability, conge | <li pn="section-16.1-2.5" derivedCounter="5."> | |||
stion control, fragmentation and ICMP.</t> | <t indent="0" pn="section-16.1-2.5.1">ABNF for new primitives (<xref | |||
<t>Mandate DTLS (<xref target="sec:lower-security"/> and <xref target= | target="sec_msg_format" format="default" sectionFormat="of" derivedContent="Sec | |||
"sec:auth"/>):<vspace/> | tion 5.3"/>):</t> | |||
Mandate DTLS support when transport over UDP is used.</t> | <t indent="0" pn="section-16.1-2.5.2"> | |||
<t>Transaction changes (<xref target="sec:transactions"/>):<vspace/> | Added new subsections with normative ABNF for the new primitives.</t | |||
Server-initiated transactions over an unreliable transport has non-z | > | |||
ero and unique Transaction ID. Over an unreliable transport, the retransmit time | </li> | |||
rs T1 and T2 described in <xref target="timers"/> apply.</t> | <li pn="section-16.1-2.6" derivedCounter="6."> | |||
<t>Requiring timely response (<xref target="timers"/>, <xref target="s | <t indent="0" pn="section-16.1-2.6.1">Transport split in two (<xref | |||
ec:client:request:response"/>, <xref target="sec:participant:cancel:response"/>, | target="sec_transport" format="default" sectionFormat="of" derivedContent="Secti | |||
<xref target="sec:chair:instruct:response"/>, <xref target="sec:client:floorinf | on 6"/>):</t> | |||
o:response"/>, <xref target="sec:client:info:response"/>, <xref target="sec:clie | <t indent="0" pn="section-16.1-2.6.2"><xref target="sec_transport" f | |||
nt:user:response"/>, <xref target="sec:client:hello:responses"/>, <xref target=" | ormat="default" sectionFormat="of" derivedContent="Section 6"/> specifying the t | |||
sec:recept:frsm"/> and <xref target="sec:recept:fsm"/>):<vspace/> | ransport was split in two subsections; <xref target="tcp_transport" format="defa | |||
Describing that a given response must be sent within the transaction | ult" sectionFormat="of" derivedContent="Section 6.1"/> for a reliable transport | |||
failure window to complete the transaction.</t> | and <xref target="udp_transport" format="default" sectionFormat="of" derivedCont | |||
<t>Updated IANA Considerations (<xref target="sec:iana"/>):<vspace/> | ent="Section 6.2"/> for an unreliable transport. The specification for an unreli | |||
Added the new primitives and error codes to <xref target="sec:iana:p | able transport, among other issues, deals with reliability, congestion control, | |||
rimitive"/> and <xref target="sec:iana:errorcode"/> respectively.</t> | fragmentation and ICMP.</t> | |||
<t>Examples over an unreliable transport (<xref target="app:unrelcallf | </li> | |||
low"/>):<vspace/> | <li pn="section-16.1-2.7" derivedCounter="7."> | |||
Added sample interactions over an unreliable transport for the scena | <t indent="0" pn="section-16.1-2.7.1">Mandated DTLS (<xref target="s | |||
rios in <xref target="fig:flow1"/> and <xref target="fig:flow2"/> </t> | ec_lower-security" format="default" sectionFormat="of" derivedContent="Section 7 | |||
<t>Motivation for an unreliable transport (<xref target="app:motivatio | "/> and <xref target="sec_auth" format="default" sectionFormat="of" derivedConte | |||
n"/>):<vspace/> | nt="Section 9"/>):</t> | |||
Introduction to and motivation for extending BFCP to support an unre | <t indent="0" pn="section-16.1-2.7.2"> | |||
liable transport.</t> | Mandated DTLS support when transport over UDP is used.</t> | |||
</list></t> | </li> | |||
</section> | <li pn="section-16.1-2.8" derivedCounter="8."> | |||
<section title="Other changes" anchor="sec:changes:other"> | <t indent="0" pn="section-16.1-2.8.1">Transaction changes (<xref tar | |||
<t>Clarifications and bug fixes:</t> | get="sec_transactions" format="default" sectionFormat="of" derivedContent="Secti | |||
<t><list style="numbers"> | on 8"/>):</t> | |||
<t>ABNF fixes (<xref target="fig:ben-information"/>, <xref target="fig | <t indent="0" pn="section-16.1-2.8.2"> | |||
:floor-request-information"/>, ="fig:reqby-information"/>, <xref target="fig:flo | Server-initiated transactions over an unreliable transport have non- | |||
or-req-status"/>, <xref target="fig:overall-req-status"/>, and the ABNF figures | zero and unique Transaction IDs. Over an unreliable transport, the retransmit ti | |||
in <xref target="sec:msg_format"/>):<vspace/> | mers T1 and T2 described in <xref target="timers" format="default" sectionFormat | |||
Although formally correct in <xref target="RFC4582"/>, the notation h | ="of" derivedContent="Section 8.3"/> apply.</t> | |||
as changed in a number of Figures to an equivalent form for clarity, e.g., s/*1( | </li> | |||
FLOOR-ID)/[FLOOR-ID]/ in <xref target="fig:floorstatus"/> and s/*[XXX]/*(XXX)/ i | <li pn="section-16.1-2.9" derivedCounter="9."> | |||
n the other figures.</t> | <t indent="0" pn="section-16.1-2.9.1">Timely response required (<xre | |||
<t>Typo (<xref target="sec:client:hello:responses"/>):<vspace/> | f target="timers" format="default" sectionFormat="of" derivedContent="Section 8. | |||
Change from SUPPORTED-PRIMITVIES to SUPPORTED-PRIMITIVES in the second | 3"/>, <xref target="sec_client_request_response" format="default" sectionFormat= | |||
paragraph.</t> | "of" derivedContent="Section 10.1.2"/>, <xref target="sec_participant_cancel_res | |||
<t>Corrected attribute type (<xref target="sec:server:request:first"/>): | ponse" format="default" sectionFormat="of" derivedContent="Section 10.2.2"/>, <x | |||
<vspace/> | ref target="sec_chair_instruct_response" format="default" sectionFormat="of" der | |||
Change from PARTICIPANT-PROVIDED-INFO to PRIORITY attributed in the ei | ivedContent="Section 11.2"/>, <xref target="sec_client_floorinfo_response" forma | |||
ghth paragraph, since the note below describes priority and that the last paragr | t="default" sectionFormat="of" derivedContent="Section 12.1.2"/>, <xref target=" | |||
aph deals with PARTICIPANT-PROVIDED-INFO.</t> | sec_client_info_response" format="default" sectionFormat="of" derivedContent="Se | |||
<t>New error codes (<xref target="sec:format:attributes:error-code"/>):< | ction 12.2.2"/>, <xref target="sec_client_user_response" format="default" sectio | |||
vspace/> | nFormat="of" derivedContent="Section 12.3.2"/>, <xref target="sec_client_hello_r | |||
esponses" format="default" sectionFormat="of" derivedContent="Section 12.4.2"/>, | ||||
<xref target="sec_recept_frsm" format="default" sectionFormat="of" derivedConte | ||||
nt="Section 10.1.3"/> and <xref target="sec_recept_fsm" format="default" section | ||||
Format="of" derivedContent="Section 12.1.3"/>):</t> | ||||
<t indent="0" pn="section-16.1-2.9.2"> | ||||
Described that a given response must be sent within the transaction | ||||
failure window to complete the transaction.</t> | ||||
</li> | ||||
<li pn="section-16.1-2.10" derivedCounter="10."> | ||||
<t indent="0" pn="section-16.1-2.10.1">Updated IANA Considerations ( | ||||
<xref target="sec_iana" format="default" sectionFormat="of" derivedContent="Sect | ||||
ion 15"/>):</t> | ||||
<t indent="0" pn="section-16.1-2.10.2"> | ||||
Added the new primitives and error codes to <xref target="sec_iana_p | ||||
rimitive" format="default" sectionFormat="of" derivedContent="Section 15.2"/> an | ||||
d <xref target="sec_iana_errorcode" format="default" sectionFormat="of" derivedC | ||||
ontent="Section 15.4"/> respectively.</t> | ||||
</li> | ||||
<li pn="section-16.1-2.11" derivedCounter="11."> | ||||
<t indent="0" pn="section-16.1-2.11.1">Examples over an unreliable t | ||||
ransport (<xref target="app_unrelcallflow" format="default" sectionFormat="of" d | ||||
erivedContent="Appendix A"/>):</t> | ||||
<t indent="0" pn="section-16.1-2.11.2"> | ||||
Added sample interactions over an unreliable transport for the scena | ||||
rios in <xref target="fig_flow1" format="default" sectionFormat="of" derivedCont | ||||
ent="Figure 2"/> and <xref target="fig_flow2" format="default" sectionFormat="of | ||||
" derivedContent="Figure 3"/> </t> | ||||
</li> | ||||
<li pn="section-16.1-2.12" derivedCounter="12."> | ||||
<t indent="0" pn="section-16.1-2.12.1">Motivation for an unreliable | ||||
transport (<xref target="app_motivation" format="default" sectionFormat="of" der | ||||
ivedContent="Appendix B"/>):</t> | ||||
<t indent="0" pn="section-16.1-2.12.2"> | ||||
Added introduction to and motivation for extending BFCP to support a | ||||
n unreliable transport.</t> | ||||
</li> | ||||
</ol> | ||||
</section> | ||||
<section anchor="sec_changes_other" numbered="true" toc="include" removeIn | ||||
RFC="false" pn="section-16.2"> | ||||
<name slugifiedName="name-other-changes">Other Changes</name> | ||||
<t indent="0" pn="section-16.2-1">Clarifications and bug fixes:</t> | ||||
<ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-16 | ||||
.2-2"> | ||||
<li pn="section-16.2-2.1" derivedCounter="1."> | ||||
<t indent="0" pn="section-16.2-2.1.1">ABNF fixes (<xref target="fig_ | ||||
ben-information" format="default" sectionFormat="of" derivedContent="Figure 22"/ | ||||
>, <xref target="fig_floor-request-information" format="default" sectionFormat=" | ||||
of" derivedContent="Figure 24"/>, <xref target="fig_reqby-information" format="d | ||||
efault" sectionFormat="of" derivedContent="Figure 26"/>, <xref target="fig_floor | ||||
-req-status" format="default" sectionFormat="of" derivedContent="Figure 28"/>, < | ||||
xref target="fig_overall-req-status" format="default" sectionFormat="of" derived | ||||
Content="Figure 30"/>, and the ABNF figures in <xref target="sec_msg_format" for | ||||
mat="default" sectionFormat="of" derivedContent="Section 5.3"/>):</t> | ||||
<t indent="0" pn="section-16.2-2.1.2"> | ||||
Although formally correct in <xref target="RFC4582" format="default" | ||||
sectionFormat="of" derivedContent="3"/>, the notation has changed in a number of | ||||
figures to an equivalent form for clarity, e.g., <tt>s/*1(FLOOR-ID)/[FLOOR-ID]/ | ||||
</tt> in <xref target="fig_floorstatus" format="default" sectionFormat="of" deri | ||||
vedContent="Figure 38"/> and <tt>s/*[XXX]/*(XXX)/</tt> in the other figures.</t> | ||||
</li> | ||||
<li pn="section-16.2-2.2" derivedCounter="2."> | ||||
<t indent="0" pn="section-16.2-2.2.1">Typo (<xref target="sec_client | ||||
_hello_responses" format="default" sectionFormat="of" derivedContent="Section 12 | ||||
.4.2"/>):</t> | ||||
<t indent="0" pn="section-16.2-2.2.2"> | ||||
Changed from SUPPORTED-PRIMITVIES to SUPPORTED-PRIMITIVES in the secon | ||||
d paragraph.</t> | ||||
</li> | ||||
<li pn="section-16.2-2.3" derivedCounter="3."> | ||||
<t indent="0" pn="section-16.2-2.3.1">Corrected attribute type (<xre | ||||
f target="sec_server_request_first" format="default" sectionFormat="of" derivedC | ||||
ontent="Section 13.1.1"/>):</t> | ||||
<t indent="0" pn="section-16.2-2.3.2"> | ||||
Changed from PARTICIPANT-PROVIDED-INFO to PRIORITY attribute in the ei | ||||
ghth paragraph, since the note below describes priority and that the last paragr | ||||
aph deals with PARTICIPANT-PROVIDED-INFO.</t> | ||||
</li> | ||||
<li pn="section-16.2-2.4" derivedCounter="4."> | ||||
<t indent="0" pn="section-16.2-2.4.1">New error codes (<xref target= | ||||
"sec_format_attributes_error-code" format="default" sectionFormat="of" derivedCo | ||||
ntent="Section 5.2.6"/>):</t> | ||||
<t indent="0" pn="section-16.2-2.4.2"> | ||||
Added two additional error codes: "Incorrect Message Length" and "Gene ric Error".</t> | Added two additional error codes: "Incorrect Message Length" and "Gene ric Error".</t> | |||
<t>Assorted clarifications (Across the document):<vspace/> | </li> | |||
Language clarifications as a result of reviews. Also, the normative la | <li pn="section-16.2-2.5" derivedCounter="5."> | |||
nguage where tightened where appropriate, i.e. changed from SHOULD strength to M | <t indent="0" pn="section-16.2-2.5.1">New cipher suites (<xref targe | |||
UST in a number of places.</t> | t="sec_lower-security" format="default" sectionFormat="of" derivedContent="Secti | |||
</list></t> | on 7"/>)</t> | |||
<t indent="0" pn="section-16.2-2.5.2">Additional cipher suites are n | ||||
ow specified which should be supported.</t> | ||||
</li> | ||||
<li pn="section-16.2-2.6" derivedCounter="6."> | ||||
<t indent="0" pn="section-16.2-2.6.1">Assorted clarifications (Acros | ||||
s the document):</t> | ||||
<t indent="0" pn="section-16.2-2.6.2"> | ||||
Language clarifications as a result of reviews. Also, the normative la | ||||
nguage was tightened where appropriate, i.e. changed from <bcp14>SHOULD</bcp14> | ||||
strength to <bcp14>MUST</bcp14> in a number of places.</t> | ||||
</li> | ||||
</ol> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </middle> | |||
<back> | ||||
<section title="Acknowledgements" anchor="sec:acks"> | <references pn="section-17"> | |||
<t>The XCON WG chairs, Adam Roach and Alan Johnston, provided useful ideas f | <name slugifiedName="name-references">References</name> | |||
or RFC 4582 <xref target="RFC4582"/>. Additionally, Xiaotao Wu, Paul Kyzivat, Jo | <references pn="section-17.1"> | |||
nathan Rosenberg, Miguel A. Garcia-Martin, Mary Barnes, Ben Campbell, Dave Morga | <name slugifiedName="name-normative-references">Normative References</na | |||
n, and Oscar Novo provided useful comments during the work with RFC 4582. The au | me> | |||
thors also acknowledge contributions to the revision of BFCP for use over an unr | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
eliable transport from Geir Arne Sandbakken who had the initial idea, Alfred E. | 119" quoteTitle="true" derivedAnchor="1"> | |||
Heggestad, Trond G. Andersen, Gonzalo Camarillo, Roni Even, Lorenzo Miniero, Joe | <front> | |||
rg Ott, Eoin McLeod, Mark K. Thompson, Hadriel Kaplan, Dan Wing, Cullen Jennings | <title>Key words for use in RFCs to Indicate Requirement Levels</tit | |||
, David Benham, Nivedita Melinkeri, Woo Johnman, Vijaya Mandava and Alan Ford. I | le> | |||
n the final phase Ernst Horvath did a thorough review revealing issues that need | <author initials="S." surname="Bradner" fullname="S. Bradner"> | |||
ed clarification and changes. Useful and important final reviews were done by Ma | <organization showOnFrontPage="true"/> | |||
ry Barnes. Paul Jones helped tremendously as editor for changes addressing IESG | </author> | |||
review comments.</t> | <date year="1997" month="March"/> | |||
</section> | <abstract> | |||
</middle> | <t indent="0">In many standards track documents several words are | |||
used to signify the requirements in the specification. These words are often ca | ||||
<back> | pitalized. This document defines these words as they should be interpreted in IE | |||
<references title="Normative References"> | TF documents. This document specifies an Internet Best Current Practices for th | |||
<?rfc include="reference.RFC.2119" ?> | e Internet Community, and requests discussion and suggestions for improvements.< | |||
<?rfc include="reference.RFC.2988" ?> | /t> | |||
<?rfc include="reference.RFC.4582" ?> | </abstract> | |||
<?rfc include="reference.RFC.5018" ?> | </front> | |||
<?rfc include="reference.RFC.5234" ?> | <seriesInfo name="BCP" value="14"/> | |||
<?rfc include="reference.RFC.5226" ?> | <seriesInfo name="RFC" value="2119"/> | |||
<?rfc include="reference.RFC.5246" ?> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
<?rfc include="reference.RFC.6347" ?> | </reference> | |||
<?rfc include="reference.RFC.3629" ?> | <reference anchor="RFC6298" target="https://www.rfc-editor.org/info/rfc6 | |||
<?rfc include="reference.I-D.draft-ietf-bfcpbis-rfc4583bis-12" ?> <!-- T | 298" quoteTitle="true" derivedAnchor="2"> | |||
BD increase version! --> | <front> | |||
<?rfc include="reference.RFC.4961" ?> | <title>Computing TCP's Retransmission Timer</title> | |||
<?rfc include="reference.RFC.5389" ?> | <author initials="V." surname="Paxson" fullname="V. Paxson"> | |||
<?rfc include="reference.RFC.5405" ?> | <organization showOnFrontPage="true"/> | |||
</references> | </author> | |||
<author initials="M." surname="Allman" fullname="M. Allman"> | ||||
<references title="Informational References"> | <organization showOnFrontPage="true"/> | |||
<?rfc include="reference.RFC.3264" ?> | </author> | |||
<?rfc include="reference.RFC.4376" ?> | <author initials="J." surname="Chu" fullname="J. Chu"> | |||
<?rfc include="reference.RFC.5239" ?> | <organization showOnFrontPage="true"/> | |||
<?rfc include="reference.RFC.5245" ?> | </author> | |||
<?rfc include="reference.RFC.3261" ?> | <author initials="M." surname="Sargent" fullname="M. Sargent"> | |||
<?rfc include="reference.RFC.4301" ?> | <organization showOnFrontPage="true"/> | |||
<?rfc include="reference.RFC.6501" ?> | </author> | |||
<?rfc include="reference.RFC.6503" ?> | <date year="2011" month="June"/> | |||
<?rfc include="reference.RFC.6504" ?> | <abstract> | |||
<?rfc include="reference.RFC.1191" ?> | <t indent="0">This document defines the standard algorithm that Tr | |||
<?rfc include="reference.RFC.1981" ?> | ansmission Control Protocol (TCP) senders are required to use to compute and man | |||
<?rfc include="reference.RFC.4821" ?> | age their retransmission timer. It expands on the discussion in Section 4.2.3.1 | |||
<?rfc include="reference.RFC.5763" ?> | of RFC 1122 and upgrades the requirement of supporting the algorithm from a SHO | |||
<?rfc include="reference.RFC.6951" ?> | ULD to a MUST. This document obsoletes RFC 2988. [STANDARDS-TRACK]</t> | |||
<?rfc include="reference.RFC.7525" ?> | </abstract> | |||
</front> | ||||
<!-- Add reference to IMTC role-based video BCP, at some stage. | <seriesInfo name="RFC" value="6298"/> | |||
Refer to it in an informational note somehow. --> | <seriesInfo name="DOI" value="10.17487/RFC6298"/> | |||
</reference> | ||||
<!-- Motivation appendix references below --> | <reference anchor="RFC4582" target="https://www.rfc-editor.org/info/rfc4 | |||
<?rfc include="reference.RFC.4380" ?> | 582" quoteTitle="true" derivedAnchor="3"> | |||
<?rfc include="reference.RFC.6081" ?> | <front> | |||
<?rfc include="reference.RFC.4960" ?> | <title>The Binary Floor Control Protocol (BFCP)</title> | |||
<?rfc include="reference.RFC.6544" ?> | <author initials="G." surname="Camarillo" fullname="G. Camarillo"> | |||
<?rfc include="reference.I-D.draft-manner-tsvwg-gut-02" ?> | <organization showOnFrontPage="true"/> | |||
<?rfc include="reference.I-D.draft-ietf-mmusic-media-path-middleboxes-07" ?> | </author> | |||
<reference anchor="IMC05" target="http://saikat.guha.cc/pub/imc05-tcpnat.pdf | <author initials="J." surname="Ott" fullname="J. Ott"> | |||
/"> | <organization showOnFrontPage="true"/> | |||
<front> | </author> | |||
<title>Characterization and Measurement of TCP Traversal through NATs an | <author initials="K." surname="Drage" fullname="K. Drage"> | |||
d Firewalls</title> | <organization showOnFrontPage="true"/> | |||
<author initials="S" surname="Guha"/> | </author> | |||
<author initials="P" surname="Francis"/> | <date year="2006" month="November"/> | |||
<date month="" year="2005"/> | <abstract> | |||
</front> | <t indent="0">Floor control is a means to manage joint or exclusiv | |||
</reference> | e access to shared resources in a (multiparty) conferencing environment. Thereby | |||
<reference anchor="P2PNAT" target="http://www.brynosaurus.com/pub/net/p2pnat | , floor control complements other functions -- such as conference and media sess | |||
.pdf/"> | ion setup, conference policy manipulation, and media control -- that are realize | |||
<front> | d by other protocols.</t> | |||
<title>Peer-to-Peer Communication Across Network Address Translators</ti | <t indent="0">This document specifies the Binary Floor Control Pro | |||
tle> | tocol (BFCP). BFCP is used between floor participants and floor control servers, | |||
<author initials="B" surname="Ford"/> | and between floor chairs (i.e., moderators) and floor control servers. [STANDA | |||
<author initials="P" surname="Srisuresh"/> | RDS-TRACK]</t> | |||
<author initials="D" surname="Kegel"/> | </abstract> | |||
<date month="April" year="2005"/> | </front> | |||
</front> | <seriesInfo name="RFC" value="4582"/> | |||
</reference> | <seriesInfo name="DOI" value="10.17487/RFC4582"/> | |||
</references> | </reference> | |||
<reference anchor="RFC5018" target="https://www.rfc-editor.org/info/rfc5 | ||||
<!-- Appendices --> | 018" quoteTitle="true" derivedAnchor="4"> | |||
<section title="Example Call Flows for BFCP over an Unreliable Transport" anch | <front> | |||
or="app:unrelcallflow"> | <title>Connection Establishment in the Binary Floor Control Protocol | |||
<t>With reference to <xref target="sec:overview:user"/>, the following figur | (BFCP)</title> | |||
es show representative call-flows for requesting and releasing a floor, and obta | <author initials="G." surname="Camarillo" fullname="G. Camarillo"> | |||
ining status information about a floor when BFCP is deployed over an unreliable | <organization showOnFrontPage="true"/> | |||
transport. The figures here show a loss-less interaction.</t> | </author> | |||
<t><figure align="left" anchor="ReqRelUnrelExample" title="Requesting and re | <date year="2007" month="September"/> | |||
leasing a floor"> | <abstract> | |||
<artwork align="left"><![CDATA[ | <t indent="0">This document specifies how a Binary Floor Control P | |||
rotocol (BFCP) client establishes a connection to a BFCP floor control server ou | ||||
tside the context of an offer/answer exchange. Client and server authentication | ||||
are based on Transport Layer Security (TLS). [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5018"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5018"/> | ||||
</reference> | ||||
<reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5 | ||||
234" quoteTitle="true" derivedAnchor="5"> | ||||
<front> | ||||
<title>Augmented BNF for Syntax Specifications: ABNF</title> | ||||
<author initials="D." surname="Crocker" fullname="D. Crocker" role=" | ||||
editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Overell" fullname="P. Overell"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="January"/> | ||||
<abstract> | ||||
<t indent="0">Internet technical specifications often need to defi | ||||
ne a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF | ||||
), called Augmented BNF (ABNF), has been popular among many Internet specificati | ||||
ons. The current specification documents ABNF. It balances compactness and simp | ||||
licity with reasonable representational power. The differences between standard | ||||
BNF and ABNF involve naming rules, repetition, alternatives, order-independence | ||||
, and value ranges. This specification also supplies additional rule definition | ||||
s and encoding for a core lexical analyzer of the type common to several Interne | ||||
t specifications. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="68"/> | ||||
<seriesInfo name="RFC" value="5234"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5234"/> | ||||
</reference> | ||||
<reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8 | ||||
126" quoteTitle="true" derivedAnchor="6"> | ||||
<front> | ||||
<title>Guidelines for Writing an IANA Considerations Section in RFCs | ||||
</title> | ||||
<author initials="M." surname="Cotton" fullname="M. Cotton"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="T." surname="Narten" fullname="T. Narten"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="June"/> | ||||
<abstract> | ||||
<t indent="0">Many protocols make use of points of extensibility t | ||||
hat use constants to identify various protocol parameters. To ensure that the v | ||||
alues in these fields do not have conflicting uses and to promote interoperabili | ||||
ty, their allocations are often coordinated by a central record keeper. For IET | ||||
F protocols, that role is filled by the Internet Assigned Numbers Authority (IAN | ||||
A).</t> | ||||
<t indent="0">To make assignments in a given registry prudently, g | ||||
uidance describing the conditions under which new values should be assigned, as | ||||
well as when and how modifications to existing values can be made, is needed. T | ||||
his document defines a framework for the documentation of these guidelines by sp | ||||
ecification authors, in order to assure that the provided guidance for the IANA | ||||
Considerations is clear and addresses the various issues that are likely in the | ||||
operation of a registry.</t> | ||||
<t indent="0">This is the third edition of this document; it obsol | ||||
etes RFC 5226.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="26"/> | ||||
<seriesInfo name="RFC" value="8126"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8126"/> | ||||
</reference> | ||||
<reference anchor="RFC5246" target="https://www.rfc-editor.org/info/rfc5 | ||||
246" quoteTitle="true" derivedAnchor="7"> | ||||
<front> | ||||
<title>The Transport Layer Security (TLS) Protocol Version 1.2</titl | ||||
e> | ||||
<author initials="T." surname="Dierks" fullname="T. Dierks"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="August"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies Version 1.2 of the Transport | ||||
Layer Security (TLS) protocol. The TLS protocol provides communications securi | ||||
ty over the Internet. The protocol allows client/server applications to communi | ||||
cate in a way that is designed to prevent eavesdropping, tampering, or message f | ||||
orgery. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5246"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5246"/> | ||||
</reference> | ||||
<reference anchor="RFC6347" target="https://www.rfc-editor.org/info/rfc6 | ||||
347" quoteTitle="true" derivedAnchor="8"> | ||||
<front> | ||||
<title>Datagram Transport Layer Security Version 1.2</title> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="N." surname="Modadugu" fullname="N. Modadugu"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2012" month="January"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies version 1.2 of the Datagram | ||||
Transport Layer Security (DTLS) protocol. The DTLS protocol provides communicat | ||||
ions privacy for datagram protocols. The protocol allows client/server applicat | ||||
ions to communicate in a way that is designed to prevent eavesdropping, tamperin | ||||
g, or message forgery. The DTLS protocol is based on the Transport Layer Securi | ||||
ty (TLS) protocol and provides equivalent security guarantees. Datagram semanti | ||||
cs of the underlying transport are preserved by the DTLS protocol. This documen | ||||
t updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6347"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6347"/> | ||||
</reference> | ||||
<reference anchor="RFC3629" target="https://www.rfc-editor.org/info/rfc3 | ||||
629" quoteTitle="true" derivedAnchor="9"> | ||||
<front> | ||||
<title>UTF-8, a transformation format of ISO 10646</title> | ||||
<author initials="F." surname="Yergeau" fullname="F. Yergeau"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2003" month="November"/> | ||||
<abstract> | ||||
<t indent="0">ISO/IEC 10646-1 defines a large character set called | ||||
the Universal Character Set (UCS) which encompasses most of the world's writing | ||||
systems. The originally proposed encodings of the UCS, however, were not compa | ||||
tible with many current applications and protocols, and this has led to the deve | ||||
lopment of UTF-8, the object of this memo. UTF-8 has the characteristic of pres | ||||
erving the full US-ASCII range, providing compatibility with file systems, parse | ||||
rs and other software that rely on US-ASCII values but are transparent to other | ||||
values. This memo obsoletes and replaces RFC 2279.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="63"/> | ||||
<seriesInfo name="RFC" value="3629"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3629"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
174" quoteTitle="true" derivedAnchor="10"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
tle> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="May"/> | ||||
<abstract> | ||||
<t indent="0">RFC 2119 specifies common key words that may be used | ||||
in protocol specifications. This document aims to reduce the ambiguity by cla | ||||
rifying that only UPPERCASE usage of the key words have the defined special mea | ||||
nings.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
<reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8 | ||||
446" quoteTitle="true" derivedAnchor="11"> | ||||
<front> | ||||
<title>The Transport Layer Security (TLS) Protocol Version 1.3</titl | ||||
e> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2018" month="August"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies version 1.3 of the Transport | ||||
Layer Security (TLS) protocol. TLS allows client/server applications to commun | ||||
icate over the Internet in a way that is designed to prevent eavesdropping, tamp | ||||
ering, and message forgery.</t> | ||||
<t indent="0">This document updates RFCs 5705 and 6066, and obsole | ||||
tes RFCs 5077, 5246, and 6961. This document also specifies new requirements fo | ||||
r TLS 1.2 implementations.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8446"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8446"/> | ||||
</reference> | ||||
<reference anchor="RFC8856" target="https://www.rfc-editor.org/info/rfc8 | ||||
856" quoteTitle="true" derivedAnchor="12"> | ||||
<front> | ||||
<title>Session Description Protocol (SDP) Format for Binary Floor Co | ||||
ntrol Protocol (BFCP) Streams</title> | ||||
<author initials="G" surname="Camarillo" fullname="Gonzalo Camarillo | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="T" surname="Kristensen" fullname="Tom Kristensen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Holmberg" fullname="Christer Holmberg | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8856"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8856"/> | ||||
</reference> | ||||
<reference anchor="RFC4961" target="https://www.rfc-editor.org/info/rfc4 | ||||
961" quoteTitle="true" derivedAnchor="13"> | ||||
<front> | ||||
<title>Symmetric RTP / RTP Control Protocol (RTCP)</title> | ||||
<author initials="D." surname="Wing" fullname="D. Wing"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="July"/> | ||||
<abstract> | ||||
<t indent="0">This document recommends using one UDP port pair for | ||||
both communication directions of bidirectional RTP and RTP Control Protocol (RT | ||||
CP) sessions, commonly called "symmetric RTP" and "symmetric RTCP". This docume | ||||
nt specifies an Internet Best Current Practices for the Internet Community, and | ||||
requests discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="131"/> | ||||
<seriesInfo name="RFC" value="4961"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4961"/> | ||||
</reference> | ||||
<reference anchor="RFC5389" target="https://www.rfc-editor.org/info/rfc5 | ||||
389" quoteTitle="true" derivedAnchor="14"> | ||||
<front> | ||||
<title>Session Traversal Utilities for NAT (STUN)</title> | ||||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Mahy" fullname="R. Mahy"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Matthews" fullname="P. Matthews"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="Wing" fullname="D. Wing"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="October"/> | ||||
<abstract> | ||||
<t indent="0">Session Traversal Utilities for NAT (STUN) is a prot | ||||
ocol that serves as a tool for other protocols in dealing with Network Address T | ||||
ranslator (NAT) traversal. It can be used by an endpoint to determine the IP ad | ||||
dress and port allocated to it by a NAT. It can also be used to check connectiv | ||||
ity between two endpoints, and as a keep-alive protocol to maintain NAT bindings | ||||
. STUN works with many existing NATs, and does not require any special behavior | ||||
from them.</t> | ||||
<t indent="0">STUN is not a NAT traversal solution by itself. Rat | ||||
her, it is a tool to be used in the context of a NAT traversal solution. This i | ||||
s an important change from the previous version of this specification (RFC 3489) | ||||
, which presented STUN as a complete solution.</t> | ||||
<t indent="0">This document obsoletes RFC 3489. [STANDARDS-TRACK] | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5389"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5389"/> | ||||
</reference> | ||||
<reference anchor="RFC8085" target="https://www.rfc-editor.org/info/rfc8 | ||||
085" quoteTitle="true" derivedAnchor="15"> | ||||
<front> | ||||
<title>UDP Usage Guidelines</title> | ||||
<author initials="L." surname="Eggert" fullname="L. Eggert"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Fairhurst" fullname="G. Fairhurst"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Shepherd" fullname="G. Shepherd"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="March"/> | ||||
<abstract> | ||||
<t indent="0">The User Datagram Protocol (UDP) provides a minimal | ||||
message-passing transport that has no inherent congestion control mechanisms. T | ||||
his document provides guidelines on the use of UDP for the designers of applicat | ||||
ions, tunnels, and other protocols that use UDP. Congestion control guidelines | ||||
are a primary focus, but the document also provides guidance on other topics, in | ||||
cluding message sizes, reliability, checksums, middlebox traversal, the use of E | ||||
xplicit Congestion Notification (ECN), Differentiated Services Code Points (DSCP | ||||
s), and ports.</t> | ||||
<t indent="0">Because congestion control is critical to the stable | ||||
operation of the Internet, applications and other protocols that choose to use | ||||
UDP as an Internet transport must employ mechanisms to prevent congestion collap | ||||
se and to establish some degree of fairness with concurrent traffic. They may a | ||||
lso need to implement additional mechanisms, depending on how they use UDP.</t> | ||||
<t indent="0">Some guidance is also applicable to the design of ot | ||||
her protocols (e.g., protocols layered directly on IP or via IP-based tunnels), | ||||
especially when these protocols do not themselves provide congestion control.</t | ||||
> | ||||
<t indent="0">This document obsoletes RFC 5405 and adds guidelines | ||||
for multicast UDP usage.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="145"/> | ||||
<seriesInfo name="RFC" value="8085"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8085"/> | ||||
</reference> | ||||
<reference anchor="RFC8445" target="https://www.rfc-editor.org/info/rfc8 | ||||
445" quoteTitle="true" derivedAnchor="16"> | ||||
<front> | ||||
<title>Interactive Connectivity Establishment (ICE): A Protocol for | ||||
Network Address Translator (NAT) Traversal</title> | ||||
<author initials="A." surname="Keranen" fullname="A. Keranen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Holmberg" fullname="C. Holmberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2018" month="July"/> | ||||
<abstract> | ||||
<t indent="0">This document describes a protocol for Network Addre | ||||
ss Translator (NAT) traversal for UDP-based communication. This protocol is cal | ||||
led Interactive Connectivity Establishment (ICE). ICE makes use of the Session | ||||
Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using R | ||||
elay NAT (TURN).</t> | ||||
<t indent="0">This document obsoletes RFC 5245.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8445"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8445"/> | ||||
</reference> | ||||
</references> | ||||
<references pn="section-17.2"> | ||||
<name slugifiedName="name-informative-references">Informative References | ||||
</name> | ||||
<reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | ||||
264" quoteTitle="true" derivedAnchor="17"> | ||||
<front> | ||||
<title>An Offer/Answer Model with Session Description Protocol (SDP) | ||||
</title> | ||||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2002" month="June"/> | ||||
<abstract> | ||||
<t indent="0">This document defines a mechanism by which two entit | ||||
ies can make use of the Session Description Protocol (SDP) to arrive at a common | ||||
view of a multimedia session between them. In the model, one participant offer | ||||
s the other a description of the desired session from their perspective, and the | ||||
other participant answers with the desired session from their perspective. Thi | ||||
s offer/answer model is most useful in unicast sessions where information from b | ||||
oth participants is needed for the complete view of the session. The offer/answ | ||||
er model is used by protocols like the Session Initiation Protocol (SIP). [STAN | ||||
DARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3264"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3264"/> | ||||
</reference> | ||||
<reference anchor="RFC4376" target="https://www.rfc-editor.org/info/rfc4 | ||||
376" quoteTitle="true" derivedAnchor="18"> | ||||
<front> | ||||
<title>Requirements for Floor Control Protocols</title> | ||||
<author initials="P." surname="Koskelainen" fullname="P. Koskelainen | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Ott" fullname="J. Ott"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="X." surname="Wu" fullname="X. Wu"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2006" month="February"/> | ||||
<abstract> | ||||
<t indent="0">Floor control is a means to manage joint or exclusiv | ||||
e access to shared resources in a (multiparty) conferencing environment. Thereby | ||||
, floor control complements other functions -- such as conference and media sess | ||||
ion setup, conference policy manipulation, and media control -- that are realize | ||||
d by other protocols. This document defines the requirements for a floor contro | ||||
l protocol for multiparty conferences in the context of an existing framework. | ||||
This memo provides information for the Internet community.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4376"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4376"/> | ||||
</reference> | ||||
<reference anchor="RFC5239" target="https://www.rfc-editor.org/info/rfc5 | ||||
239" quoteTitle="true" derivedAnchor="19"> | ||||
<front> | ||||
<title>A Framework for Centralized Conferencing</title> | ||||
<author initials="M." surname="Barnes" fullname="M. Barnes"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Boulton" fullname="C. Boulton"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="O." surname="Levin" fullname="O. Levin"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="June"/> | ||||
<abstract> | ||||
<t indent="0">This document defines the framework for Centralized | ||||
Conferencing. The framework allows participants using various call signaling pro | ||||
tocols, such as SIP, H.323, Jabber, Q.931 or ISDN User Part (ISUP), to exchange | ||||
media in a centralized unicast conference. The Centralized Conferencing Framewo | ||||
rk defines logical entities and naming conventions. The framework also outlines | ||||
a set of conferencing protocols, which are complementary to the call signaling | ||||
protocols, for building advanced conferencing applications. The framework binds | ||||
all the defined components together for the benefit of builders of conferencing | ||||
systems. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5239"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5239"/> | ||||
</reference> | ||||
<reference anchor="RFC3261" target="https://www.rfc-editor.org/info/rfc3 | ||||
261" quoteTitle="true" derivedAnchor="20"> | ||||
<front> | ||||
<title>SIP: Session Initiation Protocol</title> | ||||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Camarillo" fullname="G. Camarillo"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Johnston" fullname="A. Johnston"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Peterson" fullname="J. Peterson"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Sparks" fullname="R. Sparks"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Handley" fullname="M. Handley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Schooler" fullname="E. Schooler"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2002" month="June"/> | ||||
<abstract> | ||||
<t indent="0">This document describes Session Initiation Protocol | ||||
(SIP), an application-layer control (signaling) protocol for creating, modifying | ||||
, and terminating sessions with one or more participants. These sessions includ | ||||
e Internet telephone calls, multimedia distribution, and multimedia conferences. | ||||
[STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3261"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3261"/> | ||||
</reference> | ||||
<reference anchor="RFC4301" target="https://www.rfc-editor.org/info/rfc4 | ||||
301" quoteTitle="true" derivedAnchor="21"> | ||||
<front> | ||||
<title>Security Architecture for the Internet Protocol</title> | ||||
<author initials="S." surname="Kent" fullname="S. Kent"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="K." surname="Seo" fullname="K. Seo"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2005" month="December"/> | ||||
<abstract> | ||||
<t indent="0">This document describes an updated version of the "S | ||||
ecurity Architecture for IP", which is designed to provide security services for | ||||
traffic at the IP layer. This document obsoletes RFC 2401 (November 1998). [S | ||||
TANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4301"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4301"/> | ||||
</reference> | ||||
<reference anchor="RFC6501" target="https://www.rfc-editor.org/info/rfc6 | ||||
501" quoteTitle="true" derivedAnchor="22"> | ||||
<front> | ||||
<title>Conference Information Data Model for Centralized Conferencin | ||||
g (XCON)</title> | ||||
<author initials="O." surname="Novo" fullname="O. Novo"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Camarillo" fullname="G. Camarillo"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="Morgan" fullname="D. Morgan"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Urpalainen" fullname="J. Urpalainen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2012" month="March"/> | ||||
<abstract> | ||||
<t indent="0">RFC 5239 defines centralized conferencing (XCON) as | ||||
an association of participants with a central focus. The state of a conference | ||||
is represented by a conference object. This document defines an XML- based conf | ||||
erence information data model to be used for conference objects. A conference i | ||||
nformation data model is designed to convey information about the conference and | ||||
about participation in the conference. The conference information data model d | ||||
efined in this document constitutes an extension of the data format specified in | ||||
the Session Initiation Protocol (SIP) event package for conference State. [ST | ||||
ANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6501"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6501"/> | ||||
</reference> | ||||
<reference anchor="RFC6503" target="https://www.rfc-editor.org/info/rfc6 | ||||
503" quoteTitle="true" derivedAnchor="23"> | ||||
<front> | ||||
<title>Centralized Conferencing Manipulation Protocol</title> | ||||
<author initials="M." surname="Barnes" fullname="M. Barnes"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Boulton" fullname="C. Boulton"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Romano" fullname="S. Romano"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2012" month="March"/> | ||||
<abstract> | ||||
<t indent="0">The Centralized Conferencing Manipulation Protocol ( | ||||
CCMP) allows a Centralized Conferencing (XCON) system client to create, retrieve | ||||
, change, and delete objects that describe a centralized conference. CCMP is a m | ||||
eans to control basic and advanced conference features such as conference state | ||||
and capabilities, participants, relative roles, and details. CCMP is a stateles | ||||
s, XML-based, client server protocol that carries, in its request and response m | ||||
essages, conference information in the form of XML documents and fragments confo | ||||
rming to the centralized conferencing data model schema. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6503"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6503"/> | ||||
</reference> | ||||
<reference anchor="RFC6504" target="https://www.rfc-editor.org/info/rfc6 | ||||
504" quoteTitle="true" derivedAnchor="24"> | ||||
<front> | ||||
<title>Centralized Conferencing Manipulation Protocol (CCMP) Call Fl | ||||
ow Examples</title> | ||||
<author initials="M." surname="Barnes" fullname="M. Barnes"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="L." surname="Miniero" fullname="L. Miniero"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Presta" fullname="R. Presta"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S P." surname="Romano" fullname="S P. Romano"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2012" month="March"/> | ||||
<abstract> | ||||
<t indent="0">This document provides detailed call flows for the s | ||||
cenarios documented in the Framework for Centralized Conferencing (XCON) (RFC 52 | ||||
39) and in the XCON scenarios (RFC 4597). The call flows document the use of th | ||||
e interface between a conference control client and a conference control server | ||||
using the Centralized Conferencing Manipulation Protocol (CCMP) (RFC 6503). The | ||||
objective is to provide detailed examples for reference by both protocol resear | ||||
chers and developers. This document is not an Internet Standards Track specific | ||||
ation; it is published for informational purposes.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6504"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6504"/> | ||||
</reference> | ||||
<reference anchor="RFC1191" target="https://www.rfc-editor.org/info/rfc1 | ||||
191" quoteTitle="true" derivedAnchor="25"> | ||||
<front> | ||||
<title>Path MTU discovery</title> | ||||
<author initials="J.C." surname="Mogul" fullname="J.C. Mogul"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S.E." surname="Deering" fullname="S.E. Deering"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="1990" month="November"/> | ||||
<abstract> | ||||
<t indent="0">This memo describes a technique for dynamically disc | ||||
overing the maximum transmission unit (MTU) of an arbitrary internet path. It s | ||||
pecifies a small change to the way routers generate one type of ICMP message. F | ||||
or a path that passes through a router that has not been so changed, this techni | ||||
que might not discover the correct Path MTU, but it will always choose a Path MT | ||||
U as accurate as, and in many cases more accurate than, the Path MTU that would | ||||
be chosen by current practice. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="1191"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC1191"/> | ||||
</reference> | ||||
<reference anchor="RFC8201" target="https://www.rfc-editor.org/info/rfc8 | ||||
201" quoteTitle="true" derivedAnchor="26"> | ||||
<front> | ||||
<title>Path MTU Discovery for IP version 6</title> | ||||
<author initials="J." surname="McCann" fullname="J. McCann"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Deering" fullname="S. Deering"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Mogul" fullname="J. Mogul"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Hinden" fullname="R. Hinden" role="ed | ||||
itor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="July"/> | ||||
<abstract> | ||||
<t indent="0">This document describes Path MTU Discovery (PMTUD) f | ||||
or IP version 6. It is largely derived from RFC 1191, which describes Path MTU D | ||||
iscovery for IP version 4. It obsoletes RFC 1981.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="87"/> | ||||
<seriesInfo name="RFC" value="8201"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8201"/> | ||||
</reference> | ||||
<reference anchor="RFC4821" target="https://www.rfc-editor.org/info/rfc4 | ||||
821" quoteTitle="true" derivedAnchor="27"> | ||||
<front> | ||||
<title>Packetization Layer Path MTU Discovery</title> | ||||
<author initials="M." surname="Mathis" fullname="M. Mathis"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Heffner" fullname="J. Heffner"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="March"/> | ||||
<abstract> | ||||
<t indent="0">This document describes a robust method for Path MTU | ||||
Discovery (PMTUD) that relies on TCP or some other Packetization Layer to probe | ||||
an Internet path with progressively larger packets. This method is described a | ||||
s an extension to RFC 1191 and RFC 1981, which specify ICMP-based Path MTU Disco | ||||
very for IP versions 4 and 6, respectively. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4821"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4821"/> | ||||
</reference> | ||||
<reference anchor="RFC5763" target="https://www.rfc-editor.org/info/rfc5 | ||||
763" quoteTitle="true" derivedAnchor="28"> | ||||
<front> | ||||
<title>Framework for Establishing a Secure Real-time Transport Proto | ||||
col (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)</titl | ||||
e> | ||||
<author initials="J." surname="Fischl" fullname="J. Fischl"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H." surname="Tschofenig" fullname="H. Tschofenig"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2010" month="May"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies how to use the Session Initi | ||||
ation Protocol (SIP) to establish a Secure Real-time Transport Protocol (SRTP) s | ||||
ecurity context using the Datagram Transport Layer Security (DTLS) protocol. It | ||||
describes a mechanism of transporting a fingerprint attribute in the Session De | ||||
scription Protocol (SDP) that identifies the key that will be presented during t | ||||
he DTLS handshake. The key exchange travels along the media path as opposed to | ||||
the signaling path. The SIP Identity mechanism can be used to protect the integ | ||||
rity of the fingerprint attribute from modification by intermediate proxies. [S | ||||
TANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5763"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5763"/> | ||||
</reference> | ||||
<reference anchor="RFC6951" target="https://www.rfc-editor.org/info/rfc6 | ||||
951" quoteTitle="true" derivedAnchor="29"> | ||||
<front> | ||||
<title>UDP Encapsulation of Stream Control Transmission Protocol (SC | ||||
TP) Packets for End-Host to End-Host Communication</title> | ||||
<author initials="M." surname="Tuexen" fullname="M. Tuexen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Stewart" fullname="R. Stewart"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2013" month="May"/> | ||||
<abstract> | ||||
<t indent="0">This document describes a simple method of encapsula | ||||
ting Stream Control Transmission Protocol (SCTP) packets into UDP packets and it | ||||
s limitations. This allows the usage of SCTP in networks with legacy NATs that | ||||
do not support SCTP. It can also be used to implement SCTP on hosts without dir | ||||
ectly accessing the IP layer, for example, implementing it as part of the applic | ||||
ation without requiring special privileges.</t> | ||||
<t indent="0">Please note that this document only describes the fu | ||||
nctionality required within an SCTP stack to add on UDP encapsulation, providing | ||||
only those mechanisms for two end-hosts to communicate with each other over UDP | ||||
ports. In particular, it does not provide mechanisms to determine whether UDP | ||||
encapsulation is being used by the peer, nor the mechanisms for determining whic | ||||
h remote UDP port number can be used. These functions are out of scope for this | ||||
document.</t> | ||||
<t indent="0">This document covers only end-hosts and not tunnelin | ||||
g (egress or ingress) endpoints.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6951"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6951"/> | ||||
</reference> | ||||
<reference anchor="RFC7525" target="https://www.rfc-editor.org/info/rfc7 | ||||
525" quoteTitle="true" derivedAnchor="30"> | ||||
<front> | ||||
<title>Recommendations for Secure Use of Transport Layer Security (T | ||||
LS) and Datagram Transport Layer Security (DTLS)</title> | ||||
<author initials="Y." surname="Sheffer" fullname="Y. Sheffer"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Holz" fullname="R. Holz"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Saint-Andre" fullname="P. Saint-Andre | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2015" month="May"/> | ||||
<abstract> | ||||
<t indent="0">Transport Layer Security (TLS) and Datagram Transpor | ||||
t Layer Security (DTLS) are widely used to protect data exchanged over applicati | ||||
on protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the last few ye | ||||
ars, several serious attacks on TLS have emerged, including attacks on its most | ||||
commonly used cipher suites and their modes of operation. This document provide | ||||
s recommendations for improving the security of deployed services that use TLS a | ||||
nd DTLS. The recommendations are applicable to the majority of use cases.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="195"/> | ||||
<seriesInfo name="RFC" value="7525"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7525"/> | ||||
</reference> | ||||
<reference anchor="RFC4380" target="https://www.rfc-editor.org/info/rfc4 | ||||
380" quoteTitle="true" derivedAnchor="31"> | ||||
<front> | ||||
<title>Teredo: Tunneling IPv6 over UDP through Network Address Trans | ||||
lations (NATs)</title> | ||||
<author initials="C." surname="Huitema" fullname="C. Huitema"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2006" month="February"/> | ||||
<abstract> | ||||
<t indent="0">We propose here a service that enables nodes located | ||||
behind one or more IPv4 Network Address Translations (NATs) to obtain IPv6 conn | ||||
ectivity by tunneling packets over UDP; we call this the Teredo service. Runnin | ||||
g the service requires the help of "Teredo servers" and "Teredo relays". The Te | ||||
redo servers are stateless, and only have to manage a small fraction of the traf | ||||
fic between Teredo clients; the Teredo relays act as IPv6 routers between the Te | ||||
redo service and the "native" IPv6 Internet. The relays can also provide intero | ||||
perability with hosts using other transition mechanisms such as "6to4". [STANDA | ||||
RDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4380"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4380"/> | ||||
</reference> | ||||
<reference anchor="RFC6081" target="https://www.rfc-editor.org/info/rfc6 | ||||
081" quoteTitle="true" derivedAnchor="32"> | ||||
<front> | ||||
<title>Teredo Extensions</title> | ||||
<author initials="D." surname="Thaler" fullname="D. Thaler"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2011" month="January"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies a set of extensions to the T | ||||
eredo protocol. These extensions provide additional capabilities to Teredo, incl | ||||
uding support for more types of Network Address Translations (NATs) and support | ||||
for more efficient communication. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6081"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6081"/> | ||||
</reference> | ||||
<reference anchor="RFC4960" target="https://www.rfc-editor.org/info/rfc4 | ||||
960" quoteTitle="true" derivedAnchor="33"> | ||||
<front> | ||||
<title>Stream Control Transmission Protocol</title> | ||||
<author initials="R." surname="Stewart" fullname="R. Stewart" role=" | ||||
editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="September"/> | ||||
<abstract> | ||||
<t indent="0">This document obsoletes RFC 2960 and RFC 3309. It d | ||||
escribes the Stream Control Transmission Protocol (SCTP). SCTP is designed to t | ||||
ransport Public Switched Telephone Network (PSTN) signaling messages over IP net | ||||
works, but is capable of broader applications.</t> | ||||
<t indent="0">SCTP is a reliable transport protocol operating on t | ||||
op of a connectionless packet network such as IP. It offers the following servi | ||||
ces to its users:</t> | ||||
<t indent="0">-- acknowledged error-free non-duplicated transfer | ||||
of user data,</t> | ||||
<t indent="0">-- data fragmentation to conform to discovered path | ||||
MTU size,</t> | ||||
<t indent="0">-- sequenced delivery of user messages within multi | ||||
ple streams, with an option for order-of-arrival delivery of individual user mes | ||||
sages,</t> | ||||
<t indent="0">-- optional bundling of multiple user messages into | ||||
a single SCTP packet, and</t> | ||||
<t indent="0">-- network-level fault tolerance through supporting | ||||
of multi-homing at either or both ends of an association.</t> | ||||
<t indent="0"> The design of SCTP includes appropriate congestion | ||||
avoidance behavior and resistance to flooding and masquerade attacks. [STANDARD | ||||
S-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4960"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4960"/> | ||||
</reference> | ||||
<reference anchor="RFC6544" target="https://www.rfc-editor.org/info/rfc6 | ||||
544" quoteTitle="true" derivedAnchor="34"> | ||||
<front> | ||||
<title>TCP Candidates with Interactive Connectivity Establishment (I | ||||
CE)</title> | ||||
<author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Keranen" fullname="A. Keranen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B. B." surname="Lowekamp" fullname="B. B. Lowekamp | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A. B." surname="Roach" fullname="A. B. Roach"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2012" month="March"/> | ||||
<abstract> | ||||
<t indent="0">Interactive Connectivity Establishment (ICE) defines | ||||
a mechanism for NAT traversal for multimedia communication protocols based on t | ||||
he offer/answer model of session negotiation. ICE works by providing a set of c | ||||
andidate transport addresses for each media stream, which are then validated wit | ||||
h peer-to-peer connectivity checks based on Session Traversal Utilities for NAT | ||||
(STUN). ICE provides a general framework for describing candidates but only def | ||||
ines UDP-based media streams. This specification extends ICE to TCP-based media, | ||||
including the ability to offer a mix of TCP and UDP-based candidates for a sing | ||||
le stream. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6544"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6544"/> | ||||
</reference> | ||||
<reference anchor="I-D.manner-tsvwg-gut" quoteTitle="true" target="https | ||||
://tools.ietf.org/html/draft-manner-tsvwg-gut-02" derivedAnchor="35"> | ||||
<front> | ||||
<title>Generic UDP Tunnelling (GUT)</title> | ||||
<author initials="J" surname="Manner" fullname="Jukka Manner"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="N" surname="Varis" fullname="Nuutti Varis"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B" surname="Briscoe" fullname="Bob Briscoe"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="July" day="12" year="2010"/> | ||||
<abstract> | ||||
<t indent="0">Deploying new transport protocols on the Internet is | ||||
a well-known problem, as NATs and firewall drop packets with e.g. new protocol | ||||
types or unidentified TCP options. Tunnelling over UDP is one way to make IP pa | ||||
ckets hide the actual payload and enable end-to-end delivery. This document pro | ||||
poses a simple UDP tunnelling encapsulation and end-host operation to enable new | ||||
(and old) IP payloads, e.g., new transport protocols, to be deployed on the Int | ||||
ernet.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-manner-tsvwg-gut-02"/> | ||||
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-m | ||||
anner-tsvwg-gut-02.txt"/> | ||||
<refcontent>Work in Progress</refcontent> | ||||
</reference> | ||||
<reference anchor="I-D.ietf-mmusic-media-path-middleboxes" quoteTitle="t | ||||
rue" target="https://tools.ietf.org/html/draft-ietf-mmusic-media-path-middleboxe | ||||
s-07" derivedAnchor="36"> | ||||
<front> | ||||
<title>Analysis of Middlebox Interactions for Signaling Protocol Com | ||||
munication along the Media Path</title> | ||||
<author initials="B" surname="Stucker" fullname="Brian Stucker"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="H" surname="Tschofenig" fullname="Hannes Tschofeni | ||||
g"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G" surname="Salgueiro" fullname="Gonzalo Salgueiro | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="May" day="30" year="2013"/> | ||||
<abstract> | ||||
<t indent="0">Middleboxes are defined as any intermediary box perf | ||||
orming functions apart from normal, standard functions of an IP router on the da | ||||
ta path between a source host and destination host. Two such functions are netw | ||||
ork address translation and firewalling. When Application Layer Gateways, such | ||||
as SIP entities, interact with NATs and firewalls, as described in the MIDCOM ar | ||||
chitecture, then problems may occur in the transport of media traffic when signa | ||||
ling protocol interaction takes place along the media path, as it is the case fo | ||||
r recent key exchange proposals (such as DTLS-SRTP). This document highlights p | ||||
roblems that may arise. Unfortunately, it is difficult for the end points to de | ||||
tect or predict problematic behavior and to determine whether the media path is | ||||
reliably available for packet exchange. This document aims to summarize the var | ||||
ious sources and effects of NAT and firewall control, the reasons that they exis | ||||
t, and possible means of improving their behavior to allow protocols that rely u | ||||
pon signaling along the media path to operate effectively.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-mmusic-media-path- | ||||
middleboxes-07"/> | ||||
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-i | ||||
etf-mmusic-media-path-middleboxes-07.txt"/> | ||||
<refcontent>Work in Progress</refcontent> | ||||
</reference> | ||||
<reference anchor="IMC05" target="https://www.usenix.org/legacy/event/im | ||||
c05/tech/full_papers/guha/guha.pdf" quoteTitle="true" derivedAnchor="37"> | ||||
<front> | ||||
<title>Characterization and Measurement of TCP Traversal through NAT | ||||
s and Firewalls</title> | ||||
<author initials="S" surname="Guha"/> | ||||
<author initials="P" surname="Francis"/> | ||||
<date month="" year="2005"/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="P2PNAT" target="https://www.usenix.org/legacy/events/ | ||||
usenix05/tech/general/full_papers/ford/ford.pdf" quoteTitle="true" derivedAnchor | ||||
="38"> | ||||
<front> | ||||
<title>Peer-to-Peer Communication Across Network Address Translators | ||||
</title> | ||||
<author initials="B" surname="Ford"/> | ||||
<author initials="P" surname="Srisuresh"/> | ||||
<author initials="D" surname="Kegel"/> | ||||
<date month="April" year="2005"/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="app_unrelcallflow" numbered="true" toc="include" removeInRF | ||||
C="false" pn="section-appendix.a"> | ||||
<name slugifiedName="name-example-call-flows-for-bfcp">Example Call Flows | ||||
for BFCP over an Unreliable Transport</name> | ||||
<t indent="0" pn="section-appendix.a-1">With reference to <xref target="se | ||||
c_overview_user" format="default" sectionFormat="of" derivedContent="Section 4.1 | ||||
"/>, the following figures show representative call flows for requesting and rel | ||||
easing a floor, and obtaining status information about a floor when BFCP is depl | ||||
oyed over an unreliable transport. The figures here show a lossless interaction. | ||||
</t> | ||||
<figure anchor="ReqRelUnrelExample" align="left" suppress-title="false" pn | ||||
="figure-48"> | ||||
<name slugifiedName="name-requesting-and-releasing-a-f">Requesting and r | ||||
eleasing a floor</name> | ||||
<artwork align="left" name="" type="" alt="" pn="section-appendix.a-2.1" | ||||
> | ||||
Floor Participant Floor Control | Floor Participant Floor Control | |||
Server | Server | |||
|(1) FloorRequest | | |(1) FloorRequest | | |||
|Transaction Responder: 0 | | |Transaction Responder: 0 | | |||
|Transaction ID: 123 | | |Transaction ID: 123 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID: 543 | | |FLOOR-ID: 543 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(2) FloorRequestStatus | | |(2) FloorRequestStatus | | |||
|Transaction Responder: 1 | | |Transaction Responder: 1 | | |||
|Transaction ID: 123 | | |Transaction ID: 123 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Pending | | | Request Status: Pending | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(3) FloorRequestStatus | | |(3) FloorRequestStatus | | |||
|Transaction Responder: 0 | | |Transaction Responder: 0 | | |||
|Transaction ID: 124 | | |Transaction ID: 124 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
| Queue Position: 1st | | | Queue Position: 1st | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(4) FloorRequestStatusAck | | |(4) FloorRequestStatusAck | | |||
|Transaction Responder: 1 | | |Transaction Responder: 1 | | |||
|Transaction ID: 124 | | |Transaction ID: 124 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(5) FloorRequestStatus | | |(5) FloorRequestStatus | | |||
|Transaction Responder: 0 | | |Transaction Responder: 0 | | |||
|Transaction ID: 125 | | |Transaction ID: 125 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Granted | | | Request Status: Granted | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(6) FloorRequestStatusAck | | |(6) FloorRequestStatusAck | | |||
|Transaction Responder: 1 | | |Transaction Responder: 1 | | |||
|Transaction ID: 125 | | |Transaction ID: 125 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(7) FloorRelease | | |(7) FloorRelease | | |||
|Transaction Responder: 0 | | |Transaction Responder: 0 | | |||
|Transaction ID: 126 | | |Transaction ID: 126 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-ID: 789 | | |FLOOR-REQUEST-ID: 789 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(8) FloorRequestStatus | | |(8) FloorRequestStatus | | |||
|Transaction Responder: 1 | | |Transaction Responder: 1 | | |||
|Transaction ID: 126 | | |Transaction ID: 126 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 789 | | | Floor Request ID: 789 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Released | | | Request Status: Released | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
|<----------------------------------------------| ]]> | |<----------------------------------------------|</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | <t indent="0" pn="section-appendix.a-3">Note that in <xref target="ReqRelU | |||
<t>Note that in <xref target="ReqRelUnrelExample"/>, the FloorRequestStatus | nrelExample" format="default" sectionFormat="of" derivedContent="Figure 48"/>, t | |||
message from the floor control server to the floor participant is a transaction- | he | |||
closing message as a response to the client-initiated transaction with Transacti | FloorRequestStatus message from the floor control server to the floor | |||
on ID 154. As such, it is not followed by a FloorRequestStatusAck message from t | participant is a transaction-closing message as a response to the | |||
he floor participant to the floor control server.</t> | client-initiated transaction with Transaction ID 126. As such, it is not | |||
<t><figure align="left" anchor="StatusUnrelExample" title="Obtaining status | followed by a FloorRequestStatusAck message from the floor participant to | |||
information about a floor"> | the floor control server.</t> | |||
<artwork align="left"><![CDATA[ | <figure anchor="StatusUnrelExample" align="left" suppress-title="false" pn | |||
="figure-49"> | ||||
<name slugifiedName="name-obtaining-status-information">Obtaining status | ||||
information about a floor</name> | ||||
<artwork align="left" name="" type="" alt="" pn="section-appendix.a-4.1" | ||||
> | ||||
Floor Participant Floor Control | Floor Participant Floor Control | |||
Server | Server | |||
|(1) FloorQuery | | |(1) FloorQuery | | |||
|Transaction Responder: 0 | | |Transaction Responder: 0 | | |||
|Transaction ID: 257 | | |Transaction ID: 257 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID: 543 | | |FLOOR-ID: 543 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(2) FloorStatus | | |(2) FloorStatus | | |||
|Transaction Responder: 1 | | |Transaction Responder: 1 | | |||
|Transaction ID: 257 | | |Transaction ID: 257 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID:543 | | |FLOOR-ID:543 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 764 | | | Floor Request ID: 764 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
skipping to change at line 1937 ¶ | skipping to change at line 3904 ¶ | |||
| Beneficiary ID: 124 | | | Beneficiary ID: 124 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 635 | | | Floor Request ID: 635 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
| Queue Position: 2nd | | | Queue Position: 2nd | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
| BENEFICIARY-INFORMATION | | | BENEFICIARY-INFORMATION | | |||
| Beneficiary ID: 154 | | | Beneficiary ID: 154 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(3) FloorStatus | | |(3) FloorStatus | | |||
|Transaction Responder: 0 | | |Transaction Responder: 0 | | |||
|Transaction ID: 258 | | |Transaction ID: 258 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID:543 | | |FLOOR-ID:543 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 764 | | | Floor Request ID: 764 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Granted | | | Request Status: Granted | | |||
skipping to change at line 1961 ¶ | skipping to change at line 3928 ¶ | |||
| Beneficiary ID: 124 | | | Beneficiary ID: 124 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 635 | | | Floor Request ID: 635 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Accepted | | | Request Status: Accepted | | |||
| Queue Position: 1st | | | Queue Position: 1st | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
| BENEFICIARY-INFORMATION | | | BENEFICIARY-INFORMATION | | |||
| Beneficiary ID: 154 | | | Beneficiary ID: 154 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(4) FloorStatusAck | | |(4) FloorStatusAck | | |||
|Transaction Responder: 1 | | |Transaction Responder: 1 | | |||
|Transaction ID: 258 | | |Transaction ID: 258 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|---------------------------------------------->| | |---------------------------------------------->| | |||
| | | | | | |||
|(5) FloorStatus | | |(5) FloorStatus | | |||
|Transaction Responder: 0 | | |Transaction Responder: 0 | | |||
|Transaction ID: 259 | | |Transaction ID: 259 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|FLOOR-ID:543 | | |FLOOR-ID:543 | | |||
|FLOOR-REQUEST-INFORMATION | | |FLOOR-REQUEST-INFORMATION | | |||
| Floor Request ID: 635 | | | Floor Request ID: 635 | | |||
| OVERALL-REQUEST-STATUS | | | OVERALL-REQUEST-STATUS | | |||
| Request Status: Granted | | | Request Status: Granted | | |||
| FLOOR-REQUEST-STATUS | | | FLOOR-REQUEST-STATUS | | |||
| Floor ID: 543 | | | Floor ID: 543 | | |||
| BENEFICIARY-INFORMATION | | | BENEFICIARY-INFORMATION | | |||
| Beneficiary ID: 154 | | | Beneficiary ID: 154 | | |||
|<----------------------------------------------| | |<----------------------------------------------| | |||
| | | | | | |||
|(6) FloorStatusAck | | |(6) FloorStatusAck | | |||
|Transaction Responder: 1 | | |Transaction Responder: 1 | | |||
|Transaction ID: 259 | | |Transaction ID: 259 | | |||
|User ID: 234 | | |User ID: 234 | | |||
|---------------------------------------------->| ]]> | |---------------------------------------------->|</artwork> | |||
</artwork> | </figure> | |||
</figure></t> | </section> | |||
</section> | <section anchor="app_motivation" numbered="true" toc="include" removeInRFC=" | |||
false" pn="section-appendix.b"> | ||||
<section title="Motivation for Supporting an Unreliable Transport" anchor="app | <name slugifiedName="name-motivation-for-supporting-a">Motivation for Supp | |||
:motivation"> | orting an Unreliable Transport</name> | |||
<t>This appendix is contained in this document as an aid to understand the b | <t indent="0" pn="section-appendix.b-1">This appendix is provided as an ai | |||
ackground and rationale for adding support for unreliable transport.</t> | d to understand the background and rationale for adding support for unreliable t | |||
ransport.</t> | ||||
<section anchor="motivation" title="Motivation"> | <section anchor="motivation" numbered="true" toc="include" removeInRFC="fa | |||
<t>In existing video conferencing deployments, BFCP is used to manage the | lse" pn="section-b.1"> | |||
floor for the content sharing associated with the conference. For peer to peer s | <name slugifiedName="name-motivation">Motivation</name> | |||
cenarios, including business to business conferences and point to point conferen | <t indent="0" pn="section-b.1-1">In existing video conferencing deployme | |||
ces in general, it is frequently the case that one or both endpoints exists behi | nts, BFCP is used to manage the floor for the content sharing associated with th | |||
nd a NAT. BFCP roles are negotiated in the offer/answer exchange as specified in | e conference. For peer-to-peer scenarios, including business-to-business confere | |||
<xref target="I-D.ietf-bfcpbis-rfc4583bis"/>, resulting in one endpoint being r | nces and point-to-point conferences in general, it is frequently the case that o | |||
esponsible for opening the TCP connection used for the BFCP communication.</t> | ne or both endpoints exist behind a NAT. BFCP roles are negotiated in the offer/ | |||
<t><figure align="left" anchor="use_case" title="Use Case"> | answer exchange as specified in <xref target="RFC8856" format="default" sectionF | |||
<artwork align="center"><![CDATA[ | ormat="of" derivedContent="12"/>, resulting in one endpoint being responsible fo | |||
r opening the TCP connection used for the BFCP communication.</t> | ||||
<figure anchor="use_case" align="left" suppress-title="false" pn="figure | ||||
-50"> | ||||
<name slugifiedName="name-use-case">Use case</name> | ||||
<artwork align="center" name="" type="" alt="" pn="section-b.1-2.1"> | ||||
+---------+ | +---------+ | |||
| Network | | | Network | | |||
+---------+ | +---------+ | |||
+-----+ / \ +-----+ | +-----+ / \ +-----+ | |||
| NAT |/ \| NAT | | | NAT |/ \| NAT | | |||
+-----+ +-----+ | +-----+ +-----+ | |||
+----+ / \ +----+ | +----+ / \ +----+ | |||
|BFCP|/ \|BFCP| | |BFCP|/ \|BFCP| | |||
| UA | | UA | | | UA | | UA | | |||
+----+ +----+ ]]></artwork> | +----+ +----+</artwork> | |||
</figure></t> | </figure> | |||
<t indent="0" pn="section-b.1-3">The communication session between the v | ||||
<t>The communication session between the video conferencing endpoints typi | ideo conferencing endpoints typically consists of a number of RTP over UDP media | |||
cally consists of a number of RTP over UDP media streams, for audio and video, a | streams for audio and video and a BFCP connection for floor control. Existing d | |||
nd a BFCP connection for floor control. Existing deployments are most common in, | eployments are most common in, but not limited to, enterprise networks. In exist | |||
but not limited to, enterprise networks. In existing deployments, NAT traversal | ing deployments, NAT traversal for the RTP streams works using ICE and/or other | |||
for the RTP streams works using ICE and/or other methods, including those descr | methods, including those described in <xref target="I-D.ietf-mmusic-media-path-m | |||
ibed in <xref target="I-D.ietf-mmusic-media-path-middleboxes"/>.</t> | iddleboxes" format="default" sectionFormat="of" derivedContent="36"/>.</t> | |||
<t>When enhancing an existing SIP based video conferencing deployment with | <t indent="0" pn="section-b.1-4">When enhancing an existing SIP-based vi | |||
support for content sharing, the BFCP connection often poses a problem. The rea | deo conferencing deployment with support for content sharing, the BFCP connectio | |||
sons for this fall into two general classes. First, there may be a strong prefer | n often poses a problem. The reasons for this fall into two general classes. Fir | |||
ence for UDP based signaling in general. On high capacity endpoints (e.g., PSTN | st, there may be a strong preference for UDP-based signaling in general. On high | |||
gateways or SIP/H.323 inter-working gateways), TCP can suffer from head of line | -capacity endpoints (e.g., Public Switched Telephone Network (PSTN) gateways or | |||
blocking, and it uses many kernel buffers. Network operators view UDP as a way t | SIP/H.323 inter-working gateways), TCP can suffer from head-of-line blocking, an | |||
o avoid both of these. Second, establishment and traversal of the TCP connection | d it uses many kernel buffers. Network operators view UDP as a way to avoid both | |||
involving ephemeral ports, as is typically the case with BFCP over TCP, can be | of these. Second, the establishment and traversal of the TCP connection involvi | |||
problematic, as described in Appendix A of <xref target="RFC6544"/>. A broad stu | ng ephemeral ports, as is typically the case with BFCP over TCP, can be problema | |||
dy of NAT behavior and peer-to-peer TCP establishment for a comprehensive set of | tic, as described in <xref target="RFC6544" section="A" sectionFormat="of" forma | |||
TCP NAT traversal techniques over a wide range of commercial NAT products concl | t="default" derivedLink="https://rfc-editor.org/rfc/rfc6544#appendix-A" derivedC | |||
uded it was not possible to establish a TCP connection in 11% of the cases <xref | ontent="34"/>. A broad study of NAT behavior and peer-to-peer TCP establishment | |||
target="IMC05"/>. The results are worse when focusing on enterprise NATs. A stu | for a comprehensive set of TCP NAT traversal techniques over a wide range of com | |||
dy of hole punching as a NAT traversal technique across a wide variety of deploy | mercial NAT products concluded that it was not possible to establish a TCP conne | |||
ed NATs reported consistently higher success rates when using UDP than when usin | ction in 11% of the cases <xref target="IMC05" format="default" sectionFormat="o | |||
g TCP <xref target="P2PNAT"/>.</t> | f" derivedContent="37"/>. The results are worse when focusing on enterprise NATs | |||
<t>It is worth noticing that BFCP over UDP is already being used in real d | . A study of hole-punching as a NAT traversal technique across a wide variety of | |||
eployments, underlining the necessity to specify a common way to exchange BFCP m | deployed NATs reported consistently higher success rates when using UDP than wh | |||
essages where TCP is not appropriate, to avoid a situation where multiple differ | en using TCP <xref target="P2PNAT" format="default" sectionFormat="of" derivedCo | |||
ent and non-interoperable implementations would co-exist in the market. The purp | ntent="38"/>.</t> | |||
ose of this draft is to formalize and publish the extension from the standard sp | <t indent="0" pn="section-b.1-5">It is worth noting that BFCP over UDP i | |||
ecification to facilitate complete interoperability between implementations.</t> | s already being used in real deployments, underlining the necessity to specify a | |||
common way to exchange BFCP messages where TCP is not appropriate, to avoid a s | ||||
<section anchor="alternatives" title="Alternatives Considered"> | ituation where multiple different and non-interoperable implementations would co | |||
<t>In selecting the approach of defining UDP as an alternate transport f | exist in the market. The purpose of this document is to extend the standard spec | |||
or BFCP, several alternatives were considered and explored to some degree. Each | ification to support unreliable transport in order to facilitate complete intero | |||
of these is discussed briefly in the following subsections. In summary, while th | perability between implementations.</t> | |||
e not chosen alternatives work in a number of scenarios, they are not sufficient | <section anchor="alternatives" numbered="true" toc="include" removeInRFC | |||
, in and of themselves, to address the use case targeted by this draft. The last | ="false" pn="section-b.1.1"> | |||
alternative, presented in <xref target="thisextension"/>, is the selected one a | <name slugifiedName="name-alternatives-considered">Alternatives Consid | |||
nd is specified in this draft.</t> | ered</name> | |||
<t>It is also worth noting that the IETF Transport Area were asked for a | <t indent="0" pn="section-b.1.1-1">In selecting the approach of defini | |||
way to tunnel TCP over UDP, but at that point there was no consensus on how to | ng UDP as an alternate transport for BFCP, several alternatives were considered | |||
achieve that.</t> | and explored to some degree. Each of these is discussed briefly in the following | |||
subsections. In summary, while the alternatives that were not chosen work in a | ||||
<section anchor="ice_tcp" title="ICE TCP"> | number of scenarios, they are not sufficient, in and of themselves, to address t | |||
<t>ICE TCP <xref target="RFC6544"/> extends ICE to TCP based media, in | he use case targeted by this document. The last alternative, presented in <xref | |||
cluding the ability to offer a mix of TCP and UDP based candidates for a single | target="thisextension" format="default" sectionFormat="of" derivedContent="Appen | |||
stream. ICE TCP has, in general, a lower success probability for enabling TCP co | dix B.1.1.7"/>, was selected and is specified in this document.</t> | |||
nnectivity without a relay if both of the hosts are behind a NAT (see Appendix A | <t indent="0" pn="section-b.1.1-2">It is also worth noting that the IE | |||
of <xref target="RFC6544"/>) than enabling UDP connectivity in the same scenari | TF Transport Area was asked for a way to tunnel TCP over UDP, but at that point | |||
os. The happens because many of the currently deployed NATs in video conferencin | there was no consensus on how to achieve that.</t> | |||
g networks do not support the flow of TCP hand shake packets seen in case of TCP | <section anchor="ice_tcp" numbered="true" toc="include" removeInRFC="f | |||
simultaneous-open, either because they do not allow incoming TCP SYN packets fr | alse" pn="section-b.1.1.1"> | |||
om an address to which a SYN packet has been sent to recently, or because they d | <name slugifiedName="name-ice-tcp">ICE TCP</name> | |||
o not properly process the subsequent SYNACK. Implementing various techniques ad | <t indent="0" pn="section-b.1.1.1-1">ICE TCP <xref target="RFC6544" | |||
vocated for candidate collection in <xref target="RFC6544"/> should increase the | format="default" sectionFormat="of" derivedContent="34"/> extends ICE to TCP-bas | |||
success probability, but many of these techniques require support from some net | ed media, including the ability to offer a mix of TCP- and UDP-based candidates | |||
work elements (e.g., from the NATs). Such support is not common in enterprise NA | for a single stream. ICE TCP has, in general, a lower success probability for en | |||
Ts.</t> | abling TCP connectivity without a relay if both of the hosts are behind a NAT (s | |||
</section> | ee <xref target="RFC6544" section="A" sectionFormat="of" format="default" derive | |||
dLink="https://rfc-editor.org/rfc/rfc6544#appendix-A" derivedContent="34"/>) tha | ||||
<section anchor="teredo" title="Teredo"> | n enabling UDP connectivity in the same scenarios. The happens because many of t | |||
<t>Teredo <xref target="RFC4380"/> enables nodes located behind one or | he currently deployed NATs in video conferencing networks do not support the flo | |||
more IPv4 NATs to obtain IPv6 connectivity by tunneling packets over UDP. Tere | w of TCP handshake packets seen in the case of TCP simultaneous-open, either bec | |||
do extensions <xref target="RFC6081"/> provide additional capabilities to Teredo | ause they do not allow incoming TCP SYN packets from an address to which a SYN p | |||
, including support for more types of NATs and support for more efficient commun | acket has been sent recently, or because they do not properly process the subseq | |||
ication.</t> | uent SYNACK. Implementing various techniques advocated for candidate collection | |||
<t>As defined, Teredo could be used to make BFCP work for the video co | in <xref target="RFC6544" format="default" sectionFormat="of" derivedContent="34 | |||
nferencing use cases addressed in this draft. However, running the service requi | "/> should increase the success probability, but many of these techniques requir | |||
res the help of "Teredo servers" and "Teredo relays" <xref target="RFC4380"/>. T | e support from some network elements (e.g., from the NATs). Such support is not | |||
hese servers and relays generally do not exist in the existing video conferencin | common in enterprise NATs.</t> | |||
g deployments. It also requires IPv6 awareness on the endpoints. It should also | </section> | |||
be noted that ICMP6, as used with Teredo to complete an initial protocol exchang | <section anchor="teredo" numbered="true" toc="include" removeInRFC="fa | |||
e and confirm that the appropriate NAT bindings have been set up, is not a conve | lse" pn="section-b.1.1.2"> | |||
ntional feature of IPv4 or even IPv6, and some currently deployed IPv6 firewalls | <name slugifiedName="name-teredo">Teredo</name> | |||
discard ICMP messages. As these networks continue to evolve and tackle the tran | <t indent="0" pn="section-b.1.1.2-1">Teredo <xref target="RFC4380" f | |||
saction to IPv6, Teredo servers and relays may be deployed, making Teredo availa | ormat="default" sectionFormat="of" derivedContent="31"/> enables nodes located b | |||
ble as a suitable alternative to BFCP over UDP.</t> | ehind one or more IPv4 NATs to obtain IPv6 connectivity by tunneling packets ove | |||
</section> | r UDP. Teredo extensions <xref target="RFC6081" format="default" sectionFormat= | |||
"of" derivedContent="32"/> provide additional capabilities to Teredo, including | ||||
<section anchor="gut" title="GUT"> | support for more types of NATs and support for more efficient communication.</t> | |||
<t>GUT <xref target="I-D.manner-tsvwg-gut"/> attempts to facilitate tu | <t indent="0" pn="section-b.1.1.2-2">As defined, Teredo could be use | |||
nneling over UDP by encapsulating the native transport protocol and its payload | d to make BFCP work for the video conferencing use cases addressed in this docum | |||
(in general the whole IP payload) within a UDP packet destined to the well-known | ent. However, running the service requires the help of "Teredo servers" and "Ter | |||
port GUT_P. Unfortunately, it requires user-space TCP, for which there is not a | edo relays" <xref target="RFC4380" format="default" sectionFormat="of" derivedCo | |||
readily available implementation, and creating one is a large project in itself | ntent="31"/>. These servers and relays generally do not exist in current video c | |||
. This draft has expired and its future is still not clear as it has not yet bee | onferencing deployments. It also requires IPv6 awareness on the endpoints. It sh | |||
n adopted by a working group.</t> | ould also be noted that ICMP6, as used with Teredo to complete an initial protoc | |||
</section> | ol exchange and confirm that the appropriate NAT bindings have been set up, is n | |||
ot a conventional feature of IPv4 or even IPv6, and some currently deployed IPv6 | ||||
<section anchor="upnp_igd" title="UPnP IGD"> | firewalls discard ICMP messages. As these networks continue to evolve and tackl | |||
<t>Universal Plug and Play Internet Gateway Devices (UPnP IGD) sit on | e the transaction to IPv6, Teredo servers and relays may be deployed, making Ter | |||
the edge of the network, providing connectivity to the Internet for computers in | edo available as a suitable alternative to BFCP over UDP.</t> | |||
ternal to the LAN, but do not allow Internet devices to connect to computers on | </section> | |||
the internal LAN. IGDs enable a computer on an internal LAN to create port mappi | <section anchor="gut" numbered="true" toc="include" removeInRFC="false | |||
ngs on their NAT, through which hosts on the Internet can send data that will be | " pn="section-b.1.1.3"> | |||
forwarded to the computer on the internal LAN. IGDs may be self-contained hardw | <name slugifiedName="name-gut">GUT</name> | |||
are devices or may be software components provided within an operating system.</ | <t indent="0" pn="section-b.1.1.3-1">GUT <xref target="I-D.manner-ts | |||
t> | vwg-gut" format="default" sectionFormat="of" derivedContent="35"/> | |||
<t>In considering UPnP IGD, several issues exist. Not all NATs support | attempts to facilitate tunneling over UDP by encapsulating the | |||
UPnP, and many that do support it are configured with it turned off by default. | native transport protocol and its payload (in general the whole IP | |||
NATs are often multilayered, and UPnP does not work well with such NATs. For ex | payload) within a UDP packet destined to the well-known port | |||
ample, a typical DSL modems acts as a NAT, and the user plugs in a wireless acce | GUT_P. Unfortunately, it requires user-space TCP, for which there | |||
ss point behind that, which adds another layer NAT. The client can discover the | is not a readily available implementation, and creating one is a | |||
first layer of NAT using multicast but it is harder to figure out how to discove | large project in itself. This document has expired, and its future is | |||
r and control NATs in the next layer up.</t> | still unclear as it has not yet been adopted by a working group.</t> | |||
</section> | </section> | |||
<section anchor="upnp_igd" numbered="true" toc="include" removeInRFC=" | ||||
<section anchor="nat_pmp" title="NAT PMP"> | false" pn="section-b.1.1.4"> | |||
<t>The NAT Port Mapping Protocol (NAT PMP) allows a computer in a priv | <name slugifiedName="name-upnp-igd">UPnP IGD</name> | |||
ate network (behind a NAT router) to automatically configure the router to allow | <t indent="0" pn="section-b.1.1.4-1">Universal Plug and Play Interne | |||
parties outside the private network to contact it. NAT PMP runs over UDP. It es | t Gateway Devices (UPnP IGD) sit on the edge of the network, providing connectiv | |||
sentially automates the process of port forwarding. Included in the protocol is | ity to the Internet for computers internal to the LAN, but do not allow Internet | |||
a method for retrieving the public IP address of a NAT gateway, thus allowing a | devices to connect to computers on the internal LAN. IGDs enable a computer on | |||
client to make this public IP address and port number known to peers that may wi | an internal LAN to create port mappings on their NAT, through which hosts on the | |||
sh to communicate with it.</t> | Internet can send data that will be forwarded to the computer on the internal L | |||
<t>Many NATs do not support PMP. In those that do support it, it has s | AN. IGDs may be self-contained hardware devices or may be software components pr | |||
imilar issues with negotiation of multilayer NATs as UPnP. Video conferencing is | ovided within an operating system.</t> | |||
used extensively in enterprise networks, and NAT PMP is not generally available | <t indent="0" pn="section-b.1.1.4-2">In considering UPnP IGD, severa | |||
in enterprise-class routers.</t> | l issues exist. Not all NATs support UPnP, and many that do support it are confi | |||
</section> | gured with it turned off by default. NATs are often multilayered, and UPnP does | |||
not work well with such NATs. For example, a typical DSL modem acts as a NAT, an | ||||
<section anchor="sctp_udp" title="SCTP"> | d the user plugs in a wireless access point behind that, which adds another laye | |||
<t>It would be quite straight forward to specify a BFCP binding for SC | r of NAT. The client can discover the first layer of NAT using multicast, but it | |||
TP <xref target="RFC4960"/>, and then tunnel SCTP over UDP in the use case descr | is harder to figure out how to discover and control NATs in the next layer up.< | |||
ibed in <xref target="motivation"/>. SCTP is gaining some momentum currently. Th | /t> | |||
ere was ongoing discussion in the RTCWeb WG regarding this approach, which resul | </section> | |||
ted in <xref target="RFC6951"/>. However, this approach for tunneling over UDP w | <section anchor="nat_pmp" numbered="true" toc="include" removeInRFC="f | |||
as not mature enough when considered and not even fully specified.</t> | alse" pn="section-b.1.1.5"> | |||
</section> | <name slugifiedName="name-nat-pmp">NAT PMP</name> | |||
<t indent="0" pn="section-b.1.1.5-1">The NAT Port Mapping Protocol ( | ||||
<section anchor="thisextension" title="BFCP over UDP transport"> | NAT PMP) allows a computer in a private network (behind a NAT router) to automat | |||
<t>To overcome the problems with establishing TCP flows between BFCP e | ically configure the router to allow parties outside the private network to cont | |||
ntities, an alternative is to define UDP as an alternate transport for BFCP, lev | act it. NAT PMP runs over UDP. It essentially automates the process of port forw | |||
eraging the same mechanisms in place for the RTP over UDP media streams for the | arding. Included in the protocol is a method for retrieving the public IP addres | |||
BFCP communication. When using UDP as the transport, it is recommended to follow | s of a NAT gateway, thus allowing a client to make this public IP address and po | |||
the guidelines provided in <xref target="RFC5405"/>.</t> | rt number known to peers that may wish to communicate with it.</t> | |||
<t>Minor changes to the transaction model are introduced in that all r | <t indent="0" pn="section-b.1.1.5-2">Many NATs do not support PMP. I | |||
equests now have an appropriate response to complete the transaction. The reques | n those that do support it, it has similar issues with negotiation of multilayer | |||
ts are sent with a retransmit timer associated with the response to achieve reli | NATs as UPnP. Video conferencing is used extensively in enterprise networks, an | |||
ability. This alternative does not change the semantics of BFCP. It permits UDP | d NAT PMP is not generally available in enterprise-class routers.</t> | |||
as an alternate transport.</t> | </section> | |||
<t>Existing implementations, in the spirit of the approach detailed in | <section anchor="sctp_udp" numbered="true" toc="include" removeInRFC=" | |||
earlier versions of this draft, have demonstrated this approach to be feasible. | false" pn="section-b.1.1.6"> | |||
Initial compatibility among implementations has been achieved at previous inter | <name slugifiedName="name-sctp">SCTP</name> | |||
operability events. The authors view this extension as a pragmatic solution to a | <t indent="0" pn="section-b.1.1.6-1">It would be quite straightforwa | |||
n existing deployment challenge. This is the chosen approach, and the extensions | rd to specify a BFCP binding for Stream Control Transmission Protocol (SCTP) <xr | |||
are specified in this document.</t> | ef target="RFC4960" format="default" sectionFormat="of" derivedContent="33"/>, a | |||
nd then tunnel SCTP over UDP in the use case described in <xref target="motivati | ||||
on" format="default" sectionFormat="of" derivedContent="Appendix B.1"/>. SCTP is | ||||
gaining some momentum currently. There was ongoing discussion in the RTCWeb Wor | ||||
king Group regarding this approach, which resulted in <xref target="RFC6951" for | ||||
mat="default" sectionFormat="of" derivedContent="29"/>. However, this approach t | ||||
o tunneling over UDP was not mature enough when considered and was not even full | ||||
y specified.</t> | ||||
</section> | ||||
<section anchor="thisextension" numbered="true" toc="include" removeIn | ||||
RFC="false" pn="section-b.1.1.7"> | ||||
<name slugifiedName="name-bfcp-over-udp-transport">BFCP over UDP Tra | ||||
nsport</name> | ||||
<t indent="0" pn="section-b.1.1.7-1">To overcome the problems with e | ||||
stablishing TCP flows between BFCP entities, an alternative is to define UDP as | ||||
an alternate transport for BFCP, leveraging the same mechanisms in place for the | ||||
RTP over UDP media streams for the BFCP communication. When using UDP as the tr | ||||
ansport, following the guidelines provided in <xref target="RFC8085" format="def | ||||
ault" sectionFormat="of" derivedContent="15"/> is recommended.</t> | ||||
<t indent="0" pn="section-b.1.1.7-2">Minor changes to the transactio | ||||
n model have been introduced in that all requests now have an appropriate respon | ||||
se to complete the transaction. The requests are sent with a retransmission time | ||||
r associated with the response to achieve reliability. This alternative does not | ||||
change the semantics of BFCP. It permits UDP as an alternate transport.</t> | ||||
<t indent="0" pn="section-b.1.1.7-3">Existing implementations, in th | ||||
e spirit of the approach detailed in earlier draft versions of this document, ha | ||||
ve demonstrated that this approach is feasible. Initial compatibility among impl | ||||
ementations has been achieved at previous interoperability events. The authors v | ||||
iew this extension as a pragmatic solution to an existing deployment challenge. | ||||
This is the chosen approach, and the extensions are specified in this document.< | ||||
/t> | ||||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | <section anchor="sec_acks" numbered="false" toc="include" removeInRFC="false | |||
" pn="section-appendix.c"> | ||||
</back> | <name slugifiedName="name-acknowledgements">Acknowledgements</name> | |||
<t indent="0" pn="section-appendix.c-1">The XCON Working Group chairs, <co | ||||
ntact fullname="Adam Roach"/> and <contact fullname="Alan Johnston"/>, provided | ||||
useful ideas for RFC 4582 <xref target="RFC4582" format="default" sectionFormat= | ||||
"of" derivedContent="3"/>. Additionally, <contact fullname="Xiaotao Wu"/>, <cont | ||||
act fullname="Paul Kyzivat"/>, <contact fullname="Jonathan Rosenberg"/>, <contac | ||||
t fullname="Miguel A. Garcia-Martin"/>, <contact fullname="Mary Barnes"/>, <cont | ||||
act fullname="Ben Campbell"/>, <contact fullname="Dave Morgan"/>, and <contact f | ||||
ullname="Oscar Novo"/> provided useful comments during the work with RFC 4582. T | ||||
he authors also acknowledge contributions to the revision of BFCP for use over a | ||||
n unreliable transport from <contact fullname="Geir Arne Sandbakken"/> who had t | ||||
he initial idea, <contact fullname="Alfred E. Heggestad"/>, <contact fullname="T | ||||
rond G. Andersen"/>, <contact fullname="Gonzalo Camarillo"/>, <contact fullname= | ||||
"Roni Even"/>, <contact fullname="Lorenzo Miniero"/>, <contact fullname="Jörg Ot | ||||
t"/>, <contact fullname="Eoin McLeod"/>, <contact fullname="Mark K. Thompson"/>, | ||||
<contact fullname="Hadriel Kaplan"/>, <contact fullname="Dan Wing"/>, <contact | ||||
fullname="Cullen Jennings"/>, <contact fullname="David Benham"/>, <contact fulln | ||||
ame="Nivedita Melinkeri"/>, <contact fullname="Woo Johnman"/>, <contact fullname | ||||
="Vijaya Mandava"/>, and <contact fullname="Alan Ford"/>. In the final phase, <c | ||||
ontact fullname="Ernst Horvath"/> did a thorough review, revealing issues that n | ||||
eeded clarification and changes. Useful and important final reviews were done by | ||||
<contact fullname="Mary Barnes"/>. <contact fullname="Paul Jones"/> helped tre | ||||
mendously as editor for changes addressing IESG review comments.</t> | ||||
</section> | ||||
<section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
="include" pn="section-appendix.d"> | ||||
<name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
<author initials="G." surname="Camarillo" fullname="Gonzalo Camarillo"> | ||||
<organization showOnFrontPage="true">Ericsson</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Hirsalantie 11</street> | ||||
<code>02420</code> | ||||
<city>Jorvas</city> | ||||
<country>Finland</country> | ||||
</postal> | ||||
<email>gonzalo.camarillo@ericsson.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="K." surname="Drage" fullname="Keith Drage"> | ||||
<address> | ||||
<postal> | ||||
</postal> | ||||
<email>drageke@ntlworld.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Tom Kristensen" initials="T." surname="Kristensen"> | ||||
<organization abbrev="Jotron" showOnFrontPage="true">Jotron AS</organiza | ||||
tion> | ||||
<address> | ||||
<postal> | ||||
<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="J." surname="Ott" fullname="Jörg Ott"> | ||||
<organization showOnFrontPage="true">Technical University Munich</organi | ||||
zation> | ||||
<address> | ||||
<postal> | ||||
<street>Boltzmannstrasse 3</street> | ||||
<code>85748</code> | ||||
<city>Garching</city> | ||||
<country>Germany</country> | ||||
</postal> | ||||
<email>ott@in.tum.de</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Charles Eckel" initials="C." surname="Eckel"> | ||||
<organization showOnFrontPage="true">Cisco</organization> | ||||
<address> | ||||
<postal> | ||||
<street>707 Tasman Drive</street> | ||||
<city>Milpitas</city> | ||||
<region>California</region> | ||||
<code>95035</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>eckelcu@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 92 change blocks. | ||||
3173 lines changed or deleted | 6538 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |