Description
The Binary Floor Control Protocol (BFCP) is a client-server protocol standardized by the IETF and adopted by 3GPP for use within the IP Multimedia Subsystem (IMS). It operates over reliable transport protocols, typically TCP or TLS over TCP, to manage contention for shared resources, most notably the 'floor' in a conference. A floor represents temporary, exclusive permission to utilize a resource, such as sending audio or video in a multimedia session. BFCP enables a centralized Floor Control Server (FCS) to receive floor requests from clients (e.g., User Equipments or conference participants), arbitrate these requests based on policy, and grant or deny the floor, thereby preventing collisions and ensuring orderly media transmission.
Architecturally, BFCP involves several key entities: the Floor Participant (client), the Floor Chair (an entity that can approve requests, often used in moderated conferences), and the Floor Control Server. The protocol defines a set of binary messages for floor control operations, including FloorRequest, FloorRelease, FloorGrant, and FloorDeny. These messages are exchanged within the context of a BFCP connection, which is established using a conference-specific identifier and user identifiers. The FCS maintains the state of each floor and the associated requests, making decisions based on a first-come-first-served policy, chair decisions, or other configured policies.
In a 3GPP IMS context, BFCP is integrated with the Session Initiation Protocol (SIP) and the Session Description Protocol (SDP). The conference focus, typically a SIP Application Server (AS) like the Multimedia Resource Function Controller (MRFC), often acts as or controls the FCS. During session establishment, SDP is used to negotiate and indicate support for BFCP, including the port and transport for the BFCP connection. Once a media session is active, BFCP messages are exchanged out-of-band from the media streams to control which participant's media is forwarded or given priority, which is essential for services like audio/video conferencing, push-to-talk, and interactive gaming.
BFCP's role is critical for managing Quality of Experience (QoE) in collaborative sessions. By providing deterministic, conflict-free access to shared resources, it prevents scenarios where multiple participants transmit simultaneously, causing garbled audio or video. The protocol supports features like floor request queuing, chair oversight, and status notifications, allowing for complex conferencing scenarios. Its binary nature makes it efficient for transmission compared to text-based protocols, which is important for real-time control where low latency is desired.
Purpose & Motivation
BFCP was created to address the need for a standardized, efficient mechanism to manage shared resources in real-time multimedia conferences, particularly within the IP-based architectures of 3GPP IMS and IETF conferencing frameworks. Prior to BFCP, conferencing systems often used proprietary signaling or basic moderator controls, which lacked interoperability and could not guarantee fair or conflict-free access in large-scale, multi-vendor environments. The protocol solves the fundamental problem of 'floor control'—determining who has the right to send media at any given time—which is essential for orderly communication in scenarios like teleconferences, webinars, and push-to-talk over cellular (PoC).
The motivation stems from the limitations of using media-level mechanisms (like talker detection) or simple SIP signaling alone, which are insufficient for complex arbitration and policy enforcement. BFCP provides an explicit, out-of-band control channel dedicated to resource management, separating the control logic from the media transport. This allows for sophisticated policies, such as queuing requests, chair moderation, and priority handling, which are necessary for professional and mission-critical communication services. Its adoption in 3GPP standards enabled the delivery of standardized, carrier-grade conferencing and group communication services over mobile networks.
Historically, BFCP's development was driven by the IETF's Centralized Conferencing (XCON) working group and was incorporated into 3GPP specifications to fulfill requirements for Multimedia Telephony (MMTel) and conferencing services. It provided a key enabler for IMS-based group communication, allowing network operators to offer feature-rich, controllable conferencing as part of their service portfolios. By solving the floor arbitration problem in a standardized way, BFCP facilitated interoperability between different vendors' client and server equipment, which was a significant step forward for the ecosystem of real-time collaborative applications.
Key Features
- Binary message format for efficient parsing and transmission
- Client-server architecture with a central Floor Control Server (FCS) for arbitration
- Integration with SIP and SDP for session establishment and capability negotiation
- Support for floor request, grant, release, deny, and status notification primitives
- Mechanisms for floor chair control for moderated conferences
- Reliable transport over TCP or TLS for assured delivery of control messages
Evolution Across Releases
Introduced BFCP within 3GPP to support IMS-based Multimedia Telephony (MMTel) and conferencing services. The initial architecture defined the use of BFCP for floor control in conferences, specifying integration with SIP and the MRFC/MRFP. It provided the foundational procedures for establishing BFCP connections and basic floor management.
Defining Specifications
| Specification | Title |
|---|---|
| TS 23.333 | 3GPP TS 23.333 |
| TS 23.334 | 3GPP TS 23.334 |
| TS 23.701 | 3GPP TS 23.701 |
| TS 24.103 | 3GPP TS 24.103 |
| TS 24.147 | 3GPP TS 24.147 |
| TS 24.229 | 3GPP TS 24.229 |
| TS 24.803 | 3GPP TS 24.803 |
| TS 26.114 | 3GPP TS 26.114 |
| TS 26.223 | 3GPP TS 26.223 |
| TS 26.923 | 3GPP TS 26.923 |
| TS 26.980 | 3GPP TS 26.980 |
| TS 26.982 | 3GPP TS 26.982 |
| TS 29.162 | 3GPP TS 29.162 |
| TS 29.333 | 3GPP TS 29.333 |
| TS 29.334 | 3GPP TS 29.334 |
| TS 29.828 | 3GPP TS 29.828 |
| TS 33.328 | 3GPP TR 33.328 |