Session Description Protocol (SDP) Format for Binary Floor Control Protocol (BFCP) Streams
obsoleted by
- rfc-8856 — Session Description Protocol (SDP) Format for Binary Floor Control Protocol (BFCP) Streams
Extracted elements (21)
BFCP is described as a media stream using an SDP 'm' line in the offer/answer model, rather than defining a separate out-of-band signaling mechanism, allowing reuse of existing offer/answer infrastructure for connection establishment.
If 'floorctrl' is not used in an offer/answer exchange, by default the offerer acts as a floor control client and the answerer acts as a floor control server. This default avoids requiring 'floorctrl' in simple client-server scenarios.
BFCP clients and floor control servers follow the rules in RFC 4572 regarding certificate choice and presentation for TLS connections established via the offer/answer model. SIP with S/MIME provides the initial integrity-protected channel for exchanging self-signed certificates.
Endpoints MUST support the 'fingerprint' attribute and SHOULD include it in their session descriptions. Unless a 'fingerprint' attribute is included, the TLS certificate MUST be directly signed by or validated via a path to the other party's trust anchors.
Endpoints that use the offer/answer model to establish BFCP connections MUST support the 'setup' and 'connection' attributes (from RFC 4145) for TCP connection management.
If an 'm' line in an offer contains a 'floorctrl' attribute, the answerer MUST include one in the corresponding 'm' line in the answer, choosing a role consistent with the offerer's stated roles (per Table 1).
The fmt list of BFCP 'm' lines SHOULD contain a single '*' character, as the format list is otherwise ignored for BFCP.
The media field in the SDP 'm' line for a BFCP stream MUST have a value of 'application'.
When the existing TCP connection is reset, the client SHOULD generate an offer towards the floor control server to reestablish the connection. If a TCP connection times out, the entity that detected the timeout SHOULD generate an offer to reestablish.
When TLS is used, once the underlying TCP connection is established, the answerer acts as the TLS server regardless of its role (passive or active) in the TCP establishment procedure.
The 'confid' and 'userid' SDP media-level attributes are defined to carry a conference ID and user ID respectively, provided by the floor control server. ABNF: confid-attribute = 'a=confid:' conference-id; userid-attribute = 'a=userid:' user-id, where each is a token (integer representation).
The 'floorctrl' SDP media-level attribute is defined to perform floor control server determination. Its ABNF is: floor-control-attribute = 'a=floorctrl:' role *(SP role), where role = 'c-only' / 's-only' / 'c-s'.
The 'floorid' SDP media-level attribute associates a floor identifier with one or more media streams. ABNF: floor-id-attribute = 'a=floorid:' token [' mstrm:' token *(SP token)], where the floor ID token is the integer Floor ID used in BFCP and media stream tokens are SDP label attribute pointers.
Two new SDP transport protocol values are defined: TCP/BFCP (BFCP directly over TCP) and TCP/TLS/BFCP (BFCP over TLS over TCP). The fmt list for BFCP 'm' lines SHOULD contain a single '*' character.
IANA registered the SDP media-level attribute 'confid' (Conference Identifier) under the SDP Parameters registry. Carries the integer representation of a Conference ID as a token.
IANA registered the SDP media-level attribute 'floorctrl' (Floor Control) under the SDP Parameters registry. Allowed values: 1*("c-only" / "s-only" / "c-s"). Not subject to charset.
IANA registered the SDP media-level attribute 'floorid' (Floor Identifier) under the SDP Parameters registry. Associates a floor with one or more media streams; allowed values are tokens.
IANA registered the SDP media-level attribute 'userid' (User Identifier) under the SDP Parameters registry. Carries the integer representation of a User ID as a token.
IANA registered two new values for the SDP 'proto' field under the SDP Parameters registry: TCP/BFCP and TCP/TLS/BFCP, both referencing RFC 4583.
BFCP assumes an initial integrity-protected channel is used to exchange self-signed certificates between a client and floor control server. For SDP carried in SIP, S/MIME is the natural choice for this channel, enabling TLS-based mutual authentication for the BFCP connection.
The SDP 'm' line for BFCP uses media='application', a TCP port (or 9 for the initiating side), transport='TCP/BFCP' or 'TCP/TLS/BFCP', and fmt='*'. A port of zero indicates rejection of the media stream.