Network Working Group F. Andreasen Request for Comments: 3435 B. Foster Obsoletes: 2705 Cisco Systems Category: Informational January 2003 Media Gateway Control Protocol (MGCP) Version 1.0 Status of this Memo This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. Copyright Notice Copyright (C) The Internet Society (2003). All Rights Reserved. IESG Note This document is being published for the information of the community. It describes a protocol that is currently being deployed in a number of products. Implementers should be aware of RFC 3015, which was developed in the IETF Megaco Working Group and the ITU-T SG16 and which is considered by the IETF and ITU-T to be the standards-based (including reviewed security considerations) way to meet the needs that MGCP was designed to address.Abstract
This document describes an application programming interface and a corresponding protocol (MGCP) which is used between elements of a decomposed multimedia gateway. The decomposed multimedia gateway consists of a Call Agent, which contains the call control "intelligence", and a media gateway which contains the media functions, e.g., conversion from TDM voice to Voice over IP. Media gateways contain endpoints on which the Call Agent can create, modify and delete connections in order to establish and control media sessions with other multimedia endpoints. Also, the Call Agent can instruct the endpoints to detect certain events and generate signals. The endpoints automatically communicate changes in service state to the Call Agent. Furthermore, the Call Agent can audit endpoints as well as the connections on endpoints.
The basic and general MGCP protocol is defined in this document, however most media gateways will need to implement one or more MGCP packages, which define extensions to the protocol suitable for use with specific types of media gateways. Such packages are defined in separate documents.Table of Contents
1. Introduction.................................................5 1.1 Relation with the H.323 Standards............................7 1.2 Relation with the IETF Standards.............................8 1.3 Definitions..................................................9 1.4 Conventions used in this Document............................9 2. Media Gateway Control Interface.............................10 2.1 Model and Naming Conventions................................10 2.1.1 Types of Endpoints..........................................10 2.1.2 Endpoint Identifiers........................................14 2.1.3 Calls and Connections.......................................16 2.1.4 Names of Call Agents and Other Entities.....................22 2.1.5 Digit Maps..................................................23 2.1.6 Packages....................................................26 2.1.7 Events and Signals..........................................28 2.2 Usage of SDP................................................33 2.3 Gateway Control Commands....................................33 2.3.1 Overview of Commands........................................33 2.3.2 EndpointConfiguration.......................................36 2.3.3 NotificationRequest.........................................37 2.3.4 Notify......................................................44 2.3.5 CreateConnection............................................46 2.3.6 ModifyConnection............................................52 2.3.7 DeleteConnection (from the Call Agent)......................54 2.3.8 DeleteConnection (from the gateway).........................58 2.3.9 DeleteConnection (multiple connections from the Call Agent) 59 2.3.10 AuditEndpoint...............................................60 2.3.11 AuditConnection.............................................65 2.3.12 RestartInProgress...........................................66 2.4 Return Codes and Error Codes................................69 2.5 Reason Codes................................................74 2.6 Use of Local Connection Options and Connection Descriptors..75 2.7 Resource Reservations.......................................77 3. Media Gateway Control Protocol..............................77 3.1 General Description.........................................78 3.2 Command Header..............................................79 3.2.1 Command Line................................................79 3.2.2 Parameter Lines.............................................82 3.3 Format of response headers.................................101 3.3.1 CreateConnection Response..................................104 3.3.2 ModifyConnection Response..................................105
3.3.3 DeleteConnection Response..................................106 3.3.4 NotificationRequest Response...............................106 3.3.5 Notify Response............................................106 3.3.6 AuditEndpoint Response.....................................106 3.3.7 AuditConnection Response...................................107 3.3.8 RestartInProgress Response.................................108 3.4 Encoding of the Session Description (SDP)..................108 3.4.1 Usage of SDP for an Audio Service..........................110 3.4.2 Usage of SDP for LOCAL Connections.........................110 3.5 Transmission over UDP......................................111 3.5.1 Providing the At-Most-Once Functionality...................112 3.5.2 Transaction Identifiers and Three Ways Handshake...........113 3.5.3 Computing Retransmission Timers............................114 3.5.4 Maximum Datagram Size, Fragmentation and Reassembly........115 3.5.5 Piggybacking...............................................116 3.5.6 Provisional Responses......................................117 4. States, Failover and Race Conditions.......................119 4.1 Failover Assumptions and Highlights........................119 4.2 Communicating with Gateways................................121 4.3 Retransmission, and Detection of Lost Associations:........122 4.4 Race Conditions............................................126 4.4.1 Quarantine List............................................127 4.4.2 Explicit Detection.........................................133 4.4.3 Transactional Semantics....................................134 4.4.4 Ordering of Commands, and Treatment of Misorder............135 4.4.5 Endpoint Service States....................................137 4.4.6 Fighting the Restart Avalanche.............................140 4.4.7 Disconnected Endpoints.....................................143 4.4.8 Load Control in General....................................146 5. Security Requirements......................................147 5.1 Protection of Media Connections............................148 6. Packages...................................................148 6.1 Actions....................................................150 6.2 BearerInformation..........................................150 6.3 ConnectionModes............................................151 6.4 ConnectionParameters.......................................151 6.5 DigitMapLetters............................................151 6.6 Events and Signals.........................................152 6.6.1 Default and Reserved Events................................155 6.7 ExtensionParameters........................................156 6.8 LocalConnectionOptions.....................................157 6.9 Reason Codes...............................................157 6.10 RestartMethods.............................................158 6.11 Return Codes...............................................158 7. Versions and Compatibility.................................158 7.1 Changes from RFC 2705......................................158 8. Security Considerations....................................164 9. Acknowledgments............................................164
10. References.................................................164 Appendix A: Formal Syntax Description of the Protocol.............167 Appendix B: Base Package..........................................175 B.1 Events.....................................................175 B.2 Extension Parameters.......................................176 B.2.1 PersistentEvents...........................................176 B.2.2 NotificationState..........................................177 B.3 Verbs......................................................177 Appendix C: IANA Considerations...................................179 C.1 New MGCP Package Sub-Registry..............................179 C.2 New MGCP Package...........................................179 C.3 New MGCP LocalConnectionOptions Sub-Registry...............179 Appendix D: Mode Interactions.....................................180 Appendix E: Endpoint Naming Conventions...........................182 E.1 Analog Access Line Endpoints...............................182 E.2 Digital Trunks.............................................182 E.3 Virtual Endpoints..........................................183 E.4 Media Gateway..............................................184 E.5 Range Wildcards............................................184 Appendix F: Example Command Encodings.............................185 F.1 NotificationRequest........................................185 F.2 Notify.....................................................186 F.3 CreateConnection...........................................186 F.4 ModifyConnection...........................................189 F.5 DeleteConnection (from the Call Agent).....................189 F.6 DeleteConnection (from the gateway)........................190 F.7 DeleteConnection (multiple connections from the Call Agent).......................................190 F.8 AuditEndpoint..............................................191 F.9 AuditConnection............................................192 F.10 RestartInProgress..........................................193 Appendix G: Example Call Flows....................................194 G.1 Restart....................................................195 G.1.1 Residential Gateway Restart................................195 G.1.2 Call Agent Restart.........................................198 G.2 Connection Creation........................................200 G.2.1 Residential Gateway to Residential Gateway.................200 G.3 Connection Deletion........................................206 G.3.1 Residential Gateway to Residential Gateway.................206 Authors' Addresses................................................209 Full Copyright Statement..........................................210
1. Introduction
This document describes an abstract application programming interface (MGCI) and a corresponding protocol (MGCP) for controlling media gateways from external call control elements called media gateway controllers or Call Agents. A media gateway is typically a network element that provides conversion between the audio signals carried on telephone circuits and data packets carried over the Internet or over other packet networks. Examples of media gateways are: * Trunking gateways, that interface between the telephone network and a Voice over IP network. Such gateways typically manage a large number of digital circuits. * Voice over ATM gateways, which operate much the same way as voice over IP trunking gateways, except that they interface to an ATM network. * Residential gateways, that provide a traditional analog (RJ11) interface to a Voice over IP network. Examples of residential gateways include cable modem/cable set-top boxes, xDSL devices, and broad-band wireless devices. * Access gateways, that provide a traditional analog (RJ11) or digital PBX interface to a Voice over IP network. Examples of access gateways include small-scale voice over IP gateways. * Business gateways, that provide a traditional digital PBX interface or an integrated "soft PBX" interface to a Voice over IP network. * Network Access Servers, that can attach a "modem" to a telephone circuit and provide data access to the Internet. We expect that in the future, the same gateways will combine Voice over IP services and Network Access services. * Circuit switches, or packet switches, which can offer a control interface to an external call control element. MGCP assumes a call control architecture where the call control "intelligence" is outside the gateways and handled by external call control elements known as Call Agents. The MGCP assumes that these call control elements, or Call Agents, will synchronize with each other to send coherent commands and responses to the gateways under their control. If this assumption is violated, inconsistent behavior should be expected. MGCP does not define a mechanism for synchronizing Call Agents. MGCP is, in essence, a master/slave protocol, where the gateways are expected to execute commands sent by the Call Agents. In consequence, this document specifies in great
detail the expected behavior of the gateways, but only specifies those parts of a Call Agent implementation, such as timer management, that are mandated for proper operation of the protocol. MGCP assumes a connection model where the basic constructs are endpoints and connections. Endpoints are sources and/or sinks of data and can be physical or virtual. Examples of physical endpoints are: * An interface on a gateway that terminates a trunk connected to a PSTN switch (e.g., Class 5, Class 4, etc.). A gateway that terminates trunks is called a trunking gateway. * An interface on a gateway that terminates an analog POTS connection to a phone, key system, PBX, etc. A gateway that terminates residential POTS lines (to phones) is called a residential gateway. An example of a virtual endpoint is an audio source in an audio- content server. Creation of physical endpoints requires hardware installation, while creation of virtual endpoints can be done by software. Connections may be either point to point or multipoint. A point to point connection is an association between two endpoints with the purpose of transmitting data between these endpoints. Once this association is established for both endpoints, data transfer between these endpoints can take place. A multipoint connection is established by connecting the endpoint to a multipoint session. Connections can be established over several types of bearer networks, for example: * Transmission of audio packets using RTP and UDP over an IP network. * Transmission of audio packets using AAL2, or another adaptation layer, over an ATM network. * Transmission of packets over an internal connection, for example the TDM backplane or the interconnection bus of a gateway. This is used, in particular, for "hairpin" connections, connections that terminate in a gateway but are immediately rerouted over the telephone network. For point-to-point connections the endpoints of a connection could be in separate gateways or in the same gateway.
1.1 Relation with the H.323 Standards
MGCP is designed as an internal protocol within a distributed system that appears to the outside as a single VoIP gateway. This system is composed of a Call Agent, that may or may not be distributed over several computer platforms, and of a set of gateways, including at least one "media gateway" that perform the conversion of media signals between circuits and packets, and at least one "signaling gateway" when connecting to an SS7 controlled network. In a typical configuration, this distributed gateway system will interface on one side with one or more telephony (i.e., circuit) switches, and on the other side with H.323 conformant systems, as indicated in the following table: ------------------------------------------------------------------ | Functional| Phone | Terminating | H.323 conformant | | Plane | switch | Entity | systems | |-----------|------------|-----------------|-----------------------| | Signaling | Signaling | Call agent | Signaling exchanges | | Plane | exchanges | | with the Call Agent | | | through | | through H.225/RAS and| | | SS7/ISUP | | H.225/Q.931. | |-----------|------------|-----------------|-----------------------| | | | | Possible negotiation | | | | | of logical channels | | | | | and transmission | | | | | parameters through | | | | | H.245 with the call | | | | | agent. | |-----------|------------|-----------------|-----------------------| | | | Internal | | | | | synchronization| | | | | through MGCP | | |-----------|------------|-----------------|-----------------------| | Bearer | Connection| Telephony | Transmission of VoIP | | Data | through | gateways | data using RTP | | Transport | high speed| | directly between the | | Plane | trunk | | H.323 station and the| | | groups | | gateway. | ------------------------------------------------------------------ In the MGCP model, the gateways focus on the audio signal translation function, while the Call Agent handles the call signaling and call processing functions. As a consequence, the Call Agent implements the "signaling" layers of the H.323 standard, and presents itself as an "H.323 Gatekeeper" or as one or more "H.323 Endpoints" to the H.323 systems.
1.2 Relation with the IETF Standards
While H.323 is the recognized standard for VoIP terminals, the IETF has also produced specifications for other types of multi-media applications. These other specifications include: * the Session Description Protocol (SDP), RFC 2327 * the Session Announcement Protocol (SAP), RFC 2974 * the Session Initiation Protocol (SIP), RFC 3261 * the Real Time Streaming Protocol (RTSP), RFC 2326. The latter three specifications are in fact alternative signaling standards that allow for the transmission of a session description to an interested party. SAP is used by multicast session managers to distribute a multicast session description to a large group of recipients, SIP is used to invite an individual user to take part in a point-to-point or unicast session, RTSP is used to interface a server that provides real time data. In all three cases, the session description is described according to SDP; when audio is transmitted, it is transmitted through the Real-time Transport Protocol, RTP.
The distributed gateway systems and MGCP will enable PSTN telephony users to access sessions set up using SAP, SIP or RTSP. The Call Agent provides for signaling conversion, according to the following table: ------------------------------------------------------------------ | Functional| Phone | Terminating | IETF conforming systems| | Plane | switch | Entity | | |-----------|------------|---------------|-------------------------| | Signaling | Signaling | Call agent | Signaling exchanges | | Plane | exchanges | | with the Call Agent | | | through | | through SAP, SIP or | | | SS7/ISUP | | RTSP. | |-----------|------------|---------------|-------------------------| | | | | Negotiation of session | | | | | description parameters | | | | | through SDP (telephony | | | | | gateway terminated but | | | | | passed via the call | | | | | agent to and from the | | | | | IETF conforming system)| |-----------|------------|---------------|-------------------------| | | | Internal syn- | | | | | chronization | | | | | through MGCP | | |-----------|------------|---------------|-------------------------| | Bearer | Connection| Telephony | Transmission of VoIP | | Data | through | gateways | data using RTP, | | Transport | high speed| | directly between the | | Plane | trunk | | remote IP end system | | | groups | | and the gateway. | ------------------------------------------------------------------ The SDP standard has a pivotal status in this architecture. We will see in the following description that we also use it to carry session descriptions in MGCP.1.3 Definitions
Trunk: A communication channel between two switching systems, e.g., a DS0 on a T1 or E1 line.1.4 Conventions used in this Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED, "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119 [2].