A Media Gateway Control Protocol (MGCP) is a Voice over Internet Protocol system used to handle the exchange of information and the management of a multimedia conference session. The exchange of information, known as signaling, is responsible for connecting, controlling and terminating sessions. Therefore, an MGCP protocol is used to set up, maintain and end calls between multiple points.
It was formed in November 1998 from combining components of two protocols, Simple Gateway Control Protocol (SGCP) and Internet Protocol Device Control (IPDC). In it, the system is set up as a master-slave model, where the media gateway controller is the master. The slave is the media gateway, converting data into a packet-switched network format and executing commands sent by the master or call control elements (sometimes referred to as a Call Agent). Call Agents utilize the protocol in order to relay information to the media gateway, such as the type of signals played on endpoints, events that must be reported back to the agent, and the way endpoints should be connected. Through this system, the Call Agent can also audit the state of an endpoint. The MGCP design is also used in a H.248/Megaco protocol, but the two are neither interchangeable nor interoperable.
Although the protocol is used in VoIP, it is compatible with a public switched telephone network (PSTN) so that the PSTN-over-IP set-up is implemented by a soft-switch call control center retains the power of the network. The endpoints in this network would be devices designed for control command execution and little else. This system is considered a lower-level of intelligence when compared to H.323 protocols. Two protocols are used within the system: Real-time Transport Protocol (RTP) frames the streaming media, and Session Description Protocol (SDP) negotiates and specifies the streams in order to be transmitted during a call session. However, the packets the protocol creates are formatted as white space, similar to packets in TCP protocols, as a response or a command. Thus, each issued command (a four-letter verb) receives a response (three-number code).