MGCP или Media Gateway Control Protocol дословно — Протокол контроля медиа шлюзов является протоколом связи в распределённых VoIP системах передачи голоса по протоколу IP.
Распределённые системы состоят из Агента — Call Agent (или контроллера медиа шлюза), по крайней мере одного медиа шлюза (MG) и по крайней мере одного сигнального шлюза (SG), подключенных к Телефонной сети общего пользования (ТФОП).
Агент использует протокол MGCP чтобы сообщать медиа шлюзу:
MGCP позволяет также следить Агенту за состоянием конечных устройств на медиа шлюзе (MG).
Медиа шлюз использует MGCP для сигнализации событий (таких как трубка положена/снята или набираемые цифры). На практике обычно сигнальный шлюз (SG) и медиа шлюз (MG) подключены в один физический коммутатор, но в принципе это совсем не обязательно. Агент не использует MGCP для контроля сигнального шлюза (SG), для этих целей — обратной связи между сигнальным шлюзом (SG) и Агентом используется протокол SIGTRAN. В MGCP каждая команда несёт в себе идентификатор транзакции и получает ответ на каждую.
Как правило, медиа шлюз конфигурирован со списком Агентов, от которых может принимать инструкции-запросы. В принципе, уведомления случая можно посылать разным Агентам от каждого конечного устройства (как предусмотрено Агентами, устанавливая для этого параметр NotifiedEntity). Практически однако, желательно, чтобы в данный момент всеми конечными устройствами управлял один и тот же самый Агент; другие Агенты доступны при резервации ресурсов в случае обеспечения избыточности, если первичный Агент отказывает, или теряет контакт с медиа шлюзом. В случае такого отказа управление шлюзом автоматически переходит к резервному Агенту. Всё о чём необходимо позаботиться для такого сценария, это обмен информацией о состоянии между двумя Агентами, однако, это не гарантирует, что оба не будут пытаться управлять одним и тем же шлюзом. Для разрешения конфликтов используется способность опрашивать шлюз, чтобы определить, который из Агентов является управляющим в данный момент.
Пакеты MGCP отличаются от многих других протоколов. Он резервирует обычно порт UDP 2427, датаграммы MGCP могут содержать и пустые значения, совсем не так как обычно строятся пакеты в протоколах TCP. Пакет MGCP является командой (запросом) или ответом. Команды (запросы) начинаются с четырехбуквенного кода, ответы начинаются с трехзначного цифрового кода.
Список запросов содержит всего восемь команд: AUEP, AUCX, CRCX, DLCX, MDCX, NTFY, RQNT, RSIP.
Две команды используются Агентом, чтобы сделать запрос на медиа шлюза: AUEP — аудит конечного устройства и AUCX — аудит соединения.
Три команды используются Агентом, чтобы управлять RTP соединением на медиа шлюзе (шлюз может также послать команду DLCX, когда нужно удалить соединение для самоуправления): CRCX — создать соединение, DLCX — удалить соединение, MDCX — изменить соединение.
Команда RQNT используется медиа шлюзом для запроса об уведомлениях используется Агентом, чтобы запросить уведомление о событиях на медиа шлюзе.
Команда NTFY используется медиа шлюзом, чтобы сообщить Агенту, что обнаружено событие, о котором Агент предварительно запросил уведомление (командой RQNT).
Команда RSIP — рестарт в процессе, используется медиа шлюзом, чтобы указать Агенту, идёт процесс перезапуска.