MGCP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

MGCP или Media Gateway Control Protocol дословно — Протокол контроля медиашлюзов. Является протоколом связи в распределённых VoIP системах передачи голоса по протоколу IP.

MGCP описан в RFC 3435, который заменил устаревший к настоящему времени RFC 2705, заменивший, в свою очередь, Simple Gateway Control Protocol (SGCP).

Сходный протокол для тех же целей Megaco, совместная продукция IETF (RFC 3525) и ITU (рекомендации H.248-1). Оба протокола описаны единым аппаратно-программным интерфейсом (API) Архитектура и требования MGCP в RFC 2805.

Архитектура[править | править вики-текст]

Распределённые системы состоят из агента вызовов — Call Agent (или контроллера медиашлюза), по крайней мере одного медиашлюза (MG) и по крайней мере одного сигнального шлюза (SG), подключенных к Телефонной сети общего пользования (ТФОП). С точки зрения сети ОКС-7 такой симбиоз устройств рассматривается как один узел с одним общим пойнт-кодом.

Signaling Gateway (SG)[править | править вики-текст]

Шлюз сигнализации - обеспечивает доставку сигнальной информации, поступающей со стороны ТфОП, к контроллеру шлюзов и перенос сигнальной информации в обратном направлении.

На практике сигнальный шлюз (SG) и медиашлюз (MG) подключены в один физический коммутатор, но это совсем не обязательно. Call Агент не использует MGCP для контроля сигнального шлюза (SG), для этих целей — обратной связи между сигнальным шлюзом (SG) и Агентом используются протоколы SIGTRAN.

Media Gateway (MG)[править | править вики-текст]

Медиашлюз выполняет функции преобразования речевой информации, поступающей со стороны ТфОП в голосовых каналах с постоянной скоростью передачи, в вид, пригодный для передачи по сетям с маршрутизацией пакетов IP (кодирование и упаковку речевой информации в пакеты RTP, и далее в UDP и IP) а также обратное преобразование).

Медиашлюз использует протокол MGCP для сигнализации событий, таких как информация что трубка положена/снята или набираемые цифры вызываемого номера (донабор).

Call Agent[править | править вики-текст]

Call Агент - контроллер шлюзов, выполняет функции управления шлюзами, который использует протокол MGCP чтобы сообщать медиашлюзу:

  • какие события направлять Call Агенту
  • каким образом оконечные устройства должны соединяться друг с другом
  • какие тональные сигналы вызова должны воспроизводится на оконечных устройствах

MGCP позволяет также следить Call Агенту за состоянием оконечных устройств на медиашлюзе (MG).

Как правило, медиашлюз конфигурирован со списком Call Агентов, от которых может принимать инструкции-запросы.

В принципе, уведомления можно посылать разным Агентам от каждого оконечного устройства (как предусмотрено Call Агентами, для этого используется параметр NotifiedEntity). Практически однако, желательно, чтобы в данный момент всеми оконечными устройствами управлял один и тот контролер шлюзов; другие Call Агенты доступны в случае резервирования ресурсов для обеспечения избыточности, если первичный Агент отказывает, или теряет контакт с медиашлюзом. В случае такого отказа управление шлюзом автоматически переходит к резервному контролеру шлюзов. Всё о чём необходимо позаботиться для такого сценария, это обмен информацией о состоянии между двумя Агентами, однако, это не гарантирует, что оба не будут пытаться управлять одним и тем же шлюзом. Для разрешения конфликтов используется способность опрашивать шлюз, чтобы определить, который из Агентов является управляющим в данный момент.

Обзор протокола[править | править вики-текст]

Пакеты MGCP отличаются от многих других протоколов. Он резервирует обычно порт UDP 2427, датаграммы MGCP могут содержать и пустые значения, совсем не так как обычно строятся пакеты в протоколах TCP. Пакет MGCP является командой (запросом) или ответом. Команды (запросы) начинаются с четырехбуквенного кода, ответы начинаются с трехзначного цифрового кода.

В MGCP каждая команда несёт в себе идентификатор транзакции и получает ответ на каждую.

Список запросов содержит всего восемь команд: AUEP, AUCX, CRCX, DLCX, MDCX, NTFY, RQNT, RSIP.

Две команды используются Агентом, чтобы сделать запрос на медиа шлюз:

  • AUEP — аудит конечного устройства и
  • AUCX — аудит соединения.

Три команды используются Call Агентом, чтобы управлять RTP соединением на медиа шлюзе (шлюз может также послать команду DLCX, когда нужно удалить соединение для самоуправления):

  • CRCX — создать соединение,
  • DLCX — удалить соединение,
  • MDCX — изменить соединение.

Команда RQNT используется медиа шлюзом для запроса об уведомлениях используется Агентом, чтобы запросить уведомление о событиях на медиа шлюзе. В частности может использоваться для передачи сообщения о нажатой клавише в рамках тонального набора (в качестве альтернативного варианта вместо RFC 2833 или G.711-inband).

Команда NTFY используется медиа шлюзом, чтобы сообщить Агенту, что обнаружено событие, о котором Агент предварительно запросил уведомление (командой RQNT). Пример использования: переключение на другой тип передаваемых данных (с голоса на факс или наоборот).

Команда RSIP — рестарт в процессе, используется медиа шлюзом, чтобы указать Агенту, идёт процесс перезапуска.

Примеры обмена сообщениями[править | править вики-текст]

Первый пример (из RFC 3435) показывает, команду CreateConnection, создающую соединение с указанным оконечным устройством (endpoint). Соединение будет иметь определённый индентификатор CallID (1204). LocalConnectionOptions указывает, что будет использоваться кодек G.711 (PCM) по мю-закону и период пакетирования составит 10 мс. Режим работы соединения будет "receive only" (только получение):

CRCX 1204 aaln/1@rgw-2567.whatever.net MGCP 1.0
C: A3C47F21456789F0
L: p:10, a:PCMU
M: recvonly

Код ответа 200 ОК означает, что операция прошла успешно, и поэтому отображается индентификатор CallID для вновь созданного соединения (1204). В сообщении приходит также описание формата сессии (SDP) для нового соединения, этому ему предшествует пустая строка:

200 1204 OK
I: FDE234C8
 
v=0
o=- 25678 753849 IN IP4 128.96.41.1
s=-
c=IN IP4 128.96.41.1
t=0 0
m=audio 3456 RTP/AVP 0

Второй пример (из RFC 3435) представляет команду ModifyConnection которая просто устанавливает режим соединения "send/receive" (отправка/получение) и также информирует что установлено "Notified entity".

MDCX 1209 aaln/1@rgw-2567.whatever.net MGCP 1.0
C: A3C47F21456789F0
I: FDE234C8
N: ca@ca1.whatever.net
M: sendrecv

Ответ означает, что транзакция выполнена успешно.

200 1209 OK

Теперь пример команды ModifyConnection, где передаётся принятое описание звонковой сессии (SDP) и запрос уведомления. Оконечное устройство (endpoint) начнёт проигрывать контроль посылки вызова абоненту (длинные гудки, ожидание ответа вызываемого).

MDCX 1210 aaln/1@rgw-2567.whatever.net MGCP 1.0
C: A3C47F21456789F0
I: FDE234C8
M: recvonly
X: 0123456789AE
R: L/hu
S: G/rt
 
v=0
o=- 4723891 7428910 IN IP4 128.96.63.25
s=-
c=IN IP4 128.96.63.25
t=0 0
m=audio 3456 RTP/AVP 0

Ответ означает, что транзакция выполнена успешно.

200 1206 OK

RFC[править | править вики-текст]

  • 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
  • RFC 2805 — Media Gateway Control Protocol Architecture and Requirements

См. также[править | править вики-текст]