# Media Gateway Control Protocol

The Media Gateway Control Protocol (MGCP) is a telecommunication protocol for signaling and call control in hybrid voice over IP (VoIP) and traditional telecommunication systems. It implements the media gateway control protocol architecture for controlling media gateways connected to the public switched telephone network (PSTN). The media gateways provide conversion of traditional electronic media to the Internet Protocol (IP) network. The protocol is a successor to the Simple Gateway Control Protocol (SGCP), which was developed by Bellcore and Cisco, and the Internet Protocol Device Control (IPDC).
The methodology of MGCP reflects the structure of the PSTN with the control over the network residing in a call control center softswitch, which is analogous to the central office in the telephone network. The endpoints are low-intelligence devices, mostly executing control commands from a media gateway controller, also called call agent, in the softswitch and providing result indications in response. The protocol represents a decomposition of other VoIP models, such as H.323 and the Session Initiation Protocol (SIP), in which the endpoint devices of a call have higher levels of signaling intelligence.
MGCP is a text-based protocol consisting of commands and responses. It uses the Session Description Protocol (SDP) for specifying and negotiating the media streams to be transmitted in a call session and the Real-time Transport Protocol (RTP) for framing the media streams.

## Architecture

The media gateway control protocol architecture and its methodologies and programming interfaces are described in RFC 2805.
MGCP is a master-slave protocol in which media gateways (MGs) are controlled by a call control agent or softswitch. This controller is called a media gateway controller (MGC) or call agent (CA). With the network protocol it can control each specific port on a media gateway. This facilitates centralized gateway administration and provides scalable IP telephony solutions. The distributed system is composed of at least one call agent and one or usually, multiple media gateways, which performs the conversion of media signals between circuit-switched and packet-switched networks, and at least one signaling gateway (SG) when connected to the PSTN.
MGCP presents a call control architecture with limited intelligence at the edge (endpoints, media gateways) and intelligence at the core controllers. The MGCP model assumes that call agents synchronize with each other to send coherent commands and responses to the gateways under their control.
The call agent uses MGCP to request event notifications, reports, status, and configuration data from the media gateway, as well as to specify connection parameters and activation of signals toward the PSTN telephony interface.
A softswitch is typically used in conjunction with signaling gateways, for access to Signalling System No. 7 (SS7) functionality, for example. The call agent does not use MGCP to control a signaling gateway; rather, SIGTRAN protocols are used to backhaul signaling between a signaling gateway and the call agents.

### Multiple call agents

Typically, a media gateway may be configured with a list of call agents from which it may accept control commands.
In principle, event notifications may be sent to different call agents for each endpoint on the gateway, according to the instructions received from the call agents by setting the NotifiedEntity parameter. In practice, however, it is usually desirable that all endpoints of a gateway are controlled by the same call agent; other call agents are available to provide redundancy in the event that the primary call agent fails, or loses contact with the media gateway. In the event of such a failure it is the backup call agent's responsibility to reconfigure the media gateway so that it reports to the backup call agent. The gateway may be audited to determine the controlling call agent, a query that may be used to resolve any conflicts.
In case of multiple call agents, MGCP assumes that they maintain knowledge of device state among themselves. Such failover features take into account both planned and unplanned outages.

## Protocol overview

MGCP recognizes three essential elements of communication, the media gateway controller (call agent), the media gateway endpoint, and connections between these entities. A media gateway may host multiple endpoints and each endpoint should be able to engage in multiple connections. Multiple connections on the endpoints support calling features such as call waiting and three-way calling.
MGCP is a text-based protocol using a command and response model. Commands and responses are encoded in messages that are structured and formatted with the whitespace characters space, horizontal tab, carriage return, linefeed, colon, and full stop. Messages are transmitted using the User Datagram Protocol (UDP). Media gateways use the port number 2427, and call agents use 2727 by default.
The message sequence of command (or request) and its response is known as a transaction, which is identified by the numerical Transaction Identifier exchanged in each transaction. The protocol specification defines nine standard commands that are distinguished by a four-letter command verb: AUEP, AUCX, CRCX, DLCX, EPCF, MDCX, NTFY, RQNT, and RSIP. Responses begin with a three-digit numerical response code that identifies the outcome or result of the transaction.
Two verbs are used by a call agent to query the state of an endpoint and its associated connections.
* AUEP: Audit Endpoint
* AUCX: Audit Connection
Three verbs are used by a call agent to manage the connection to a media gateway endpoint.
* CRCX: Create Connection
* DLCX: Delete Connection. This command may also be issued by an endpoint to terminate a connection.
* MDCX: Modify Connection. This command is used to alter operating characteristics of the connection, e.g. speech encoders, muting, half-duplex/full-duplex state and others.
One verb is used by a call agent to request notification of events occurring at the endpoint, and to apply signals to the connected PSTN network link, or to a connected telephony endpoint, e.g., a telephone.
* RQNT: Request for Notification
One verb is used by an endpoint to indicate to the call agent that it has detected an event for which the call agent had previously requested notification with the RQNT command:
* NTFY: Notify
One verb is used by a call agent to modify coding characteristics expected by the line side of the endpoint:
* EPCF: Endpoint Configuration
One verb is used by an endpoint to indicate to the call agent that it is in the process of restarting:
* RSIP: Restart In Progress

## Standards documents

* RFC 3435 – Media Gateway Control Protocol (MGCP) Version 1.0 (this supersedes RFC 2705)
* RFC 3660 – Basic Media Gateway Control Protocol (MGCP) Packages (informational)
* RFC 3661 – Media Gateway Control Protocol (MGCP) Return Code Usage
* RFC 3064 – MGCP CAS Packages
* RFC 3149 – MGCP Business Phone Packages
* RFC 3991 – Media Gateway Control Protocol (MGCP) Redirect and Reset Package
* RFC 3992 – Media Gateway Control Protocol (MGCP) Lockstep State Reporting Mechanism (informational)
* RFC 2805 – Media Gateway Control Protocol Architecture and Requirements
* RFC 2897 – Proposal for an MGCP Advanced Audio Package

## Megaco

Another implementation of the media gateway control protocol architecture is the H.248/Megaco protocol, a collaboration of the Internet Engineering Task Force (RFC 3525) and the International Telecommunication Union (Recommendation H.248.1). Both protocols follow the guidelines of the overlying media gateway control protocol architecture, as described in RFC 2805. However, the protocols are incompatible due to differences in protocol syntax and underlying connection model.