MGCP (Media Gateway Control Protocol) – протокол управления медиа-шлюзом, который используется для управления устройствами IP-телефонии, такими как шлюзы, маршрутизаторы и коммутаторы. Главная цель MGCP – обеспечить совместимость и взаимодействие между устройствами IP-телефонии и коммутационными системами PSTN (публичный сетевой телефон).
Протокол MGCP применяется для управления основными функциями устройств IP-телефонии, включая установление, завершение и контроль соединений между устройствами VOIP и телефонными сетями PSTN. Он также обеспечивает контроль за потоком данных, управление кодеками и функции телефонии, такие как голосовая почта, конференц-связь и другие дополнительные услуги.
Протокол MGCP основан на клиент-серверной архитектуре, где медиа-шлюз (MG) является сервером, а медиа-контроллер (MC) – клиентом. Медиа-контроллер отправляет команды MG для выполнения определенных задач, таких как установка вызова или воспроизведение звука.
Протокол MGCP широко применяется в сетях телефонии с многочисленными абонентами, включая большие корпорации, провайдеров услуг IP-телефонии и операторов связи. Он облегчает и упрощает управление и контроль над IP-телефонией, обеспечивая совместимость и передачу информации между различными устройствами и сетями.
MGCP описан в RFC 3435, который заменил устаревший к настоящему времени RFC 2705, заменивший, в свою очередь, Simple Gateway Control Protocol (SGCP).
Сходный протокол для тех же целей Megaco, совместная продукция IETF (RFC 3525) и ITU (рекомендации H.248-1). Оба протокола описаны единым аппаратно-программным интерфейсом (API) Архитектура и требования MGCP в RFC 2805.
Пакеты MGCP отличаются от многих других протоколов. Он резервирует обычно порт UDP 2427, датаграммы MGCP могут содержать и пустые значения, совсем не так как обычно строятся пакеты в протоколах TCP. Пакет MGCP является командой (запросом) или ответом. Команды (запросы) начинаются с четырехбуквенного кода, ответы начинаются с трехзначного цифрового кода.
В MGCP каждая команда несёт в себе идентификатор транзакции и получает ответ на каждую.
Список запросов содержит всего восемь команд: AUEP, AUCX, CRCX, DLCX, MDCX, NTFY, RQNT, RSIP.
Две команды используются Агентом, чтобы сделать запрос на медиашлюз:
- AUEP — Audit Endpoint, аудит конечного устройства (медиа-канала на шлюзе)
- AUCX — Audit Connection, аудит статуса соединения.
Три команды используются Call Агентом, чтобы управлять RTP соединением на медиа-шлюзе:
- CRCX — Create Connection, создать соединение,
- DLCX — Delete Connection, удалить соединение; шлюз может послать команду DLCX, когда нужно удалить соединение для самоуправления
- MDCX — Modify Connection, изменить соединение. Используется для изменения характеристик соединения, например изменения голосовых кодеков, отключения передачи звука в одностороннем или двустороннем порядке или (например полу-дуплексная связь) и т.п.
Команда RQNT (Request for Notification) используется медиа шлюзом для запроса об уведомлениях используется агентом (CallAgent), чтобы запросить уведомление о событиях на медиашлюзе. В частности может использоваться для передачи сообщения о нажатой клавише в рамках тонального набора DTMF (в качестве альтернативного варианта вместо RFC 2833 или G.711-inband).
Команда NTFY (Notify) используется медиашлюзом, чтобы сообщить Агенту, что обнаружено событие, о котором Агент предварительно запросил уведомление (командой RQNT). Пример использования: переключение на другой тип передаваемых данных (с голоса на факс или наоборот).
Команда EPCF — Endpoint Configuration, используется медиашлюзом для уведомления CallAgent об необходимости изменении ожидаемых параметров кодирования со стороны линии оконечного устройства.
Команда RSIP — Restart In Progress, рестарт в процессе, используется медиашлюзом, чтобы указать Агенту, что идёт процесс перезапуска.