One document matched: draft-levin-xcon-cccp-02.txt
Differences from draft-levin-xcon-cccp-01.txt
XCON O. Levin
Internet-Draft Microsoft Corporation
Expires: August 24, 2005 R. Even
Polycom
P. Hagendorf
RADVISION
February 20, 2005
Centralized Conference Data Model
draft-levin-xcon-cccp-02
Status of this Memo
This document is an Internet-Draft and is subject to all provisions
of Section 3 of RFC 3667. 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 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 August 24, 2005.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This document is a part of a suite of protocols being developed in
the XCON Working Group and defines a client-server Centralized
Conferencing Control Protocol (CCCP) for query, creation, and
Levin, et al. Expires August 24, 2005 [Page 1]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
manipulation of both the XCON system information (e.g. supported
templates) and a particular conference information during the
conference lifetime cycle (e.g. reservation and state). An XCON
server, which implements a CCCP server, provides the means for
authorized CCCP clients (e.g. conference participants) to affect the
behavior of a conference in the XCON system.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. General . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Transaction Model and Operations . . . . . . . . . . . . . . . 5
5. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6. Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.1 System Primitives . . . . . . . . . . . . . . . . . . . . 7
6.1.1 getTemplates . . . . . . . . . . . . . . . . . . . . . 7
6.1.2 getReservedConferences . . . . . . . . . . . . . . . . 7
6.1.3 getActiveConferences . . . . . . . . . . . . . . . . . 7
6.2 Conference Primitives . . . . . . . . . . . . . . . . . . 7
6.2.1 addConference . . . . . . . . . . . . . . . . . . . . 7
6.2.2 getConference . . . . . . . . . . . . . . . . . . . . 7
6.2.3 deleteConference . . . . . . . . . . . . . . . . . . . 7
6.3 User Primitives . . . . . . . . . . . . . . . . . . . . . 7
6.3.1 addUser . . . . . . . . . . . . . . . . . . . . . . . 7
6.3.2 getUser . . . . . . . . . . . . . . . . . . . . . . . 8
6.3.3 deleteUser . . . . . . . . . . . . . . . . . . . . . . 8
6.4 Endpoint Primitives . . . . . . . . . . . . . . . . . . . 8
6.4.1 addEndpoint . . . . . . . . . . . . . . . . . . . . . 8
6.4.2 getEndpoint . . . . . . . . . . . . . . . . . . . . . 8
6.4.3 deleteEndpoint . . . . . . . . . . . . . . . . . . . . 8
6.5 Media Primitives . . . . . . . . . . . . . . . . . . . . . 8
6.5.1 addMedia . . . . . . . . . . . . . . . . . . . . . . . 8
6.5.2 getMedia . . . . . . . . . . . . . . . . . . . . . . . 8
6.5.3 deleteMedia . . . . . . . . . . . . . . . . . . . . . 9
6.5.4 modifyMediaStatus . . . . . . . . . . . . . . . . . . 9
6.6 Stimulus Primitives . . . . . . . . . . . . . . . . . . . 9
7. The XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
8. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1 Request . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.2 Response . . . . . . . . . . . . . . . . . . . . . . . . . 22
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26
10. Security Considerations . . . . . . . . . . . . . . . . . . 26
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.1 Normative References . . . . . . . . . . . . . . . . . . . 26
12.2 Informative References . . . . . . . . . . . . . . . . . . 27
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 27
Levin, et al. Expires August 24, 2005 [Page 2]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
Intellectual Property and Copyright Statements . . . . . . . . 28
Levin, et al. Expires August 24, 2005 [Page 3]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
1. Introduction
General centralized conferencing architecture is described in the
SIPPING Conference Framework [3]. The XCON Framework [4] defines how
this architecture can be realized by an XCON compliant system. The
XCON framework defines the concepts of the conference policy and the
conference information as the top data objects for representing a
conference.
This document is a part of a suite of protocols being developed in
the XCON Working Group and defines a client-server Centralized
Conferencing Control Protocol (CCCP) for query, creation, and
manipulation of both the XCON system information (e.g. supported
templates) and a particular conference information during the
conference lifetime cycle (e.g. reservation and state). An XCON
server, which implements a CCCP server, provides the means for
authorized CCCP clients (e.g. conference participants) to affect the
behavior of a conference in the XCON system.
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.
3. General
CCCP can be used to modify any of the conference information objects
defined in the XCON Framework document [5]. These include the
conference template, reservation, and state. Whenever reasonable,
same CCCP primitives are used to access conference information during
different stages of the conference life cycle. In order to
distinguish between reservation and possible multiple instances of
the same conference different URIs are used for each.
Editor's Note: URI conventions or parameters TBD in the XCON
Framework [4].
CCCP uses the conference information schema type and its sub-types
(as defined in the SIPPING Conference Package [2]) for construction
of the CCCP data objects. It is expected that additional sub-types
will be introduced by XCON in order to express extended conferencing
information relevant to XCON-compliant systems.
Levin, et al. Expires August 24, 2005 [Page 4]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
4. Transaction Model and Operations
CCCP MUST run over a reliable transport protocol.
CCCP is agnostic to the details of the transport protocol being used
beneath and does not rely on any information being conveyed on the
transport level.
CCCP is a transaction client-server protocol. Two types of
operations are defined with CCCP : request and response.
A client issues requests to a server. The server MAY reply with
multiple provisional responses before replying with the final
response. Currently a single provisional response "pending" is
defined.
Editor's Note: Timeout behavior TBD.
The server MUST reply with a single final response. Two final
responses are defined: "failure" and "success".
The following reasons for failure are defined:
serverBusy with optional retryAfter
timeout performing operation
unauthorized
requestMalformed
requestTooLarge
Each CCCP response and each CCCP request carries the following
attributes: 'requestId', 'from', and 'to'.
The combination of the 'requestId', 'from' and 'to' attributes in the
request and in the response constitutes the CCCP transaction ID:
requestId: A string generated by the CCCP client and unique for each
CCCP request generated by the client.
from: A URI which identifies the CCCP client.
to: A URI which identifies the CCCP server.
Note that 'to' is mandatory but is not used in order to uniquely
identify a particular transaction.
Multiple primitives can be included in a single CCCP operation (i.e.
in a request and a corresponding response). The primitives within
the request operation MUST be performed by the CCCP server one-by-one
in the order they appear in the request body. The corresponding
response operation MUST include the response primitive for each of
Levin, et al. Expires August 24, 2005 [Page 5]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
the issued primitives in the exact same order. Note, that for this
reason, the primitives inside the operation bodies are not numbered.
Multiple primitives within the same request MUST be executed as an
atomic operation. It means that if one primitive fails, the state of
the object MUST be rolled back to its previous state, i.e. before
the request had been processed.
5. Data Model
The CCCP operations can be issued on the conference template,
conference reservation, and any of the conference instance data
objects. All these data objects are expressed in terms of
conference-info-type defined in SIPPING Conference Package [2].
Consequently, CCCP requests are expressed using the same
conference-info type and its sub-types whenever it makes sense. The
information included in the request expresses the desired data object
state to be achieved after the operation is successfully completed.
The considerations listed below MUST be taken into account when using
the schema with CCCP.
Attributes 'state' and 'version' of the conference-info-type and its
sub-types are never used with CCCP.
The primitives' definition allows for inclusion of any element
defined by the conference-info-type and its sub-types. Note that it
is optional to include these elements by both the client and the
server and their processing is optional by the receiving side, unless
explicitly stated otherwise in the normative description of the CCCP
primitives in Section 6.
For example, when adding or creating objects (e.g. a conference, a
user, an endpoint, a media, etc.) the client MUST include only the
information that is required for the object creation. The client
MUST assume that the Server MAY return new dynamically generated
information in a successful response.
On the other hand, the Server MAY return minimum information in the
response or even an empty element corresponding to a successful
request. CCCP allows the inclusion of richer information that can be
displayed to a user or be logged in by the system, but doesn't
mandate to always include this information in the response.
6. Primitives
Levin, et al. Expires August 24, 2005 [Page 6]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
6.1 System Primitives
6.1.1 getTemplates
Get the list of template identifiers supported by the system.
XML TBD.
6.1.2 getReservedConferences
Get the list of reservation identifiers allocated by the system.
XML TBD.
6.1.3 getActiveConferences
Get the list of conference identifiers of active instances running in
the system.
XML TBD.
6.2 Conference Primitives
6.2.1 addConference
Create a conference. The conference can be a new conference
"blueprint", new reservation, or a new ad-hoc instance.
For XML definition see Section 7.
The 'conferenceEntity' value in the request is a client's suggestion
only. The CCCP server can replace the suggested value with a
different 'conferenceEntity' value in the corresponding response.
6.2.2 getConference
For XML definition see Section 7.
6.2.3 deleteConference
For XML definition see Section 7.
6.3 User Primitives
6.3.1 addUser
For XML definition see Section 7.
Levin, et al. Expires August 24, 2005 [Page 7]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
The Client MUST provide the 'userEntity' value in the request. If
the client doesn't care (and/or) doesn't know the 'endpointEntity'
value, it must populate it with the value equal to the 'userEntity'.
The client MUST expect to receive in the successful response a real
value of the 'endpointEntity'.
6.3.2 getUser
For XML definition see Section 7.
6.3.3 deleteUser
For XML definition see Section 7.
6.4 Endpoint Primitives
6.4.1 addEndpoint
For XML definition see Section 7.
The Client MUST provide a valid 'endpointEntity' value in the
request.
6.4.2 getEndpoint
For XML definition see Section 7.
6.4.3 deleteEndpoint
For XML definition see Section 7.
6.5 Media Primitives
6.5.1 addMedia
The 'mediaId' value in the request is ignored by the CCCP server.
The CCCP server MUST replace the value with the real 'media-id' value
in the corresponding response.
6.5.2 getMedia
This operation is used to get the description of a media stream of a
participant in the conference.
For XML definition see Section 7.
Levin, et al. Expires August 24, 2005 [Page 8]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
6.5.3 deleteMedia
This operation is used to remove a media stream from a participant in
the conference.
For XML definition see Section 7.
6.5.4 modifyMediaStatus
This operation can be used for muting and un-muting media streams.
For XML definition see Section 7.
6.6 Stimulus Primitives
This operation is used to convey opaque pre-defined requests from a
CCCP client to a CCCP server.
XML TBD.
7. The XML
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="urn:ietf:params:xml:ns:cccp" xmlns:tns="urn:ietf:params:xml:ns:cccp" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:ietf:params:xml:ns:cccp" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!--
This import brings in the XML language attribute xml:lang
-->
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd" />
<!--
CONFERENCE REQUEST ELEMENT
-->
<xs:element name="request" type="request-type"/>
<!--
CONFERENCE RESPONSE ELEMENT
-->
<xs:element name="response" type="response-type"/>
<!--
CONFERENCE REQUEST TYPE
-->
<xs:complexType name="request-type">
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element name="getMcu" type="get-mcu-type"/>
<xs:element name="addConference" type="add-conference-type"/>
<xs:element name="getConference" type="get-conference-type"/>
<xs:element name="deleteConference" type="delete-conference-type"/>
Levin, et al. Expires August 24, 2005 [Page 9]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<xs:element name="addUser" type="add-user-type"/>
<xs:element name="modifyUser" type="add-user-type"/>
<xs:element name="getUser" type="get-user-type"/>
<xs:element name="deleteUser" type="delete-user-type"/>
<xs:element name="addEndpoint" type="add-endpoint-type"/>
<xs:element name="getEndpoint" type="get-endpoint-type"/>
<xs:element name="deleteEndpoint" type="delete-endpoint-type"/>
<xs:element name="addMedia" type="add-media-type"/>
<xs:element name="modifyMedia" type="add-media-type"/>
<xs:element name="getMedia" type="get-media-type"/>
<xs:element name="deleteMedia" type="delete-media-type"/>
<xs:element name="modifyMediaStatus" type="modify-media-status-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="requestId" type="xs:string"/>
<xs:attribute name="from" type="xs:anyURI"/>
<xs:attribute name="to" type="xs:anyURI"/>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
CONFERENCE RESPONSE TYPE
-->
<xs:complexType name="response-type">
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element name="getMcu" type="get-mcu-response-type"/>
<xs:element name="addConference" type="add-conference-response-type"/>
<xs:element name="getConference" type="get-conference-response-type"/>
<xs:element name="deleteConference" type="delete-conference-response-type"/>
<xs:element name="addUser" type="add-user-response-type"/>
<xs:element name="modifyUser" type="add-user-response-type"/>
<xs:element name="getUser" type="get-user-response-type"/>
<xs:element name="deleteUser" type="delete-user-response-type"/>
<xs:element name="addEndpoint" type="add-endpoint-response-type"/>
<xs:element name="getEndpoint" type="get-endpoint-response-type"/>
<xs:element name="deleteEndpoint" type="delete-endpoint-response-type"/>
<xs:element name="addMedia" type="add-media-response-type"/>
<xs:element name="modifyMedia" type="add-media-response-type"/>
<xs:element name="getMedia" type="get-media-response-type"/>
<xs:element name="deleteMedia" type="delete-media-response-type"/>
<xs:element name="modifyMediaStatus" type="modify-media-status-response-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="requestId" type="xs:string"/>
<xs:attribute name="from" type="xs:anyURI"/>
<xs:attribute name="to" type="xs:anyURI"/>
Levin, et al. Expires August 24, 2005 [Page 10]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<xs:attribute name="code" type="response-code-type"/>
<xs:attribute name="reason" type="reason-code-type" use="optional"/>
<xs:attribute name="displayString" type="xs:string" use="optional"/>
<xs:attribute name="timeOut" type="xs:nonNegativeInteger" use="optional"/>
<xs:attribute name="retryAfter" type="xs:nonNegativeInteger" use="optional"/>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
RESPONSE CODE TYPE
-->
<xs:simpleType name="response-code-type">
<xs:restriction base="xs:string">
<xs:enumeration value="success"/>
<xs:enumeration value="pending"/>
<xs:enumeration value="failure"/>
</xs:restriction>
</xs:simpleType>
<!--
REASON CODE TYPE
-->
<xs:simpleType name="reason-code-type">
<xs:restriction base="xs:string">
<xs:enumeration value="serverBusy"/>
<xs:enumeration value="timeout"/>
<xs:enumeration value="unauthorized"/>
<xs:enumeration value="requestMalformed"/>
<xs:enumeration value="requestTooLarge"/>
<xs:enumeration value="other"/>
</xs:restriction>
</xs:simpleType>
<!--
CONFERENCE KEYS TYPE
-->
<xs:complexType name="conference-keys-type">
<xs:attribute name="confEntity" type="xs:anyURI"/>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
USER KEYS TYPE
-->
<xs:complexType name="user-keys-type">
<xs:attribute name="confEntity" type="xs:anyURI"/>
<xs:attribute name="userEntity" type="xs:anyURI"/>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ENDPOINT KEYS TYPE
Levin, et al. Expires August 24, 2005 [Page 11]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
-->
<xs:complexType name="endpoint-keys-type">
<xs:attribute name="confEntity" type="xs:anyURI"/>
<xs:attribute name="userEntity" type="xs:anyURI"/>
<xs:attribute name="endpointEntity" type="xs:anyURI"/>
<xs:attribute name="callId" type="xs:string" use="optional"/>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
MEDIA KEYS TYPE
-->
<xs:complexType name="media-keys-type">
<xs:attribute name="confEntity" type="xs:anyURI"/>
<xs:attribute name="userEntity" type="xs:anyURI"/>
<xs:attribute name="endpointEntity" type="xs:anyURI"/>
<xs:attribute name="callId" type="xs:string" use="optional"/>
<xs:attribute name="mediaId" type="xs:string"/>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET MCU TYPE
-->
<xs:complexType name="get-mcu-type">
<xs:sequence>
<xs:element name="conference" type="conference-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET MCU RESPONSE TYPE
-->
<xs:complexType name="get-mcu-response-type">
<xs:sequence>
<xs:element name="mcu" type="xs:anyURI" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ADD CONFERENCE TYPE
-->
<xs:complexType name="add-conference-type">
<xs:sequence>
<xs:element name="conference" type="conference-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
Levin, et al. Expires August 24, 2005 [Page 12]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ADD CONFERENCE RESPONSE TYPE
-->
<xs:complexType name="add-conference-response-type">
<xs:sequence>
<xs:element name="conference" type="conference-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET CONFERENCE TYPE
-->
<xs:complexType name="get-conference-type">
<xs:sequence>
<xs:element name="conferenceKeys" type="conference-keys-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET CONFERENCE RESPONSE TYPE
-->
<xs:complexType name="get-conference-response-type">
<xs:sequence>
<xs:element name="conference" type="conference-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
DELETE CONFERENCE TYPE
-->
<xs:complexType name="delete-conference-type">
<xs:sequence>
<xs:element name="conferenceKeys" type="conference-keys-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
DELETE CONFERENCE RESPONSE TYPE
-->
<xs:complexType name="delete-conference-response-type">
<xs:sequence>
<xs:element name="conference" type="conference-type" minOccurs="0"/>
Levin, et al. Expires August 24, 2005 [Page 13]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ADD USER TYPE
-->
<xs:complexType name="add-user-type">
<xs:sequence>
<xs:element name="conferenceKeys" type="conference-keys-type"/>
<xs:element name="user" type="user-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ADD USER RESPONSE TYPE
-->
<xs:complexType name="add-user-response-type">
<xs:sequence>
<xs:element name="conferenceKeys" type="conference-keys-type" minOccurs="0"/>
<xs:element name="user" type="user-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET USER TYPE
-->
<xs:complexType name="get-user-type">
<xs:sequence>
<xs:element name="userKeys" type="user-keys-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET USER RESPONSE TYPE
-->
<xs:complexType name="get-user-response-type">
<xs:sequence>
<xs:element name="conferenceKeys" type="conference-keys-type" minOccurs="0"/>
<xs:element name="user" type="user-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
Levin, et al. Expires August 24, 2005 [Page 14]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
DELETE USER TYPE
-->
<xs:complexType name="delete-user-type">
<xs:sequence>
<xs:element name="userKeys" type="user-keys-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
DELETE USER RESPONSE TYPE
-->
<xs:complexType name="delete-user-response-type">
<xs:sequence>
<xs:element name="conferenceKeys" type="conference-keys-type" minOccurs="0"/>
<xs:element name="user" type="user-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ADD ENDPOINT TYPE
-->
<xs:complexType name="add-endpoint-type">
<xs:sequence>
<xs:element name="userKeys" type="user-keys-type"/>
<xs:element name="endpoint" type="endpoint-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ADD ENDPOINT RESPONSE TYPE
-->
<xs:complexType name="add-endpoint-response-type">
<xs:sequence>
<xs:element name="userKeys" type="user-keys-type" minOccurs="0"/>
<xs:element name="endpoint" type="endpoint-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET ENDPOINT TYPE
-->
<xs:complexType name="get-endpoint-type">
<xs:sequence>
<xs:element name="endpointKeys" type="endpoint-keys-type"/>
Levin, et al. Expires August 24, 2005 [Page 15]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET ENDPOINT RESPONSE TYPE
-->
<xs:complexType name="get-endpoint-response-type">
<xs:sequence>
<xs:element name="userKeys" type="user-keys-type" minOccurs="0"/>
<xs:element name="endpoint" type="endpoint-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
DELETE ENDPOINT TYPE
-->
<xs:complexType name="delete-endpoint-type">
<xs:sequence>
<xs:element name="endpointKeys" type="endpoint-keys-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
DELETE ENDPOINT RESPONSE TYPE
-->
<xs:complexType name="delete-endpoint-response-type">
<xs:sequence>
<xs:element name="userKeys" type="user-keys-type" minOccurs="0"/>
<xs:element name="endpoint" type="endpoint-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
ADD MEDIA TYPE
-->
<xs:complexType name="add-media-type">
<xs:sequence>
<xs:element name="endpointKeys" type="endpoint-keys-type"/>
<xs:element name="media" type="media-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
Levin, et al. Expires August 24, 2005 [Page 16]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
ADD MEDIA RESPONSE TYPE
-->
<xs:complexType name="add-media-response-type">
<xs:sequence>
<xs:element name="endpointKeys" type="endpoint-keys-type" minOccurs="0"/>
<xs:element name="media" type="media-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET MEDIA TYPE
-->
<xs:complexType name="get-media-type">
<xs:sequence>
<xs:element name="mediaKeys" type="media-keys-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
GET MEDIA RESPONSE TYPE
-->
<xs:complexType name="get-media-response-type">
<xs:sequence>
<xs:element name="endpointKeys" type="endpoint-keys-type" minOccurs="0"/>
<xs:element name="media" type="media-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
DELETE MEDIA TYPE
-->
<xs:complexType name="delete-media-type">
<xs:sequence>
<xs:element name="mediaKeys" type="media-keys-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
DELETE MEDIA RESPONSE TYPE
-->
<xs:complexType name="delete-media-response-type">
<xs:sequence>
<xs:element name="endpointKeys" type="endpoint-keys-type" minOccurs="0"/>
<xs:element name="media" type="media-type" minOccurs="0"/>
Levin, et al. Expires August 24, 2005 [Page 17]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
MODIFY MEDIA STATUS TYPE
-->
<xs:complexType name="modify-media-status-type">
<xs:sequence>
<xs:element name="mediaKeys" type="media-keys-type"/>
<xs:element name="mediaStatus" type="media-status-type"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
<!--
MODIFY MEDIA STATUS RESPONSE TYPE
-->
<xs:complexType name="modify-media-status-response-type">
<xs:sequence>
<xs:element name="mediaKeys" type="media-keys-type" minOccurs="0"/>
<xs:element name="mediaStatus" type="media-status-type" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other"/>
</xs:complexType>
8. Example
In order to illustrate the CCCP syntax, the example below shows all
possible primitives issued in a single request and the corresponding
answers are included in a single response. In this case all the
primitives are executed as a single atomic operation.
Editor's Note: In the next version of this document the example will
be split into separate operations with clear semantics for each.
8.1 Request
<request requestId="1" from="sip:someone@example.com" to="conf1@mcu.example.com" aaId="ANBDSJ">
<getMcu>
<conference entity="sip:conf233@example.com">
<!--
CONFERENCE INFO
-->
Levin, et al. Expires August 24, 2005 [Page 18]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<conference-description>
<maximum-user-count>
<entry role="any">
<count>100</count>
</entry>
</maximum-user-count>
<available-media>
<entry id="1">
<type>audio</type>
</entry>
<entry id="2">
<type>video</type>
</entry>
</available-media>
</conference-description>
</conference>
</getMcu>
<addConference>
<conference entity="sip:conf233@example.com">
<!--
CONFERENCE INFO
-->
<conference-description>
<subject>Agenda: This month's goals</subject>
<conf-uris>
<entry>
<uri>tel:+18005671234</uri>
<display-text>TTI Bridge</display-text>
</entry>
</conf-uris>
<service-uris>
<entry>
<uri>http://sharepoint/salesgroup/</uri>
<purpose>web-page</purpose>
</entry>
</service-uris>
<maximum-user-count>
<entry role="any">
<count>52</count>
</entry>
<entry role="participant">
<count>50</count>
</entry>
</maximum-user-count>
<available-media>
<entry id="1">
<display-text>main audio</display-text>
Levin, et al. Expires August 24, 2005 [Page 19]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<type>audio</type>
</entry>
<entry id="2">
<display-text>main video</display-text>
<type>video</type>
</entry>
</available-media>
</conference-description>
</conference>
</addConference>
<getConference>
<conferenceKeys confEntity="sip:conf233@example.com"/>
</getConference>
<deleteConference>
<conferenceKeys confEntity="sip:conf233@example.com"/>
</deleteConference>
<addUser>
<conferenceKeys confEntity="sip:conf233@example.com"/>
<user entity="sip:bob@example.com">
<display-text>Bob Hoskins</display-text>
<!--
ENDPOINTS
-->
<endpoint entity="sip:bob@pc4.example.com">
<display-text>Bob's Laptop</display-text>
<joining-method>dialed-out</joining-method>
<!--
MEDIA
-->
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</endpoint>
</user>
</addUser>
<modifyUser>
<conferenceKeys confEntity="sip:conf233@example.com"/>
<user entity="sip:bob@example.com">
<roles>
<entry>participant</entry>
</roles>
</user>
Levin, et al. Expires August 24, 2005 [Page 20]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
</modifyUser>
<getUser>
<userKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com"/>
</getUser>
<deleteUser>
<userKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com"/>
</deleteUser>
<addEndpoint>
<userKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com"/>
<endpoint entity="sip:bob@pc4.example.com">
<display-text>Bob's Laptop</display-text>
<joining-method>dialed-out</joining-method>
<!--
MEDIA
-->
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</endpoint>
</addEndpoint>
<getEndpoint>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
</getEndpoint>
<deleteEndpoint>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
</deleteEndpoint>
<addMedia>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</addMedia>
<!--
MODIFY MEDIA
-->
<modifyMedia>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
<media id="1">
Levin, et al. Expires August 24, 2005 [Page 21]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<status>recvonly</status>
</media>
</modifyMedia>
<getMedia>
<mediaKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com" mediaId="1"/>
</getMedia>
<deleteMedia>
<mediaKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com" mediaId="1"/>
</deleteMedia>
<!--
MODIFY MEDIA STATUS
-->
<modifyMediaStatus>
<mediaKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com" mediaId="1"/>
<mediaStatus>recvonly</mediaStatus>
</modifyMediaStatus>
</request>
8.2 Response
<response requestId="1" from="sip:someone@example.com" to="conf1@mcu.example.com" aaId="ANBDSJ" code="success">
<addConference>
<conference entity="sip:conf233@example.com">
<!--
CONFERENCE INFO
-->
<conference-description>
<subject>Agenda: This month's goals</subject>
<conf-uris>
<entry>
<uri>tel:+18005671234</uri>
<display-text>TTI Bridge</display-text>
</entry>
</conf-uris>
<service-uris>
<entry>
<uri>http://sharepoint/salesgroup/</uri>
<purpose>web-page</purpose>
</entry>
</service-uris>
<maximum-user-count>
<entry role="any">
Levin, et al. Expires August 24, 2005 [Page 22]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<count>52</count>
</entry>
<entry role="participant">
<count>50</count>
</entry>
</maximum-user-count>
<available-media>
<entry id="1">
<type>audio</type>
</entry>
<entry id="2">
<type>video</type>
</entry>
</available-media>
</conference-description>
</conference>
</addConference>
<getConference>
<conference entity="sip:conf233@example.com">
<!--
CONFERENCE INFO
-->
<conference-description>
<subject>Agenda: This month's goals</subject>
<conf-uris>
<entry>
<uri>tel:+18005671234</uri>
<display-text>TTI Bridge</display-text>
</entry>
</conf-uris>
<service-uris>
<entry>
<uri>http://sharepoint/salesgroup/</uri>
<purpose>web-page</purpose>
</entry>
</service-uris>
<maximum-user-count>
<entry role="any">
<count>52</count>
</entry>
<entry role="participant">
<count>50</count>
</entry>
</maximum-user-count>
<available-media>
<entry id="1">
<type>audio</type>
Levin, et al. Expires August 24, 2005 [Page 23]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
</entry>
<entry id="2">
<type>video</type>
</entry>
</available-media>
</conference-description>
</conference>
</getConference>
<deleteConference>
<conference entity="sip:conf233@example.com"/>
</deleteConference>
<addUser>
<conferenceKeys confEntity="sip:conf233@example.com"/>
<user entity="sip:bob@example.com"></user>
</addUser>
<ModifyUser>
<conferenceKeys confEntity="sip:conf233@example.com"/>
<user entity="sip:bob@example.com"></user>
</ModifyUser>
<getUser>
<conferenceKeys confEntity="sip:conf233@example.com"/>
<user entity="sip:bob@example.com">
<display-text>Bob Hoskins</display-text>
<!--
ENDPOINTS
-->
<endpoint entity="sip:bob@pc4.example.com">
<display-text>Bob's Laptop</display-text>
<joining-method>dialed-out</joining-method>
<!--
MEDIA
-->
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</endpoint>
</user>
</getUser>
<deleteUser>
<conferenceKeys confEntity="sip:conf233@example.com"/>
<user entity="sip:bob@example.com"></user>
Levin, et al. Expires August 24, 2005 [Page 24]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
</deleteUser>
<addEndpoint>
<userKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com"/>
<endpoint entity="sip:bob@pc4.example.com"></endpoint>
</addEndpoint>
<getEndpoint>
<userKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com"/>
<endpoint entity="sip:bob@pc4.example.com">
<display-text>Bob's Laptop</display-text>
<joining-method>dialed-out</joining-method>
<!--
MEDIA
-->
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</endpoint>
</getEndpoint>
<deleteEndpoint>
<userKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com"/>
<endpoint entity="sip:bob@pc4example.com"></endpoint>
</deleteEndpoint>
<addMedia>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</addMedia>
<ModifyMedia>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
<media id="1"> </media>
</ModifyMedia>
<getMedia>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</getMedia>
Levin, et al. Expires August 24, 2005 [Page 25]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
<deleteMedia>
<endpointKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com"/>
<media id="1">
<display-text>main audio</display-text>
<type>audio</type>
</media>
</deleteMedia>
<!--
MODIFY MEDIA STATUS RESPONSE
-->
<modifyMediaStatus>
<mediaKeys confEntity="sip:conf233@example.com" userEntity="sip:bob@example.com" endpointEntity="sip:bob@pc33.example.com" mediaId="1"/>
<mediaStatus>recvonly</mediaStatus>
</modifyMediaStatus>
</response>
9. IANA Considerations
TBD.
10. Security Considerations
TBD.
11. Acknowledgements
The author would like to thank Gur Kimchi for his earlier work that
served as the starting point for this specification.
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] Rosenberg, J., "A Session Initiation Protocol (SIP) Event
Package for Conference State",
Internet-Draft draft-ietf-sipping-conference-package-08,
December 2004.
Levin, et al. Expires August 24, 2005 [Page 26]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 2005
12.2 Informative References
[3] Rosenberg, J., "A Framework for Conferencing with the Session
Initiation Protocol",
Internet-Draft draft-ietf-sipping-conferencing-framework-03,
October 2004.
[4] Barnes, M. and C. Boulton, "A Framework and Data Model for
Centralized Conferencing",
Internet-Draft draft-barnes-xcon-framework-02, February 2005.
Authors' Addresses
Orit Levin
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
USA
Email: oritl@microsoft.com
Roni Even
Polycom
94 Derech Em Hamoshavot
Petach Tikva, 49130
Israel
Email: roni.even@polycom.co.il
Pierre Hagendorf
RADVISION
24, Raul Wallenberg St.
Tel-Aviv, 69719
Israel
Email: pierre@radvision.com
Levin, et al. Expires August 24, 2005 [Page 27]
Internet-Draft Centralized Conference Control Protocol (CCCP) February 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.
Levin, et al. Expires August 24, 2005 [Page 28]
| PAFTECH AB 2003-2026 | 2026-04-22 22:49:37 |