A telephony protocol that features prominently in the CCIE Voice and CCVP exam blueprints (as well as the real world!) is the Media Gateway Control Protocol (MGCP). MGCP is a master-slave protocol that involves a Media Gateway Controller (MGC, the master) and Media Gateways (MGs, the slaves).
MGCP is often used in Cisco Unified Communications Manager / CallManager (UCM/CCM) networks, with UCM/CCMs functioning as the MGCs that control voice gateways (MGs).
In an MGCP network, call control intelligence, dial plan, and much of the configuration resides on the MGC, while the MGs are ‘dumb' entities that are controlled by the MGC, and provide functions such as translation between packets and signals sent and received over VoIP and Time Division Multiplexing (TDM) networks. MGCs are sometimes also referred to as call agents.
MGs can be classified as either trunking gateways or residential gateways depending on the precise connectivity that they provide. MGs that terminate trunks that connect to the telephone network are referred to as trunking gateways, and MGs that provide analog connections to phones are referred to as residential gateways.
In order to really understand MGCP, you have to understand the MGCP connection model, which involves connections and endpoints.
MGCP endpoints can be found in media gateways, and they are sources or destinations for data. These endpoints can be either physical or virtual, with physical endpoints being interfaces that terminate, for example, PSTN trunks or Plain Old Telephone Service (POTS) connections to phones, and virtual endpoints being, for example, audio sources in audio content servers.
MGCP connections are simply associations between endpoints for the purpose of transmitting data, and can be either point-to-point or multipoint in nature.
As previously mentioned, the MGC controls the MGs. The MGC uses a number of commands, sent on UDP port 2427, to accomplish this:
CreateConnection (CRCX): this is used to create a connection between two endpoints. A number of parameters can be specified, such as codec, bandwidth, echo cancellation, and so on.
ModifyConnection (MDCX): this command can be used to modify the parameters associated with a connection.
DeleteConnection (DLCX): this is used to terminate a connection.
EndpointConfiguration (EPCF): an MGC can send this message to a gateway in order to specify the signal encoding to be received by an endpoint. Encoding for audio calls could be mu-law or a-law.
NotificationRequest (RQNT): an MGC sends this message to instruct a gateway to inform it when certain specified events, such as off-hook and on-hook, take place.
Notification (NTFY): used by a gateway to inform the MGC when events that the MGC specified in the NotificationRequest have taken place.
RestartInProgress (RSIP): the gateway uses this message to inform the MG that it is taking an endpoint or group of endpoints out-of-service or returning an endpoint or group of endpoints to service.
AuditEndpoint (AUEP): the MG sends this message to a gateway to find out information regarding endpoints.
AuditConnection (AUCX): this is used by the MGC to find information about connections.
If you are wondering how these commands are used in the real world, then take a look at these examples of a Cisco voice gateway being brought in service with a UCM/CCM call agent, and a sample call flow involving a voice gateway which is controlled by a UCM/CCM (call agent).
Before finishing this description of MGCP, it is important to mention MGCP PRI/BRI backhaul. MGCP PRI/BRI backhaul is a configuration in which ISDN Q.921 signaling is terminated on a gateway, but Q.931 signaling is transported using UDP port 2428 to the MGC for processing. Here's an illustration of MGCP PRI backhaul to a UCM/CCM call agent.