diff options
Diffstat (limited to 'doc/rfc/rfc6504.txt')
-rw-r--r-- | doc/rfc/rfc6504.txt | 4371 |
1 files changed, 4371 insertions, 0 deletions
diff --git a/doc/rfc/rfc6504.txt b/doc/rfc/rfc6504.txt new file mode 100644 index 0000000..03b5c72 --- /dev/null +++ b/doc/rfc/rfc6504.txt @@ -0,0 +1,4371 @@ + + + + + + +Internet Engineering Task Force (IETF) M. Barnes +Request for Comments: 6504 Polycom +Category: Informational L. Miniero +ISSN: 2070-1721 Meetecho + R. Presta + S P. Romano + University of Napoli + March 2012 + + + Centralized Conferencing Manipulation Protocol (CCMP) + Call Flow Examples + +Abstract + + This document provides detailed call flows for the scenarios + documented in the Framework for Centralized Conferencing (XCON) (RFC + 5239) and in the XCON scenarios (RFC 4597). The call flows document + the use of the interface between a conference control client and a + conference control server using the Centralized Conferencing + Manipulation Protocol (CCMP) (RFC 6503). The objective is to provide + detailed examples for reference by both protocol researchers and + developers. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Not all documents + approved by the IESG are a candidate for any level of Internet + Standard; see Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc6504. + +Copyright Notice + + Copyright (c) 2012 IETF Trust and the persons identified as the + document authors. All rights reserved. + + + + + + + +Barnes, et al. Informational [Page 1] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction ....................................................3 + 2. Terminology .....................................................3 + 3. Overview ........................................................4 + 4. Working with CCMP ...............................................4 + 4.1. CCMP and the Data Model ....................................5 + 4.2. Using HTTP/TLS as a Transport ..............................6 + 4.3. Conference Notifications ..................................10 + 5. Conference Creation ............................................11 + 5.1. Basic Conference Creation .................................12 + 5.2. Conference Creation Using Blueprints ......................16 + 5.3. Conference Creation Using User-Provided Conference + Information ...............................................23 + 5.4. Cloning an Existing Conference ............................28 + 6. Conference Users Scenarios and Examples ........................31 + 6.1. Adding a Party ............................................32 + 6.2. Muting a Party ............................................35 + 6.3. Conference Announcements and Recordings ...................38 + 6.4. Monitoring for DTMF .......................................41 + 6.5. Entering a Password-Protected Conference ..................42 + 7. Sidebars Scenarios and Examples ................................44 + 7.1. Internal Sidebar ..........................................45 + 7.2. External Sidebar ..........................................54 + 7.3. Private Messages ..........................................60 + 7.4. Observing and Coaching ....................................64 + 8. Removing Participants and Deleting Conferences .................71 + 8.1. Removing a Party ..........................................71 + 8.2. Deleting a Conference .....................................74 + 9. Security Considerations ........................................75 + 10. Acknowledgements ..............................................76 + 11. References ....................................................76 + 11.1. Normative References .....................................76 + 11.2. Informative References ...................................76 + + + + + + + +Barnes, et al. Informational [Page 2] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +1. Introduction + + This document provides detailed call flows for the scenarios + documented in the Framework for Centralized Conferencing (XCON) + [RFC5239] and in the XCON scenarios [RFC4597]. The XCON scenarios + describe a broad range of use cases taking advantage of the advanced + conferencing capabilities provided by a system realization of the + XCON framework. The call flows document the use of the interface + between a conference control client and a conference control server + using the Centralized Conferencing Manipulation Protocol (CCMP) + [RFC6503]. + + Due to the broad range of functionality provided by the XCON + framework and the flexibility of the CCMP messaging, these call flows + should not be considered inclusive of all the functionality that can + provided by the XCON framework and protocol implementations. These + flows represent a sample to provide an overview of the feature-rich + capabilities of the XCON framework and CCMP messaging for protocol + developers, software developers, and researchers. + +2. Terminology + + This document uses the same terminology as found in the Architectural + Framework for Media Server Control [RFC5567] and in the Media Control + Channel Framework Call Flow Examples [CALL-FLOWS], with the following + terms and abbreviations used in the call flows. Also, note that the + term "call flows" is used in a very generic sense in this document + since the media is not limited to voice. The calls supported by the + XCON framework and CCMP can consist of media such as text, voice, and + video, including multiple media types in a single active conference. + + Conference and Media Control Client (CMCC): as defined in the XCON + framework. In the flows in this document, the CMCC is logically + equivalent to the use of a User Agent Client (UAC) as the client + notation in the media control call flows [CALL-FLOWS]. A CMCC + differs from a generic media client in being an XCON-aware entity, + thus, also being able to issue CCMP requests. + + Conference Server (ConfS): In this document, the term "conference + server" is used interchangeably with the term "Application Server + (AS)" as used in the media control architectural framework + [RFC5567]. A conference server is intended to be able to act as a + conference control server, as defined in the XCON framework, i.e., + it is able to handle CCMP requests and issue CCMP responses. + + + + + + + +Barnes, et al. Informational [Page 3] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + Media Server (MS): as defined in the media control architectural + framework [RFC5567]. + +3. Overview + + This document provides a sampling of detailed call flows that can be + implemented based on a system realization of the XCON framework + [RFC5239] and implementation of CCMP [RFC6503]. This is intended to + be a simple guide for the use of the conference control protocol + between the conference server and the conference control client. The + objective is to provide an informational base reference for protocol + developers, software developers, and researchers. + + This document focuses on the interaction between the conference and + media control client and the conferencing system, specifically the + conference server. The scenarios are based on those described in the + XCON framework, many of which are based on the advanced conferencing + capabilities described in the XCON scenarios. Additional scenarios + have been added to provide examples of other real-life scenarios that + are anticipated to be supported by the framework. With the exception + of an initial example with media control messaging, the examples do + not include the details for the media control [RFC6505], call + signaling, or Binary Floor Control Protocols (BFCPs) [RFC4582]. This + document references the scenarios in the media control call flows + [CALL-FLOWS], SIP call control conferencing, [RFC4579], and BFCP + documents. + + The rest of this document is organized as follows. Section 4 + presents an overview on CCMP, together with some implementation- + related details and related matters like HTTPS transport and + notifications. Section 5 presents the reader with examples showing + the different approaches CCMP provides to create a new conference. + Section 6 more generally addresses the different user-related + manipulations that can be achieved by means of CCMP, by presenting a + number of interesting scenarios. Section 7 addresses several + scenarios that may involve the use of sidebars. Section 8 shows how + CCMP can be used to remove conferences and users from the system. + Finally, Section 9 provides a few details on the security + considerations when it comes to implementing CCMP. + +4. Working with CCMP + + This section provides a brief introduction as to how the Centralized + Conferencing Manipulation Protocol (CCMP) [RFC6503] works and how it + can be transported across a network. A typical CCMP interaction + focusing on relevant aspects of the client-server communication is + + + + + +Barnes, et al. Informational [Page 4] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + described. Please note that this section assumes the reader has read + and understood the CCMP document. This section is intended to help + the reader understand the actual protocol interactions. + + First, a description of the protocol itself is provided Section 4.1, + including some implementation considerations. In Section 4.2, an + effective CCMP interaction is presented by exploiting HTTPS as a + transport. Finally, notifications are described in Section 4.3. + + The document then presents and describes some actual flows in detail + in the sections to follow. + +4.1. CCMP and the Data Model + + CCMP is an protocol based on XML [W3C.REC-xml-20081126]. It has been + designed as a request/response protocol. It is completely stateless, + which means implementations can safely handle transactions + independently from each other. + + The protocol allows for the manipulation of conference objects and + related users. This manipulation allows a conference and media + control client (briefly CMCC in all the following sections) to + create, update, and remove basically everything that is related to + the objects handled by a conferencing system. This is reflected in + the allowed operations (retrieve, create, update, delete) and the + specified request types (ranging from the manipulation of blueprints + and conferences to users and sidebars). For instance, CCMP provides + ways to: + + o retrieve the list of registered and/or active conferences in the + system; + + o create new conferences by exploiting several different approaches; + + o add/remove users to/from a conference; + + o update a conference with respect to all of its aspects; + + and so on. + + While CCMP acts as the means to manipulate conference objects, CCMP + does not define these conference objects. A separate document + specifies how a conference object and all its components have to be + constructed (Conference Information Data Model for Centralized + Conferencing (XCON) [RFC6501]). CCMP, depending upon the request + type and the related operation, carries pieces of conference objects + (or any object as a whole) according to the aforementioned + + + + +Barnes, et al. Informational [Page 5] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + specification. This means that any implementation aiming at being + compliant with CCMP has to make sure that the transported objects are + completely compliant with the data model specification and coherent + with the constraints defined therein. To make this clearer, there + are elements that are mandatory in a conference object: issuing a + syntactically correct CCMP request that carries a wrong conference + object is doomed to result in a failure. For this reason, it is + suggested that the interested implementers take special care in + carefully checking the data model handlers as well in order to avoid + potential mistakes. + + However, there are cases when a mandatory element in the data model + cannot be assigned in a conference object by a CCMP user. For + example, a CMCC may be requesting the direct creation of a new + conference; in this case, a conference object assumes an 'entity' + attribute uniquely identifying the conference to be in place. Thus, + the CMCC has no way to know a priori what the entity will be, since + it is generated by the ConfS after the request. For scenarios like + this one, the CCMP specification describes the use of a dedicated + placeholder wildcard (i.e., "AUTO_GENERATE_X", where X is an integer) + to make the conference object compliant with the data model: the + wildcard would then be replaced by the ConfS with the right value. + +4.2. Using HTTP/TLS as a Transport + + CCMP requires that implementations support HTTP/TLS as the transport + mechanism. Per CCMP, a CMCC sends a request as part of an HTTPS POST + message, and the ConfS would reply with a 200 OK HTTPS response. In + both cases, the HTTPS messages carry the CCMP messages as payload, + which is reflected in the Content-Type header + ("application/ccmp+xml"). Figure 1 presents a ladder diagram of such + an interaction, which is followed by a dump of the exchanged HTTPS + messages for further analysis. The examples in the remainder of this + document show only the CCMP interactions. + + + + + + + + + + + + + + + + + +Barnes, et al. Informational [Page 6] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + CMCC ConfS + | | + | 1. HTTPS POST (CCMP request) | + |--------------------------------------------->| + | | + | |--+ Parse request, + | | | update object + | |<-+ and reply + | | + | 2. 200 OK (CCMP response) | + |<---------------------------------------------| + | | + |--+ Parse response and | + | | update local copy | + |<-+ of conference object | + | | + ' ' + ' ' + + Figure 1: CCMP on HTTPS + + Per the protocol dump in the following lines, the CMCC has issued a + CCMP request (a blueprintRequest message asking for a blueprint + retrieval, i.e., with the <operation> element set to "retrieve" ) + towards the ConfS. The request has been carried as payload of an + HTTPS POST (message 1.) towards a previously known location. The + mandatory Host header has been specified, and the Content-Type header + has been correctly set as well ("application/ccmp+xml"). + + The ConfS, in turn, has handled the request and replied accordingly. + The response (a blueprintResponse message with a <response-code> set + to a successful value, "200") has been carried as payload of a 200 OK + HTTPS response (message 2.). As before, the Content-Type header has + been correctly set ("application/ccmp+xml"). + +1. CMCC -> ConfS (HTTPS POST, CCMP request) +------------------------------------------ + POST /Xcon/Ccmp HTTP/1.1 + Content-Length: 657 + Content-Type: application/ccmp+xml + Host: example.com:443 + Connection: Keep-Alive + User-Agent: Apache-HttpClient/4.0.1 (java 1.5) + + + + + + + + +Barnes, et al. Informational [Page 7] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-blueprint-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:AudioRoom@example.com</confObjID> + <operation>retrieve</operation> + <ccmp:blueprintRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. CMCC <- ConfS (200 to POST, CCMP response) +--------------------------------------------- + HTTP/1.1 200 OK + X-Powered-By: Servlet/2.5 + Server: Sun GlassFish Communications Server 1.5 + Content-Type: application/ccmp+xml;charset=ISO-8859-1 + Content-Length: 1652 + Date: Thu, 04 Feb 2010 14:47:56 GMT + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-blueprint-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:AudioRoom@example.com</confObjID> + <operation>retrieve</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <ccmp:blueprintResponse> + <blueprintInfo entity="xcon:AudioRoom@example.com"> + <info:conference-description> + <info:display-text>AudioRoom</info:display-text> + <info:maximum-user-count>2</info:maximum-user-count> + <info:available-media> + <info:entry label="audioLabel"> + <info:type>audio</info:type> + </info:entry> + </info:available-media> + </info:conference-description> + <info:users> + <xcon:join-handling>allow</xcon:join-handling> + + + +Barnes, et al. Informational [Page 8] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:users> + <xcon:floor-information> + <xcon:floor-request-handling>confirm + </xcon:floor-request-handling> + <xcon:conference-floor-policy> + <xcon:floor id="audioLabel"></xcon:floor> + </xcon:conference-floor-policy> + </xcon:floor-information> + </blueprintInfo> + </ccmp:blueprintResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + + + For completeness, the following provides some details of the CCMP + interaction. Despite the simplicity of the request, this flow + provides some relevant information on how CCMP messages are built. + Specifically, both the CCMP request and the CCMP response share a + subset of the message: + + o <confUserID>: this element, provided by the CMCC, refers to the + requester by means of his XCON-USERID; except in a few scenarios + (presented in the following sections), this element must always + contain a valid value; + + o <confObjID>: this element refers to the target conference object, + according to the request in place; + + o <operation>: this element specifies the operation the CMCC wants + to perform, according to the specific request type. + + Besides those elements, the CMCC (let's say Alice, whose XCON-USERID + is "xcon-userid:Alice@example.com") has also provided an additional + element, <blueprintRequest>. The name of that element varies + according to the request type in which the CMCC is interested. In + this specific scenario, the CMCC was interested in acquiring details + concerning a specific blueprint (identified by its XCON-URI + "xcon:AudioRoom@example.com", as reflected in the provided + <confObjID> target element), and so the request consisted in an empty + <blueprintRequest> element. It will be clearer in the following + sections that different request types may require different elements + and, as a consequence, different content. + + Considering the request was a blueprintRequest message, the ConfS has + replied with a blueprintResponse message containing a + <blueprintResponse> element. This element includes a complete dump + of the conference object (compliant with the data model) describing + the requested blueprint. + + + +Barnes, et al. Informational [Page 9] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + Without providing additional details of this interaction, it is worth + noting that this was the example of the simplest CCMP communication + that could take place between a CMCC and a ConfS, a blueprint + request: this scenario will be described in more detail in + Section 5.2. + +4.3. Conference Notifications + + The XCON framework [RFC5239] identifies several different possible + protocol interactions between a conference server and a conferencing + client. One of those interactions is generically called + "notification protocol" providing a mechanism for all clients + interested in being informed by the server whenever something + relevant happens in a conference. When SIP is used as the call + signaling protocol in a CCMP implementation, the XCON event package + [RFC6502], which extends the SIP event package for conference state + [RFC4575] must be supported. A SIP client uses the SIP SUBSCRIBE + message for the XCON event package to subscribe to notifications + related to a specific conference. A SIP client would receive + notifications describing all the changes to the document via a SIP + NOTIFY message. An example ladder diagram is presented in Figure 2; + in this figure, we assume a CMCC has updated a conference object, and + a previously subscribed SIP client is notified of the update. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Barnes, et al. Informational [Page 10] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + CMCC ConfS UAC + | | | + | | 1. SIP SUBSCRIBE | + | |<--------------------------| + | Handle +--| | + | new | | | + | subscription +->| 2. SIP 200 OK | + | |-------------------------->| + | | | + ' ' ' + ' ' ' + | | | + | 3. CCMP (add user) | | + |---------------------->| | + | |--+ Add user | + | | | to conf. | + | |<-+ object | + | 4. CCMP (success) | | + |<----------------------| | + | | 5. SIP NOTIFY (changes) | + | |-------------------------->| + | | 6. SIP 200 OK | + | |<--------------------------| + | | | + ' ' ' + ' ' ' + + Figure 2: XCON Event Package: SIP Notifications + + The detailed flows in this document generically present a + notification, when appropriate, but do not include the SIP messaging + details. + +5. Conference Creation + + This section provides details associated with the various ways in + which a conference can be created using CCMP and the XCON framework + constructs. As previously mentioned, the details of the media + control, call signaling, and floor control protocols, where + applicable, are annotated in the flows without showing all the + details. This also applies to CCMP, whose flows are related to the + protocol alone, hiding any detail concerning the transport that may + have been used (e.g., HTTPS). However, for clarification purposes, + the first example in Section 5.1 provides the details of the media + control messaging with the standard annotation used throughout the + remainder of this document. In subsequent flows, only this + + + + + +Barnes, et al. Informational [Page 11] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + annotation (identified by lowercase letters) is included, and the + reader is encouraged to refer to the call flows in the relevant + documents for details about the other protocols. The annotations for + the call signaling are on the left side of the conference server + vertical bar, and those for the media control messaging are on the + right side. + +5.1. Basic Conference Creation + + The simplest manner in which a conference can be created is + accomplished by the client sending a confRequest message with the + <operation> element set to "create" as the only parameter to the + conference server, together with the <confUserID> associated with the + requesting client itself. This results in the creation of a default + conference, with an XCON-URI in the form of the <confObjID> element, + the XCON-USERID in the form of the <confUserID> element (the same one + already present in the request), and the data for the conference + object in the <confInfo> parameter all returned in the confResponse + message. This example also adds the issuing user to the conference + upon creation with the 'method' attribute in the <target> child + element of <allowed-users-list> set to "dial-out". + + The specific data for the conference object is returned in the + confResponse message in the <confInfo> parameter. This allows the + client (with the appropriate authorization) to manipulate these data + and add additional participants to the conference, as well as change + the data during the conference. In addition, the client may + distribute the conferencing information to other participants + allowing them to join, the details of which are provided in + additional flows. Please notice that, according to the CCMP + specification, the return of the new conference data in the + <confInfo> element is not mandatory: if the <confInfo> parameter of + is not included in the successful confResponse/create message, a + subsequent confRequest/retrieve message of the returned <confObjID> + can be triggered to provide the requesting client with the detailed + conference description. + + Clients that are not XCON-aware can join the conference using a + specific signaling interface such as SIP [RFC3261] (using the + signaling interface to the conference focus as described in + [RFC4579]), or other supported signaling protocols, being XCON- + agnostic with respect to them. However, these details are not shown + in the message flows. The message flows in this document identify + the point in the message flows at which this signaling occurs via the + lowercase letter items (i.e., (a)...(x)) along with the appropriate + text for the processing done by the conference server. + + + + + +Barnes, et al. Informational [Page 12] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + As previously described, this example also shows how the conferencing + system may make use of other standard protocol components for + complete functionality. An example of that is the media control + framework [RFC5567], which allows the conferencing system to + configure conference mixes, Interactive Voice Response (IVR) dialogs, + and all sorts of media-related interactions an application like this + may need. In order to provide the reader with some insight on these + interactions, the conference server in this example also configures + and starts a mixer via a media control channel as soon as the + conference is created (transactions A1 and A2), and attaches clients + to it when necessary (e.g., when CMCC1 joins the conference by means + of SIP signaling, its media channels are attached to the media server + (MS) in B1/B2). Note, that the media control interfaces are NOT + shown in the remaining call flows in this document but rather follow + the same annotation as with the SIP signaling such that (b) + correlates with the A1 and A2 transactions and (d) correlates with + the B1 and B2 transactions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Barnes, et al. Informational [Page 13] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + CMCC1 CMCC2 CMCCx ConfS MS + | | | | | + |(1)confRequest(confUserID, create) | | + |-------------------------------------->| | + | | (a)Create +---| | + | | |Conf | | | + | | |Object | | | + | | |& IDs +-->| | + | | | | A1. CONTROL | + | | | |+++++++++++>>| + | | | |(create conf)|--+ (b) + | | | | | | create + | | | | | | conf and + | | | | A2. 200 OK |<-+ its ID + | | | |<<+++++++++++| + | | | |(confid=Y) | + |(2)confResponse(confUserID,confObjID, | | + | create, 200, success, | | + | version, confInfo) | | + |<--------------------------------------| | + | | | | | + | | (c) Focus +---| | + | | sets up | | | + | | signaling | | | + | | to CMCC1 +-->| | + | | | | | + | | | | B1. CONTROL | + | | | |+++++++++++>>| + | | | | (join CMCC1 | + | | | | <->confY) | + | | | | | + | | | | |--+(d) join + | | | | | | CMCC1 & + | | | | B2.200 OK |<-+ conf Y + | | | |<<+++++++++++| + | | | | | + |<<#################################################>>| + | Now the CMCC1 is mixed in the conference | + |<<#################################################>>| + | | | | | + |******CMCC1 may then manipulate conference data *****| + |****** and add addt'l users, etc. | *****| + ' ' ' ' ' + ' ' ' ' ' + ' ' ' ' ' + + Figure 3: Create Basic Conference - Complete flow + + + + +Barnes, et al. Informational [Page 14] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +1. confRequest/create message (Alice creates a default conference) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <operation>create</operation> + <ccmp:confRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. confResponse/create message ("success", created conference + object returned) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>1</version> + <ccmp:confResponse> + <confInfo entity="xcon:8977794@example.com"> + <info:conference-description> + <info:display-text> + Default conference initiated by Alice + </info:display-text> + <info:conf-uris> + <info:entry> + <info:uri> + xcon:8977794@example.com + </info:uri> + <info:display-text> + Conference XCON-URI + </info:display-text> + + + + +Barnes, et al. Informational [Page 15] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:entry> + </info:conf-uris> + <info:maximum-user-count>10 + </info:maximum-user-count> + <info:available-media> + <info:entry label="11"> + <info:type>audio</info:type> + </info:entry> + </info:available-media> + </info:conference-description> + <info:conference-state> + <info:active>false</info:active> + </info:conference-state> + <info:users> + <xcon:join-handling>allow</xcon:join-handling> + <xcon:allowed-users-list> + <xcon:target uri="xcon-userid:Alice@example.com" + method="dial-out"/> + </xcon:allowed-users-list> + </info:users> + </confInfo> + </ccmp:confResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 4: Create Basic Conference Detailed Messaging + +5.2. Conference Creation Using Blueprints + + The previous example showed the creation of a new conference using + default values. This means the client provided no information about + how she wanted the conference to be created. The XCON framework (and + CCMP as a consequence) allows for the implementation of templates. + These templates are called "conference blueprints" and are basically + conference objects with predefined settings. This means that a + client might get a list of blueprints, choose the one that most fits + his needs, and use the chosen blueprint to create a new conference. + + Figure 5 provides an example of one client, Alice, discovering the + conference blueprints available for a particular conferencing system + and creating a conference based on the desired blueprint. In + particular, Alice is interested in those blueprints suitable to + represent a video conference, i.e., a conference in which both audio + and video are available, so she makes use of the filter mechanism + provided by CCMP to make a selective blueprints retrieve request. + This results in three distinct CCMP transactions. + + + + + +Barnes, et al. Informational [Page 16] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + CMCC Alice ConfS + | | + | (1) blueprintsRequest | + | (confUserID,xpathFilter) | + |------------------------------>| + | | + | (2) blueprintsResponse | + | (confUserID, | + | 200, success, | + | blueprintsInfo) | + | | + |<------------------------------| + | | + |--+ | + | | choose preferred | + | | blueprint from the | + | | list (blueprintName) | + |<-+ | + | | + | (3) blueprintRequest | + | (confUserID,confObjID, | + | retrieve) | + |------------------------------>| + | | + | 4) blueprintResponse | + | (confUserID,confObjID,| + | retrieve, 200, | + | success, confInfo) | + |<------------------------------| + | | + | (5) confRequest(confUserID, | + | confObjID,create) | + |------------------------------>| + | | + | (a)Create +---| + | Conf | | + | Object | | + | & IDs +-->| + | |--+ (b) MS + | | | creates + | | | conf and + | |<-+ its ID + | | (confid=Y) + |(6) confResponse | + | (confUserID, confObjID*, | + | create, 200, success) | + |<------------------------------| + | | + + + +Barnes, et al. Informational [Page 17] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + | | + | | + ' ' + ' ' + + Figure 5: Client Creation of Conference Using Blueprints + + 1. Alice first sends a blueprintsRequest message to the conference + server identified by the conference server discovery process. + This request contains the <confUserID> set to the XCON-USERID of + the user issuing the request (in this case, the one belonging to + Alice) and the <xpathFilter> element by which Alice specifies she + desires to obtain only blueprints providing support for both + audio and video: for this purpose, the xpath query contained in + this field is: "/conference-info[conference-description/ + available-media/entry/type='audio' and conference-description/ + available-media/entry/type='video']". Upon receipt of the + blueprintsRequest message, the conference server would first + ensure, on the basis of the <confUserID> parameter, that Alice + has the appropriate authority based on system policies to receive + the requested kind of blueprints supported by that system. + + 2. All blueprints that Alice is authorized to use are returned in a + blueprintsResponse message in the <blueprintsInfo> element. + + 3. Upon receipt of the blueprintsResponse message containing the + blueprints, Alice determines which blueprint to use for the + conference to be created. Alice sends a blueprintRequest message + to get the specific blueprint as identified by the <confObjID>. + + 4. The conference server returns the details associated with the + specific blueprint identified by the <confObjID> in the + <confInfo> element within the blueprintResponse message. + + 5. Alice finally sends a confRequest message with a "create" + <operation> to the conference server to create a conference + reservation cloning the chosen blueprint. This is achieved by + writing the blueprint's XCON-URI in the <confObjID> parameter. + + 6. Upon receipt of the confRequest/create message, the conference + server uses the received blueprint to clone a conference, + allocating a new XCON-URI (called "confObjID*" in the example). + The conference server then sends a confResponse message including + the new "confObjID*" associated with the newly created conference + instance as the value of the <confObjID> parameter. Upon receipt + of the confResponse message, Alice can now add other users to the + conference. + + + + +Barnes, et al. Informational [Page 18] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + 1. blueprintsRequest message (Alice requires the list of the + available blueprints with video support) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-blueprints-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <ccmp:blueprintsRequest> + <xpathFilter>/conference-info[conference-description/ + available-media/entry/type='audio' + and + conference-description/available-media/entry/type='video'] + </xpathFilter> + </ccmp:blueprintsRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. blueprintsResponse message (the server provides a + descriptions of the available blueprints + fitting Alice's request) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-blueprints-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <response-code>200</response-code> + <response-string>success</response-string> + <ccmp:blueprintsResponse> + <blueprintsInfo> + <info:entry> + <info:uri>xcon:VideoRoom@example.com</info:uri> + <info:display-text>VideoRoom</info:display-text> + <info:purpose>Video Room: + conference room with public access, + where both audio and video are available, + 4 users can talk and be seen at the same time, + and the floor requests are automatically accepted. + </info:purpose> + </info:entry> + <info:entry> + + + +Barnes, et al. Informational [Page 19] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:uri>xcon:VideoConference1@example.com</info:uri> + <info:display-text>VideoConference1</info:display-text> + <info:purpose>Public Video Conference: conference + where both audio and video are available, + only one user can talk + </info:purpose> + </info:entry> + </blueprintsInfo> + </ccmp:blueprintsResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + +3. blueprintRequest/retrieve message (Alice wants the + "VideoRoom" blueprint) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-blueprint-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:VideoRoom@example.com</confObjID> + <operation>retrieve</operation> + <ccmp:blueprintRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + +4. blueprintResponse/retrieve message ("VideoRoom" + conference object returned) + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-blueprint-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:VideoRoom@example.com</confObjID> + <operation>retrieve</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <ccmp:blueprintResponse> + <blueprintInfo entity="xcon:VideoRoom@example.com"> + <info:conference-description> + <info:display-text>VideoRoom</info:display-text> + + + +Barnes, et al. Informational [Page 20] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:maximum-user-count>4</info:maximum-user-count> + <info:available-media> + <info:entry label="audioLabel"> + <info:type>audio</info:type> + </info:entry> + <info:entry label="videoLabel"> + <info:type>video</info:type> + </info:entry> + </info:available-media> + </info:conference-description> + <info:users> + <xcon:join-handling>allow</xcon:join-handling> + </info:users> + <xcon:floor-information> + <xcon:floor-request-handling>confirm + </xcon:floor-request-handling> + <xcon:conference-floor-policy> + <xcon:floor id="audioFloor"> + <xcon:media-label>audioLabel</xcon:media-label> + </xcon:floor> + <xcon:floor id="videoFloor"> + <xcon:media-label>videoLabel</xcon:media-label> + </xcon:floor> + </xcon:conference-floor-policy> + </xcon:floor-information> + </blueprintInfo> + </ccmp:blueprintResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + +5. confRequest/create message (Alice clones the "VideoRoom" blueprint) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:VideoRoom@example.com</confObjID> + <operation>create</operation> + <ccmp:confRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + + + + + +Barnes, et al. Informational [Page 21] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +6. confResponse/create message (cloned conference + object returned) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>1</version> + <ccmp:confResponse> + <confInfo entity="xcon:8977794@example.com"> + <info:conference-description> + <info:display-text> + New conference by Alice cloned from VideoRoom + </info:display-text> + <info:conf-uris> + <info:entry> + <info:uri> + xcon:8977794@example.com + </info:uri> + <info:display-text> + conference xcon-uri + </info:display-text> + <xcon:conference-password> + 8601 + </xcon:conference-password> + </info:entry> + </info:conf-uris> + <info:maximum-user-count>10</info:maximum-user-count> + <info:available-media> + <info:entry label="11"> + <info:type>audio</info:type> + </info:entry> + <info:entry label="12"> + <info:type>video</info:type> + </info:entry> + </info:available-media> + </info:conference-description> + <info:users> + <xcon:join-handling>allow</xcon:join-handling> + + + +Barnes, et al. Informational [Page 22] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:users> + <xcon:floor-information> + <xcon:floor-request-handling> + confirm</xcon:floor-request-handling> + <xcon:conference-floor-policy> + <xcon:floor id="1"> + <xcon:media-label>11</xcon:media-label> + </xcon:floor> + <xcon:floor id="2"> + <xcon:media-label>12</xcon:media-label> + </xcon:floor> + </xcon:conference-floor-policy> + </xcon:floor-information> + </confInfo> + </ccmp:confResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 6: Create Conference (Blueprint) Detailed Messaging + +5.3. Conference Creation Using User-Provided Conference Information + + A conference can also be created by the client sending a confRequest + message with the "create" <operation>, along with the desired data in + the form of the <confInfo> element for the conference to be created. + The request also includes the <confUserID> set to the XCON-USERID of + the requesting entity. + + This approach allows for a client (in this example Alice) to + completely describe what the conference object should look like, + without relying on defaults or blueprints; for example, which media + should be available, the topic, the users allowed to join, any + scheduling-related information, and so on. This can be done by + providing, in the creation request, a full conference object for the + server to parse. + + This <confInfo> parameter must comply with the data model + specification. This means that the 'entity' attribute is mandatory + and cannot be missing in the document. However, in this example, the + client is actually requesting the creation of a new conference, which + doesn't exist yet, so the 'entity' attribute is unknown. As + discussed in Section 4.1, CCMP allows for the use of a wildcard + placeholder. This placeholder ("xcon:AUTO_GENERATE_1@example.com" in + the example) is only to ensure the <confInfo> element is compliant + with the data model and would subsequently be replaced by the + conference server with the actual value. Thus, when the conference + server actually creates the conference, a valid value for the + 'entity' attribute is created for it as well, which takes the place + + + +Barnes, et al. Informational [Page 23] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + of the wildcard value when the actual conference object provided by + the client is populated. + + To give a flavor of what could be added to the conference object, we + assume Alice is also interested in providing scheduling-related + information. So, in this example, Alice also specifies by the + <conference-time> element included in the <confInfo> that the + conference she wants to create has to occur on a certain date + spanning from a certain start time to a certain stop time and has to + be replicated weekly. + + Moreover, Alice indicates by means of the <allowed-users-list> + element that at the start time Bob, Carol, and herself have to be + called by the conferencing system to join the conference (in fact, + for each <target> field corresponding to one of the aforementioned + clients, the 'method' attribute is set to "dial-out"). + + Once Alice has prepared the <confInfo> element and sent it as part of + her request to the server, if the conferencing system can support + that specific type of conference (capabilities, etc.), then the + request results in the creation of a conference. We assume the + request has been successful, and as a consequence, the XCON-URI in + the form of the <confObjID> parameter and the XCON-USERID in the form + of the <confUserID> parameter (again, the same as the requesting + entity) are returned in the confResponse message. + + In this example, the created conference object is not returned in the + successful confResponse message in the <confInfo> parameter. + Nevertheless, Alice could still retrieve the actual conference object + by issuing a confRequest message with a "retrieve" <operation> on the + XCON-URI returned in the <confObjID> of the previous response. Such + a request would show how, as described at the beginning of this + section, the 'entity' attribute of the conference object in the + <confInfo> field is replaced with the actual information (i.e., + "xcon:6845432@example.com"). + + + + + + + + + + + + + + + + +Barnes, et al. Informational [Page 24] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + Alice Bob Carol ConfS + | | | | + | | | | + |(1)confRequest(confUserID, | | + | create, confInfo) | | + | | | | + |-------------------------------------->| + | | | | + | | (a)Create +---| + | | |Conf | | + | | |Object | | + | | |& IDs +-->| + | | | |--+ (b) MS + | | | | | creates + | | | | | conf and + | | | |<-+ its ID + | | | | (confid=Y) + |(2)confResponse(confUserID,| | + | confObjID, create, | | + | 200, success, version) | + |<--------------------------------------| + | | | | + =========================================== + ... ... ... ... + ========== START TIME OCCURS ============== + | | (c) Focus +---| + | | sets up | | + | | signaling | | + | | to Alice +-->| + | | | | + | | | |--+(d) MS joins + | | | | | Alice & + | | | |<-+ conf Y + | | | | + | | | | + |<<###################################>>| + | Alice is mixed in the conference | + |<<###################################>>| + | | | | + | | (e)Focus +---| + | | sets up | | + | | signaling | | + | | to Bob | | + | | | +-->| + | | | | + | | | |--+(f)MS joins + | | | | | Bob & + | | | |<-+ conf Y + + + +Barnes, et al. Informational [Page 25] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + | | | | + | |<<###################>>| + | | Bob is mixed too | + | |<<###################>>| + | | | | + | | (g )Focus +---| + | | sets up | | + | | signaling | | + | | to Carol | | + | | CMCCx +-->| + | | | | + | | | |--+(h)MS joins + | | | | | CMCCx & + | | | |<-+ conf Y + | | | | + | | |<<#######>>| + | | |Carol mixed| + | | |<<#######>>| + | | | | + | | | | + | | | | + |<***All parties connected to conf Y***>| + | | | | + | | | | + ' ' ' ' + ' ' ' ' + ' ' ' ' + + Figure 7: Create Basic Conference from User-Provided Conference Info + + 1. confRequest/create message (Alice proposes a conference object + to be created) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <operation>create</operation> + <ccmp:confRequest> + <confInfo entity="xcon:AUTO_GENERATE_1@example.com"> + <info:conference-description> + <info:display-text> + Dial-out conference initiated by Alice + + + +Barnes, et al. Informational [Page 26] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:display-text> + <info:maximum-user-count>10</info:maximum-user-count> + <info:available-media> + <info:entry label="AUTO_GENERATE_2"> + <info:type>audio</info:type> + </info:entry> + </info:available-media> + <xcon:conference-time> + <xcon:entry> + <xcon:base> + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Mozilla.org/NONSGML + Mozilla Calendar V1.0//EN + BEGIN:VEVENT + DTSTAMP: 20100127T140728Z + UID: 20100127T140728Z-345FDA-alice@example.com + ORGANIZER:MAILTO:alice@example.com + DTSTART:20100127T143000Z + RRULE:FREQ=WEEKLY + DTEND: 20100127T163000Z + END:VEVENT + END:VCALENDAR + </xcon:base> + <xcon:mixing-start-offset + required-participant="moderator"> + 2010-01-27T14:29:00Z + </xcon:mixing-start-offset> + <xcon:mixing-end-offset + required-participant="participant"> + 2010-01-27T16:31:00Z + </xcon:mixing-end-offset> + <xcon:must-join-before-offset> + 2010-01-27T15:30:00Z + </xcon:must-join-before-offset> + </xcon:entry> + </xcon:conference-time> + </info:conference-description> + <info:users> + <xcon:join-handling>allow</xcon:join-handling> + <xcon:allowed-users-list> + <xcon:target uri="xcon-userid:alice@example.com" + method="dial-out"/> + <xcon:target uri="sip:bob83@example.com" + method="dial-out"/> + <xcon:target uri="sip:carol@example.com" + method="dial-out"/> + </xcon:allowed-users-list> + + + +Barnes, et al. Informational [Page 27] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:users> + </confInfo> + </ccmp:confRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + + 2. confResponse/create message ("200", "success") + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:6845432@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>1</version> + <ccmp:confResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 8: Create Basic Conference Detailed Messaging + +5.4. Cloning an Existing Conference + + A client can also create another conference by cloning an existing + conference, such as an active conference or conference reservation. + This approach can be seen as a logical extension of the creation of a + new conference using a blueprint: the difference is that, instead of + cloning the predefined settings listed in a blueprint, the settings + of an existing conference would be cloned. + + In this example, the client sends a confRequest message with the + "create" <operation>, along with her XCON-USERID in the <confUserID> + element and the XCON-URI of the conference from which a new + conference is to be cloned in the <confObjID> element. + + An example of how a client can create a conference based on a + blueprint is provided in Section 5.2. The manner by which a client + in this example might learn about a conference reservation or active + conferences is similar to the first step in the blueprint example, + with the exception of querying for different types of conference + + + + +Barnes, et al. Informational [Page 28] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + objects supported by the specific conferencing system. For instance, + in this example, the client clones a conference reservation (i.e., an + inactive conference). + + If the conferencing system can support a new instance of the specific + type of conference (capabilities, etc.), then the request results in + the creation of a conference, with an XCON-URI in the form of a new + value in the <confObjID> parameter to reflect the newly cloned + conference object returned in the confResponse message. + + Alice ConfS + | | + |(1)confRequest(confUserID, | + | confObjID, create) | + |------------------------------>| + | (a)Create +---| + | Conf | | + | Object | | + | & IDs +-->| + | |--+ (b) MS + | | | creates + | | | conf and + | |<-+ its ID + | | (confid=Y) + | | + |(2)confResponse(confUserID, | + | confObjID*,create, | + | 200, success, | + | version, confInfo) | + | | + |<------------------------------| + | | + ' ' + + Figure 9: Create Basic Conference - Clone + + 1. Alice, a conferencing system client, sends a confRequest message + to clone a conference based on an existing conference + reservation. Alice indicates this conference should be cloned + from the specified parent conference represented by the XCON-URI + in the <confObjID> provided in the request. + + 2. Upon receipt of the confRequest message containing a "create" + <operation> and the aforementioned XCON-URI in the <confObjID>, + the conference server ensures that such received XCON-URI is + valid. The conference server determines the appropriate read/ + write access of any users to be added to a conference based on + this XCON-URI (using membership, roles, etc.). The conference + + + +Barnes, et al. Informational [Page 29] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + server uses the received <confObjID> to clone a conference + reservation. The conference server also reserves or allocates a + new XCON-URI (called "confObjID*" in Figure 9) to be used for the + cloned conference object. This new identifier is, of course, + different from the one associated with the conference to be + cloned, since it represents a different conference object. Any + subsequent protocol requests from any of the members of the + conference must use this new identifier. The conference server + maintains the mapping between this conference ID and the parent + conference object ID associated with the reservation through the + conference instance, and this mapping is explicitly addressed + through the <cloning-parent> element of the <conference- + description> in the new conference object. + +1. confRequest/create message (Alice clones an existing conference) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:6845432@example.com</confObjID> + <operation>create</operation> + <ccmp:confRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. confResponse/create message (created conference + object returned) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>1</version> + + + +Barnes, et al. Informational [Page 30] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <ccmp:confResponse> + <confInfo entity="xcon:8977794@example.com"> + <info:conference-description> + <info:display-text> + New conference by Alice cloned from 6845432 + </info:display-text> + <info:maximum-user-count>10</info:maximum-user-count> + <info:available-media> + <info:entry label="11"> + <info:type>audio</info:type> + </info:entry> + </info:available-media> + <xcon:cloning-parent> + xcon:6845432@example.com + </xcon:cloning-parent> + </info:conference-description> + <info:users> + <xcon:join-handling>allow</xcon:join-handling> + <xcon:allowed-users-list> + <xcon:target uri="sip:alice@example.com" + method="dial-out"/> + <xcon:target uri="sip:bob83@example.com" + method="dial-out"/> + <xcon:target uri="sip:carol@example.com" + method="dial-out"/> + </xcon:allowed-users-list> + </info:users> + <xcon:floor-information> + <xcon:floor-request-handling> + confirm</xcon:floor-request-handling> + <xcon:conference-floor-policy> + <xcon:floor id="1"> + <xcon:media-label>11</xcon:media-label> + </xcon:floor> + </xcon:conference-floor-policy> + </xcon:floor-information> + </confInfo> + </ccmp:confResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 10: Create Basic Conference (Clone) Detailed Messaging + +6. Conference Users Scenarios and Examples + + Section 5 showed examples describing the several different ways a + conference might be created using CCMP. This section focuses on + user-related scenarios, i.e., typical scenarios that may occur during + + + +Barnes, et al. Informational [Page 31] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + the lifetime of a conference, like adding new users and handling + their media. The following scenarios are based on those documented + in the XCON framework. The examples assume that a conference has + already been correctly established, with media, if applicable, per + one of the examples in Section 5. + +6.1. Adding a Party + + In this example, Alice wants to add Bob to an established conference. + In the following example we assume Bob is a new user of the system, + which means Alice also needs to provide some details about him. In + fact, the case of Bob already present as a user in the conferencing + system is much easier to address, and will be discussed later. + + Alice Bob + CMCC1 CMCC2 CMCCx ConfS + | | | | + |(1) userRequest(confUserID,| | + | confObjID, create, | | + | userInfo) | | | + |-------------------------------------->| + | | | | + | | (a) Create +---| + | | | Bob | | + | | | as a | | + | | | user +-->| + | | | | + |(2) userResponse(confUserID, confObjID | + | create, 200, success, userInfo) | + |<--------------------------------------| + | | | | + | | | (b) Focus | + | | | sets up | + | | | signaling | + | | | to Bob | + | |<----------------------| + | | | | + | | | (c) Notify| + | | | ("Bob just| + | | | joined") | + | | |<----------| + | | | | + ' ' ' ' + ' ' ' ' + ' ' ' ' + + Figure 11: Client Manipulation of Conference - Add a Party + + + + +Barnes, et al. Informational [Page 32] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + 1. Alice sends a userRequest message with an operation of "create" + to add Bob to the specific conference as identified by the XCON- + URI in the <confObjID>. The "create" <operation> also makes sure + that Bob is created as a user in the whole conferencing system. + This is done by adding in the request a <userInfo> element + describing Bob as a user. This is needed in order to let the + conferencing system be aware of Bob's characteristics. In case + Bob was already a registered user, Alice would just have + referenced him through his XCON-USERID in the 'entity' attribute + of the <userInfo> field, without providing additional data. In + fact, that data (including, for instance, Bob's SIP-URI to be + used subsequently for dial-out) would be obtained by referencing + the extant registration. The conference server ensures that + Alice has the appropriate authority based on the policies + associated with that specific conference object to perform the + operation. As mentioned before, a new XCON-USERID is created for + Bob, and the <userInfo> is used to update the conference object + accordingly. As already seen in Section 5.3, a placeholder + wildcard ("xcon-userid:AUTO_GENERATE_1@example.com" in the CCMP + messages below) is used for the 'entity' attribute of the + <userInfo> element, to be replaced by the actual XCON-USERID + later; + + 2. Bob is successfully added to the conference object, and an XCON- + USERID is allocated for him ("xcon-userid:Bob@example.com"); this + identifier is reported in the response as the value of the + 'entity' attribute of the returned <userInfo>; + + 3. In the presented example, the call signaling to add Bob to the + conference is instigated through the focus as well. As noted + previously, this is implementation specific. In fact, a + conferencing system may accomplish different actions after the + user creation, just as it may do nothing at all. Among the + possible actions, for instance, Bob may be added as a <target> + element to the <allowed-users-list> element, whose joining + 'method' may be either "dial-in" or "dial-out". Besides, out-of- + band notification mechanisms may be involved as well, e.g., to + notify Bob via mail of the new conference, including details as + the date, password, expected participants, and so on (see + Section 4.3). + + Once Bob has been successfully added to the specified conference, + per updates to the state, and depending upon the policies, other + participants (including Bob himself) may be notified of the + addition of Bob to the conference via the conference notification + service in use. + + + + + +Barnes, et al. Informational [Page 33] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +1. userRequest/create message (Alice adds Bob) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977878@example.com</confObjID> + <operation>create</operation> + <ccmp:userRequest> + <userInfo entity="xcon-userid:AUTO_GENERATE_1@example.com"> + <info:display-text>Bob</info:display-text> + <info:associated-aors> + <info:entry> + <info:uri>mailto:bob.depippis@example.com</info:uri> + <info:display-text>Bob's email</info:display-text> + </info:entry> + </info:associated-aors> + <info:endpoint entity="sip:bob83@example.com"> + <info:display-text>Bob's laptop</info:display-text> + </info:endpoint> + </userInfo> + </ccmp:userRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. userResponse/create message (a new XCON-USERID is + created for Bob and he is added to the conference) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977878@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>10</version> + <ccmp:userResponse> + <userInfo entity="xcon-userid:Bob@example.com"> + <info:display-text>Bob</info:display-text> + <info:associated-aors> + <info:entry> + + + +Barnes, et al. Informational [Page 34] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:uri>mailto:bob.depippis@example.com</info:uri> + <info:display-text>Bob's email</info:display-text> + </info:entry> + </info:associated-aors> + <info:endpoint entity="sip:bob83@example.com"> + <info:display-text>Bob's laptop</info:display-text> + </info:endpoint> + </userInfo> + </ccmp:userResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 12: Add Party Message Details + +6.2. Muting a Party + + This section provides an example of the muting of a party in an + active conference. We assume that the user to mute has already been + added to the conference. The document only addresses muting and not + unmuting, since the latter would involve an almost identical CCMP + message flow anyway. However, if any external floor control is + involved, whether a particular conferencing client can actually mute/ + unmute itself must be considered by the conferencing system. + + Please notice that interaction between CCMP and floor control + should be carefully considered. In fact, handling CCMP- and BFCP- + based media control has to be considered as multiple layers: that + is, a participant may have the BFCP floor granted, but be muted by + means of CCMP. If so, he would still be muted in the conference, + and would only be unmuted if both the protocols allowed for this. + + Figure 13 provides an example of one client, Alice, impacting the + media state of another client, Bob. This example assumes an + established conference. In this example, Alice, who is the moderator + of the conference, wants to mute Bob on a medium-sized multi-party + conference, as his device is not muted (and he's obviously not + listening to the call) and background noise in his office environment + is disruptive to the conference. BFCP floor control is assumed not + to be involved. + + Muting can be accomplished using the <mute> control element + associated with the target user's audio, in which case the conference + server must update the settings associated with the user's media + streams. Muting/unmuting can also be accomplished by directly + modifying the settings related to the target user's media streams, + which is the approach shown in this example. Specifically, Bob's + <userInfo> is updated by modifying the <endpoint> element in the + + + + +Barnes, et al. Informational [Page 35] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <media> part related to audio information, identified by the 'id' + attribute. The modification consists in setting the audio <status> + to "recvonly", in case of muting. + + Alice Bob + CMCC1 CMCC2 CMCCx ConfS MS + | | | | | + |(1) userRequest(subject, | | | + | confUserID,confObjID, | | | + | update,userInfo) | | | + | | | | | + |--------------------------------------->| | + | | | | Mute Bob | + | | | |----------------->| + | | | | 200 OK | + | | | |<-----------------| + | | | | | + | |<====== XXX Bob excluded from mix XXX ====>| + | | | | | + | | (a) Update +---| | + | | Bob in | | | + | | data model | | | + | | (muted) +-->| | + | | | | | + | (2)userResponse(confUserID,confObjID, | | + | update,200,success,version) | | + |<---------------------------------------| | + | | | | | + | | | (b) Notify | | + | | | ("Bob is | | + | | | muted") | | + | | |<-----------| | + | | | | | + ' ' ' ' ' + ' ' ' ' ' + ' ' ' ' ' + + Figure 13: Client Manipulation of Conference - Mute a Party + + 1. Alice sends a userRequest message with an "update" <operation> + and the <userInfo> with the <status> field in the <media> element + for Bob's <endpoint> set to "revconly". In order to authenticate + herself, Alice provides in the <subject> request parameter her + registration credentials (i.e., username and password). The + <subject> parameter is an optional one: its use can be systematic + whenever the conference server envisages to authenticate each + + + + + +Barnes, et al. Informational [Page 36] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + requester. In such cases, if the client does not provide the + required authentication information, the conferencing server + answers with a CCMP "authenticationRequired" <response-code>, + indicating that the request cannot be processed without including + the proper <subject> parameter. The conference server ensures + that Alice has the appropriate authority based on the policies + associated with that specific conference object to perform the + operation. It recognizes that Alice is allowed to request the + specified modification, since she is moderator of the target + conference, and updates the <userInfo> in the conference object + reflecting that Bob's media is not to be mixed with the + conference media. If the conference server relies on a remote + media server for its multimedia functionality, it subsequently + changes Bob's media profile accordingly by means of the related + protocol interaction with the MS. An example describing a + possible way of dealing with such a situation using the media + server control architecture [RFC5567] is described in Figure 31, + "Simple Bridging: Framework Transactions (2)", in [CALL-FLOWS]. + + 2. A userResponse message with a "200" <response-code> ("success") + is then sent to Alice. Depending upon the policies, the + conference server may notify other participants (including Bob) + of this update via any conference notification service that may + be in use. + + 1. userRequest/update message (Alice mutes Bob) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-request-message-type"> + <subject> + <username>Alice83</username> + <conference-password>13011983</conference-password> + </subject> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977878@example.com</confObjID> + <operation>update</operation> + <ccmp:userRequest> + <userInfo entity="xcon-userid:Bob@example.com"> + <info:endpoint entity="sip:bob83@example.com"> + <info:media id="1"> + <info:label>123</info:label> + <info:status>recvonly</info:status> + </info:media> + </info:endpoint> + + + +Barnes, et al. Informational [Page 37] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </userInfo> + </ccmp:userRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. userResponse/update message (Bob has been muted) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977878@example.com</confObjID> + <operation>update</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>7</version> + <ccmp:userResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 14: Mute Message Details + +6.3. Conference Announcements and Recordings + + This section deals with features that are typically required in a + conferencing system, such as public announcements (e.g., to notify + vocally that a new user joined a conference) and name recording. + While this is not strictly CCMP-related (the CCMP signaling is + actually the same as the one seen in Section 6.1), it is an + interesting scenario to address to see how several components of an + XCON-compliant architecture interact with each other to make it + happen. + + In this example, as shown in Figure 15, Alice is joining Bob's + conference that requires that she first enter a passcode. After + successfully entering the passcode, an announcement prompts Alice to + speak her name so it can be recorded. When Alice is added to the + active conference, the recording is played back to all the existing + participants. A very similar example is presented in Figure 33 of + [CALL-FLOWS]. + + + + + + + + +Barnes, et al. Informational [Page 38] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + CMCC Alice ConfS MS + | | | + |(1)userRequest(confObjID, | | + | create,userInfo) | | + |--------------------------->| | + | |--+ Alice is | + | | | new in the | + | |<-+ system (create | + | | confUserID) | + | ConfS handles +--| | + | SIP signaling | | | + | (Alice<->ConfS<->MS) +->| | + | | | + | |--+ A password is | + | | | required for | + | |<-+ that conference | + | | | + | | Request IVR menu (PIN) | + | |--------------------------->| + | | | + |<========= MS gets PIN from Alice through DTMF =========>| + | | | + | | Provided PIN is... | + | |<---------------------------| + | Check +--| | + | PIN | | | + | +->| | + | |--+ Alice must | + | | | record her | + | |<-+ name | + | | | + | | Request name recording | + | |--------------------------->| + | | | + |<========= MS records Alice's audio RTP (name) =========>| + | | | + | | Audio recording | + | |<---------------------------| + | Complete +--| | + | creation | | | + | of Alice +->| | + + + + + + + + + + +Barnes, et al. Informational [Page 39] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + | | | + | | | + | (2)userResponse(confUserID,| | + | confObjID,create,200,| | + | success,version) | | + |<---------------------------| | + | | | + ' ' ' + + Figure 15: Recording and Announcements + + 1. Upon receipt of the userRequest message from Alice to be added to + Bob's conference, the conference server determines that a + password is required for this specific conference. Thus, an + announcement asking Alice to enter the password is sent back. + This may be achieved by means of typical IVR functionality. Once + Alice enters the password, it is validated against the policies + associated with Bob's active conference. The conference server + then connects to a server that prompts and records Alice's name. + The conference server must also determine whether Alice is + already a user of this conferencing system or whether she is a + new user. In this case, Alice is a new user for this + conferencing system, so a new XCON-USERID is created for Alice. + Based upon the contact information provided by Alice, the call + signaling to add Alice to the conference is instigated through + the focus. + + 2. The conference server sends Alice a userResponse message that + includes in the <confUserID> the XCON-USERID assigned by the + conferencing system to her. This would allow Alice to later + perform operations on the conference (if she were to have the + appropriate policies), including registering for event + notifications associated with the conference. Once the call + signaling indicates that Alice has been successfully added to the + specific conference, per updates to the state, and depending upon + the policies, other participants (e.g., Bob) are notified of the + addition of Alice to the conference via the conference + notification service and an announcement is provided to all the + participants indicating that Alice has joined the conference. + + 1. userRequest/create message (a new conferencing system client, + Alice, enters Bob's conference) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + + + +Barnes, et al. Informational [Page 40] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-request-message-type"> + <confObjID>xcon:bobConf@example.com</confObjID> + <operation>create</operation> + <ccmp:userRequest> + <userInfo entity="xcon-userid:AUTO_GENERATE_1@example.com"> + <info:associated-aors> + <info:entry> + <info:uri> + mailto:Alice83@example.com + </info:uri> + <info:display-text>email</info:display-text> + </info:entry> + </info:associated-aors> + <info:endpoint entity="sip:alice_789@example.com"/> + </userInfo> + </ccmp:userRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + + 2. userResponse/create message (Alice provided with a new XCON-USERID + and added to the conference) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:bobConf@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>5</version> + <ccmp:userResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 16: Announcement Messaging Details + +6.4. Monitoring for DTMF + + Conferencing systems also often need the capability to monitor for + dual-tone multi-frequency (DTMF) from each individual participant. + This would typically be used to enter the identifier and/or access + code for joining a specific conference. This feature is also often + + + +Barnes, et al. Informational [Page 41] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + exploited to achieve interaction between participants and the + conferencing system for non-XCON-aware user agents (e.g., using DTMF + tones to get muted/unmuted). + + An example of DTMF monitoring, within the context of the framework + elements, is shown in Figure 15. The media control architecture and + protocols [RFC5567] can be used by the conference server for all the + DTMF interactions. Examples for DTMF interception in conference + instances are presented in [CALL-FLOWS]. + +6.5. Entering a Password-Protected Conference + + Some conferences may require a password to be provided by a user who + wants to manipulate the conference objects (e.g., join, update, + delete) via CCMP. In this case, a password would be included in the + <conference-password> element in the appropriate <conference-uris> + entry of the conference data model. Such password must be then + included in the <conference-password> field in the CCMP request + addressed to that conference. + + In the following example, Alice, a conferencing system client, + attempts to join a password-protected conference. + + 1. Alice sends a userRequest message with a "create" <operation> to + add herself in the conference with XCON-URI + "xcon:8977777@example.com" (written in the <confObjID> + parameter). Alice provides her XCON-USERID via the <confUserID> + field of the userRequest message and leaves out the <userInfo> + one (first-party join). In this first attempt, she doesn't + insert any password parameter. + + 2. Upon receipt the userRequest/create message, the conference + server detects that the indicated conference is not joinable + without providing the appropriate passcode. A userResponse + message with a "423" <response-code> ("conference password + required") is returned to Alice to indicate that her join has + been refused and that she has to resend her request including the + appropriate conference password in order to participate. + + 3. After getting the passcode through out-of-band mechanisms, Alice + provides it in the proper <conference-password> request field of + a new userRequest/create message and sends the updated request + back to the server. + + 4. The conference server checks the provided password and then adds + Alice to the protected conference. After that, a userResponse + message with a "200" <response-code> ("success") is sent to + Alice. + + + +Barnes, et al. Informational [Page 42] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + 1. userRequest/create message (Alice tries to enter the conference + without providing the password) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>create</operation> + <ccmp:userRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + + 2. userResponse/create message ("423", "conference password required") + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>create</operation> + <response-code>423</response-code> + <response-string>conference password required</response-string> + <ccmp:userResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + 3. userRequest/create message (Alice provides the password) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>create</operation> + <conference-password>8601</conference-password> + + + +Barnes, et al. Informational [Page 43] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <ccmp:userRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + + 4. userResponse/create message + (Alice has been added to the conference) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>10</version> + <ccmp:userResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 17: Password-Protected Conference Join Messages Details + +7. Sidebars Scenarios and Examples + + While creating conferences and manipulating users and their media are + sufficient for many scenarios, there may be cases when more complex + management is needed. + + In fact, a feature typically required in conferencing systems is the + ability to create sidebars. A sidebar is basically a child + conference that usually includes a subset of the participants of the + parent conference and a subset of its media as well. Sidebars are + typically required whenever some of the participants in a conference + want a private discussion, without interfering with the main + conference. + + This section deals with some typical scenarios using a sidebar, like + whispering, private messaging, and coaching scenarios. The first + subsections present some examples of how a generic sidebar can be + created, configured, and managed. + + + + + + + +Barnes, et al. Informational [Page 44] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +7.1. Internal Sidebar + + Figure 18 provides an example of one client, Alice, involved in an + active conference with Bob and Carol. Alice wants to create a + sidebar to have a side discussion with Bob while still viewing the + video associated with the main conference. Alternatively, the audio + from the main conference could be maintained at a reduced volume. + Alice initiates the sidebar by sending a request to the ConfS to + create a conference reservation based upon the active conference + object. Alice and Bob would remain on the roster of the main + conference, such that other participants could be aware of their + participation in the main conference, while an internal-sidebar + conference is occurring. Besides, Bob decides that he is not + interested in still receiving the conference audio in background (not + even at a lower volume as Alice configured) and so modifies the + sidebar in order to make that stream inactive for him. + + Alice Bob ConfS + | | | + |(1) sidebarByValRequest(confUserID, | + | confObjID,create) | + |--------------------------------------------->| + | | | + | | (a) Create +---| + | | sidebar-by-val | | + | | (new conf obj | | + | | cloned from +-->| + | | confObjID) | Sidebar now has + | | | id confObjID* + |(2) sidebarByValResponse(confUserID, | (parent mapping + | (confObjID*,create,200,success, | conf<->sidebar) + | version,sidebarByValInfo) | + |<---------------------------------------------| + | | | + |(3) sidebarByValRequest | + | (confUserID, confObjID*, | + | update,sidebarByValInfo) | + |--------------------------------------------->| + | | | + + + + + + + + + + + + +Barnes, et al. Informational [Page 45] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + | | (b) Update +---| + | | sidebar-by-val | | + | | (media, users | | + | | etc.) +-->| + | | | Sidebar is + | | | modified + |(4) sidebarByValResponse(confUserID, | + | confObjID*, update, | + | 200, success, version) | + |<---------------------------------------------| + | | | + | |(5) userRequest | + | | (confUserID', | + | | confObjID*, | + | | update,userInfo)| + | |---------------------->| + | | | + | | (c) Update +---| + | | user settings | | + | | (Bob's media) | | + | | +-->| + | | | Sidebar is modified + | | | (original audio + | | | inactive for Bob) + | |(6) userResponse | + | | (confUserID', | + | | confObjID*, | + | | update, 200, | + | | success,version) | + | |<----------------------| + | | | + ' ' ' + ' ' ' + ' ' ' + + Figure 18: Client Creation of a Sidebar Conference + + 1. Upon receipt of CCMP sidebarByValRequest message to create a new + sidebar based upon the conference whose XCON-URI is in the + <confObjID> received in the request, the conference server uses + such XCON-URI to clone a conference reservation for the sidebar. + The sidebar reservation is NOT independent of the active main + conference (i.e., parent). The conference server also allocates + a new XCON-URI ("confObjID*" in Figure 18) for that sidebar to be + used for any subsequent protocol requests from any of the members + of the conference. The new XCON-URI is returned in the response + message <confObjID> parameter. + + + + +Barnes, et al. Informational [Page 46] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + 2. The relationship information is provided in the + sidebarByValResponse message, specifically in the <sidebar- + parent> element. A dump of the complete representation of the + main/parent conference is provided below as well to show how the + cloning process for the creation of the sidebar could take place. + + 3. Upon receipt of the sidebarByValResponse message to reserve the + conference, Alice can now create an active conference using that + reservation or create additional reservations based upon the + existing reservations. In this example, Alice wants only Bob to + be involved in the sidebar; thus, she manipulates the membership + so that only the two of them appear in the <allowed-users-list> + section. Alice also wants both audio and video from the original + conference to be available in the sidebar. For what concerns the + media belonging to the sidebar itself, Alice wants the audio to + be restricted to the participants in the sidebar (that is, Bob + and herself). Additionally, Alice manipulates the media values + to receive the audio from the main conference at a reduced + volume, so that the communication between her and Bob isn't + affected. Alice sends a sidebarByValRequest message with an + operation of "update" along with the <sidebarByValInfo> + containing the aforementioned sidebar modifications. + + 4. Upon receipt of the sidebarByValRequest message to update the + sidebar reservation, the conference server ensures that Alice has + the appropriate authority based on the policies associated with + that specific conference object to perform the operation. The + conference server must also validate the updated information in + the reservation, ensuring that a member like Bob is already a + user of this conference server. Once the data for the conference + identified by the <confObjID> is updated, the conference server + sends a sidebarByValResponse message to Alice. Depending upon + the policies, the initiator of the request (i.e., Alice) and the + participants in the sidebar (i.e., Bob) may be notified of his + addition to the sidebar via the conference notification service. + + 5. At this point, Bob sends a userRequest message to the conference + server with an operation of "update" to completely disable the + background audio from the parent conference, since it prevents + him from understanding what Alice says in the sidebar. + + 6. Notice that Bob's request only changes the media perspective for + Bob. Alice keeps on receiving both the audio from Bob and the + background from the parent conference. This request may be + relayed by the conference server to the media server handling the + mixing, if present. Upon completion of the change, the + + + + + +Barnes, et al. Informational [Page 47] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + conference server sends a userResponse message to Bob. Depending + upon the policies, the initiator of the request (i.e., Bob) and + the participants in the sidebar (i.e., Alice) may be notified of + this change via the conference notification service. + + The following conference object represents the conference in which + the sidebar is to be created. It will be used by the conference + server to create the new conference object associated with the + sidebar. + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <info:conference-info + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + entity="xcon:8977878@example.com"> + <info:conference-description> + <info:display-text>MAIN CONFERENCE</info:display-text> + <info:conf-uris> + <info:entry> + <info:uri>sip:8977878@example.com</info:uri> + <info:display-text>conference sip uri</info:display-text> + </info:entry> + </info:conf-uris> + <info:available-media> + <info:entry label="123"> + <info:display-text>main conference audio</info:display-text> + <info:type>audio</info:type> + <info:status>sendrecv</info:status> + </info:entry> + <info:entry label="456"> + <info:display-text>main conference video</info:display-text> + <info:type>video</info:type> + <info:status>sendrecv</info:status> + <xcon:controls> + <xcon:video-layout>single-view</xcon:video-layout> + </xcon:controls> + </info:entry> + </info:available-media> + </info:conference-description> + <info:conference-state> + <info:active>true</info:active> + </info:conference-state> + <info:users> + <info:user entity="xcon-userid:Alice@example.com"> + <info:display-text>Alice</info:display-text> + <info:endpoint entity="sip:Alice@example.com"> + <info:media id="1"> + + + +Barnes, et al. Informational [Page 48] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:label>123</info:label> + <info:status>sendrecv</info:status> + </info:media> + <info:media id="2"> + <info:label>456</info:label> + <info:status>sendrecv</info:status> + </info:media> + </info:endpoint> + </info:user> + <info:user entity="xcon-userid:Bob@example.com"> + <info:display-text>Bob</info:display-text> + <info:endpoint entity="sip:bob83@example.com"> + <info:media id="1"> + <info:label>123</info:label> + <info:status>sendrecv</info:status> + </info:media> + <info:media id="2"> + <info:label>456</info:label> + <info:status>sendrecv</info:status> + </info:media> + </info:endpoint> + </info:user> + <info:user entity="xcon-userid:Carol@example.com"> + <info:display-text>Carol</info:display-text> + <info:endpoint entity="sip:carol@example.com"> + <info:media id="1"> + <info:label>123</info:label> + <info:status>sendrecv</info:status> + </info:media> + <info:media id="2"> + <info:label>456</info:label> + <info:status>sendrecv</info:status> + </info:media> + </info:endpoint> + </info:user> + </info:users> + </info:conference-info> + + Figure 19: Conference with Alice, Bob, and Carol + + The sidebar creation happens through a cloning of the parent + conference. Once the sidebar is created, an update request makes + sure that the sidebar is customized as needed. The following + protocol dump makes the process clearer. + + + + + + + +Barnes, et al. Informational [Page 49] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +1. sidebarByValRequest/create message (Alice creates an + internal sidebar) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByVal-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977878@example.com</confObjID> + <operation>create</operation> + <ccmp:sidebarByValRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. sidebarByValResponse/create message (sidebar returned) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByVal-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8974545@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>1</version> + <ccmp:sidebarByValResponse> + <sidebarByValInfo entity="xcon:8974545@example.com"> + <info:conference-description> + <info:display-text> + SIDEBAR CONFERENCE registered by Alice + </info:display-text> + <info:available-media> + <info:entry label="123"> + <info:display-text> + main conference audio + </info:display-text> + <info:type>audio</info:type> + <info:status>sendrecv</info:status> + </info:entry> + <info:entry label="456"> + <info:display-text> + main conference video + + + +Barnes, et al. Informational [Page 50] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:display-text> + <info:type>video</info:type> + <info:status>sendrecv</info:status> + </info:entry> + </info:available-media> + </info:conference-description> + <info:conference-state> + <info:active>false</info:active> + </info:conference-state> + <info:users> + <xcon:allowed-users-list> + <xcon:target method="dial-in" + uri="xcon-userid:Alice@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:Bob@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:Carol@example.com"/> + </xcon:allowed-users-list> + <xcon:sidebar-parent> + xcon:8977878@example.com + </xcon:sidebar-parent> + </info:users> + </sidebarByValInfo> + </ccmp:sidebarByValResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + +3. sidebarByValRequest/update message (Alice updates the + created sidebar) + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByVal-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8974545@example.com</confObjID> + <operation>update</operation> + <ccmp:sidebarByValRequest> + <sidebarByValInfo entity="xcon:8974545@example.com"> + <info:conference-description> + <info:display-text> + private sidebar Alice - Bob + </info:display-text> + <info:available-media> + <info:entry label="123"> + + + +Barnes, et al. Informational [Page 51] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:display-text> + main conference audio + </info:display-text> + <info:type>audio</info:type> + <info:status>recvonly</info:status> + <xcon:controls> + <xcon:gain>-60</xcon:gain> + </xcon:controls> + </info:entry> + <info:entry label="456"> + <info:display-text> + main conference video + </info:display-text> + <info:type>video</info:type> + <info:status>recvonly</info:status> + </info:entry> + <info:entry label="AUTO_GENERATE_1"> + <info:display-text> + sidebar audio + </info:display-text> + <info:type>audio</info:type> + <info:status>sendrecv</info:status> + </info:entry> + <info:entry label="AUTO_GENERATE_2"> + <info:display-text> + sidebar video + </info:display-text> + <info:type>video</info:type> + <info:status>sendrecv</info:status> + </info:entry> + </info:available-media> + </info:conference-description> + <info:users> + <xcon:allowed-users-list> + <xcon:target method="dial-out" + uri="xcon-userid:Alice@example.com"/> + <xcon:target method="dial-out" + uri="xcon-userid:Bob@example.com"/> + </xcon:allowed-users-list> + </info:users> + </sidebarByValInfo> + </ccmp:sidebarByValRequest> + </ccmpRequest> +</ccmp:ccmpRequest> + + + + + + + +Barnes, et al. Informational [Page 52] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +4. sidebarByValResponse/update message (sidebar's + updates accepted) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByVal-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8974545@example.com</confObjID> + <operation>update</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>2</version> + <ccmp:sidebarByValResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + +5. userRequest/update message (Bob updates his media) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-request-message-type"> + <confUserID>xcon-userid:Bob@example.com</confUserID> + <confObjID>xcon:8974545@example.com</confObjID> + <operation>update</operation> + <ccmp:userRequest> + <userInfo entity="xcon-userid:Bob@example.com"> + <info:endpoint entity="sip:bob83@example.com"> + <info:media id="1"> + <info:display-text> + main conference audio + </info:display-text> + <info:label>123</info:label> + <info:status>inactive</info:status> + </info:media> + </info:endpoint> + </userInfo> + </ccmp:userRequest> + </ccmpRequest> +</ccmp:ccmpRequest> + + + + +Barnes, et al. Informational [Page 53] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +6. userResponse/update message (Bob's preferences are set) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-response-message-type"> + <confUserID>xcon-userid:Bob@example.com</confUserID> + <confObjID>xcon:8974545@example.com</confObjID> + <operation>update</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>3</version> + <ccmp:userResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 20: Internal Sidebar Messaging Details + +7.2. External Sidebar + + Figure 21 provides an example of a different approach towards + sidebars. In this scenario, one client, Alice, is involved in an + active conference with Bob, Carol, David, and Ethel. Alice gets an + important text message via a whisper from Bob that a critical + customer needs to talk to Alice, Bob, and Ethel. Alice creates a + sidebar to have a side discussion with the customer Fred including + the participants in the current conference with the exception of + Carol and David, who remain in the active conference. The difference + from the previous scenario is that Fred is not part of the parent + conference: this means that different policies might be involved, + considering that Fred may access information coming from the parent + conference, in case the sidebar was configured accordingly. For this + reason, in this scenario, we assume that Alice disables all the media + from the original (parent) conference within the sidebar. This means + that, while in the previous example Alice and Bob still heard the + audio from the main conference in background, this time no background + is made available. Alice initiates the sidebar by sending a request + to the conference server to create a conference reservation based + upon the active conference object. Alice, Bob and Ethel would remain + on the roster of the main conference in a hold state. Whether or not + the hold state of these participants is visible to other participants + depends upon the individual and local policy. However, providing the + hold state allows the participants in the main conference to see that + others in the conference are busy. Note, that a separate conference + could have been created by Alice to allow Bob and Ethel to talk to + Fred. However, creating a sidebar has somewhat of an advantage by + + + +Barnes, et al. Informational [Page 54] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + allowing the conference to be created using some of the same settings + (e.g., role, floor control, etc.) that Bob and Ethel had in the main + conference and it would allow for updates such that the media could + be updated, for example, to provide audio from the main conference. + + Alice Bob ConfS + | | | + |(1) sidebarByRefRequest(confUserID, | + | confObjID, create) | + |--------------------------------------------->| + | | | + | | (a) Create +---| + | | sidebar-by-ref | | + | | (new conf obj | | + | | cloned from +-->| + | | confObjID) | Sidebar now has + | | | id confObjID* + |(2) sidebarByRefResponse(confUserID, | (parent mapping + | confObjID*,create,200,success, | conf<->sidebar) + | version,sidebarByRefInfo) | + |<---------------------------------------------| + | | | + |(3) sidebarByRefRequest(confUserID, | + | confObjID*,update,sidebarByRefInfo) | + |--------------------------------------------->| + | | | + | | (b) Create +---| + | | new user for | | + | | Fred | | + | | +-->| + | | | + | | (c) Update +---| + | | sidebar-by-ref | | + | | (media, users | | + | | policy, etc.) +-->| + | | | Sidebar is modified: + | | | media from the + | | | parent conference is + | | | not available to + |(4) sidebarByRefResponse(confUserID, | anyone + | confObjID*, update, | + | 200, success, version) | + |<---------------------------------------------| + | | | + + + + + + + +Barnes, et al. Informational [Page 55] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + | | Notify (Fred | + | | added to | + | | sidebar users) | + | |<----------------------| + | | | + ' ' ' + ' ' ' + ' ' ' + + Figure 21: Client Creation of an External Sidebar + + 1. Upon receipt of the sidebarByRefRequest message to create a new + sidebar conference, based upon the active conference specified by + <confObjID> in the request, the conference server uses that + active conference to clone a conference reservation for the + sidebar. The sidebar reservation is NOT independent of the + active conference (i.e., parent). The conference server, as + before, allocates a new XCON-URI ("confObjID*" in Figure 21) to + be used for any subsequent protocol requests toward the sidebar + reservation. The mapping between the sidebar XCON-URI and the + one associated with the main conference is maintained by the + conference server and it is gathered from the <sidebar-parent> + element in the sidebar conference object. + + 2. Upon receipt of the sidebarByRefResponse message, which + acknowledges the successful creation of the sidebar object, Alice + decides that only Bob and Ethel, along with the new participant + Fred are to be involved in the sidebar. Thus, she manipulates + the membership accordingly. Alice also sets the media in the + <conference-info> such that the participants in the sidebar don't + receive any media from the main conference. All these settings + are provided to the conferencing server by means of a new + sidebarByRefRequest message, with an "update" <operation>. + + 3. Alice sends the aforementioned sidebarByRefRequest message to + update the information in the reservation and to create an active + conference. Upon receipt of the sidebarByRefRequest/update + message, the conference server ensures that Alice has the + appropriate authority based on the policies associated with that + specific conference object to perform the operation. The + conference server also validates the updated information in the + reservation. Since Fred is a new user for this conferencing + system, a conference user identifier (XCON-USERID) is created for + Fred. Specifically, Fred is added to the conference by only + providing his SIP URI. Based upon the contact information + provided for Fred by Alice, the call signaling to add Fred to the + conference may be instigated through the focus (e.g., if Fred had + + + + +Barnes, et al. Informational [Page 56] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + a "dial-out" value for the 'method' attribute in his <target> + field under <allowed-users-list>) at the actual activation of the + sidebar. + + 4. The conference server sends a sidebarByRefResponse message and, + depending upon the policies, the initiator of the request (i.e., + Alice) and the participants in the sidebar (i.e., Bob and Ethel) + may be notified of his addition to the sidebar via the conference + notification service. + +1. sidebarByRefRequest/create message (Alice creates an + external sidebar) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977878@example.com</confObjID> + <operation>create</operation> + <ccmp:sidebarByRefRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + +2. sidebarByRefResponse/create message (created + sidebar returned) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8971212@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>1</version> + <ccmp:sidebarByRefResponse> + <sidebarByRefInfo entity="xcon:8971212@example.com"> + <info:conference-description> + <info:display-text> + SIDEBAR CONFERENCE registered by Alice + </info:display-text> + + + +Barnes, et al. Informational [Page 57] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:available-media> + <info:entry label="123"> + <info:display-text> + main conference audio + </info:display-text> + <info:type>audio</info:type> + <info:status>sendrecv</info:status> + </info:entry> + <info:entry label="456"> + <info:display-text> + main conference video + </info:display-text> + <info:type>video</info:type> + <info:status>sendrecv</info:status> + </info:entry> + </info:available-media> + </info:conference-description> + <info:conference-state> + <info:active>false</info:active> + </info:conference-state> + <info:users> + <xcon:allowed-users-list> + <xcon:target method="dial-in" + uri="xcon-userid:Alice@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:Bob@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:Carol@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:David@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:Ethel@example.com"/> + </xcon:allowed-users-list> + <xcon:sidebar-parent> + xcon:8977878@example.com + </xcon:sidebar-parent> + </info:users> + </sidebarByRefInfo> + </ccmp:sidebarByRefResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + +3. sidebarByRefRequest/update message (Alice updates the sidebar) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + + + +Barnes, et al. Informational [Page 58] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8971212@example.com</confObjID> + <operation>update</operation> + <ccmp:sidebarByRefRequest> + <sidebarByRefInfo entity="xcon:8971212@example.com"> + <info:conference-description> + <info:display-text> + sidebar with Alice, Bob, Ethel and Fred + </info:display-text> + <info:available-media> + <info:entry label="123"> + <info:display-text> + main conference audio + </info:display-text> + <info:type>audio</info:type> + <info:status>inactive</info:status> + </info:entry> + <info:entry label="456"> + <info:display-text> + main conference video + </info:display-text> + <info:type>video</info:type> + <info:status>inactive</info:status> + </info:entry> + <info:entry label="AUTO_GENERATE_1"> + <info:display-text> + sidebar audio + </info:display-text> + <info:type>audio</info:type> + <info:status>sendrecv</info:status> + </info:entry> + <info:entry label="AUTO_GENERATE_2"> + <info:display-text> + sidebar video + </info:display-text> + <info:type>video</info:type> + <info:status>sendrecv</info:status> + <xcon:controls> + <xcon:video-layout> + single-view + </xcon:video-layout> + </xcon:controls> + </info:entry> + </info:available-media> + </info:conference-description> + + + +Barnes, et al. Informational [Page 59] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:conference-state> + <info:active>false</info:active> + </info:conference-state> + <info:users> + <xcon:allowed-users-list> + <xcon:target method="dial-out" + uri="xcon-userid:Alice@example.com"/> + <xcon:target method="dial-out" + uri="xcon-userid:Bob@example.com"/> + <xcon:target method="dial-out" + uri="sip:fred@example.com"/> + </xcon:allowed-users-list> + </info:users> + </sidebarByRefInfo> + </ccmp:sidebarByRefRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + +4. sidebarByRefResponse/update message (sidebar updated) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8971212@example.com</confObjID> + <operation>update</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>2</version> + <ccmp:sidebarByRefResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 22: External Sidebar Messaging Details + +7.3. Private Messages + + The case of private messages can be handled as a sidebar with just + two participants, similar to the example in Section 7.1. Unlike the + previous example, rather than using audio within the sidebar, Alice + could just add an additional text-based media stream to the sidebar + in order to convey her textual messages to Bob, while still viewing + and listening to the main conference. + + + + +Barnes, et al. Informational [Page 60] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + In this scenario, Alice requests to the conference server the + creation of a private chat room within the main conference context + (presented in Figure 19) in which the involved participants are just + Bob and herself. This can be achieved through the following CCMP + transaction (Figure 23). + + 1. Alice forwards a sidebarByValRequest/create message to the + conference server with the main conference XCON-URI in the + <confObjID> parameter and the desired sidebar conference object + in the <sidebarByValInfo> field. In this way, a sidebar creation + using user-provided conference information is requested from the + conference server. Please note that, unlike the previous sidebar + examples, in this case, a completely new conference object to + describe the sidebar is provided: there is no cloning involved, + while the <confObjID> still enforces the parent-child + relationship between the main conference and the to-be-created + sidebar. + + 2. The conference server, after checking Alice's rights and + validating the conference object carried in the request, creates + the required sidebar-by-val conference and a new XCON-URI for it. + Instead of cloning the main conference object, as shown in + Sections 7.1 and 7.2, the sidebar is created on the basis of the + user-provided conference information. However, the parent + relationship between the main conference and the newly created + sidebar is still maintained by the conference server (as a + consequence of the chosen CCMP request message type -- the + sidebarByVal one) and it is reflected by the <sidebar-parent> + element in the <sidebarByValInfo> element returned in the + sidebarByValResponse message. Please notice that, according to + the CCMP specification, the return of the created sidebar data in + this kind of "success" response is not mandatory. + +1. sidebarByValRequest/create message (Alice creates a private + chat room between Bob and herself) + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByVal-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977878@example.com</confObjID> + <operation>create</operation> + <ccmp:sidebarByValRequest> + <sidebarByValInfo entity="xcon:AUTO_GENERATE_1@example.com"> + + + +Barnes, et al. Informational [Page 61] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:conference-description> + <info:display-text> + private textual sidebar alice - bob + </info:display-text> + <info:available-media> + <info:entry label="123"> + <info:display-text> + main conference audio + </info:display-text> + <info:type>audio</info:type> + <info:status>recvonly</info:status> + </info:entry> + <info:entry label="456"> + <info:display-text> + main conference video + </info:display-text> + <info:type>video</info:type> + <info:status>recvonly</info:status> + </info:entry> + <info:entry label="AUTO_GENERATE_2"> + <info:display-text> + sidebar text + </info:display-text> + <info:type>text</info:type> + <info:status>sendrecv</info:status> + </info:entry> + </info:available-media> + </info:conference-description> + <info:users> + <xcon:allowed-users-list> + <xcon:target method="dial-out" + uri="xcon-userid:Alice@example.com"/> + <xcon:target method="dial-out" + uri="xcon-userid:Bob@example.com"/> + </xcon:allowed-users-list> + </info:users> + </sidebarByValInfo> + </ccmp:sidebarByValRequest> + </ccmpRequest> +</ccmp:ccmpRequest> + +2. sidebarByValResponse/create message (sidebar returned) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + + + +Barnes, et al. Informational [Page 62] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByVal-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8974545@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>1</version> + <ccmp:sidebarByValResponse> + <sidebarByValInfo entity="xcon:8974545@example.com"> + <info:conference-description> + <info:display-text> + private textual sidebar alice - bob + </info:display-text> + <info:available-media> + <info:entry label="123"> + <info:display-text> + main conference audio + </info:display-text> + <info:type>audio</info:type> + <info:status>recvonly</info:status> + </info:entry> + <info:entry label="456"> + <info:display-text> + main conference video + </info:display-text> + <info:type>video</info:type> + <info:status>recvonly</info:status> + </info:entry> + <info:entry label="789"> + <info:display-text> + sidebar text + </info:display-text> + <info:type>text</info:type> + <info:status>sendrecv</info:status> + </info:entry> + </info:available-media> + <xcon:sidebar-parent> + xcon:8977878@example.com + </xcon:sidebar-parent> + </info:conference-description> + <info:users> + <xcon:allowed-users-list> + <xcon:target method="dial-out" + uri="xcon-userid:Alice@example.com"/> + <xcon:target method="dial-out" + uri="xcon-userid:Bob@example.com"/> + </xcon:allowed-users-list> + + + +Barnes, et al. Informational [Page 63] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:users> + </sidebarByValInfo> + </ccmp:sidebarByValResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 23: Sidebar for Private Messages Scenario + +7.4. Observing and Coaching + + "Observing and Coaching" is one of the most interesting sidebar- + related scenarios. In fact, it highlights two different interactions + that have to be properly coordinated. + + An example of observing and coaching is shown in Figure 25. In this + example, call center agent Bob is involved in a conference with + customer Carol. Since Bob is a new agent and Alice sees that he has + been on the call with Carol for longer than normal, she decides to + observe the call and coach Bob as necessary. Of course, the + conferencing system must make sure that the customer Carol is not + aware of the presence of the coach Alice. This makes the use of a + sidebar necessary for the success of the scenario. + + Consider the following as the conference document associated with the + video conference involving Bob (the call agent) and Carol (the + customer) (Figure 24): + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <info:conference-info + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + entity="xcon:8978383@example.com"> + <info:conference-description> + <info:display-text> + CUSTOMER SERVICE conference + </info:display-text> + <info:conf-uris> + <info:entry> + <info:uri>sip:8978383@example.com</info:uri> + <info:display-text>conference sip uri</info:display-text> + </info:entry> + </info:conf-uris> + <info:available-media> + <info:entry label="123"> + <info:display-text>service audio</info:display-text> + <info:type>audio</info:type> + <info:status>sendrecv</info:status> + + + +Barnes, et al. Informational [Page 64] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + </info:entry> + <info:entry label="456"> + <info:display-text>service video</info:display-text> + <info:type>video</info:type> + <info:status>sendrecv</info:status> + <xcon:controls> + <xcon:video-layout>single-view</xcon:video-layout> + </xcon:controls> + </info:entry> + </info:available-media> + </info:conference-description> + <info:conference-state> + <info:active>true</info:active> + </info:conference-state> + <info:users> + <info:user entity="xcon-userid:bob@example.com"> + <info:display-text>Bob - call agent</info:display-text> + <info:endpoint entity="sip:bob@example.com"> + <info:media id="1"> + <info:label>123</info:label> + <info:status>sendrecv</info:status> + </info:media> + <info:media id="2"> + <info:label>456</info:label> + <info:status>sendrecv</info:status> + </info:media> + </info:endpoint> + </info:user> + <info:user entity="xcon-userid:carol@example.com"> + <info:display-text>Carol - customer</info:display-text> + <info:endpoint entity="sip:carol@example.com"> + <info:media id="1"> + <info:label>123</info:label> + <info:status>sendrecv</info:status> + </info:media> + <info:media id="2"> + <info:label>456</info:label> + <info:status>sendrecv</info:status> + </info:media> + </info:endpoint> + </info:user> + </info:users> + </info:conference-info> + + Figure 24: A Call-Center Conference Object Example + + + + + + +Barnes, et al. Informational [Page 65] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +Alice Bob ConfS + | | | + |(1) sidebarByRefRequest(confUserID, | + | confObjID, create) | + |--------------------------------------------->| + | | | + | | (a) Create +---| + | | sidebar-by-ref | | + | | (new conf obj | | + | | cloned from +-->| + | | confObjID) | Sidebar now has + | | | id confObjID* + |(2) sidebarByRefResponse(confUserID, | (parent mapping + | confObjID*,create,200,success, | conf<->sidebar) + | version,sidebarByRefInfo) | + |<---------------------------------------------| + | | | + |(3) sidebarByRefRequest(confUserID, | + | confObjID*,update,sidebarByRefInfo) | + |--------------------------------------------->| + | | | + | | (b) Update +---| + | | sidebar-by-val | | + | | (media, users | | + | | policy, etc.) +-->| + | | | Sidebar is modified: + | | | unilateral sidebar + | | | audio, Carol excluded + | | | from the sidebar + |(4) sidebarByRefResponse(confUserID, | + | confObjID*, update, | + | 200, success, version) | + |<---------------------------------------------| + | | | + | | Notify (Bob | + | | he's been added to | + | | sidebar users) | + | |<----------------------| + | | | + ' ' ' + ' ' ' + ' ' ' + + Figure 25: Supervisor Creating a Sidebar for Observing/Coaching + + + + + + + +Barnes, et al. Informational [Page 66] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + 1. Upon receipt of the sidbarByRefRequest/create message from Alice + to create a new sidebar conference from the <confObjID> received + in the request, the conference server uses the received active + conference to clone a conference reservation for the sidebar. + The conference server also allocates a new XCON-URI to be used + for any subsequent protocol requests directed to the new sidebar. + The conference server maintains the mapping between this sidebar + conference ID and the one associated with the main conference + instance. The conference server sends a sidebarByRefResponse + message with the new XCON-URI in the <confObjID> field and other + relevant information in the <sidebarByRefInfo>. + + 2. Upon receipt of the sidebarByRefResponse message, Alice + manipulates the data received in the <sidebarByRefInfo> in the + response. Alice wants only Bob to be involved in the sidebar; + thus, she updates the <allowed-users-list> to include only Bob + and herself. Alice also wants the audio to be received by + herself and Bob from the original conference, but wants any + outgoing audio from herself to be restricted to the participants + in the sidebar, whereas Bob's outgoing audio should go to the + main conference, so that both Alice and the customer Carol hear + the same audio from Bob. Alice sends a sidebarByRefRequest + message with an "update" <operation> including the updated + sidebar information in the <sidebarByRefInfo> element. + + 3. Upon receipt of the sidebarByRefRequest/update message, the + conference server ensures that Alice has the appropriate + authority based on the policies associated with that specific + conference object to perform the operation. In order to request + the insertion of a further media stream in the sidebar (i.e., in + this example an audio stream from Alice to Bob), the requester + has to provide a new <entry> element in the <available-media> + field of the <sidebarByRefInfo>. The mandatory 'label' attribute + of that new <entry> is filled with a dummy value + "AUTO_GENERATE_1", but it will contain the real server-generated + media stream identifier when the media stream is effectively + allocated on the server side. Similarly, the mandatory 'id' + attribute in the <media> element referring to the new sidebar + audio stream under both Alice's and Bob's <endpoint> contains a + wildcard value, respectively, "AUTO_GENERATE_2" and + "AUTO_GENERATE_3": those values will be replaced with the + appropriated server-generated identifiers upon the creation of + the referred media stream. We are assuming the conference server + is able to recognize those dummy values as placeholders. + + 4. After validating the data, the conference server sends a + sidebarByRefResponse message. Based upon the contact information + provided for Bob by Alice, the call signaling to add Bob to the + + + +Barnes, et al. Informational [Page 67] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + sidebar with the appropriate media characteristics is instigated + through the focus. Bob is notified of his addition to the + sidebar via the conference notification service; thus, he is + aware that Alice, the supervisor, is available for coaching him + through this call. + +1. sidebarByRefRequest/create message (Alice as coach creates a sidebar) + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> + <confUserID>xcon-userid:alice@example.com</confUserID> + <confObjID>xcon:8978383@example.com</confObjID> + <operation>create</operation> + <ccmp:sidebarByRefRequest/> + </ccmpRequest> +</ccmp:ccmpRequest> + +2. sidebarByRefResponse/create message (sidebar created) + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-response-message-type"> + <confUserID>xcon-userid:alice@example.com</confUserID> + <confObjID>xcon:8971313@example.com</confObjID> + <operation>create</operation> + <response-code>200</response-code> + <response-string>Success</response-string> + <version>1</version> + <ccmp:sidebarByRefResponse> + <sidebarByRefInfo entity="xcon:8971313@example.com"> + <info:conference-description> + <info:display-text> + SIDEBAR CONFERENCE registered by alice + </info:display-text> + <info:available-media> + <info:entry label="123"> + <info:display-text> + main conference audio + </info:display-text> + <info:type>audio</info:type> + + + +Barnes, et al. Informational [Page 68] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:status>sendrecv</info:status> + </info:entry> + <info:entry label="456"> + <info:display-text> + main conference video + </info:display-text> + <info:type>video</info:type> + <info:status>sendrecv</info:status> + </info:entry> + </info:available-media> + <xcon:sidebar-parent> + xcon:8971313@example.com + </xcon:sidebar-parent> + </info:conference-description> + <info:conference-state> + <info:active>false</info:active> + </info:conference-state> + <info:users> + <xcon:allowed-users-list> + <xcon:target method="dial-in" + uri="xcon-userid:alice@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:bob@example.com"/> + <xcon:target method="dial-in" + uri="xcon-userid:carol@example.com"/> + </xcon:allowed-users-list> + </info:users> + </sidebarByRefInfo> + </ccmp:sidebarByRefResponse> + </ccmpResponse> + </ccmp:ccmpResponse> + + 3. sidebarByRefRequest/update message (Alice introduces unilateral + sidebar audio and excludes Carol from the sidebar) + + <ccmp:ccmpRequest + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> + <confUserID>xcon-userid:alice@example.com</confUserID> + <confObjID>xcon:8971313@example.com</confObjID> + <operation>update</operation> + <ccmp:sidebarByRefRequest> + <sidebarByRefInfo entity="xcon:8971313@example.com"> + + + + + +Barnes, et al. Informational [Page 69] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + <info:conference-description> + <info:display-text> + Coaching sidebar Alice and Bob + </info:display-text> + <info:available-media> + <info:entry label="AUTO_GENERATE_1"> + <info:display-text> + Alice-to-Bob audio + </info:display-text> + <info:type>audio</info:type> + <info:status>sendrecv</info:status> + </info:entry> + </info:available-media> + </info:conference-description> + <info:conference-state> + <info:active>false</info:active> + </info:conference-state> + <info:users> + <info:user entity="xcon-userid:alice@example.com"> + <info:endpoint entity="sip:alice@example.com"> + <info:media id="AUTO_GENERATE_2"> + <info:label>AUTO_GENERATE_1</info:label> + <info:status>sendonly</info:status> + </info:media> + </info:endpoint> + </info:user> + <info:user entity="xcon-userid:bob@example.com"> + <info:endpoint entity="sip:bob@example.com"> + <info:media id="AUTO_GENERATE_3"> + <info:label>AUTO_GENERATE_1</info:label> + <info:status>recvonly</info:status> + </info:media> + </info:endpoint> + </info:user> + <xcon:allowed-users-list> + <xcon:target method="dial-in" + uri="xcon-userid:alice@example.com"/> + <xcon:target method="dial-out" + uri="xcon-userid:bob@example.com"/> + </xcon:allowed-users-list> + </info:users> + </sidebarByRefInfo> + </ccmp:sidebarByRefRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + + + + + + +Barnes, et al. Informational [Page 70] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +4. sidebarByRefRequest/update message (updates accepted) + +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-sidebarByRef-response-message-type"> + <confUserID>xcon-userid:alice@example.com</confUserID> + <confObjID>xcon:8971313@example.com</confObjID> + <operation>update</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>2</version> + <ccmp:sidebarByRefResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 26: Coaching and Observing Messaging Details + +8. Removing Participants and Deleting Conferences + + The following scenarios detail the basic operations associated with + removing participants from conferences and entirely deleting + conferences. The examples assume that a conference has already been + correctly established, with media, if applicable, per one of the + examples in Section 5. + +8.1. Removing a Party + + Figure 27 provides an example of a client, Alice, removing another + participant, Bob, from a conference. This example assumes an + established conference with Alice, Bob, Claire, and Duck. In this + example, Alice wants to remove Bob from the conference so that the + group can continue in the same conference without Bob's + participation. + + + + + + + + + + + + + + +Barnes, et al. Informational [Page 71] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + Alice Bob Claire ConfS + | | | | + |(1) userRequest(confUserID,| | + | confObjID, delete,| | + | userInfo) | | + |-------------------------------------->| + | | | | + | | | (a) Focus | + | | | tears down| + | | | signaling | + | | | to Bob | + | |<----------------------| + | | | + | | (b)Deletes+---| + | | | Bob | | + | | | as a | | + | | | user +-->| + | | | in | + | | | confObj | + | | | | + |(2) userResponse(confUserID,confObjID, | + | delete,200,success,version) | + |<--------------------------------------| + | | | | + | | | | + | | | (c) Notify| + | | | ("Bob just| + | | | left") | + | | |<----------| + | | | | + ' ' ' ' + ' ' ' ' + ' ' ' ' + + Figure 27: Client Manipulation of Conference - Remove a Party + + 1. Alice sends a userRequest message with a "delete" <operation>. + The conference server ensures that Alice has the appropriate + authority based on the policies associated with that specific + conference object to perform the operation. + + 2. Based upon the contact and media information in the conference + object for Bob in the <userInfo> element, the conferencing system + starts the process to remove Bob (e.g., the call signaling to + remove Bob from the conference is instigated through the focus). + The conference server updates the data in the conference object, + thus, removing Bob from the <users> list. After updating the + data, the conference server sends a userResponse message to + + + +Barnes, et al. Informational [Page 72] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + Alice. Depending upon the policies, other participants (e.g., + Claire) may be notified of the removal of Bob from the conference + via the conference notification service. + + 1. userRequest/delete message (Alice deletes Bob) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>delete</operation> + <ccmp:userRequest> + <userInfo entity="xcon-userid:Bob@example.com"/> + </ccmp:userRequest> + </ccmpRequest> + </ccmp:ccmpRequest> + + 2. userResponse/delete message (Bob has been deleted) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-user-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>delete</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <version>17</version> + <ccmp:userResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 28: Removing a Participant Messaging Details + + + + + + + + + +Barnes, et al. Informational [Page 73] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +8.2. Deleting a Conference + + In this section, an example of a successful conference deletion is + provided (Figure 29). + + Alice ConfS + | | + |(1)confRequest(confUserID, | + | confObjID, delete) | + |------------------------------>| + | (a)Delete +---| + | Conf | | + | Object | | + | +-->| + | |--+ (b) MS + | | | removes related + | | | mixer instances and + | |<-+ their participants + | | (SIP signaling as well) + | | + |(2)confResponse(confUserID, | + | confObjID,delete,200, | + | success) | + | | + |<------------------------------| + | | + ' ' + + Figure 29: Deleting a Conference + + 1. The conferencing system client Alice sends a confRequest message + with a "delete" operation to be performed on the conference + identified by the XCON-URI carried in the <confObjID> parameter. + The conference server, on the basis of the <confUserID> included + in the receipt request, ensures that Alice has the appropriate + authority to fulfill the operation. + + 2. After validating Alice's rights, the conference server instigates + the process to delete the conference object, disconnecting + participants and removing associated resources such as mixer + instances. Then, the conference server returns a confResponse + message to Alice with "200" as <response-code> and the deleted + conference XCON-URI in the <confObjID> field. + + + + + + + + +Barnes, et al. Informational [Page 74] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + 1. confRequest/delete message (Alice deletes a conference) + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpRequest + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-request-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>delete</operation> + <ccmp:confRequest/> + </ccmpRequest> + </ccmp:ccmpRequest> + + 2. confResponse/delete message ("200", "success") + + <?xml version="1.0" encoding="UTF-8" standalone="yes"?> + <ccmp:ccmpResponse + xmlns:info="urn:ietf:params:xml:ns:conference-info" + xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" + xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> + <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:type="ccmp:ccmp-conf-response-message-type"> + <confUserID>xcon-userid:Alice@example.com</confUserID> + <confObjID>xcon:8977794@example.com</confObjID> + <operation>delete</operation> + <response-code>200</response-code> + <response-string>success</response-string> + <ccmp:confResponse/> + </ccmpResponse> + </ccmp:ccmpResponse> + + Figure 30: Deleting a Conference Messaging Details + +9. Security Considerations + + The security considerations applicable to the implementation of these + call flows are documented in the XCON framework, with additional + security considerations documented in the CCMP document. Statements + with regard to the necessary security are discussed in particular + flows; however, this is for informational purposes only. The + implementer is encouraged to carefully consider the security + requirements in the normative documents. + + + + + + +Barnes, et al. Informational [Page 75] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +10. Acknowledgements + + The detailed content for this document is derived from the prototype + work of Lorenzo Miniero, Simon Pietro Romano, Tobia Castaldi, and + their colleagues at the University of Napoli. + +11. References + +11.1. Normative References + + [RFC5239] Barnes, M., Boulton, C., and O. Levin, "A Framework for + Centralized Conferencing", RFC 5239, June 2008. + + [RFC6501] Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen, + "Conference Information Data Model for Centralized + Conferencing (XCON)", RFC 6501, March 2012. + + [RFC6502] Camarillo, G., Srinivasan, S., Even, R., and J. + Urpalainen, "Conference Event Package Data Format + Extension for Centralized Conferencing (XCON)", RFC 6502, + March 2012. + + [RFC6503] Barnes, M., Boulton, C., Romano, S., and H. Schulzrinne, + "Centralized Conferencing Manipulation Protocol", + RFC 6503, March 2012. + + [W3C.REC-xml-20081126] + Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and + F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth + Edition)", World Wide Web Consortium Recommendation REC- + xml-20081126, November 2008, + <http://www.w3.org/TR/2008/REC-xml-20081126>. + +11.2. Informative References + + [CALL-FLOWS] + Amirante, A., Castaldi, T., Miniero, L., and S. Romano, + "Media Control Channel Framework (CFW) Call Flow + Examples", Work in Progress, July 2011. + + [RFC3261] 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. + + [RFC4575] Rosenberg, J., Schulzrinne, H., and O. Levin, "A Session + Initiation Protocol (SIP) Event Package for Conference + State", RFC 4575, August 2006. + + + +Barnes, et al. Informational [Page 76] + +RFC 6504 CCMP Call Flow Examples March 2012 + + + [RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol + (SIP) Call Control - Conferencing for User Agents", + BCP 119, RFC 4579, August 2006. + + [RFC4582] Camarillo, G., Ott, J., and K. Drage, "The Binary Floor + Control Protocol (BFCP)", RFC 4582, November 2006. + + [RFC4597] Even, R. and N. Ismail, "Conferencing Scenarios", + RFC 4597, August 2006. + + [RFC5567] Melanchuk, T., "An Architectural Framework for Media + Server Control", RFC 5567, June 2009. + + [RFC6505] McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer + Control Package for the Media Control Channel Framework", + RFC 6505, March 2012. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Barnes, et al. Informational [Page 77] + +RFC 6504 CCMP Call Flow Examples March 2012 + + +Authors' Addresses + + Mary Barnes + Polycom + TX + USA + + EMail: mary.ietf.barnes@gmail.com + + + Lorenzo Miniero + Meetecho + Via Carlo Poerio 89/a + Napoli 80121 + Italy + + EMail: lorenzo@meetecho.com + + + Roberta Presta + University of Napoli + Via Claudio 21 + Napoli 80125 + Italy + + EMail: roberta.presta@unina.it + + + Simon Pietro Romano + University of Napoli + Via Claudio 21 + Napoli 80125 + Italy + + EMail: spromano@unina.it + + + + + + + + + + + + + + + + +Barnes, et al. Informational [Page 78] + |