diff options
Diffstat (limited to 'doc/rfc/rfc6230.txt')
-rw-r--r-- | doc/rfc/rfc6230.txt | 2747 |
1 files changed, 2747 insertions, 0 deletions
diff --git a/doc/rfc/rfc6230.txt b/doc/rfc/rfc6230.txt new file mode 100644 index 0000000..9b25d98 --- /dev/null +++ b/doc/rfc/rfc6230.txt @@ -0,0 +1,2747 @@ + + + + + + +Internet Engineering Task Force (IETF) C. Boulton +Request for Comments: 6230 NS-Technologies +Category: Standards Track T. Melanchuk +ISSN: 2070-1721 Rainwillow + S. McGlashan + Hewlett-Packard + May 2011 + + + Media Control Channel Framework + +Abstract + + This document describes a framework and protocol for application + deployment where the application programming logic and media + processing are distributed. This implies that application + programming logic can seamlessly gain access to appropriate resources + that are not co-located on the same physical network entity. The + framework uses the Session Initiation Protocol (SIP) to establish an + application-level control mechanism between application servers and + associated external servers such as media servers. + + The motivation for the creation of this framework is to provide an + interface suitable to meet the requirements of a centralized + conference system, where the conference system can be distributed, as + defined by the XCON working group in the IETF. It is not, however, + limited to this scope. + +Status of This Memo + + This is an Internet Standards Track document. + + 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). Further information on + Internet Standards is available in 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/rfc6230. + + + + + + + + + + +Boulton, et al. Standards Track [Page 1] + +RFC 6230 Media Control Channel Framework May 2011 + + +Copyright Notice + + Copyright (c) 2011 IETF Trust and the persons identified as the + document authors. All rights reserved. + + 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 4 + 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 + 4. Control Channel Setup . . . . . . . . . . . . . . . . . . . . 10 + 4.1. Control Client SIP UAC Behavior . . . . . . . . . . . . . 10 + 4.2. Control Server SIP UAS Behavior . . . . . . . . . . . . . 13 + 5. Establishing Media Streams - Control Client SIP UAC + Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 + 6. Control Framework Interactions . . . . . . . . . . . . . . . . 15 + 6.1. General Behavior for Constructing Requests . . . . . . . . 17 + 6.2. General Behavior for Constructing Responses . . . . . . . 17 + 6.3. Transaction Processing . . . . . . . . . . . . . . . . . . 18 + 6.3.1. CONTROL Transactions . . . . . . . . . . . . . . . . . 18 + 6.3.2. REPORT Transactions . . . . . . . . . . . . . . . . . 19 + 6.3.3. K-ALIVE Transactions . . . . . . . . . . . . . . . . . 21 + 6.3.4. SYNC Transactions . . . . . . . . . . . . . . . . . . 22 + 7. Response Code Descriptions . . . . . . . . . . . . . . . . . . 24 + 7.1. 200 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.2. 202 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.3. 400 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.4. 403 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.5. 405 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.6. 406 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.7. 420 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.8. 421 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.9. 422 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.10. 423 Response Code . . . . . . . . . . . . . . . . . . . . 25 + 7.11. 481 Response Code . . . . . . . . . . . . . . . . . . . . 26 + 7.12. 500 Response Code . . . . . . . . . . . . . . . . . . . . 26 + 8. Control Packages . . . . . . . . . . . . . . . . . . . . . . . 26 + 8.1. Control Package Name . . . . . . . . . . . . . . . . . . . 26 + + + +Boulton, et al. Standards Track [Page 2] + +RFC 6230 Media Control Channel Framework May 2011 + + + 8.2. Framework Message Usage . . . . . . . . . . . . . . . . . 26 + 8.3. Common XML Support . . . . . . . . . . . . . . . . . . . . 27 + 8.4. CONTROL Message Bodies . . . . . . . . . . . . . . . . . . 27 + 8.5. REPORT Message Bodies . . . . . . . . . . . . . . . . . . 27 + 8.6. Audit . . . . . . . . . . . . . . . . . . . . . . . . . . 27 + 8.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 28 + 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 28 + 9.1. Control Framework Formal Syntax . . . . . . . . . . . . . 28 + 9.2. Control Framework Dialog Identifier SDP Attribute . . . . 31 + 10. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 + 11. Extensibility . . . . . . . . . . . . . . . . . . . . . . . . 35 + 12. Security Considerations . . . . . . . . . . . . . . . . . . . 36 + 12.1. Session Establishment . . . . . . . . . . . . . . . . . . 36 + 12.2. Transport-Level Protection . . . . . . . . . . . . . . . . 36 + 12.3. Control Channel Policy Management . . . . . . . . . . . . 37 + 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 + 13.1. Control Packages Registration Information . . . . . . . . 38 + 13.1.1. Control Package Registration Template . . . . . . . . 39 + 13.2. Control Framework Method Names . . . . . . . . . . . . . . 39 + 13.3. Control Framework Status Codes . . . . . . . . . . . . . . 39 + 13.4. Control Framework Header Fields . . . . . . . . . . . . . 40 + 13.5. Control Framework Port . . . . . . . . . . . . . . . . . . 40 + 13.6. Media Type Registrations . . . . . . . . . . . . . . . . . 40 + 13.6.1. Registration of MIME Media Type application/cfw . . . 41 + 13.6.2. Registration of MIME Media Type + application/framework-attributes+xml . . . . . . . . . 42 + 13.7. 'cfw-id' SDP Attribute . . . . . . . . . . . . . . . . . . 42 + 13.8. URN Sub-Namespace for + urn:ietf:params:xml:ns:control:framework-attributes . . . 43 + 13.9. XML Schema Registration . . . . . . . . . . . . . . . . . 43 + 14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 44 + 15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 44 + 16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 44 + 16.1. Normative References . . . . . . . . . . . . . . . . . . . 44 + 16.2. Informative References . . . . . . . . . . . . . . . . . . 46 + Appendix A. Common Package Components . . . . . . . . . . . . . . 47 + A.1. Common Dialog/Multiparty Reference Schema . . . . . . . . 47 + + + + + + + + + + + + + + +Boulton, et al. Standards Track [Page 3] + +RFC 6230 Media Control Channel Framework May 2011 + + +1. Introduction + + Real-time media applications are often developed using an + architecture where the application logic and media processing + activities are distributed. Commonly, the application logic runs on + "application servers", but the processing runs on external servers, + such as "media servers". This document focuses on the framework and + protocol between the application server and external processing + server. The motivation for this framework comes from a set of + requirements for Media Server Control, which can be found in "Media + Server Control Protocol Requirements" [RFC5167]. While the Framework + is not specific to media server control, it is the primary driver and + use case for this work. It is intended that the framework contained + in this document be able to be used for a variety of device control + scenarios (for example, conference control). + + This document does not define a particular SIP extension for the + direct control of external components. Rather, other documents, + known as "Control Packages", extend the Control Framework described + by this document. Section 8 provides a comprehensive set of + guidelines for creating such Control Packages. + + Current IETF device control protocols, such as Megaco [RFC5125], + while excellent for controlling media gateways that bridge separate + networks, are troublesome for supporting media-rich applications in + SIP networks. This is because Megaco duplicates many of the + functions inherent in SIP. Rather than using a single protocol for + session establishment and application media processing, application + developers need to translate between two separate mechanisms. + Moreover, the model provided by the framework presented here, using + SIP, better matches the application programming model than does + Megaco. + + SIP [RFC3261] provides the ideal rendezvous mechanism for + establishing and maintaining control connections to external server + components. The control connections can then be used to exchange + explicit command/response interactions that allow for media control + and associated command response results. + +2. Conventions and Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in BCP 14, [RFC2119], as + scoped to those conformance targets. + + + + + + +Boulton, et al. Standards Track [Page 4] + +RFC 6230 Media Control Channel Framework May 2011 + + + The following additional terms are defined for use in this document: + + User Agent Client (UAC): As specified in [RFC3261]. + + User Agent Server (UAS): As specified in [RFC3261]. + + B2BUA: A B2BUA is a Back-to-Back SIP User Agent. + + Control Server: A Control Server is an entity that performs a + service, such as media processing, on behalf of a Control Client. + For example, a media server offers mixing, announcement, tone + detection and generation, and play and record services. The + Control Server has a direct Real-Time Transport Protocol (RTP) + [RFC3550] relationship with the source or sink of the media flow. + In this document, we often refer to the Control Server simply as + "the Server". + + Control Client: A Control Client is an entity that requests + processing from a Control Server. Note that the Control Client + might not have any processing capabilities whatsoever. For + example, the Control Client may be an application server (B2BUA) + or other endpoint requesting manipulation of a third party's media + stream that terminates on a media server acting in the role of a + Control Server. In this document, we often refer to the Control + Client simply as "the Client". + + Control Channel: A Control Channel is a reliable connection between + a Client and Server that is used to exchange Framework messages. + The term "Connection" is used synonymously within this document. + + Framework Message: A Framework message is a message on a Control + Channel that has a type corresponding to one of the Methods + defined in this document. A Framework message is often referred + to by its method, such as a "CONTROL message". + + Method: A Method is the type of a Framework message. Four Methods + are defined in this document: SYNC, CONTROL, REPORT, and K-ALIVE. + + Control Command: A Control Command is an application-level request + from a Client to a Server. Control Commands are carried in the + body of CONTROL messages. Control Commands are defined in + separate specifications known as "Control Packages". + + Framework Transaction: A Framework Transaction is defined as a + sequence composed of a Control Framework message originated by + either a Control Client or Control Server and responded to with a + Control Framework response code message. Note that the Control + Framework has no "provisional" responses. A Control Framework + + + +Boulton, et al. Standards Track [Page 5] + +RFC 6230 Media Control Channel Framework May 2011 + + + transaction is referenced throughout the document as a + 'Transaction-Timeout'. + + Transaction-Timeout: The maximum allowed time between a Control + Client or Server issuing a Framework message and it arriving at + the destination. The value for 'Transaction-Timeout' is 10 + seconds. + +3. Overview + + This document details mechanisms for establishing, using, and + terminating a reliable transport connection channel using SIP and the + Session Description Protocol offer/answer [RFC3264] exchange. The + established connection is then used for controlling an external + server. The following text provides a non-normative overview of the + mechanisms used. Detailed, normative guidelines are provided later + in the document. + + Control Channels are negotiated using standard SIP mechanisms that + would be used in a similar manner to creating a SIP multimedia + session. Figure 1 illustrates a simplified view of the mechanism. + It highlights a separation of the SIP signaling traffic and the + associated Control Channel that is established as a result of the SIP + interactions. + + Initial analysis into the Control Framework, as documented in + [MSCL-THOUGHTS], established the following. One might ask, "If all + we are doing is establishing a TCP connection to control the media + server, why do we need SIP?" This is a reasonable question. The key + is that we use SIP for media session establishment. If we are using + SIP for media session establishment, then we need to ensure the URI + used for session establishment resolves to the same node as the node + for session control. Using the SIP routing mechanism, and having the + server initiate the TCP connection back, ensures this works. For + example, the URI sip:myserver.example.com may resolve to sip: + server21.farm12.northeast.example.net, whereas the URI + http://myserver.example.com may resolve to + http://server41.httpfarm.central.example.net. That is, the host part + is not necessarily unambiguous. + + The use of SIP to negotiate the Control Channel provides many + inherent capabilities, which include: + + o Service location - Use SIP Proxies and Back-to-Back User Agents + for locating Control Servers. + + o Security mechanisms - Leverage established security mechanisms + such as Transport Layer Security (TLS) and Client Authentication. + + + +Boulton, et al. Standards Track [Page 6] + +RFC 6230 Media Control Channel Framework May 2011 + + + o Connection maintenance - The ability to re-negotiate a connection, + ensure it is active, and so forth. + + o Application agnostic - Generic protocol allows for easy extension. + + As mentioned in the previous list, one of the main benefits of using + SIP as the session control protocol is the "Service Location" + facilities provided. This applies both at a routing level, where + [RFC3263] provides the physical location of devices, and at the + service level, using Caller Preferences [RFC3840] and Callee + Capabilities [RFC3841]. The ability to select a Control Server based + on service-level capabilities is extremely powerful when considering + a distributed, clustered architecture containing varying services + (for example, voice, video, IM). More detail on locating Control + Server resources using these techniques is outlined in Section 4.1 of + this document. + + +--------------SIP Traffic--------------+ + | | + v v + +-----+ +--+--+ + | SIP | | SIP | + |Stack| |Stack| + +---+-----+---+ +---+-----+---+ + | Control | | Control | + | Client |<----Control Channel---->| Server | + +-------------+ +-------------+ + + Figure 1: Basic Architecture + + The example from Figure 1 conveys a 1:1 connection between the + Control Client and the Control Server. It is possible, if required, + for the client to request multiple Control Channels using separate + SIP INVITE dialogs between the Control Client and the Control Server + entities. Any of the connections created between the two entities + can then be used for Server control interactions. The control + connections are orthogonal to any given media session. Specific + media session information is incorporated in control interaction + commands, which themselves are defined in external packages, using + the XML schema defined in Appendix A. The ability to have multiple + Control Channels allows for stronger redundancy and the ability to + manage high volumes of traffic in busy systems. + + Consider the following simple example for session establishment + between a Client and a Server. (Note: Some lines in the examples are + removed for clarity and brevity.) Note that the roles discussed are + logical and can change during a session, if the Control Package + allows. + + + +Boulton, et al. Standards Track [Page 7] + +RFC 6230 Media Control Channel Framework May 2011 + + + The Client constructs and sends a standard SIP INVITE request, as + defined in [RFC3261], to the external Server. The Session + Description Protocol (SDP) payload includes the required information + for Control Channel negotiation and is the primary mechanism for + conveying support for this specification. The application/cfw MIME + type is defined in this document to convey the appropriate SDP format + for compliance to this specification. The Connection-Oriented Media + (COMEDIA) [RFC4145] specification for setting up and maintaining + reliable connections is used as part of the negotiation mechanism + (more detail available in later sections). The Client also includes + the 'cfw-id' SDP attribute, as defined in this specification, which + is a unique identifier used to correlate the underlying Media Control + Channel with the offer/answer exchange. + + Client Sends to External Server: + + INVITE sip:External-Server@example.com SIP/2.0 + To: <sip:External-Server@example.com> + From: <sip:Client@example.com>;tag=64823746 + Via: SIP/2.0/UDP client.example.com;branch=z9hG4bK72d + Call-ID: 7823987HJHG6 + Max-Forwards: 70 + CSeq: 1 INVITE + Contact: <sip:Client@clientmachine.example.com> + Content-Type: application/sdp + Content-Length: [..] + + v=0 + o=originator 2890844526 2890842808 IN IP4 controller.example.com + s=- + c=IN IP4 controller.example.com + m=application 49153 TCP cfw + a=setup:active + a=connection:new + a=cfw-id:H839quwhjdhegvdga + + On receiving the INVITE request, an external Server supporting this + mechanism generates a 200 OK response containing appropriate SDP and + formatted using the application/cfw MIME type specified in this + document. The Server inserts its own unique 'cfw-id' SDP attribute, + which differs from the one received in the INVITE (offer). + + External Server Sends to Client: + +SIP/2.0 200 OK +To: <sip:External-Server@example.com>;tag=28943879 +From: <sip:Client@example.com>;tag=64823746 +Via: SIP/2.0/UDP client.example.com;branch=z9hG4bK72d;received=192.0.2.4 + + + +Boulton, et al. Standards Track [Page 8] + +RFC 6230 Media Control Channel Framework May 2011 + + +Call-ID: 7823987HJHG6 +CSeq: 1 INVITE +Contact: <sip:External-Server@servermachine.example.com> +Content-Type: application/sdp +Content-Length: [..] + +v=0 +o=responder 2890844526 2890842808 IN IP4 server.example.com +s=- +c=IN IP4 mserver.example.com +m=application 7563 TCP cfw +a=setup:passive +a=connection:new +a=cfw-id:U8dh7UHDushsdu32uha + + The Control Client receives the SIP 200 OK response and extracts the + relevant information (also sending a SIP ACK). It creates an + outgoing (as specified by the SDP 'setup' attribute of 'active') TCP + connection to the Control Server. The connection address (taken from + 'c=') and port (taken from 'm=') are used to identify the remote port + in the new connection. + + Once established, the newly created connection can be used to + exchange requests and responses as defined in this document. If + required, after the Control Channel has been set up, media sessions + can be established using standard SIP Third Party Call Control (3PCC) + [RFC3725]. + + Figure 2 provides a simplified example where the framework is used to + control a User Agent's RTP session. + + +--------Control SIP Dialog(1)---------+ + | | + v v + +-----+ +--+--+ + +------(2)------>| SIP |---------------(2)------------->| SIP | + | |Stack| |Stack| + | +---+-----+---+ +---+-----+---+ + | | | | | + | | Control |<--Control Channel(1)-->| | + | | Client | | Control | + | +-------------+ | Server | + +--+--+ | | + |User | | | + |Agent|<=====================RTP(2)===================>| | + +-----+ +-------------+ + + Figure 2: Participant Architecture + + + +Boulton, et al. Standards Track [Page 9] + +RFC 6230 Media Control Channel Framework May 2011 + + + The link (1) represents the SIP INVITE dialog usage and dedicated + Control Channel previously described in this overview section. The + link (2) from Figure 2 represents the User Agent SIP INVITE dialog + usage interactions and associated media flow. A User Agent creates a + SIP INVITE dialog usage with the Control Client entity. The Control + Client entity then creates a SIP INVITE dialog usage to the Control + Server, using B2BUA type functionality. Using the interaction + illustrated by (2), the Control Client negotiates media capabilities + with the Control Server, on behalf of the User Agent, using SIP 3PCC. + [RFC3725]. + +4. Control Channel Setup + + This section describes the setup, using SIP, of the dedicated Control + Channel. Once the Control Channel has been established, commands can + be exchanged (as discussed in Section 6). + +4.1. Control Client SIP UAC Behavior + + When a UAC wishes to establish a Control Channel, it MUST construct + and transmit a new SIP INVITE request for Control Channel setup. The + UAC MUST construct the INVITE request as defined in [RFC3261]. + + If a reliable response is received (as defined in [RFC3261] and + [RFC3262]), the mechanisms defined in this document are applicable to + the newly created SIP INVITE dialog usage. + + The UAC SHOULD include a valid session description (an 'offer' as + defined in [RFC3264]) in an INVITE request using the Session + Description Protocol defined in [RFC4566] but MAY choose an offer- + less INVITE as per [RFC3261]. The SDP SHOULD be formatted in + accordance with the steps below and using the MIME type application/ + cfw, which is registered in Section 13. The following information + defines the composition of specific elements of the SDP payload the + offerer MUST adhere to when used in a SIP-based offer/answer exchange + using SDP and the application/cfw MIME type. The SDP being + constructed MUST contain only a single occurrence of a Control + Channel definition outlined in this specification but can contain + other media lines if required. + + The Connection Data line in the SDP payload is constructed as + specified in [RFC4566]: + + c=<nettype> <addrtype> <connection-address> + + The first sub-field, <nettype>, MUST equal the value "IN". The + second sub-field, <addrtype>, MUST equal either "IP4" or "IP6". The + third sub-field for Connection Data is <connection-address>. This + + + +Boulton, et al. Standards Track [Page 10] + +RFC 6230 Media Control Channel Framework May 2011 + + + supplies a representation of the SDP originator's address, for + example, DNS/IP representation. The address is the address used for + connections. + + Example: + + c=IN IP4 controller.example.com + + The SDP MUST contain a corresponding Media Description entry: + + m=<media> <port> <proto> <fmt> + + The first "sub-field", <media>, MUST equal the value "application". + The second sub-field, <port>, MUST represent a port on which the + constructing client can receive an incoming connection if required. + The port is used in combination with the address specified in the + Connection Data line defined previously to supply connection details. + If the entity constructing the SDP can't receive incoming + connections, it must still enter a valid port entry. The use of the + port value '0' has the same meaning as defined in a SIP offer/answer + exchange [RFC3264]. The Control Framework has a default port defined + in Section 13.5. This value is default, although a client is free to + choose explicit port numbers. However, SDP SHOULD use the default + port number, unless local policy prohibits its use. Using the + default port number allows network administrators to manage firewall + policy for Control Framework interactions. The third sub-field, + <proto>, compliant to this specification, MUST support the values + "TCP" and "TCP/TLS". Implementations MUST support TLS as a + transport-level security mechanism for the Control Channel, although + use of TLS in specific deployments is optional. Control Framework + implementations MUST support TCP as a transport protocol. When an + entity identifies a transport value but is not willing to establish + the session, it MUST respond using the appropriate SIP mechanism. + The <fmt> sub-field MUST contain the value "cfw". + + The SDP MUST also contain a number of SDP media attributes (a=) that + are specifically defined in the COMEDIA [RFC4145] specification. The + attributes provide connection negotiation and maintenance parameters. + It is RECOMMENDED that a Controlling UAC initiate a connection to an + external Server but that an external Server MAY negotiate and + initiate a connection using COMEDIA, if network topology prohibits + initiating connections in a certain direction. An example of the + COMEDIA attributes is: + + a=setup:active + a=connection:new + + + + + +Boulton, et al. Standards Track [Page 11] + +RFC 6230 Media Control Channel Framework May 2011 + + + This example demonstrates a new connection that will be initiated + from the owner of the SDP payload. The connection details are + contained in the SDP answer received from the UAS. A full example of + an SDP payload compliant to this specification can be viewed in + Section 3. Once the SDP has been constructed along with the + remainder of the SIP INVITE request (as defined in [RFC3261]), it can + be sent to the appropriate location. The SIP INVITE dialog usage and + appropriate control connection is then established. + + A SIP UAC constructing an offer MUST include the 'cfw-id' SDP + attribute as defined in Section 9.2. The 'cfw-id' attribute + indicates an identifier that can be used within the Control Channel + to correlate the Control Channel with this SIP INVITE dialog usage. + The 'cfw-id' attribute MUST be unique in the context of the + interaction between the UAC and UAS and MUST NOT clash with instances + of the 'cfw-id' used in other SIP offer/answer exchanges. The value + chosen for the 'cfw-id' attribute MUST be used for the entire + duration of the associated SIP INVITE dialog usage and not be changed + during updates to the offer/answer exchange. This applies + specifically to the 'connection' attribute as defined in [RFC4145]. + If a SIP UAC wants to change some other parts of the SDP but reuse + the already established connection, it uses the value of 'existing' + in the 'connection' attribute (for example, a=connection:existing). + If it has noted that a connection has failed and wants to re- + establish the connection, it uses the value of 'new' in the + 'connection' attribute (for example, a=connection:new). Throughout + this, the connection identifier specified in the 'cfw-id' SDP + parameter MUST NOT change. One is simply negotiating the underlying + TCP connection between endpoints but always using the same Control + Framework session, which is 1:1 for the lifetime of the SIP INVITE + dialog usage. + + A non-2xx-class final SIP response (3xx, 4xx, 5xx, and 6xx) received + for the INVITE request indicates that no SIP INVITE dialog usage has + been created and is treated as specified by SIP [RFC3261]. + Specifically, support of this specification is negotiated through the + presence of the media type defined in this specification. The + receipt of a SIP error response such as "488" indicates that the + offer contained in a request is not acceptable. The inclusion of the + media line associated with this specification in such a rejected + offer indicates to the client generating the offer that this could be + due to the receiving client not supporting this specification. The + client generating the offer MUST act as it would normally on + receiving this response, as per [RFC3261]. Media streams can also be + rejected by setting the port to "0" in the "m=" line of the session + description, as defined in [RFC3264]. A client using this + specification MUST be prepared to receive an answer where the "m=" + line it inserted for using the Control Framework has been set to "0". + + + +Boulton, et al. Standards Track [Page 12] + +RFC 6230 Media Control Channel Framework May 2011 + + + In this situation, the client will act as it would for any other + media type with a port set to "0". + +4.2. Control Server SIP UAS Behavior + + On receiving a SIP INVITE request, an external Server (SIP UAS) + inspects the message for indications of support for the mechanisms + defined in this specification. This is achieved through inspection + of the session description of the offer message and identifying + support for the application/cfw MIME type in the SDP. If the SIP UAS + wishes to construct a reliable response that conveys support for the + extension, it MUST follow the mechanisms defined in [RFC3261]. If + support is conveyed in a reliable SIP provisional response, the + mechanisms in [RFC3262] MUST also be used. It should be noted that + the SDP offer is not restricted to the initial INVITE request and MAY + appear in any series of messages that are compliant to [RFC3261], + [RFC3262], [RFC3311], and [RFC3264]. + + When constructing an answer, the SDP payload MUST be constructed + using the semantic (connection, media, and attribute) defined in + Section 4.1 using valid local settings and also with full compliance + to the COMEDIA [RFC4145] specification. For example, the SDP + attributes included in the answer constructed for the example offer + provided in Section 4.1 would look as follows: + + a=setup:passive + a=connection:new + + A client constructing an answer MUST include the 'cfw-id' SDP + attribute as defined in Section 9.2. This attribute MUST be unique + in the context of the interaction between the UAC and UAS and MUST + NOT clash with instances of the 'cfw-id' used in other SIP offer/ + answer exchanges. The 'cfw-id' MUST be different from the 'cfw-id' + value received in the offer as it is used to uniquely identify and + distinguish between multiple endpoints that generate SDP answers. + The value chosen for the 'cfw-id' attribute MUST be used for the + entire duration of the associated SIP INVITE dialog usage and not be + changed during updates to the offer/answer exchange. + + Once the SDP answer has been constructed, it is sent using standard + SIP mechanisms. Depending on the contents of the SDP payloads that + were negotiated using the offer/answer exchange, a reliable + connection will be established between the Controlling UAC and + External Server UAS entities. The newly established connection is + now available to exchange Control Command primitives. The state of + the SIP INVITE dialog usage and the associated Control Channel are + now implicitly linked. If either party wishes to terminate a Control + Channel, it simply issues a SIP termination request (for example, a + + + +Boulton, et al. Standards Track [Page 13] + +RFC 6230 Media Control Channel Framework May 2011 + + + SIP BYE request or appropriate response in an early SIP INVITE dialog + usage). The Control Channel therefore lives for the duration of the + SIP INVITE dialog usage. + + A UAS receiving a SIP OPTIONS request MUST respond appropriately as + defined in [RFC3261]. The UAS MUST include the media types supported + in the SIP 200 OK response in a SIP 'Accept' header to indicate the + valid media types. + +5. Establishing Media Streams - Control Client SIP UAC Behavior + + It is intended that the Control Framework will be used within a + variety of architectures for a wide range of functions. One of the + primary functions will be the use of the Control Channel to apply + multiple specific Control Package commands to media sessions + established by SIP INVITE dialogs (media dialogs) with a given remote + server. For example, the Control Server might send a command to + generate audio media (such as an announcement) on an RTP stream + between a User Agent and a media server. + + SIP INVITE dialogs used to establish media sessions (see Figure 2) on + behalf of User Agents MAY contain more than one Media Description (as + defined by "m=" in the SDP). The Control Client MUST include a media + label attribute, as defined in [RFC4574], for each "m=" definition + received that is to be directed to an entity using the Control + Framework. This allows the Control Client to later explicitly direct + commands on the Control Channel at a specific media line (m=). + + This framework identifies the referencing of such associated media + dialogs as extremely important. A connection reference attribute has + been specified that can optionally be imported into any Control + Package. It is intended that this will reduce the repetitive + specifying of dialog reference language. The schema can be found in + Appendix A.1. + + Similarly, the ability to identify and apply commands to a group of + associated media dialogs (multiparty) is also identified as a common + structure that could be defined and reused, for example, playing a + prompt to all participants in a Conference. The schema for such + operations can also be found in Appendix A.1. + + Support for both the common attributes described here is specified as + part of each Control Package definition, as detailed in Section 8. + + + + + + + + +Boulton, et al. Standards Track [Page 14] + +RFC 6230 Media Control Channel Framework May 2011 + + +6. Control Framework Interactions + + In this document, the use of the COMEDIA specification allows for a + Control Channel to be set up in either direction as a result of a SIP + INVITE transaction. SIP provides a flexible negotiation mechanism to + establish the Control Channel, but there needs to be a mechanism + within the Control Channel to correlate it with the SIP INVITE dialog + usage implemented for its establishment. A Control Client receiving + an incoming connection (whether it be acting in the role of UAC or + UAS) has no way of identifying the associated SIP INVITE dialog usage + as it could be simply listening for all incoming connections on a + specific port. The following steps, which implementations MUST + support, allow a connecting UA (that is, the UA with the active role + in COMEDIA) to identify the associated SIP INVITE dialog usage that + triggered the connection. Unless there is an alternative dialog + association mechanism used, the UAs MUST carry out these steps before + any other signaling on the newly created Control Channel. + + o Once the connection has been established, the UA acting in the + active role (active UA) to initiate the connection MUST send a + Control Framework SYNC request. The SYNC request MUST be + constructed as defined in Section 9.1 and MUST contain the + 'Dialog-ID' message header. + + o The 'Dialog-ID' message header is populated with the value of the + local 'cfw-id' media-level attribute that was inserted by the same + client in the SDP offer/answer exchange to establish the Control + Channel. This allows for a correlation between the Control + Channel and its associated SIP INVITE dialog usage. + + o On creating the SYNC request, the active UA MUST follow the + procedures outlined in Section 6.3.3. This provides details of + connection keep-alive messages. + + o On creating the SYNC request, the active UA MUST also follow the + procedures outlined in Section 6.3.4.2. This provides details of + the negotiation mechanism used to determine the Protocol Data + Units (PDUs) that can be exchanged on the established Control + Channel connection. + + o The UA in the active role for the connection creation MUST then + send the SYNC request. If the UA in the active role for the + connection creation is a SIP UAS and has generated its SDP + response in a 2xx-class SIP response, it MUST wait for an incoming + SIP ACK message before issuing the SYNC. If the UA in the active + role for the connection creation is a SIP UAS and has generated + its SDP response in a reliable 1XX class SIP response, it MUST + wait for an incoming SIP PRACK message before issuing the SYNC. + + + +Boulton, et al. Standards Track [Page 15] + +RFC 6230 Media Control Channel Framework May 2011 + + + If the UA in the active role for the connection creation is a SIP + UAC, it MUST send the SYNC message immediately on establishment of + the Control Channel. It MUST then wait for a period of at least + 2*'Transaction-Timeout' to receive a response. It MAY choose a + longer time to wait, but it MUST NOT be shorter than 'Transaction- + Timeout'. In general, a Control Framework transaction MUST + complete within 20 (2*'Transaction-Timeout') seconds and is + referenced throughout the document as 'Transaction-Timeout'. + + o If no response is received for the SYNC message, a timeout occurs + and the Control Channel is terminated along with the associated + SIP INVITE dialog usage. The active UA MUST issue a BYE request + to terminate the SIP INVITE dialog usage. + + o If the active UA receives a 481 response from the passive UA, this + means the SYNC request was received, but the associated SIP INVITE + dialog usage specified in the SYNC message does not exist. The + active client MUST terminate the Control Channel. The active UA + MUST issue a SIP BYE request to terminate the SIP INVITE dialog + usage. + + o All other error responses received for the SYNC request are + treated as detailed in this specification and also result in the + termination of the Control Channel and the associated SIP INVITE + dialog usage. The active UA MUST issue a BYE request to terminate + the SIP INVITE dialog usage. + + o The receipt of a 200 response to a SYNC message implies that the + SIP INVITE dialog usage and control connection have been + successfully correlated. The Control Channel can now be used for + further interactions. + + SYNC messages can be sent at any point while the Control Channel is + open from either side, once the initial exchange is complete. If + present, the contents of the 'Keep-Alive' and 'Dialog-ID' headers + MUST NOT change. New values of the 'Keep-Alive' and 'Dialog-ID' + headers have no relevance as they are negotiated for the lifetime of + the Media Control Channel Framework session. + + Once a successful Control Channel has been established, as defined in + Sections 4.1 and 4.2, and the connection has been correlated, as + described in previous paragraphs, the two entities are now in a + position to exchange Control Framework messages. The following sub- + sections specify the general behavior for constructing Control + Framework requests and responses. Section 6.3 specifies the core + Control Framework methods and their transaction processing. + + + + + +Boulton, et al. Standards Track [Page 16] + +RFC 6230 Media Control Channel Framework May 2011 + + +6.1. General Behavior for Constructing Requests + + An entity acting as a Control Client that constructs and sends + requests on a Control Channel MUST adhere to the syntax defined in + Section 9. Note that either entity can act as a Control Client + depending on individual package requirements. Control Commands MUST + also adhere to the syntax defined by the Control Packages negotiated + in Sections 4.1 and 4.2 of this document. A Control Client MUST + create a unique transaction and associated identifier for insertion + in the request. The transaction identifier is then included in the + first line of a Control Framework message along with the method type, + as defined in the ABNF in Section 9. The first line starts with the + "CFW" token for the purpose of easily extracting the transaction + identifier. The transaction identifier MUST be unique in the context + of the interaction between the Control Client and Control Server. + This unique property helps avoid clashes when multiple client + entities could be creating transactions to be carried out on a single + receiving server. All required, mandatory, and optional Control + Framework headers are then inserted into the request with appropriate + values (see relevant individual header information for explicit + detail). A 'Control-Package' header MUST also be inserted with the + value indicating the Control Package to which this specific request + applies. Multiple packages can be negotiated per Control Channel + using the SYNC message discussed in Section 6.3.4.2. + + Any Framework message that contains an associated payload MUST also + include the 'Content-Type' and 'Content-Length' message headers, + which indicate the MIME type of the payload specified by the + individual Control Framework packages and the size of the message + body represented as a whole decimal number of octets, respectively. + If no associated payload is to be added to the message, the 'Content- + Length' header MUST have a value of '0'. + + A Server receiving a Framework message request MUST respond with an + appropriate response (as defined in Section 6.2). Control Clients + MUST wait for a minimum of 2*'Transaction-Timeout' for a response + before considering the transaction a failure and tidying state + appropriately depending on the extension package being used. + +6.2. General Behavior for Constructing Responses + + An entity acting as a Control Server, on receiving a request, MUST + generate a response within the 'Transaction-Timeout', as measured + from the Control Client. The response MUST conform to the ABNF + defined in Section 9. The first line of the response MUST contain + the transaction identifier used in the first line of the request, as + + + + + +Boulton, et al. Standards Track [Page 17] + +RFC 6230 Media Control Channel Framework May 2011 + + + defined in Section 6.1. Responses MUST NOT include the 'Status' or + 'Timeout' message headers, and these MUST be ignored if received by a + Client in a response. + + A Control Server MUST include a status code in the first line of the + response. If there is no error, the Server responds with a 200 + Control Framework status code, as defined in Section 7.1. The 200 + response MAY include message bodies. If the response contains a + payload, the message MUST include the 'Content-Length' and 'Content- + Type' headers. When the Control Client receives a 2xx-class + response, the Control Command transaction is complete. + + If the Control Server receives a request, like CONTROL, that the + Server understands, but the Server knows processing the command will + exceed the 'Transaction-Timeout', then the Server MUST respond with a + 202 status code in the first line of the response. Following the + initial response, the server will send one or more REPORT messages as + described in Section 6.3.2. A Control Package MUST explicitly define + the circumstances under which the server sends 200 and 202 messages. + + If a Control Server encounters problems with a Control Framework + request (like REPORT or CONTROL), an appropriate error code MUST be + used in the response, as listed in Section 7. The generation of a + non-2xx-class response code to a Control Framework request (like + CONTROL or REPORT) will indicate failure of the transaction, and all + associated transaction state and resources MUST be terminated. The + response code may provide an explicit indication of why the + transaction failed, which might result in a re-submission of the + request depending on the extension package being used. + +6.3. Transaction Processing + + The Control Framework defines four types of requests (methods): + CONTROL, REPORT, K-ALIVE, and SYNC. Implementations MUST support + sending and receiving these four methods. + + The following sub-sections specify each Control Framework method and + its associated transaction processing. + +6.3.1. CONTROL Transactions + + A CONTROL message is used by the Control Client to pass control- + related information to a Control Server. It is also used as the + event-reporting mechanism in the Control Framework. Reporting events + is simply another usage of the CONTROL message, which is permitted to + be sent in either direction between two participants in a session, + carrying the appropriate payload for an event. The message is + constructed in the same way as any standard Control Framework + + + +Boulton, et al. Standards Track [Page 18] + +RFC 6230 Media Control Channel Framework May 2011 + + + message, as discussed in Section 6.1 and defined in Section 9. A + CONTROL message MAY contain a message body. The explicit Control + Command(s) of the message payload contained in a CONTROL message are + specified in separate Control Package specifications. Separate + Control Package specifications MUST conform to the format defined in + Section 8.4. A CONTROL message containing a payload MUST include a + 'Content-Type' header. The payload MUST be one of the payload types + defined by the Control Package. Individual packages MAY allow a + CONTROL message that does not contain a payload. This could in fact + be a valid message exchange within a specific package; if it's not, + an appropriate package-level error message MUST be generated. + +6.3.2. REPORT Transactions + + A 'REPORT' message is used by a Control Server when processing of a + CONTROL command extends beyond the 'Transaction-Timeout', as measured + from the Client. In this case, the Server returns a 202 response. + The Server returns status updates and the final results of the + command in subsequent REPORT messages. + + All REPORT messages MUST contain the same transaction ID in the + request start line that was present in the original CONTROL + transaction. This correlates extended transactions with the original + CONTROL transaction. A REPORT message containing a payload MUST + include the 'Content-Type' and 'Content-Length' headers indicating + the payload MIME type [RFC2045] defined by the Control Package and + the length of the payload, respectively. + +6.3.2.1. Reporting the Status of Extended Transactions + + On receiving a CONTROL message, a Control Server MUST respond within + 'Transaction-Timeout' with a status code for the request, as + specified in Section 6.2. If the processing of the command completes + within that time, a 200 response code MUST be sent. If the command + does not complete within that time, the response code 202 MUST be + sent indicating that the requested command is still being processed + and the CONTROL transaction is being extended. The REPORT method is + then used to update and terminate the status of the extended + transaction. The Control Server should not wait until the last + possible opportunity to make the decision of issuing a 202 response + code and should ensure that it has plenty of time for the response to + arrive at the Control Client. If it does not have time, transactions + will be terminated (timed out) at the Control Client before + completion. + + + + + + + +Boulton, et al. Standards Track [Page 19] + +RFC 6230 Media Control Channel Framework May 2011 + + + A Control Server issuing a 202 response MUST ensure the message + contains a 'Timeout' message header. This header MUST have a value + in seconds that is the amount of time the recipient of the 202 + message MUST wait before assuming that there has been a problem and + terminating the extended transaction and associated state. + + The initial REPORT message MUST contain a 'Seq' (Sequence) message + header with a value equal to '1'. Note: the 'Seq' numbers at both + Control Client and Control Server for Framework messages are + independent. + + All REPORT messages for an extended CONTROL transaction MUST contain + a 'Timeout' message header. This header will contain a value in + seconds that is the amount of time the recipient of the REPORT + message MUST wait before assuming that there has been a problem and + terminating the extended transaction and associated state. On + receiving a REPORT message with a 'Status' header of 'update', the + Control Client MUST reset the timer for the associated extended + CONTROL transaction to the indicated timeout period. If the timeout + period approaches and no intended REPORT messages have been + generated, the entity acting as a Control Framework UAS for the + interaction MUST generate a REPORT message containing, as defined in + this paragraph, a 'Status' header of 'update' with no associated + payload. Such a message acts as a timeout refresh and in no way + impacts the extended transaction because no message body or semantics + are permitted. It is RECOMMENDED that a minimum value of 10 and a + maximum value of 15 seconds be used for the value of the 'Timeout' + message header. It is also RECOMMENDED that a Control Server refresh + the timeout period of the CONTROL transaction at an interval that is + not too close to the expiry time. A value of 80% of the timeout + period could be used. For example, if the timeout period is 10 + seconds, the Server would refresh the transaction after 8 seconds. + + Subsequent REPORT messages that provide additional information + relating to the extended CONTROL transaction MUST also include and + increment by 1 the 'Seq' header value. A REPORT message received + that has not been incremented by 1 MUST be responded to with a 406 + response and the extended transaction MUST be considered terminated. + On receiving a 406 response, the extended transaction MUST be + terminated. REPORT messages MUST also include a 'Status' header with + a value of 'update'. These REPORT messages sent to update the + extended CONTROL transaction status MAY contain a message body, as + defined by individual Control Packages and specified in Section 8.5. + A REPORT message sent updating the extended transaction also acts as + a timeout refresh, as described earlier in this section. This will + result in a transaction timeout period at the initiator of the + original CONTROL request being reset to the interval contained in the + 'Timeout' message header. + + + +Boulton, et al. Standards Track [Page 20] + +RFC 6230 Media Control Channel Framework May 2011 + + + When all processing for an extended CONTROL transaction has taken + place, the entity acting as a Control Server MUST send a terminating + REPORT message. The terminating REPORT message MUST increment the + value in the 'Seq' message header by the value of '1' from the + previous REPORT message. It MUST also include a 'Status' header with + a value of 'terminate' and MAY contain a message body. It MUST also + contain a 'Timeout' message header with a valid value. The inclusion + of the 'Timeout' header is for consistency, and its value is ignored. + A Control Framework UAC can then clean up any pending state + associated with the original CONTROL transaction. + +6.3.3. K-ALIVE Transactions + + The protocol defined in this document may be used in various network + architectures. This includes a wide range of deployments where the + clients could be co-located in a secured, private domain, or spread + across disparate domains that require traversal of devices such as + Network Address Translators (NATs) and firewalls. A keep-alive + mechanism enables the Control Channel to be kept active during times + of inactivity. This is because many firewalls have a timeout period + after which connections are closed. This mechanism also provides the + ability for application-level failure detection. It should be noted + that the following procedures apply only to the Control Channel being + created. For details relating to the SIP keep-alive mechanism, + implementers should seek guidance from SIP Outbound [RFC5626]. + + The following keep-alive procedures MUST be implemented. Specific + deployments MAY choose not to use the keep-alive mechanism if both + entities are in a co-located domain. Note that choosing not to use + the keep-alive mechanism defined in this section, even when in a co- + located architecture, will reduce the ability to detect application- + level errors, especially during long periods of inactivity. + + Once the SIP INVITE dialog usage has been established and the + underlying Control Channel has been set up, including the initial + correlation handshake using SYNC as discussed in Section 6, both + entities acting in the active and passive roles, as defined in + COMEDIA [RFC4145], MUST start a keep-alive timer equal to the value + negotiated during the Control Channel SYNC request/response exchange. + This is the value from the 'Keep-Alive' header in seconds. + +6.3.3.1. Behavior for an Entity in an Active Role + + When in an active role, a K-ALIVE message MUST be generated before + the local keep-alive timer fires. An active entity is free to send + the K-ALIVE message whenever it chooses. It is RECOMMENDED for the + entity to issue a K-ALIVE message after 80% of the local keep-alive + timer. On receiving a 200 OK Control Framework message for the + + + +Boulton, et al. Standards Track [Page 21] + +RFC 6230 Media Control Channel Framework May 2011 + + + K-ALIVE request, the active entity MUST reset the local keep-alive + timer. If no 200 OK response is received to the K-ALIVE message, or + a transport-level problem is detected by some other means, before the + local keep-alive timer fires, the active entity MAY use COMEDIA re- + negotiation procedures to recover the connection. Otherwise, the + active entity MUST tear down the SIP INVITE dialog and recover the + associated Control Channel resources. + +6.3.3.2. Behavior for an Entity in a Passive Role + + When acting as a passive entity, a K-ALIVE message must be received + before the local keep-alive timer fires. When a K-ALIVE request is + received, the passive entity MUST generate a 200 OK Control Framework + response and reset the local keep-alive timer. No other Control + Framework response is valid. If no K-ALIVE message is received (or a + transport level problem is detected by some other means) before the + local keep-alive timer fires, the passive entity MUST tear down the + SIP INVITE dialog and recover the associated Control Channel + resources. + +6.3.4. SYNC Transactions + + The initial SYNC request on a Control Channel is used to negotiate + the timeout period for the Control Channel keep-alive mechanism and + to allow clients and servers to learn the Control Packages that each + supports. Subsequent SYNC requests MAY be used to change the set of + Control Packages that can be used on the Control Channel. + +6.3.4.1. Timeout Negotiation for the Initial SYNC Transaction + + The initial SYNC request allows the timeout period for the Control + Channel keep-alive mechanism to be negotiated. The following rules + MUST be followed for the initial SYNC request: + + o If the Client initiating the SDP offer has a COMEDIA 'setup' + attribute equal to active, the 'Keep-Alive' header MUST be + included in the SYNC message generated by the offerer. The value + of the 'Keep-Alive' header SHOULD be in the range of 95 to 120 + seconds (this is consistent with SIP Outbound [RFC5626]). The + value of the 'Keep-Alive' header MUST NOT exceed 600 seconds. The + client that generated the SDP "Answer" (the passive client) MUST + copy the 'Keep-Alive' header into the 200 response to the SYNC + message with the same value. + + o If the Client initiating the SDP offer has a COMEDIA 'setup' + attribute equal to passive, the 'Keep-Alive' header parameter MUST + be included in the SYNC message generated by the answerer. The + value of the 'Keep-Alive' header SHOULD be in the range of 95 to + + + +Boulton, et al. Standards Track [Page 22] + +RFC 6230 Media Control Channel Framework May 2011 + + + 120 seconds. The client that generated the SDP offer (the passive + client) MUST copy the 'Keep-Alive' header into the 200 response to + the SYNC message with the same value. + + o If the Client initiating the SDP offer has a COMEDIA 'setup' + attribute equal to 'actpass', the 'Keep-Alive' header parameter + MUST be included in the SYNC message of the entity who is the + active participant in the SDP session. If the client generating + the subsequent SDP answer places a value of 'active' in the + COMEDIA SDP 'setup' attribute, it will generate the SYNC request + and include the 'Keep-Alive' header. The value SHOULD be in the + range 95 to 120 seconds. If the client generating the subsequent + SDP answer places a value of 'passive' in the COMEDIA 'setup' + attribute, the original UA making the SDP will generate the SYNC + request and include the 'Keep-Alive' header. The value SHOULD be + in the range 95 to 120 seconds. + + o If the initial negotiated offer/answer results in a COMEDIA + 'setup' attribute equal to 'holdconn', the initial SYNC mechanism + will occur when the offer/answer exchange is updated and the + active/passive roles are resolved using COMEDIA. + + The previous steps ensure that the entity initiating the Control + Channel connection is always the one specifying the keep-alive + timeout period. It will always be the initiator of the connection + who generates the K-ALIVE messages. + + Once negotiated, the keep-alive timeout applies for the remainder of + the Control Framework session. Any subsequent SYNC messages + generated in the Control Channel do not impact the negotiated keep- + alive property of the session. The 'Keep-Alive' header MUST NOT be + included in subsequent SYNC messages, and if it is received, it MUST + be ignored. + +6.3.4.2. Package Negotiation + + As part of the SYNC message exchange, a client generating the request + MUST include a 'Packages' header, as defined in Section 9. The + 'Packages' header contains a list of all Control Framework packages + that can be supported within this control session, from the + perspective of the client creating the SYNC message. All Channel + Framework package names MUST be tokens that adhere to the rules set + out in Section 8. The 'Packages' header of the initial SYNC message + MUST contain at least one value. + + A server receiving the initial SYNC request MUST examine the contents + of the 'Packages' header. If the server supports at least one of the + packages listed in the request, it MUST respond with a 200 response + + + +Boulton, et al. Standards Track [Page 23] + +RFC 6230 Media Control Channel Framework May 2011 + + + code. The response MUST contain a 'Packages' header that lists the + supported packages that are in common with those from the 'Packages' + header of the request (either all or a subset). This list forms a + common set of Control Packages that are supported by both parties. + Any Control Packages supported by the server that are not listed in + the 'Packages' header of the SYNC request MAY be placed in the + 'Supported' header of the response. This provides a hint to the + client that generated the SYNC request about additional packages + supported by the server. + + If no common packages are supported by the server receiving the SYNC + message, it MUST respond with a 422 error response code. The error + response MUST contain a 'Supported' header indicating the packages + that are supported. The initiating client can then choose to either + re-submit a new SYNC message based on the 422 response or consider + the interaction a failure. This would lead to termination of the + associated SIP INVITE dialog by sending a SIP BYE request, as per + [RFC3261]. + + Once the initial SYNC transaction is completed, either client MAY + choose to send a subsequent new SYNC message to re-negotiate the + packages that are supported within the Control Channel. A new SYNC + message whose 'Packages' header has different values from the + previous SYNC message can effectively add and delete the packages + used in the Control Channel. If a client receiving a subsequent SYNC + message does not wish to change the set of packages, it MUST respond + with a 421 Control Framework response code. Subsequent SYNC messages + MUST NOT change the value of the 'Dialog-ID' and 'Keep-Alive' Control + Framework headers that appeared in the original SYNC negotiation. + + An entity MAY honor Control Framework commands relating to a Control + Package it no longer supports after package re-negotiation. When the + entity does not wish to honor such commands, it MUST respond to the + request with a 420 response. + +7. Response Code Descriptions + + The following response codes are defined for transaction responses to + methods defined in Section 6.1. All response codes in this section + MUST be supported and can be used in response to both CONTROL and + REPORT messages except that a 202 MUST NOT be generated in response + to a REPORT message. + + Note that these response codes apply to Framework Transactions only. + Success or error indications for Control Commands MUST be treated as + the result of a Control Command and returned in either a 200 response + or REPORT message. + + + + +Boulton, et al. Standards Track [Page 24] + +RFC 6230 Media Control Channel Framework May 2011 + + +7.1. 200 Response Code + + The framework protocol transaction completed successfully. + +7.2. 202 Response Code + + The framework protocol transaction completed successfully and + additional information will be provided at a later time through the + REPORT mechanism defined in Section 6.3.2. + +7.3. 400 Response Code + + The request was syntactically incorrect. + +7.4. 403 Response Code + + The server understood the request, but is refusing to fulfill it. + The client SHOULD NOT repeat the request. + +7.5. 405 Response Code + + Method not allowed. The primitive is not supported. + +7.6. 406 Response Code + + Message out of sequence. + +7.7. 420 Response Code + + Intended target of the request is for a Control Package that is not + valid for the current session. + +7.8. 421 Response Code + + Recipient does not wish to re-negotiate Control Packages at this + moment in time. + +7.9. 422 Response Code + + Recipient does not support any Control Packages listed in the SYNC + message. + +7.10. 423 Response Code + + Recipient has an existing transaction with the same transaction ID. + + + + + + +Boulton, et al. Standards Track [Page 25] + +RFC 6230 Media Control Channel Framework May 2011 + + +7.11. 481 Response Code + + The transaction of the request does not exist. In response to a SYNC + request, the 481 response code indicates that the corresponding SIP + INVITE dialog usage does not exist. + +7.12. 500 Response Code + + The recipient does not understand the request. + +8. Control Packages + + Control Packages specify behavior that extends the capability defined + in this document. Control Packages MUST NOT weaken statements of + "MUST" and "SHOULD" strength in this document. A Control Package MAY + strengthen "SHOULD", "RECOMMENDED", and "MAY" to "MUST" if justified + by the specific usage of the framework. + + In addition to the usual sections expected in Standards-Track RFCs + and SIP extension documents, authors of Control Packages need to + address each of the issues detailed in the following sub-sections. + The following sections MUST be used as a template and included + appropriately in all Control-Package specifications. To reiterate, + the following sections do not solely form the basis of all Control- + Package specifications but are included as a minimum to provide + essential package-level information. A Control-Package specification + can take any valid form it wishes as long as it includes at least the + following information listed in this section. + +8.1. Control Package Name + + This section MUST be present in all extensions to this document and + provides a token name for the Control Package. The section MUST + include information that appears in the IANA registration of the + token. Information on registering Control Package tokens is + contained in Section 13. + +8.2. Framework Message Usage + + The Control Framework defines a number of message primitives that can + be used to exchange commands and information. There are no + limitations restricting the directionality of messages passed down a + Control Channel. This section of a Control Package document MUST + explicitly detail the types of Framework messages (Methods) that can + be used as well as provide an indication of directionality between + entities. This will include which role type is allowed to initiate a + request type. + + + + +Boulton, et al. Standards Track [Page 26] + +RFC 6230 Media Control Channel Framework May 2011 + + +8.3. Common XML Support + + This optional section is only included in a Control Package if the + attributes for media dialog or conference reference are required, as + defined and discussed in Appendix A.1. The Control Package will make + strong statements (using language from RFC 2119 [RFC2119]) if the XML + schema defined in Appendix A.1 is to be supported. If only part of + the schema is required (for example, just 'connectionid' or + 'conferenceid'), the Control Package will make equally strong + statements (using language from RFC 2119 [RFC2119]). + +8.4. CONTROL Message Bodies + + This mandatory section of a Control Package defines the control body + that can be contained within a CONTROL command request, as defined in + Section 6, or that no Control Package body is required. This section + MUST indicate the location of detailed syntax definitions and + semantics for the appropriate MIME [RFC2045] body type that apply to + a CONTROL command request and, optionally, the associated 200 + response. For Control Packages that do not have a Control Package + body, making such a statement satisfies the "MUST" strength of this + section in the Control Package document. + +8.5. REPORT Message Bodies + + This mandatory section of a Control Package defines the REPORT body + that can be contained within a REPORT command request, as defined in + Section 6, or that no report package body is required. This section + MUST indicate the location of detailed syntax definitions and + semantics for the appropriate MIME [RFC2045] body type. It should be + noted that the Control Framework specification does allow for + payloads to exist in 200 responses to CONTROL messages (as defined in + this document). An entity that is prepared to receive a payload type + in a REPORT message MUST also be prepared to receive the same payload + in a 200 response to a CONTROL message. For Control Packages that do + not have a Control Package body, stating such satisfies the "MUST" + strength of this section in the Control Package document. + +8.6. Audit + + Auditing of various Control Package properties such as capabilities + and resources (package-level meta-information) is extremely useful. + Such meta-data usually has no direct impact on Control Framework + interactions but allows for contextual information to be learnt. + Control Packages are encouraged to make use of Control Framework + interactions to provide relevant package audit information. + + + + + +Boulton, et al. Standards Track [Page 27] + +RFC 6230 Media Control Channel Framework May 2011 + + + This section SHOULD include the following information: + + o If an auditing capability is available in this package. + + o How auditing information is triggered (for example, using a + Control Framework CONTROL message) and delivered (for example, in + a Control Framework 200 response). + + o The location of the audit query and response format for the + payload (for example, it could be a separate XML schema OR part of + a larger XML schema). + +8.7. Examples + + It is strongly RECOMMENDED that Control Packages provide a range of + message flows that represent common flows using the package and this + framework document. + +9. Formal Syntax + +9.1. Control Framework Formal Syntax + + The Control Framework interactions use the UTF-8 transformation + format as defined in [RFC3629]. The syntax in this section uses the + Augmented Backus-Naur Form (ABNF) as defined in [RFC5234] including + types 'DIGIT', 'CRLF', and 'ALPHA'. + + Unless otherwise stated in the definition of a particular header + field, field values, parameter names, and parameter values are not + case-sensitive. + + control-req-or-resp = control-request / control-response + control-request = control-req-start *headers CRLF [control-content] + control-response = control-resp-start *headers CRLF [control-content] + control-req-start = pCFW SP trans-id SP method CRLF + control-resp-start = pCFW SP trans-id SP status-code CRLF + + pCFW = %x43.46.57; CFW in caps + trans-id = alpha-num-token + method = mCONTROL / mREPORT / mSYNC / mK-ALIVE / other-method + mCONTROL = %x43.4F.4E.54.52.4F.4C ; CONTROL in caps + mREPORT = %x52.45.50.4F.52.54 ; REPORT in caps + mSYNC = %x53.59.4E.43 ; SYNC in caps + mK-ALIVE = %x4B.2D.41.4C.49.56.45 ; K-ALIVE in caps + + other-method = 1*UPALPHA + status-code = 3*DIGIT ; any code defined in this and other documents + + + + +Boulton, et al. Standards Track [Page 28] + +RFC 6230 Media Control Channel Framework May 2011 + + + headers = header-name CRLF + + header-name = (Content-Length + /Content-Type + /Control-Package + /Status + /Seq + /Timeout + /Dialog-ID + /Packages + /Supported + /Keep-alive + /ext-header) + + Content-Length = "Content-Length:" SP 1*DIGIT + Control-Package = "Control-Package:" SP 1*alpha-num-token + Status = "Status:" SP ("update" / "terminate" ) + Timeout = "Timeout:" SP 1*DIGIT + Seq = "Seq:" SP 1*DIGIT + Dialog-ID = "Dialog-ID:" SP dialog-id-string + Packages = "Packages:" SP package-name *(COMMA package-name) + Supported = "Supported:" SP supprtd-alphanum *(COMMA supprtd-alphanum) + Keep-alive = "Keep-Alive:" SP kalive-seconds + + dialog-id-string = alpha-num-token + package-name = alpha-num-token + supprtd-alphanum = alpha-num-token + kalive-seconds = 1*DIGIT + + alpha-num-token = ALPHANUM 3*31alpha-num-tokent-char + alpha-num-tokent-char = ALPHANUM / "." / "-" / "+" / "%" / "=" / "/" + + control-content = *OCTET + + Content-Type = "Content-Type:" SP media-type + media-type = type "/" subtype *(SP ";" gen-param ) + type = token ; Section 4.2 of RFC 4288 + subtype = token ; Section 4.2 of RFC 4288 + + gen-param = pname [ "=" pval ] + pname = token + pval = token / quoted-string + + token = 1*(%x21 / %x23-27 / %x2A-2B / %x2D-2E + / %x30-39 / %x41-5A / %x5E-7E) + + + + + + +Boulton, et al. Standards Track [Page 29] + +RFC 6230 Media Control Channel Framework May 2011 + + + quoted-string = DQUOTE *(qdtext / qd-esc) DQUOTE + qdtext = SP / HTAB / %x21 / %x23-5B / %x5D-7E + / UTF8-NONASCII + qd-esc = (BACKSLASH BACKSLASH) / (BACKSLASH DQUOTE) + BACKSLASH = "\" + UPALPHA = %x41-5A + ALPHANUM = ALPHA / DIGIT + + ext-header = hname ":" SP hval CRLF + + hname = ALPHA *token + hval = utf8text + + utf8text = *(HTAB / %x20-7E / UTF8-NONASCII) + + UTF8-NONASCII = UTF8-2 / UTF8-3 / UTF8-4 ; From RFC 3629 + + The following table details a summary of the headers that can be + contained in Control Framework interactions. + + Header field Where CONTROL REPORT SYNC K-ALIVE + ___________________________________________________________ + Content-Length o o - - + Control-Package R m - - - + Seq - m - - + Status R - m - - + Timeout R - m - - + Timeout 202 - m - - + Dialog-ID R - - m - + Packages - - m - + Supported r - - o - + Keep-Alive R - - o - + Content-Type o o - - + + Table 1: Summary of Headers in Control Framework Interactions + + The notation used in Table 1 is as follows: + + R: header field may only appear in requests. + r: header field may only appear in responses. + 2xx, 4xx, etc.: response codes with which the header field can be used. + [blank]: header field may appear in either requests or responses. + m: header field is mandatory. + o: header field is optional. + -: header field is not applicable (ignored if present). + + + + + + +Boulton, et al. Standards Track [Page 30] + +RFC 6230 Media Control Channel Framework May 2011 + + +9.2. Control Framework Dialog Identifier SDP Attribute + + This specification defines a new media-level value attribute: + 'cfw-id'. Its formatting in SDP is described by the following ABNF + [RFC5234]. + + cfw-dialog-id = "a=cfw-id:" 1*(SP cfw-id-name) CRLF + + cfw-id-name = token + + token = 1*(token-char) + + token-char = %x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39 + / %x41-5A / %x5E-7E + + The token-char and token elements are defined in [RFC4566] but + included here to provide support for the implementer of this SDP + feature. + +10. Examples + + The following examples provide an abstracted flow of Control Channel + establishment and Control Framework message exchange. The SIP + signaling is prefixed with the token 'SIP'. All other messages are + Control Framework interactions defined in this document. + + In this example, the Control Client establishes a Control Channel, + SYNCs with the Control Server, and issues a CONTROL request that + can't be completed within the 'Transaction-Timeout', so the Control + Server returns a 202 response code to extend the transaction. The + Control Server then follows with REPORTs until the requested action + has been completed. The SIP INVITE dialog is then terminated. + + + + + + + + + + + + + + + + + + + +Boulton, et al. Standards Track [Page 31] + +RFC 6230 Media Control Channel Framework May 2011 + + + Control Client Control Server + | | + | (1) SIP INVITE | + | ----------------------------------------> | + | | + | (2) SIP 200 | + | <--------------------------------------- | + | | + | (3) SIP ACK | + | ----------------------------------------> | + | | + |==>=======================================>==| + | Control Channel Established | + |==>=======================================>==| + | | + | (4) SYNC | + | ----------------------------------------> | + | | + | (5) 200 | + | <--------------------------------------- | + | | + | (6) CONTROL | + | ----------------------------------------> | + | | + + (1) Control Client-->Control Server (SIP): INVITE + sip:control-server@example.com + + INVITE sip:control-server@example.com SIP/2.0 + To: <sip:control-server@example.com> + From: <sip:control-client@example.com>;tag=8937498 + Via: SIP/2.0/UDP client.example.com;branch=z9hG4bK123 + CSeq: 1 INVITE + Max-Forwards: 70 + Call-ID: 893jhoeihjr8392@example.com + Contact: <sip:control-client@pc1.example.com> + Content-Type: application/sdp + Content-Length: 206 + + v=0 + o=originator 2890844526 2890842808 IN IP4 controller.example.com + s=- + c=IN IP4 control-client.example.com + m=application 49153 TCP cfw + a=setup:active + a=connection:new + a=cfw-id:fndskuhHKsd783hjdla + + + + +Boulton, et al. Standards Track [Page 32] + +RFC 6230 Media Control Channel Framework May 2011 + + + (2) Control Server-->Control Client (SIP): 200 OK + +SIP/2.0 200 OK +To: <sip:control-server@example.com>;tag=023983774 +From: <sip:control-client@example.com>;tag=8937498 +Via: SIP/2.0/UDP client.example.com;branch=z9hG4bK123;received=192.0.2.5 +CSeq: 1 INVITE +Call-ID: 893jhoeihjr8392@example.com +Contact: <sip:control-server@pc2.example.com> +Content-Type: application/sdp +Content-Length: 203 + +v=0 +o=responder 2890844600 2890842900 IN IP4 controller.example.com +s=- +c=IN IP4 control-server.example.com +m=application 49153 TCP cfw +a=setup:passive +a=connection:new +a=cfw-id:7JeDi23i7eiysi32 + + (3) Control Client-->Control Server (SIP): ACK + + (4) Control Client opens a TCP connection to the Control Server. + The connection can now be used to exchange Control Framework + messages. Control Client-->Control Server (Control Framework + message): SYNC. + + CFW 8djae7khauj SYNC + Dialog-ID: fndskuhHKsd783hjdla + Keep-Alive: 100 + Packages: msc-ivr-basic/1.0 + + (5) Control Server-->Control Client (Control Framework message): + 200. + + CFW 8djae7khauj 200 + Keep-Alive: 100 + Packages: msc-ivr-basic/1.0 + Supported: msc-ivr-vxml/1.0,msc-conf-audio/1.0 + + (6) Once the SYNC process has completed, the connection can now be + used to exchange Control Framework messages. Control + Client-->Control Server (Control Framework message): CONTROL. + + CFW i387yeiqyiq CONTROL + Control-Package: <package-name> + Content-Type: example_content/example_content + + + +Boulton, et al. Standards Track [Page 33] + +RFC 6230 Media Control Channel Framework May 2011 + + + Content-Length: 11 + + <XML BLOB/> + + (7) Control Server-->Control Client (Control Framework message): + 202. + + CFW i387yeiqyiq 202 + Timeout: 10 + + (8) Control Server-->Control Client (Control Framework message): + REPORT. + + CFW i387yeiqyiq REPORT + Seq: 1 + Status: update + Timeout: 10 + + (9) Control Client-->Control Server (Control Framework message): + 200. + + CFW i387yeiqyiq 200 + Seq: 1 + + (10) Control Server-->Control Client (Control Framework message): + REPORT. + + CFW i387yeiqyiq REPORT + Seq: 2 + Status: update + Timeout: 10 + Content-Type: example_content/example_content + Content-Length: 11 + + <XML BLOB/> + + (11) Control Client-->Control Server (Control Framework message): + 200. + + CFW i387yeiqyiq 200 + Seq: 2 + + (12) Control Server-->Control Client (Control Framework message): + REPORT. + + CFW i387yeiqyiq REPORT + Seq: 3 + Status: terminate + + + +Boulton, et al. Standards Track [Page 34] + +RFC 6230 Media Control Channel Framework May 2011 + + + Timeout: 10 + Content-Type: example_content/example_content + Content-Length: 11 + + <XML BLOB/> + + (13) Control Client-->Control Server (Control Framework message): + 200. + + CFW i387yeiqyiq 200 + Seq: 3 + + (14) Control Client-->Control Server (SIP): BYE + + BYE sip:control-server@pc2.example.com SIP/2.0 + To: <sip:control-server@example.com>;tag=023983774 + From: <sip:client@example.com>;tag=8937498 + Via: SIP/2.0/UDP client.example.com;branch=z9hG4bK234 + CSeq: 2 BYE + Max-Forwards: 70 + Call-ID: 893jhoeihjr8392@example.com + Contact: <sip:control-client@pc1.example.com> + Content-Length: 0 + + (15) Control Server-->Control Client (SIP): 200 OK + +SIP/2.0 200 OK +To: <sip:control-server@example.com>;tag=023983774 +From: <sip:client@example.com>;tag=8937498 +Via: SIP/2.0/UDP client.example.com;branch=z9hG4bK234;received=192.0.2.5 +CSeq: 2 BYE +Call-ID: 893jhoeihjr8392@example.com +Contact: <sip:control-server@pc1.example.com> +Content-Length: 0 + +11. Extensibility + + The Media Control Channel Framework was designed to be only minimally + extensible. New methods, header fields, and status codes can be + defined in Standards-Track RFCs. The Media Control Channel Framework + does not contain a version number or any negotiation mechanism to + require or discover new features. If an extension is specified in + the future that requires negotiation, the specification will need to + describe how the extension is to be negotiated in the encapsulating + signaling protocol. If a non-interoperable update or extension + occurs in the future, it will be treated as a new protocol, and it + MUST describe how its use will be signaled. + + + + +Boulton, et al. Standards Track [Page 35] + +RFC 6230 Media Control Channel Framework May 2011 + + + In order to allow extension header fields without breaking + interoperability, if a Media Control Channel device receives a + request or response containing a header field that it does not + understand, it MUST ignore the header field and process the request + or response as if the header field was not present. If a Media + Control Channel device receives a request with an unknown method, it + MUST return a 500 response. + +12. Security Considerations + + The Channel Framework provides confidentiality and integrity for the + messages it transfers. It also provides assurances that the + connected host is the host that it meant to connect to and that the + connection has not been hijacked, as discussed in the remainder of + this section. + + In design, the Channel Framework complies with the security-related + requirements documented in "Media Server Control Protocol + Requirements" [RFC5167] -- more specifically, REQ-MCP-11, REQ-MCP-12, + REQ-MCP-13, and REQ-MCP-14. Specific security measures employed by + the Channel Framework are summarized in the following sub-sections. + +12.1. Session Establishment + + Channel Framework sessions are established as media sessions + described by SDP within the context of a SIP INVITE dialog. In order + to ensure secure rendezvous between Control Framework clients and + servers, the Media Channel Control Framework should make full use of + mechanisms provided by SIP. The use of the 'cfw-id' SDP attribute + results in important session information being carried across the SIP + network. For this reason, SIP clients using this specification MUST + use appropriate security mechanisms, such as TLS [RFC5246] and SMIME + [RFC5751], when deployed in open networks. + +12.2. Transport-Level Protection + + When using only TCP connections, the Channel Framework security is + weak. Although the Channel Framework requires the ability to protect + this exchange, there is no guarantee that the protection will be used + all the time. If such protection is not used, anyone can see data + exchanges. + + Sensitive data, such as private and financial data, is carried over + the Control Framework channel. Clients and servers must be properly + authenticated/authorized and the Control Channel must permit the use + of confidentiality, replay protection, and integrity protection for + the data. To ensure Control Channel protection, Control Framework + clients and servers MUST support TLS and SHOULD use it by default + + + +Boulton, et al. Standards Track [Page 36] + +RFC 6230 Media Control Channel Framework May 2011 + + + unless alternative Control Channel protection is used or a protected + environment is guaranteed by the administrator of the network. + Alternative Control Channel protection MAY be used if desired (e.g., + IPsec [RFC5246]). + + TLS is used to authenticate devices and to provide integrity, replay + protection, and confidentiality for the header fields being + transported on the Control Channel. Channel Framework elements MUST + implement TLS and MUST also implement the TLS ClientExtendedHello + extended hello information for server name indication as described in + [RFC5246]. A TLS cipher-suite of TLS_RSA_WITH_AES_128_CBC_SHA + [RFC3261] MUST be supported. Other cipher-suites MAY also be + supported. + + When a TLS client establishes a connection with a server, it is + presented with the server's X.509 certificate. Authentication + proceeds as described in Section 7.3 ("Client Behavior") of RFC 5922 + [RFC5922]. + + A TLS server conformant to this specification MUST ask for a client + certificate; if the client possesses a certificate, it will be + presented to the server for mutual authentication, and authentication + proceeds as described in Section 7.4 ("Server Behavior") of RFC 5922 + [RFC5922]. + +12.3. Control Channel Policy Management + + This specification permits the establishment of a dedicated Control + Channel using SIP. It is also permitted for entities to create + multiple channels for the purpose of failover and redundancy. As a + general solution, the ability for multiple entities to create + connections and have access to resources could be the cause of + potential conflict in shared environments. It should be noted that + this document does not carry any specific mechanism to overcome such + conflicts but will provide a summary of how to do so. + + It can be determined that access to resources and use of Control + Channels relate to policy. It can be considered implementation and + deployment detail that dictates the level of policy that is adopted. + The authorization and associated policy of a Control Channel can be + linked to the authentication mechanisms described in this section. + For example, strictly authenticating a Control Channel using TLS + authentication allows entities to protect resources and ensure the + required level of granularity. Such policy can be applied at the + package level or even as low as a structure like a conference + instance (Control Channel X is not permitted to issue commands for + Control Package y OR Control Channel A is not permitted to issue + commands for conference instance B). Systems should ensure that, if + + + +Boulton, et al. Standards Track [Page 37] + +RFC 6230 Media Control Channel Framework May 2011 + + + required, an appropriate policy framework is adopted to satisfy the + requirements for implemented packages. The most robust form of + policy can be achieved using a strong authentication mechanism such + as mutual TLS authentication on the Control Channel. This + specification provides a Control Channel response code (403) to + indicate to the issuer of a command that it is not permitted. The + 403 response MUST be issued to Control Framework requests that are + not permitted under the implemented policy. If a 403 response is + received, a Control Framework client MAY choose to re-submit the + request with differing requirements or to abandon the request. The + 403 response does not provide any additional information on the + policy failure due to the generic nature of this specification. + Individual Control Packages can supply additional information if + required. The mechanism for providing such additional information is + not mandated in this specification. It should be noted that + additional policy requirements to those covered in this section might + be defined and applied in individual packages that specify a finer + granularity for access to resources, etc. + +13. IANA Considerations + + IANA has created a new registry for SIP Control Framework parameters. + The "Media Control Channel Framework Parameters" registry is a + container for sub-registries. This section further introduces sub- + registries for control packages, method names, status codes, header + field names, and port and transport protocol. + + Additionally, Section 13.6 registers a new MIME type for use with + SDP. + + For all registries and sub-registries created by this document, the + policy applied when creating a new registration is also applied when + changing an existing registration. + +13.1. Control Packages Registration Information + + This specification establishes the Control Packages sub-registry + under Media Control Channel Framework Packages. New parameters in + this sub-registry must be published in an RFC (either in the IETF + stream or Independent Submission stream), using the IANA policy + [RFC5226] "RFC Required". + + As this document specifies no package or template-package names, the + initial IANA registration for Control Packages will be empty. The + remainder of the text in this section gives an example of the type of + information to be maintained by the IANA. + + + + + +Boulton, et al. Standards Track [Page 38] + +RFC 6230 Media Control Channel Framework May 2011 + + + The table below lists the Control Packages defined in the "Media + Control Channel Framework". + + Package Name Reference + ------------ --------- + example1 [RFCXXXX] + +13.1.1. Control Package Registration Template + + Package Name: + + (Package names must conform to the syntax described in + Section 8.1.) + + Published Specification(s): + + (Control Packages require an RFC.) + + Person & email address to contact for further information: + +13.2. Control Framework Method Names + + This specification establishes the Method Names sub-registry under + Media Control Channel Framework Parameters and initiates its + population as follows. New parameters in this sub-registry must be + published in an RFC (either in the IETF stream or Independent + Submission stream). + + + CONTROL - [RFC6230] + REPORT - [RFC6230] + SYNC - [RFC6230] + K-ALIVE - [RFC6230] + + The following information MUST be provided in an RFC in order to + register a new Control Framework method: + + o The method name. + + o The RFC number in which the method is registered. + +13.3. Control Framework Status Codes + + This specification establishes the Status Code sub-registry under + Media Control Channel Framework Parameters. New parameters in this + sub-registry must be published in an RFC (either in the IETF stream + or Independent Submission stream). Its initial population is defined + in Section 9. It takes the following format: + + + +Boulton, et al. Standards Track [Page 39] + +RFC 6230 Media Control Channel Framework May 2011 + + + Code Description Reference + + The following information MUST be provided in an RFC in order to + register a new Control Framework status code: + + o The status code number. + + o The RFC number in which the method is registered. + + o A brief description of the status code. + +13.4. Control Framework Header Fields + + This specification establishes the Header Field sub-registry under + Media Control Channel Framework Parameters. New parameters in this + sub-registry must be published in an RFC (either in the IETF stream + or Independent Submission stream). Its initial population is defined + as follows: + + Control-Package - [RFC6230] + Status - [RFC6230] + Seq - [RFC6230] + Timeout - [RFC6230] + Dialog-ID - [RFC6230] + Packages - [RFC6230] + Supported - [RFC6230] + Keep-Alive - [RFC6230] + Content-Type - [RFC6230] + Content-Length - [RFC6230] + + The following information MUST be provided in an RFC in order to + register a new Channel Framework header field: + + o The header field name. + + o The RFC number in which the method is registered. + +13.5. Control Framework Port + + The Control Framework uses TCP port 7563, from the "registered" port + range. Usage of this value is described in Section 4.1. + +13.6. Media Type Registrations + + This section describes the media types and names associated with + payload formats used by the Control Framework. The registration uses + the templates defined in [RFC4288]. It follows [RFC4855]. + + + + +Boulton, et al. Standards Track [Page 40] + +RFC 6230 Media Control Channel Framework May 2011 + + +13.6.1. Registration of MIME Media Type application/cfw + + Type name: application + + Subtype name: cfw + + Required parameters: None + + Optional parameters: None + + Encoding considerations: Binary and see Section 4 of RFC 6230 + + Security considerations: See Section 12 of RFC 6230 + + Interoperability considerations: + Endpoints compliant to this specification must + use this MIME type. Receivers who cannot support + this specification will reject using appropriate + protocol mechanism. + + Published specification: RFC 6230 + + Applications that use this media type: + Applications compliant with Media Control Channels. + + Additional Information: + Magic number(s): (none) + File extension(s): (none) + Macintosh file type code(s): (none) + + Person & email address to contact for further information: + Chris Boulton <chris@ns-technologies.com> + + Intended usage: COMMON + + Restrictions on usage: + Should be used only in conjunction with this specification, + RFC 6230. + + Author: Chris Boulton + + Change controller: + IETF MEDIACTRL working group, delegated from the IESG. + + + + + + + + +Boulton, et al. Standards Track [Page 41] + +RFC 6230 Media Control Channel Framework May 2011 + + +13.6.2. Registration of MIME Media Type application/ + framework-attributes+xml + + Type name: application + + Subtype name: framework-attributes+xml + + Required parameters: (none) + + Optional parameters: Same as charset parameter of application/xml as + specified in RFC 3023 [RFC3023]. + + Encoding considerations: Same as encoding considerations of + application/xml as specified in RFC 3023 [RFC3023]. + + Security considerations: No known security considerations outside + of those provided by core Media Control Channel Framework. + + Interoperability considerations: This content type provides common + constructs for related Media Control Channel packages. + + Published specification: RFC 6230 + + Applications that use this media type: Implementations of + appropriate Media Control Channel packages. + + Additional information: + Magic number(s): (none) + File extension(s): (none) + Macintosh file type code(s): (none) + + Person & email address to contact for further information: + Chris Boulton <chris@ns-technologies.com> + + Intended usage: LIMITED USE + + Author/Change controller: The IETF + + Other information: None. + +13.7. 'cfw-id' SDP Attribute + + Contact name: Chris Boulton <chris@ns-technologies.com> + + Attribute name: "cfw-id". + + Type of attribute Media level. + + + + +Boulton, et al. Standards Track [Page 42] + +RFC 6230 Media Control Channel Framework May 2011 + + + Subject to charset: Not. + + Purpose of attribute: The 'cfw-id' attribute indicates an + identifier that can be used to correlate the Control Channel with + the SIP INVITE dialog used to negotiate it, when the attribute + value is used within the Control Channel. + + Allowed attribute values: A token. + +13.8. URN Sub-Namespace for + urn:ietf:params:xml:ns:control:framework-attributes + + IANA has registered a new XML namespace, + "urn:ietf:params:xml:ns:control:framework-attributes", per the + guidelines in RFC 3688 [RFC3688]. + + URI: urn:ietf:params:xml:ns:control:framework-attributes + + Registrant Contact: IETF MEDIACTRL working group <mediactrl@ietf.org>, + Chris Boulton <chris@ns-technologies.com>. + + XML: + + BEGIN + <?xml version="1.0"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> + <head> + <title>Media Control Channel attributes</title> + </head> + <body> + <h1>Namespace for Media Control Channel attributes</h1> + <h2>urn:ietf:params:xml:ns:control:framework-attributes</h2> + <p>See <a href="http://www.rfc-editor.org/rfc/rfc6230.txt"> + RFC 6230</a>.</p> + </body> + </html> + END + +13.9. XML Schema Registration + + This section registers an XML schema as per the guidelines in RFC + 3688 [RFC3688]. + + URI: urn:ietf:params:xml:ns:control:framework-attributes + + + + + +Boulton, et al. Standards Track [Page 43] + +RFC 6230 Media Control Channel Framework May 2011 + + + Registrant Contact: IETF MEDIACTRL working group <mediactrl@ietf.org>, + Chris Boulton <chris@ns-technologies.com>. + + Schema: The XML for this schema can be found in Appendix A.1 of this + document. + +14. Contributors + + Asher Shiratzky from Radvision provided valuable support and + contributions to the early versions of this document. + +15. Acknowledgments + + The authors would like to thank Ian Evans of Avaya, Michael + Bardzinski and John Dally of NS-Technologies, Adnan Saleem of + Radisys, and Dave Morgan for useful review and input to this work. + Eric Burger contributed to the early phases of this work. + + Expert review was also provided by Spencer Dawkins, Krishna Prasad + Kalluri, Lorenzo Miniero, and Roni Even. Hadriel Kaplan provided + expert guidance on the dialog association mechanism. Lorenzo Miniero + has constantly provided excellent feedback based on his work. + + Ben Campbell carried out the RAI expert review on this document and + provided a great deal of invaluable input. Brian Weis carried out a + thorough security review. Jonathan Lennox carried out a thorough SDP + review that provided some excellent modifications. Text from Eric + Burger was used in the introduction in the explanation for using SIP. + +16. References + +16.1. Normative References + + [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message + Bodies", RFC 2045, November 1996. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [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. + + [RFC3262] Rosenberg, J. and H. Schulzrinne, "Reliability of + Provisional Responses in Session Initiation Protocol + (SIP)", RFC 3262, June 2002. + + + +Boulton, et al. Standards Track [Page 44] + +RFC 6230 Media Control Channel Framework May 2011 + + + [RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation + Protocol (SIP): Locating SIP Servers", RFC 3263, + June 2002. + + [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model + with Session Description Protocol (SDP)", RFC 3264, + June 2002. + + [RFC3311] Rosenberg, J., "The Session Initiation Protocol (SIP) + UPDATE Method", RFC 3311, October 2002. + + [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO + 10646", STD 63, RFC 3629, November 2003. + + [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, + January 2004. + + [RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in + the Session Description Protocol (SDP)", RFC 4145, + September 2005. + + [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and + Registration Procedures", BCP 13, RFC 4288, December 2005. + + [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session + Description Protocol", RFC 4566, July 2006. + + [RFC4574] Levin, O. and G. Camarillo, "The Session Description + Protocol (SDP) Label Attribute", RFC 4574, August 2006. + + [RFC4855] Casner, S., "Media Type Registration of RTP Payload + Formats", RFC 4855, February 2007. + + [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an + IANA Considerations Section in RFCs", BCP 26, RFC 5226, + May 2008. + + [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", STD 68, RFC 5234, January 2008. + + [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security + (TLS) Protocol Version 1.2", RFC 5246, August 2008. + + [RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet + Mail Extensions (S/MIME) Version 3.2 Message + Specification", RFC 5751, January 2010. + + + + + +Boulton, et al. Standards Track [Page 45] + +RFC 6230 Media Control Channel Framework May 2011 + + + [RFC5922] Gurbani, V., Lawrence, S., and A. Jeffrey, "Domain + Certificates in the Session Initiation Protocol (SIP)", + RFC 5922, June 2010. + +16.2. Informative References + + [MSCL-THOUGHTS] + Burger, E., "Media Server Control Language and Protocol + Thoughts", Work in Progress, June 2006. + + [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media + Types", RFC 3023, January 2001. + + [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. + Jacobson, "RTP: A Transport Protocol for Real-Time + Applications", STD 64, RFC 3550, July 2003. + + [RFC3725] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. + Camarillo, "Best Current Practices for Third Party Call + Control (3pcc) in the Session Initiation Protocol (SIP)", + BCP 85, RFC 3725, April 2004. + + [RFC3840] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, + "Indicating User Agent Capabilities in the Session + Initiation Protocol (SIP)", RFC 3840, August 2004. + + [RFC3841] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Caller + Preferences for the Session Initiation Protocol (SIP)", + RFC 3841, August 2004. + + [RFC5125] Taylor, T., "Reclassification of RFC 3525 to Historic", + RFC 5125, February 2008. + + [RFC5167] Dolly, M. and R. Even, "Media Server Control Protocol + Requirements", RFC 5167, March 2008. + + [RFC5626] Jennings, C., Mahy, R., and F. Audet, "Managing Client- + Initiated Connections in the Session Initiation Protocol + (SIP)", RFC 5626, October 2009. + + + + + + + + + + + + +Boulton, et al. Standards Track [Page 46] + +RFC 6230 Media Control Channel Framework May 2011 + + +Appendix A. Common Package Components + + During the creation of the Control Framework, it has become clear + that there are a number of components that are common across multiple + packages. It has become apparent that it would be useful to collect + such reusable components in a central location. In the short term, + this appendix provides the placeholder for the utilities, and it is + the intention that this section will eventually form the basis of an + initial 'Utilities Document' that can be used by Control Packages. + +A.1. Common Dialog/Multiparty Reference Schema + + The following schema provides some common attributes for allowing + Control Packages to apply specific commands to a particular SIP media + dialog (also referred to as "Connection") or conference. If used + within a Control Package, the Connection and multiparty attributes + will be imported and used appropriately to specifically identify + either a SIP dialog or a conference instance. If used within a + package, the value contained in the 'connectionid' attribute MUST be + constructed by concatenating the 'Local' and 'Remote' SIP dialog + identifier tags as defined in [RFC3261]. They MUST then be separated + using the ':' character. So the format would be: + + 'Local Dialog tag' + ':' + 'Remote Dialog tag' + + As an example, for an entity that has a SIP Local dialog identifier + of '7HDY839' and a Remote dialog identifier of 'HJKSkyHS', the + 'connectionid' attribute for a Control Framework command would be: + + 7HDY839:HJKSkyHS + + It should be noted that Control Framework requests initiated in + conjunction with a SIP dialog will produce a different 'connectionid' + value depending on the directionality of the request; for example, + Local and Remote tags are locally identifiable. + + As with the Connection attribute previously defined, it is useful to + have the ability to apply specific Control Framework commands to a + number of related dialogs, such as a multiparty call. This typically + consists of a number of media dialogs that are logically bound by a + single identifier. The following schema allows for Control Framework + commands to explicitly reference such a grouping through a + 'conferenceid' XML container. If used by a Control Package, any + control XML referenced by the attribute applies to all related media + dialogs. Unlike the dialog attribute, the 'conferenceid' attribute + does not need to be constructed based on the overlying SIP dialog. + The 'conferenceid' attribute value is system specific and should be + selected with relevant context and uniqueness. + + + +Boulton, et al. Standards Track [Page 47] + +RFC 6230 Media Control Channel Framework May 2011 + + + It should be noted that the values contained in both the + 'connectionid' and 'conferenceid' identifiers MUST be compared in a + case-sensitive manner. + + The full schema follows: + + <?xml version="1.0" encoding="UTF-8"?> + + <xsd:schema + targetNamespace="urn:ietf:params:xml:ns:control:framework-attributes" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:ietf:params:xml:ns::control:framework-attributes" + elementFormDefault="qualified" attributeFormDefault="unqualified"> + + <xsd:attributeGroup name="framework-attributes"> + <xsd:annotation> + <xsd:documentation> + SIP Connection and Conf Identifiers + </xsd:documentation> + </xsd:annotation> + + <xsd:attribute name="connectionid" type="xsd:string"/> + + <xsd:attribute name="conferenceid" type="xsd:string"/> + + </xsd:attributeGroup> + </xsd:schema> + + + + + + + + + + + + + + + + + + + + + + + + +Boulton, et al. Standards Track [Page 48] + +RFC 6230 Media Control Channel Framework May 2011 + + +Authors' Addresses + + Chris Boulton + NS-Technologies + + EMail: chris@ns-technologies.com + + + Tim Melanchuk + Rainwillow + + EMail: timm@rainwillow.com + + + Scott McGlashan + Hewlett-Packard + Gustav III:s boulevard 36 + SE-16985 Stockholm, Sweden + + EMail: smcg.stds01@mcglashan.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Boulton, et al. Standards Track [Page 49] + |