XCON WG C. Jennings
Internet-Draft Cisco Systems
Expires: January 17, 2006 A. Roach
Estacado Systems
July 16, 2005
Conference State Change Protocol (CSCP)
draft-jennings-xcon-cscp-01
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
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 January 17, 2006.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
Conference State Control Protocol (CSCP) is a means to modify the
state in a conference service. It extends the Binary Floor Control
Protocol and adds commands to get, set, add, and delete fields in the
conference state.
Jennings & Roach Expires January 17, 2006 [Page 1]
Internet-Draft Conference State Change Protocol July 2005
Table of Contents
1. Conventions . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. New Primitives . . . . . . . . . . . . . . . . . . . . . . . 3
4. New Attributes . . . . . . . . . . . . . . . . . . . . . . . 4
4.1 ELEMENT-ID . . . . . . . . . . . . . . . . . . . . . . . . 4
4.2 NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3 VALUE . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1 Retrieving Attribute Values . . . . . . . . . . . . . . . 6
5.2 Setting Attribute Values . . . . . . . . . . . . . . . . . 7
5.3 Adding Elements . . . . . . . . . . . . . . . . . . . . . 7
5.4 Deleting an Element . . . . . . . . . . . . . . . . . . . 8
5.5 Deleting an Attribute . . . . . . . . . . . . . . . . . . 9
5.6 Errors . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . 10
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8. To Do Items . . . . . . . . . . . . . . . . . . . . . . . . 10
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 11
10. Security Considerations . . . . . . . . . . . . . . . . . . 11
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 11
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
12.1 Normative References . . . . . . . . . . . . . . . . . . 11
12.2 Informative References . . . . . . . . . . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 11
Intellectual Property and Copyright Statements . . . . . . . 12
Jennings & Roach Expires January 17, 2006 [Page 2]
Internet-Draft Conference State Change Protocol July 2005
1. Conventions
This document extends the Binary Floor Control Protocol (BFCP) [2]
and makes no sense if you have not read that document. This document
uses the terminology from the conference framework. [TODO Reference]
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [1].
2. Overview
CSCP is a client server protocol used to change the state of a
conference object. A client sends the server a request representing
a sequence of commands. Each command can set, get, add, or delete a
single field in the conference object. Changes to the conference
object are performed on a hierarchal set of elements and unique
attributes within those elements. A series of changes can be
pipelined in a single BFCP message. The server executes each action
in series. If one of them fails, the server returns an error for the
action that failed and does not execute any of the actions after
that. Each individual action is atomic but the pipelined series is
not.
The item that a command applies to is specified by a unique ID and,
where appropriate, attribute name. The ID is an unsigned 32 bit
integer called the Element ID. How the server discovers the element
ID of a given element is outside of CSCP. Typically this is done by
using the conferencing framework notification service. Each field in
the data received in the notification contains a unique field ID
attribute that can be used in BFCP requests.
The values for fields are transferred as UTF-8 encoded strings.
3. New Primitives
This documents updates Table 1 in BFCP with the following primitives:
Jennings & Roach Expires January 17, 2006 [Page 3]
Internet-Draft Conference State Change Protocol July 2005
11 GetRequest
12 GetInfo
13 SetRequest
14 SetAck
15 AddElementRequest
16 AddElementInfo
17 DelElementRequest
18 DelElementAck
19 DelAttributeRequest
20 DelAttributeAck
TODO - these numbers are wrong and will change
4. New Attributes
This document updates Table 2 in BFCP with the following new
attributes:
14 ELEMENT-ID
15 NAME
16 VALUE
TODO - these numbers are wrong and will change
4.1 ELEMENT-ID
The following is the format of a ELEMENT-ID attribute:
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 0 0 0 1 1 0|M|0 0 0 1 1 0 0 0| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The reserved field MUST be set to 0 by the sender, and MUST be
ignored by the receiver.
Bytes within the "ID" field are transmitted in order of decreasing
significance. The ID values 0 and 0xFFFFFFFF are reserved and MUST
NOT be used.
Jennings & Roach Expires January 17, 2006 [Page 4]
Internet-Draft Conference State Change Protocol July 2005
4.2 NAME
The following is the format of a NAME attribute:
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 0 0 0 1 0 1|M| Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
/ UTF-8 Text /
/ +-+-+-+-+-+-+-+-+
| | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Text: this field contains UTF-8 [5] encoded text.
Padding: one, two, or three bytes of padding added so that the size
of the VALUE 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 included.
4.3 VALUE
The following is the format of a VALUE attribute:
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 0 0 0 1 0 1|M| Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
/ UTF-8 Text /
/ +-+-+-+-+-+-+-+-+
| | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Text: this field contains UTF-8 [5] encoded text.
Padding: one, two, or three bytes of padding added so that the size
of the VALUE 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 included.
Jennings & Roach Expires January 17, 2006 [Page 5]
Internet-Draft Conference State Change Protocol July 2005
5. Behavior
5.1 Retrieving Attribute Values
Clients request the values of various fields by sending the
GetRequest message to the server. The following is the format of the
this message. A single GetRequest MUST not contain the same
{ELEMENT-ID,NAME} combination more than once; otherwise, it is not
possible to tell which of the multiple operations has caused an
error.
If the NAME field is omitted for a given ELEMENT-ID, then the request
applies to the CDATA associated with the indicated element.
GetRequest = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
1*( (ELEMENT-ID)
[NAME] )
[NONCE]
[DIGEST]
The request contains all the ELEMENT-ID and NAME elements for the
fields the client wishes to retrieve. The values of the requested
fields are returned in a GetInfo message.
GetInfo = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
1*( (ELEMENT-ID)
[NAME]
(VALUE) )
[NONCE]
Value is string encoding of the value. For fields that are an
integer, this is a base 10 encoded ASCII integer. For binary values
it is sent as the ASCII characters 0 and 1. (Open Issue: is this
totally goofy? should it be a binary type ?)
Open Issue: Is attribute retrieval actually necessary or even useful?
This protocol is predicated on the client having access to the
conference state via some other mechanism and is intended primarily
for manipulation of such state.
Jennings & Roach Expires January 17, 2006 [Page 6]
Internet-Draft Conference State Change Protocol July 2005
5.2 Setting Attribute Values
The SetRequest asks for the values of one or more fields to be
changed. A single SetRequest MUST not contain the same combination
of {ELEMENT-ID,NAME} more than once.
If the NAME field is omitted for a given ELEMENT-ID, then the request
applies to the CDATA associated with the indicated element.
If the SetRequest refers to an attribute which does not yet exist in
the indicated element, then that attribute is added and set to the
indicated value.
SetRequest = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
1*( (ELEMENT-ID)
[NAME]
(VALUE) )
[NONCE]
[DIGEST]
If a SetRequest is successful, the server responds with a SetAck.
This SetAck contains the field ID and name for all fields which were
successfully set. If any of the fields are not successfully set, an
Error returns the value of the first field-id that failed.
SetAck = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
*( (ELEMENT-ID)
[NAME] )
[NONCE]
5.3 Adding Elements
AddElementRequest = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
(ELEMENT-ID)
(NAME)
[NONCE]
[DIGEST]
Jennings & Roach Expires January 17, 2006 [Page 7]
Internet-Draft Conference State Change Protocol July 2005
The AddElementRequest message contains a pairs of ELEMENT-ID/NAME
TLVs. The element id refers to an existing element; the new element
will be created as a child to the indicated element. The NAME field
indicates the name of the element that is to be added. If there is
an error in creating the field, an Error is returned; otherwise the
server sends an AddElementInfo containing the newly created
ELEMENT-ID. It is not possible to add multiple elements of the same
name in a single request because there is no way to correlate errors
with the addition that caused the error.
AddElementInfo = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
(ELEMENT-ID)
[NONCE]
AddElementInfo returns the new Element ID for any elements that were
created.
5.4 Deleting an Element
DelElementRequest = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
*(ELEMENT-ID)
[NONCE]
[DIGEST]
DelElementRequest requests that the server delete the specified
element and all of its attributes and children. If the
DelElementRequest is successful, the server responds with a
DelElementAck, which includes the list of deleted elements. If there
is an error, an error message with the ELEMENT-ID of the first field
that could not be deleted is returned.
DelElementAck = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
*(ELEMENT-ID)
[NONCE]
[DIGEST]
Jennings & Roach Expires January 17, 2006 [Page 8]
Internet-Draft Conference State Change Protocol July 2005
5.5 Deleting an Attribute
DelAttributeRequest = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
1*( (ELEMENT-ID)
[NAME] )
[NONCE]
[DIGEST]
DelAttributeRequest requests that the server delete the specified
attribute. Upon success, the server responds with a DelAttributeAck
with the list of deleted fields. If there is an error, an error
message with the ELEMENT-ID and NAME of the first field that could
not be deleted is returned.
If the NAME field is omitted for a given ELEMENT-ID, then the request
applies to the CDATA associated with the indicated element.
DelAttributeAck = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
*( (ELEMENT-ID
[NAME] )
[NONCE]
[DIGEST]
5.6 Errors
The format of the Error messages is also modified to have optional
ELEMENT-ID and NAME TLVs. When these TLVs are present in an Error,
it indicates the element (and, where appropriate, attribute) in the
request that caused the error.
TO DO: This section needs more specification around the semantics of
error handling.
Error = (FIXED-HEADER)
(TRANSACTION-ID)
(USER-ID)
(ERROR-CODE)
[NONCE]
[HUMAN-READABLE-INFO]
[ELEMENT-ID]
Jennings & Roach Expires January 17, 2006 [Page 9]
Internet-Draft Conference State Change Protocol July 2005
[NAME]
6. Open Issues
Significant work remains on analyzing what error conditions can arise
from the operations defined in this document.
7. Examples
The document really needs an examples section. Much more work TODO
here. The basic idea that we need to convey is that one mechanism of
learning element IDs is having them included as part of an XML
document.
This XML would be discovered by using some other protocol such as a
SIP event package. The XML representations of state which this
protocol is intended to change could look something like:
Cisco Systems
170 West Tasman Drive
Mailstop SJC-21/2
San Jose
CA
95134
USA
So, changing the fullname attribute of the element to
"Cullen Fluffy Jennings" would be requested by sending a SetRequest
with ELEMENT-ID = 1, NAME = "fullname", and VALUE = "Cullen Fluffy
Jennings".
8. To Do Items
All the attribute and element numbers our out of line with BFCP and
need to be fixed.
This needs o be lined up so that it cab be correlated with the
Conference package events.
Jennings & Roach Expires January 17, 2006 [Page 10]
Internet-Draft Conference State Change Protocol July 2005
9. IANA Considerations
TBD
10. Security Considerations
TBD
11. Acknowledgments
Thanks to Roni Even for comments.
12. References
12.1 Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[2] Camarillo, G., "The Binary Floor Control Protocol (BFCP)",
draft-ietf-xcon-bfcp-03 (work in progress), January 2005.
12.2 Informative References
Authors' Addresses
Cullen Jennings
Cisco Systems
170 West Tasman Drive
Mailstop SJC-21/2
San Jose, CA 95134
USA
Phone: +1 408 421 9990
Email: fluffy@cisco.com
Adam Roach
Estacado Systems
Dallas, TX
US
Email: adam@estacado.net
Jennings & Roach Expires January 17, 2006 [Page 11]
Internet-Draft Conference State Change Protocol July 2005
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 procedures with respect to rights in RFC 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 (2005). 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.
Jennings & Roach Expires January 17, 2006 [Page 12]