One document matched: draft-camarillo-xcon-bfcp-00.txt
XCON Working Group G. Camarillo
Internet-Draft Ericsson
Expires: September 30, 2004 J. Ott
Universitaet Bremen
K. Drage
Lucent Technologies
April 2004
The Binary Floor Control Protocol (BFCP)
draft-camarillo-xcon-bfcp-00.txt
Status of this Memo
By submitting this Internet-Draft, I certify that any applicable
patent or other IPR claims of which I am aware have been disclosed,
and any of which I become aware will be disclosed, in accordance with
RFC 3668.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 30, 2004.
Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract
This document specicies the Binary Floor Control Protocol (BFCP).
BFCP is used between conference participants and floor control
servers, and between floor chairs and floor control servers.
Camarillo, et al. Expires September 30, 2004 [Page 1]
Internet-Draft BFCP April 2004
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Overview of Operation . . . . . . . . . . . . . . . . . . . 5
4. Packet Format . . . . . . . . . . . . . . . . . . . . . . . 5
4.1 FIXED-HEADER Format . . . . . . . . . . . . . . . . . . . 5
4.2 Attribute Format . . . . . . . . . . . . . . . . . . . . . 6
4.2.1 FLOOR-ID . . . . . . . . . . . . . . . . . . . . . . . 7
4.2.2 USER-ID . . . . . . . . . . . . . . . . . . . . . . . 7
4.2.3 REQUEST-ID . . . . . . . . . . . . . . . . . . . . . . 7
4.2.4 HUMAN-READABLE-INFO . . . . . . . . . . . . . . . . . 7
4.2.5 TOKEN . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2.6 REQUEST-STATUS . . . . . . . . . . . . . . . . . . . . 8
4.2.7 ERROR-CODE . . . . . . . . . . . . . . . . . . . . . . 9
4.2.8 USER-DISPLAY-NAME . . . . . . . . . . . . . . . . . . 11
4.2.9 USER-URI . . . . . . . . . . . . . . . . . . . . . . . 11
4.2.10 PRIORITY . . . . . . . . . . . . . . . . . . . . . . 11
5. Message Format . . . . . . . . . . . . . . . . . . . . . . . 11
5.1 FloorRequest . . . . . . . . . . . . . . . . . . . . . . . 11
5.2 FloorRelease . . . . . . . . . . . . . . . . . . . . . . . 12
5.3 FloorRequestStatus . . . . . . . . . . . . . . . . . . . . 12
5.4 FloorStatus . . . . . . . . . . . . . . . . . . . . . . . 12
5.5 ChairAction . . . . . . . . . . . . . . . . . . . . . . . 13
5.6 Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.7 PingAck . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.8 Error . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6. bfcp and bfcps URI Definitions . . . . . . . . . . . . . . . 14
7. Contacting a bfcp or bfcps URI . . . . . . . . . . . . . . . 15
7.1 Selecting a Transport Protocol . . . . . . . . . . . . . . 15
7.2 Determining Port and IP Address . . . . . . . . . . . . . 16
7.3 Lower-Layer Security . . . . . . . . . . . . . . . . . . . 17
7.4 Conference ID, User ID, and Token Values . . . . . . . . . 17
8. Client Operations . . . . . . . . . . . . . . . . . . . . . 18
8.1 Requesting a Floor . . . . . . . . . . . . . . . . . . . . 18
8.1.1 Receiving Responses . . . . . . . . . . . . . . . . . 19
8.2 Cancelling a Floor Request . . . . . . . . . . . . . . . . 19
8.2.1 Receiving Responses . . . . . . . . . . . . . . . . . 20
8.3 Releasing Floors . . . . . . . . . . . . . . . . . . . . . 20
8.3.1 Receiving Responses . . . . . . . . . . . . . . . . . 21
8.4 Checking the Liveness of a Server . . . . . . . . . . . . 21
8.4.1 Receiving Responses . . . . . . . . . . . . . . . . . 21
8.5 Responding to a Ping Message . . . . . . . . . . . . . . . 22
9. Chair Operations . . . . . . . . . . . . . . . . . . . . . . 22
9.1 Obtaining Information about Floor Requests . . . . . . . . 22
9.2 Instructing the Floor Control Server . . . . . . . . . . . 22
10. Server Operations . . . . . . . . . . . . . . . . . . . . . 23
10.1 Reception of a FloorRequest Message . . . . . . . . . . 23
Camarillo, et al. Expires September 30, 2004 [Page 2]
Internet-Draft BFCP April 2004
10.2 Checking the Liveness of a Client or Chair . . . . . . . 24
10.2.1 Receiving a PingAck Message . . . . . . . . . . . . 25
10.3 Responding to a Ping Message . . . . . . . . . . . . . . 25
10.4 Informing about the Status of a Floor . . . . . . . . . 25
10.5 Receiving a ChairAction Message . . . . . . . . . . . . 25
10.6 Error Message Generation . . . . . . . . . . . . . . . . 26
11. Security Considerations . . . . . . . . . . . . . . . . . . 26
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . 26
12.1 bfcp and bfcps URI Schemes Registration . . . . . . . . 26
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 27
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 27
14.1 Normative References . . . . . . . . . . . . . . . . . . . 27
14.2 Informational References . . . . . . . . . . . . . . . . . 28
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 28
Intellectual Property and Copyright Statements . . . . . . . 30
Camarillo, et al. Expires September 30, 2004 [Page 3]
Internet-Draft BFCP April 2004
1. Introduction
Conference applications may need to manage the access to a set of
shared resources such as the right to send media over a particular
media stream. Floor control enables such applications to provide
users with safe access to these resources.
The Requirements for Floor Control Protocol [11] 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, meets these requirements.
BFCP provides a means for a floor control server to grant or deny
requests to access a given resource from users. Nevertheless, BFCP
does not allow floor control servers to keep a particular user or set
of users from actually accessing the resource. Enforcing policy
decisions is outside the scope of BFCP. In any case, one possible way
to implement policy enforcement is to have the floor control server
provide the conference policy server (e.g., using CPCP [12]) with
policies that the conference policy server will apply to the
conference.
Floor control servers identify users using a 32-bit user ID. The way
a conference server provides a user with its 32-bit user ID is out of
the scope of this document.
BFCP assumes that conference servers, after authenticating a user,
provides this user with a token, in addition to the user's user ID.
The user's client needs to include this token in its requests to
prove that they belong to the same user as the conference server
authenticated previously. The way a conference server provides a user
with such a token in a secure fashion falls outside the scope of this
document.
Section 2 defines the terminology used throughout this document,
Section 3 provides a non-normative overview of BFCP operation, and
subsequent sections provide the normative specification of BFCP.
2. Terminology
In this document, the key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as
described in BCP 14, RFC 2119 [1] and indicate requirement levels for
compliant implementations.
Floor: A permission to temporarily access or manipulate a specific
shared resource or set of resources.
Camarillo, et al. Expires September 30, 2004 [Page 4]
Internet-Draft BFCP April 2004
Floor chair: A user (or an entity) who manages one floor (grants,
denies, or revokes a floor). The floor chair does not have to be a
member in a conference.
Floor control: A mechanism that enables applications or users to gain
safe and mutually exclusive or non-exclusive input access to the
shared object or resource.
Floor control server: 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 server.
3. Overview of Operation
TBD: the Introduction and this section need more work.
4. Packet Format
BFCP packets consist of an 8-byte fixed header followed by
attributes. All the protocol values MUST be sent in network byte
order.
4.1 FIXED-HEADER Format
The following is the FIXED-HEADER format.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ver |Reserved | Primitive | Payload Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Conference ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ver: the 3-bit version field MUST be set to 1 to indicate this
version of BFCP.
Reserved: at this point, the 5 bits in the reserved field SHOULD be
set to zero by the sender of the message and MUST be ignored by the
receiver.
Primitive: this 8-bit field identifies the main purpose of the
message. The following primitive values are defined:
Value Primitive Direction
Camarillo, et al. Expires September 30, 2004 [Page 5]
Internet-Draft BFCP April 2004
_________________________________________________________
0 FloorRequest C -> S
1 FloorRelease C -> S
2 FloorRequestStatus S -> C
3 FloorStatus S -> C ; S -> Ch
4 ChairAction Ch -> S
5 Ping C <-> S ; Ch <-> S
6 PingAck C <-> S ; Ch <-> S
7 Error S -> C ; S -> Ch
S: Server C: Client Ch: Chair
Payload Length: this 16-bit field contains length of the message in
4-byte units excluding the fixed header.
Conference ID: this 32-bit identifies the conference the message
belongs to.
4.2 Attribute Format
BFCP attributes are encoded in TLV (Type-Length-Value) format. TLVs
are 32-bit aligned.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |M| Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
/ Attribute Contents /
/ /
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: this 7-bit field contains the code for the attribute.
M: the 'M' bit, known as the Mandatory bit, indicates whether support
of the attribute is required. If an unrecognized attribute with the
'M' bit set is received, the message is rejected.
Length: this 8-bit field contains the length of the attribute in
bytes, excluding any padding defined for specific attributes. The
Type, 'M' bit, and Length fields are included.
Attribute Contents: the contents of the different TLVs are defined in
the following sections.
Camarillo, et al. Expires September 30, 2004 [Page 6]
Internet-Draft BFCP April 2004
4.2.1 FLOOR-ID
The following is the format of the contents of the FLOOR-ID
attribute, whose attribute type is 1.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 1 |M| Length | Floor ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Floor ID: this field contains a 16-bit value that uniquely identifies
a floor within a conference.
4.2.2 USER-ID
The following is the format of the contents of the USER-ID attribute,
whose attribute type is 2.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 2 |M| Length | User ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
User ID: this field contains a 16-bit value that uniquely identifies
a user within a conference.
4.2.3 REQUEST-ID
The following is the format of the contents of the REQUEST-ID
attribute, whose attribute type is 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 3 |M| Length | Request ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Request ID: this field contains a 16-bit value that allows users to
match a given message with its responses.
4.2.4 HUMAN-READABLE-INFO
The following is the format of the contents of the
Camarillo, et al. Expires September 30, 2004 [Page 7]
Internet-Draft BFCP April 2004
HUMAN-READABLE-INFO attribute, whose attribute type is 4.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 4 |M| Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
/ Text /
/ +-+-+-+-+-+-+-+-+
| | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Text: this field contains UTF-8 [10] encoded text.
In some situations, the contents of the Text field may be generated
by an automata. If such automata has information about the preferred
language of the receiver of a particular HUMAN-READABLE-INFO TLV, it
may use this language to generate the Text field.
Padding: one, two, or three bytes of padding added so that the
contents of the HUMAN-READABLE-INFO TLV is 32-bit aligned. The
Padding bits SHOULD be set to zero by the sender and MUST be ignored
by the receiver. If the TLV is already 32-bit aligned, no padding is
needed.
4.2.5 TOKEN
The following is the format of the contents of the TOKEN attribute,
whose attribute type is 5.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 5 |M| Length | Token |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Token: this field contains a 16-bit token used to authenticate the
user.
4.2.6 REQUEST-STATUS
The following is the format of the contents of the REQUEST-STATUS
attribute, whose attribute type is 6.
Camarillo, et al. Expires September 30, 2004 [Page 8]
Internet-Draft BFCP April 2004
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 6 |M| Length | Request Status |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Queue Position | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Request Status: this 16-bit field contains the status of the request,
as described in the following table.
Value Status
______________________________
0 Pending
1 Accepted
2 Granted
3 Denied
4 Cancelled
5 Released
6 Revoked
Queue Position: this 16-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, the
floor control server does not implement a floor request queue, or the
floor control server does not want to provide the client with this
information, all the bits of this field SHOULD be set to zero.
A floor request is in Pending state if the floor control server needs
to contact a floor chair in order to accept the 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.
Padding: two bytes of padding added so that the contents of the
REQUEST-STATUS TLV is 32-bit aligned. The Padding bits SHOULD be set
to zero by the sender and MUST be ignored by the receiver.
4.2.7 ERROR-CODE
The following is the format of the contents of the ERROR-CODE
attribute, whose attribute type is 7.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 7 |M| Length | Error Code |
Camarillo, et al. Expires September 30, 2004 [Page 9]
Internet-Draft BFCP April 2004
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Error Specific Details |
/ /
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Error Code: this 16-bit field contains an error code from the
following table.
Value Meaning
______________________________
0 Conference does not Exist
1 Authentication Failed
2 Unknown Mandatory TLV
3 Floor Request does not Exist
4 Unauthorized Operation
5 User does not Exist
6 Invalid Request-ID
Error Specific Details: Present only for certain Error Codes. In this
document, only for Error Code 2 (Unknown Mandatory TLV). For Error
Code 2, this field contains the Types of the TLVs (which were present
in the message that triggered the Error message) that were unknown to
the receiver, encoded as follows.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Unknown TLV Type | Unknown TLV Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
/ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Unknown TLV Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Unknown TLV Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Padding: one, two, or three bytes of padding added so that the
contents of the ERROR-CODE TLV is 32-bit aligned. If the TLV is
already 32-bit aligned, no padding is needed.
The Padding bits SHOULD be set to zero by the sender and MUST be
ignored by the receiver. Note all the Error Codes defined in this
document but Error Code 2, result in a TLV which is already 32-bit
Camarillo, et al. Expires September 30, 2004 [Page 10]
Internet-Draft BFCP April 2004
aligned (i.e., no need of padding). Error Code 2 results in a TLV
that may need 2 bytes of padding.
4.2.8 USER-DISPLAY-NAME
The USER-DISPLAY-NAME attribute type is 8 and its format is the same
as the HUMAN-READABLE-INFO attribute. The Text field in the
USER-DISPLAY-NAME attribute contains the name of the user.
4.2.9 USER-URI
The USER-URI attribute type is 9 and its format is the same as the
HUMAN-READABLE-INFO attribute. The Text field in the USER-URI
attribute contains the URI of the user.
4.2.10 PRIORITY
The following is the format of the contents of the PRIORITY
attribute, whose attribute type is 10.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 7 |M| Length | Priority | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Priority: the higher the 8-bit value, the more priority is requested
for a given floor request.
Reserved: at this point, the 8 bits in the reserved field SHOULD be
set to zero by the sender of the message and MUST be ignored by the
receiver.
5. Message Format
This section contains the ABNF [2] of the BFCP messages.
5.1 FloorRequest
Clients request a floor by sending a FloorRequest message to the
floor control server. The following is the format of the FloorRequest
message:
FloorRequest = (FIXED-HEADER)
(REQUEST-ID)
1*(FLOOR-ID)
Camarillo, et al. Expires September 30, 2004 [Page 11]
Internet-Draft BFCP April 2004
(USER-ID)
(TOKEN)
[PRIORITY]
[USER-DISPLAY-NAME]
[USER-URI]
[HUMAN-READABLE-INFO]
5.2 FloorRelease
Clients release a floor by sending a FloorRelease message to the
floor control server. Clients also use the FloorRelease message to
cancel pending floor requests. The following is the format of the
FloorRelease message:
FloorRelease = (FIXED-HEADER)
(REQUEST-ID)
1*(FLOOR-ID)
(USER-ID)
(TOKEN)
5.3 FloorRequestStatus
The floor control server informs clients about the status of their
floor requests by sending them FloorRequestStatus messages. The
following is the format of the FloorRelease message:
FloorRequestStatus = (FIXED-HEADER)
(REQUEST-ID)
1*(FLOOR-ID)
(USER-ID)
(REQUEST-STATUS)
5.4 FloorStatus
The floor control server informs clients about the holder of a floor
by sending them FloorStatus messages. The following is the format of
the FloorStatus message:
FloorStatus = (FIXED-HEADER)
(FLOOR-ID)
*( (REQUEST-ID)
(USER-ID)
Camarillo, et al. Expires September 30, 2004 [Page 12]
Internet-Draft BFCP April 2004
[PRIORITY]
[USER-DISPLAY-NAME]
[USER-URI]
[HUMAN-READABLE-INFO]
(REQUEST-STATUS) )
5.5 ChairAction
Chairs send instructions to floor control servers by sending
ChairAction messages. The following is the format of the ChairAction
message:
ChairAction = (FIXED-HEADER)
(REQUEST-ID)
(USER-ID)
(TOKEN)
(FLOOR-ID)
(REQUEST-ID)
(USER-ID)
(REQUEST-STATUS)
[HUMAN-READABLE-INFO]
5.6 Ping
Clients check the liveness of servers, and servers of clients, by
sending a Ping message. The following is the format of the Ping
message:
Ping = (FIXED-HEADER)
(REQUEST-ID)
(USER-ID)
(TOKEN)
5.7 PingAck
Clients and servers confirm that they are alive on reception of a
Ping message by sending a PingAck message. The following is the
format of the PingAck message:
PingAck = (FIXED-HEADER)
(REQUEST-ID)
(USER-ID)
Camarillo, et al. Expires September 30, 2004 [Page 13]
Internet-Draft BFCP April 2004
[TOKEN]
5.8 Error
The floor control server informs clients about errors processing
requests by sending them Error messages. The following is the format
of the Error message:
Error = (FIXED-HEADER)
(REQUEST-ID)
(USER-ID)
(ERROR-CODE)
(HUMAN-READABLE-INFO)
6. bfcp and bfcps URI Definitions
The following is the ABNF [2] for the "bfcp" and "bfcps" URIs:
bfcpURI = "bfcp://" server "/" conf-id [ uri-parameters ]
bfcpsURI = "bfcps://" server "/" conf-id [ uri-parameters ]
server = [ user "@" ] hostport
user = user-id [ ":" token ]
user-id = 1*DIGIT
token = 1*DIGIT
conf-id = 1*DIGIT
uri-parameters = *( "?" uri-parameter)
uri-parameter = transport-param / other-param
transport-param = "transport="
( "tcp" / other-transport )
other-transport = pvalue
other-param = pname [ "=" pvalue ]
pname = 1*paramchar
pvalue = 1*paramchar
paramchar = param-unreserved / unreserved / escaped
param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$"
unreserved = alphanum / mark
alphanum = ALPHA / DIGIT
mark = "-" / "_" / "." / "!" / "~" / "*" / "'"
/ "(" / ")"
escaped = "%" HEXDIG HEXDIG
Camarillo, et al. Expires September 30, 2004 [Page 14]
Internet-Draft BFCP April 2004
We import several definitions from RFC 2396 [4] and RFC 2732 [6], but
we make them complatible with RFC 2234 [2]:
hostport = host [ ":" port ]
host = hostname / IPv4address / IPv6reference
hostname = *( domainlabel "." ) toplabel [ "." ]
domainlabel = alphanum
/ alphanum *( alphanum / "-" ) alphanum
toplabel = ALPHA / ALPHA *( alphanum / "-" ) alphanum
IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
IPv6reference = "[" IPv6address "]"
IPv6address = hexpart [ ":" IPv4address ]
hexpart = hexseq / hexseq "::" [ hexseq ] / "::" [ hexseq ]
hexseq = hex4 *( ":" hex4)
hex4 = 1*4HEXDIG
port = 1*DIGIT
The following are examples of bfcp and bfcps URIs:
bfcp://1234:472@server34.example.com/4321
bfcp://5678:243@server45.example.com:20000/9876?transport=tcp
bfcps://server57.example.com/5643
7. Contacting a bfcp or bfcps URI
A client contacting a bfcp or bfcps follows the rules described in
the following sections.
7.1 Selecting a Transport Protocol
XXX: Once we resolve Issue 3 in the tracker, we will edit this
section.
If the URI specifies a transport protocol in the transport parameter,
that transport protocol SHOULD be used.
Otherwise, if no transport protocol is specified, but the host part
of the URI is a numeric IP address, the client SHOULD use TCP.
Similarly, if no transport protocol is specified, the host part is
not numeric, but an explicit port is provided, the client SHOULD use
TCP.
Otherwise, if no transport protocol or port is specified, and the
Camarillo, et al. Expires September 30, 2004 [Page 15]
Internet-Draft BFCP April 2004
host part of the URI is not a numeric IP address, the client SHOULD
perform a NAPTR [9] query for the domain in the URI. The services
relevant for the task of transport protocol selection are those with
NAPTR service fields with values "BFCP+D2X" and "BFCPS+D2X", where X
is a letter that corresponds to a transport protocol supported by the
domain. This specification defines D2T for TCP.
These NAPTR records provide a mapping from a domain to the SRV [7]
record for contacting a server with the specific transport protocol
in the NAPTR services field. The resource record will contain an
empty regular expression and a replacement value, which is the SRV
record for that particular transport protocol. If the server supports
multiple transport protocols, there will be multiple NAPTR records,
each with a different service value.
A client resolving a BFCPS URI MUST discard any services that do not
contain "BFCPS" as the protocol in the service field. On the other
hand, a client resolving a BFCP URI SHOULD retain records with
"BFCPS" as the protocol, if the client supports TLS.
The client MUST discard any service fields that identify a resolution
service whose value is not "D2X", for values of X that indicate
transport protocols supported by the client. The NAPTR processing as
described in RFC 3403 [9] will result in the discovery of the most
preferred transport protocol of the server that is supported by the
client, as well as an SRV record for the server.
If no NAPTR records are found, the client constructs SRV queries for
those transport protocols it supports, and does a query for each.
Queries are done using the service identifier "_bfcp" for bfcp URIs
and "_bfcps" for bfcps URIs. If the client supports TLS and wishes to
use it, it SHOULD also query using the service identifier "_bfcps",
even when handling floor URIs. A particular transport is supported if
the query is successful. The client MAY use any transport protocol it
desires which is supported by the server.
If no SRV records are found, the client SHOULD use TCP to contact the
server.
7.2 Determining Port and IP Address
Once the transport protocol has been determined, the next step is to
determine the IP address and port.
If the host part of the URI is a numeric IP address, the client uses
that address. If the URI also contains a port, the client uses that
port. If no port is specified, the client uses the default port for
the particular transport protocol.
Camarillo, et al. Expires September 30, 2004 [Page 16]
Internet-Draft BFCP April 2004
If the host part of the URI was not a numeric IP address, but a port
is present in the URI, the client performs an A or AAAA record lookup
of the domain name. The result will be a list of IP addresses, each
of which can be contacted at the specific port from the URI and
transport protocol determined previously. The client SHOULD try the
first record. If an attempt should fail, the next SHOULD be tried,
and if that should fail, the next SHOULD be tried, and so on.
If the host part of the URI was not a numeric IP address, and no port
was present in the URI, the client performs an SRV query on the
record returned from the NAPTR processing of Section 7.1, if such
processing was performed. If it was not, because a transport was
specified explicitly, the client performs an SRV query for that
specific transport, using the service identifiers as described in
Section 7.1. If the NAPTR processing was not done because no NAPTR
records were found, but an SRV query for a supported transport
protocol was successful, those SRV records are selected. Regardless
of how the SRV records were determined, the procedures of RFC 2782
[7], as described in the section titled "Usage rules" are followed.
If no SRV records were found, the client performs an A or AAAA record
lookup of the domain name. The result will be a list of IP addresses,
each of which can be contacted using the transport protocol
determined previously, at the default port for that transport.
7.3 Lower-Layer Security
SFTP relies on lower-layer security mechanisms to provide integrity
and replay protection, and confidentiality. SFTP servers MUST support
TLS [3], and clients SHOULD support TLS. Clients and servers MAY
support other security mechanisms.
Servers and clients that implement TLS MUST support XXX: cypher and
hash algorithm.
If a client is contacting a BFCPS URI, the client MUST use TLS
towards the server. If a client is contacting a BFCP URI, and the
client wishes to use TLS, the client MAY use TLS towards the server.
If the client is contacting a BFCP URI, and the client does not wish
to use or does not support TLS, it SHOULD use a different security
mechanism which SHOULD provide integrity and replay protection, and
confidentiality.
7.4 Conference ID, User ID, and Token Values
Once the client has determined the transport protocol to use, the IP
address and port number of the server, and the security mechanism to
use, the client SHOULD establish the transport and security
Camarillo, et al. Expires September 30, 2004 [Page 17]
Internet-Draft BFCP April 2004
connections needed to contact the server. At this point, the client
is ready to send BFCP messages to the server.
In order to do this, the client needs to fill a set of fields. In
particular, the client needs to fill the Conference ID field in the
FIXED-HEADER, and the User ID and Token fields in their respective
TLVs.
The conf-id of the BFCP or BFCPS URI contains the integer
representation of the 32-bit Conference ID to be used in the
FIXED-HEADER. If the conf-id contains an integer too large to be
represented using 32 bits, the client MUST only use the least
significant 32 bits of its representation.
The values to be used in the USER-ID and TOKEN parameters may be
obtained from the URI. If the URI does not contain these values, they
are obtained by the client using a mechanism which is outside the
scope of this document. Examples of such a mechanism are using the
Conference Event Package [13] and using the SIP [8] Call-Info header
field.
8. Client Operations
This section specifies how clients can perform different operations,
such as requesting a floor, using the protocol elements described in
earlier sections. Chair operations, such as instructing the floor
server to grant or revoke a floor, are described in Section 9.
8.1 Requesting a Floor
A client that wishes to request one or more floors does so by sending
a FloorRequest message to the floor control server. The ABNF in
Section 5.1 describes the TLVs that a FloorRequest message can
contain. In addition, the ABNF specifies which of these TLVs are
mandatory, and which ones are optional.
The client MUST set the Conference ID in the FIXED-HEADER of the
FloorRequest to the Conference ID for the conference that the client
obtained previously.
The client MUST set the Request ID value in the REQUEST-ID TLV to a
random number. The Request ID value is used by the client to match
this floor request with the responses received from the floor control
server. The Request ID value is also used by the server to match this
floor request with eventual FloorRelease messages from the client
cancelling the floor request. The client MUST NOT reuse the same
Request ID value for new messages different than FloorRelease until
the floor request is granted or denied or an Error message for this
Camarillo, et al. Expires September 30, 2004 [Page 18]
Internet-Draft BFCP April 2004
FloorRequest is received.
If the client inserts more than one FLOOR-ID TLVs in the FloorRequest
message, the server will 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.
The USER-ID and the TOKEN TLVs in the FloorRequest message are used
by the server to authenticate and authorize the request.
The USER-DISPLAY-NAME and the USER-URI TLVs in the FloorRequest
message, if present, provide extra information about the user
requesting the floor.
The client can request the server to handle the floor request with a
certain priority using a PRIORITY TLV.
The client MAY use a HUMAN-READABLE-INFO TLV to state the reason why
the floor or floors are being requested. The Text in the
HUMAN-READABLE-INFO TLV is intended for human consumption.
8.1.1 Receiving Responses
A message from the server is considered a response to the
FloorRequest message by the client if the message from the server has
the same Conference ID, Request ID, and User ID as the FloorRequest
message.
If the response is a FloorRequestStatus message, the client obtains
information about the status of the FloorRequest in a REQUEST-STATUS
TLV. If the Request Status value is Granted, the client has been
granted all the floors that were requested in the FloorRequest
message. If the Request Status value is Denied, the client has been
denied all the floors that were requested in the FloorRequest
message. The HUMAN-READABLE-INFO TLV, if present, provides extra
information which the client MAY display to the user.
If the response is an Error message, the server could not process the
FloorRequest message for some reason, which is described in the Error
message.
8.2 Cancelling a Floor Request
A client that wishes to cancel a pending floor request does so by
sending a FloorRelease message to the floor control server. The ABNF
in Section 5.2 describes the TLVs that a FloorRelease message can
contain. In addition, the ABNF specifies which of these TLVs are
mandatory, and which ones are optional.
Camarillo, et al. Expires September 30, 2004 [Page 19]
Internet-Draft BFCP April 2004
The client MUST set the Conference ID in the FIXED-HEADER of the
FloorRelease to the Conference ID for the conference that the client
obtained previously.
Note that the FloorRelease message is also used to release a floor
or floors that were granted to the client. Using the same message
for both situations helps resolve the race condition that occurs
when the FloorRelease message and the FloorGrant message cross
each other on the wire.
The client MUST copy the REQUEST-ID, FLOOR-ID, USER-ID, and TOKEN
TLVs from the FloorRequest message that the FloorRelease message is
cancelling into the FloorRelease message.
8.2.1 Receiving Responses
A message from the server is considered a response to the
FloorRelease message by the client if the message from the server has
the same Conference ID, Request ID, and User ID as the FloorRelease
message.
If the response is a FloorRequestStatus message, the client obtains
information about the status of the FloorRequest in a REQUEST-STATUS
TLV. If the Request Status value is different from Cancelled, the
FloorRelease message and the FloorRequestStatus crossed on the wire.
The client does not need to resend the FloorRelease message, because
the server will send a new FloorRequestStatus message with a Request
Status value of Cancelled as soon as it receives the original
FloorRelease message. The HUMAN-READABLE-INFO TLV, if present,
provides extra information which the client MAY display to the user.
If the response is an Error message, the server could not process the
FloorRelease message for some reason, which is described in the Error
message.
8.3 Releasing Floors
A client that wishes to release one or more floors, which were
granted to it before, does so by sending a FloorRelease message. The
ABNF in Section 5.2 describes the TLVs that a FloorRelease message
can contain. In addition, the ABNF specifies which of these TLVs are
mandatory, and which ones are optional.
The client MUST set the Conference ID in the FIXED-HEADER of the
FloorRelease to the Conference ID for the conference that the client
obtained previously.
The client MUST copy the REQUEST-ID, FLOOR-ID, USER-ID, and TOKEN
Camarillo, et al. Expires September 30, 2004 [Page 20]
Internet-Draft BFCP April 2004
TLVs from the FloorRequest message that resulted in the floor being
granted into the FloorRelease message.
8.3.1 Receiving Responses
A message from the server is considered a response to the
FloorRelease message by the client if the message from the server has
the same Conference ID, Request ID, and User ID as the FloorRelease
message.
If the response is a FloorRequestStatus message, the client obtains
information about the status of the FloorRequest in a REQUEST-STATUS
TLV. The server will send a FloorRequestStatus with a Request Status
value of Released as soon as it receives the FloorRelease message.
The HUMAN-READABLE-INFO TLV, if present, provides extra information
which the client MAY display to the user.
If the response is an Error message, the server could not process the
FloorRelease message for some reason, which is described in the Error
message.
8.4 Checking the Liveness of a Server
A client that wishes to check the liveness of a server does so by
sending a Ping message to the floor control server. The ABNF in
Section 5.6 describes the TLVs that a Ping message can contain. In
addition, the ABNF specifies which of these TLVs are mandatory, and
which ones are optional.
The client MUST set the Conference ID in the FIXED-HEADER of the Ping
to the Conference ID for the conference that the client obtained
previously.
The client MUST set the Request ID value of the REQUEST-ID TLV to a
random number. The Request ID value is used by the client to match
this ping request with the response received from the floor control
server. The client MUST NOT reuse the same Request ID value for new
messages until the client receives a PingAck or an Error message for
this request.
The server uses the values of the USER-ID and TOKEN TLVs in the Ping
message to authenticate and authorize the message.
8.4.1 Receiving Responses
A message from the server is considered a response to the Ping
message by the client if the message from the server has the same
Conference ID, Request ID, and User ID as the Ping message.
Camarillo, et al. Expires September 30, 2004 [Page 21]
Internet-Draft BFCP April 2004
If the response is a PingAck message, the server is alive and the
User ID and Token values sent by the client were acceptable.
If the response is an Error message, the server could not process the
Ping message for some reason, which is described in the Error
message.
8.5 Responding to a Ping Message
The processing of a Ping message by a client involves generating a
PingAck message. The PingAck message is constructed by copying the
Conference ID, Request ID, and User ID values from the Ping message
into the PingAck message. The PingAck message MUST also contain a
TOKEN TLV.
9. Chair Operations
This section specifies how clients acting as chairs can perform
different operations, such as instructing the floor server to grant
or revoke a floor, using the protocol elements described in earlier
sections.
9.1 Obtaining Information about Floor Requests
A chair can obtain information about the floor requests that the
floor control server receives in different ways, which include using
out-of-band mechanisms. Chairs using BFCP to obtain such information
receive it in FloorStatus messages from the floor control server.
9.2 Instructing the Floor Control Server
Chairs that wish to send instructions to a floor control server does
so by sending a ChairAction message. The ABNF in Section 5.5
describes the TLVs that a ChairAction message can contain. In
addition, the ABNF specifies which of these TLVs are mandatory, and
which ones are optional.
The client MUST set the Conference ID in the FIXED-HEADER of the
ChairAction to the Conference ID for the conference that the client
obtained previously.
The client MUST set the Request ID value of the REQUEST-ID TLV to a
random number. The Request ID value is used by the chair to match
this ChairAction message with the responses received from the floor
control server. The chair MUST NOT reuse the same Request ID value
for new messages until the floor server has performed the
instructions sent in the ChairAction message or until an Error
response is received.
Camarillo, et al. Expires September 30, 2004 [Page 22]
Internet-Draft BFCP April 2004
The server uses the values of the USER-ID and TOKEN TLVs to
authenticate and authorize the request.
The chair MUST identify the floor the instructions in the message
apply to using a FLOOR-ID TLV. Additionally, the chair MUST identify
the floor request the instructions in the message apply to using a
REQUEST-ID and a USER-ID TLVs.
The chair MUST provide the new status of the floor request using a
REQUEST-STATUS TLV. If the new status of the floor request is
Accepted, the chair MAY use the Queue Position field to provide a
queue position for the floor request. If the chair does not wish to
provide a queue position, all the bits of the Queue Position field
SHOULD be set to zero. The chair SHOULD use the Status Revoked to
revoke a floor that was granted (i.e., Granted status) and to reject
floor requests in any other status (e.g., Pending and Accepted).
The chair MAY use a HUMAN-READABLE-INFO TLV to state the reason why
the floor or floors are being accepted, granted, or revoked. The Text
in the HUMAN-READABLE-INFO TLV is intended for human consumption.
10. Server Operations
This section specifies how servers can perform different operations,
such as granting a floor, using the protocol elements described in
earlier sections. Section 10.6
On reception of a message from a client, the floor control server
MUST check whether or not the values of the Conference ID, User ID,
and Token identify a valid user. If they do not, the floor server
SHOULD send an Error message, as described in Section 10.6, with
Error code 1 (Authentication Failed).
On reception of a message from a client, the floor control server
MUST check whether or not it understands all the mandatory ( 'M' bit
set) TLVs in the message. If the server does not understand all of
them, the floor server SHOULD send an Error message, as described in
Section 10.6, with Error code 2 (Authentication Failed). The Error
message SHOULD list the TLVs that were not understood.
10.1 Reception of a FloorRequest Message
The processing of a FloorRequest message by a server involves
generating one or more FloorRequestStatus messages. The floor control
server SHOULD generate a FloorRequestStatus message as soon as
possible. If the floor server cannot accept, grant or deny the floor
request right away, it SHOULD use a Request Status value of Pending.
Camarillo, et al. Expires September 30, 2004 [Page 23]
Internet-Draft BFCP April 2004
At any time, when the status of the floor request changes, the floor
control server SHOULD send a FloorRequest message with the
appropriate Request Status.
On reception of a FloorRelease message, the server SHOULD send a
FloorRequestStatus message with a Request Status value of Released,
if the floor had been previously granted, or of Cancelled, if it had
not.
The server constructs the FloorRequestStatus messages by copying the
Conference ID, Request ID, and User ID values from the FloorRequest
message into the response message. The server MAY add a
HUMAN-READABLE-INFO TLV to provide extra information to the user
about its decision.
The floor control server MAY use the PRIORITY TLV, if present in the
FloorRequest, to give higher or lower priority to the floor request.
10.2 Checking the Liveness of a Client or Chair
A server that wishes to check the liveness of a client does so by
sending a Ping message to the client or chair. Such a Ping message
makes the client return a PingAck message, which contains the
client's or chair's User ID and Token. So, the server can use Ping
messages to re-authenticate the client (e.g., a new token is sent to
the client or chair out-of-band and the Ping message makes the client
show the server that the client or chair received it).
The ABNF in Section 5.6 describes the TLVs that a Ping message can
contain. In addition, the ABNF specifies which of these TLVs are
mandatory, and which ones are optional.
The server MUST set the Conference ID in the FIXED-HEADER of the Ping
to the Conference ID for the conference that the client or chair is
part of.
The server MUST set the Request ID valie of the REQUEST-ID TLV to a
random number. The Request ID value is used by the server to match
this ping request with the response received from the client or
chair. The server MUST NOT reuse the same Request ID value for new
messages until the server receives a PingAck message for this
request.
The server MUST set the User ID value of the USER-ID TLV to the User
ID of the destination client or chair.
Camarillo, et al. Expires September 30, 2004 [Page 24]
Internet-Draft BFCP April 2004
10.2.1 Receiving a PingAck Message
A PingAck message from the client is considered a response to the
Ping message by the server if the PingAck message has the same
Conference ID, Request ID, and User ID as the Ping message.
The PingAck message sent by the client in response to the Ping
message sent by the server will contain the client's User ID and
Token. The server authenticates this message as any other message,
which may involve returning an Error message if the authentication is
not succesful.
10.3 Responding to a Ping Message
The processing of a Ping message by a server involves generating a
PingAck message. The PingAck message is constructed by copying the
Conference ID, Request ID, and User ID values from the Ping message
into the PingAck message.
10.4 Informing about the Status of a Floor
Floor control servers send information to clients and chairs about
the status of a floor by sending FloorStatus messages.
The server MUST set the Conference ID in the FIXED-HEADER of the
FloorStatus to the Conference ID for the conference that the client
or chair is part of.
The chair MUST identify the floor the FloorStatus message applies to
using a FLOOR-ID TLV.
The server MAY provide information about a number of floor requests
in a single FloorStatus message. For each floor request, the server
MUST include in the FloorStatus the request's REQUEST-ID, USER-ID,
and REQUEST-STATUS, and MAY include its USER-DISPLAY-NAME, USER-URI,
HUMAN-READABLE-INFO, and requested PRIORITY.
10.5 Receiving a ChairAction Message
On reception of a ChairAction message, the floor control server
checks whether the chair that send the message is authorized to
perform the operation being requested. If the chair is authorized,
the floor control server performs the operation. If the new Status is
Accepted and all the bits of the Queue Position field are zero, the
server assigns a queue position (e.g., the last in the queue) to the
floor request based on local policy (in case the server implements a
queue).
Camarillo, et al. Expires September 30, 2004 [Page 25]
Internet-Draft BFCP April 2004
If the floor control server cannot find a floor request that matches
the request the operation in the ChairAction message applies to, the
floor control server generates an Error message, as described in
Section 10.6, with an Error code with a value of 3 (Floor Request
does not Exist).
If the chair is not authorized to perform the operation being
requested, the floor control server generates an Error message, as
described in Section 10.6, with an Error code with a value of 4
(Unauthorized Operation).
10.6 Error Message Generation
Error messages are always sent in response to a previous message from
the client. Servers construct Error messages by copying the
Conference ID, Request ID, and User ID values from the client's
message into the Error message.
The ABNF in Section 5.8 describes the TLVs that a Error message can
contain. In addition, the ABNF specifies which of these TLVs are
mandatory, and which ones are optional.
11. Security Considerations
TBD.
12. IANA Considerations
TBD
12.1 bfcp and bfcps URI Schemes Registration
This section registers the bfcp and bfcps URI schemes following the
template given in RFC 2717 [5].
URI scheme names: "bfcp" and "bfcps"
URI scheme syntax: specified in Section 6 of RFC XXXX (substitute
XXXX with the number of this RFC).
Character encoding considerations: The "bfcp" and "bfcps" URIs
support the UTF-8 encoding scheme.
Intended use: common within floor control protocols.
Applications and/or protocols which use these URI scheme: BFCP, which
is specified in this document.
Camarillo, et al. Expires September 30, 2004 [Page 26]
Internet-Draft BFCP April 2004
Interoperability considerations: none known.
Security considerations: the "bfcps" URI scheme indicates a
requirement to use TLS to contact the floor control server.
Relevant publications: RFC XXXX (substitute XXXX with the number of
this RFC).
Contact information: the IETF XCON Working group. In case the WG does
no exist anymore, any person appointed by the IETF Transport Area
Director(s).
Registered-by: Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>
Change control: extensions, new parameters and new values to these
URIs have to be documented in an RFC. The IETF XCON Working Group or,
in case the WG does no exist anymore, any person appointed by the
IETF Transport Area Director(s), will provide expert review and
advise to the change control process.
13. Acknowledgments
The XCON WG chairs, Adam Roach and Alan Johnston, provided useful
ideas for this document.
14. References
14.1 Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[2] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[3] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
2246, January 1999.
[4] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", RFC 2396, August
1998.
[5] Petke, R. and I. King, "Registration Procedures for URL Scheme
Names", BCP 35, RFC 2717, November 1999.
[6] Hinden, R., Carpenter, B. and L. Masinter, "Format for Literal
IPv6 Addresses in URL's", RFC 2732, December 1999.
Camarillo, et al. Expires September 30, 2004 [Page 27]
Internet-Draft BFCP April 2004
[7] Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for
specifying the location of services (DNS SRV)", RFC 2782,
February 2000.
[8] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002.
[9] Mealling, M., "Dynamic Delegation Discovery System (DDDS) Part
Three: The Domain Name System (DNS) Database", RFC 3403,
October 2002.
[10] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD
63, RFC 3629, November 2003.
14.2 Informational References
[11] Schulzrinne, H., "Requirements for Floor Control Protocol",
draft-ietf-xcon-floor-control-req-00 (work in progress),
January 2004.
[12] Koskelainen, P. and H. Khartabil, "An Extensible Markup
Language (XML) Configuration Access Protocol (XCAP) Usage for
Conference Policy Manipulation",
draft-koskelainen-xcon-xcap-cpcp-usage-02 (work in progress),
February 2004.
[13] Rosenberg, J. and H. Schulzrinne, "A Session Initiation
Protocol (SIP) Event Package for Conference State",
draft-ietf-sipping-conference-package-03 (work in progress),
February 2004.
Authors' Addresses
Gonzalo Camarillo
Ericsson
Hirsalantie 11
Jorvas 02420
Finland
EMail: Gonzalo.Camarillo@ericsson.com
Camarillo, et al. Expires September 30, 2004 [Page 28]
Internet-Draft BFCP April 2004
Joerg Ott
Universitaet Bremen
MZH 5180
Bibliothekstr. 1
Bremen D-28359
Germany
EMail: jo@tzi.org
Keith Drage
Lucent Technologies
Windmill Hill Business Park
Swindon
Wiltshire SN5 6PP
UK
EMail: drage@lucent.com
Camarillo, et al. Expires September 30, 2004 [Page 29]
Internet-Draft BFCP April 2004
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the IETF's procedures with respect to rights in IETF Documents can
be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2004). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Camarillo, et al. Expires September 30, 2004 [Page 30]
| PAFTECH AB 2003-2026 | 2026-04-23 10:14:52 |