Команды протокола MGCP

MGCP определяет девять команд, причем некоторые из них передаются от Softswitch в шлюз, а другие из шлюза в Softswitch. Команды протокола и их общее описание приводятся в табл. 6.1. Команда MGCP содержит командную строку, несколько строк па­раметров и, не обязательно, описание сеанса. Командная строка и параметры являются текстом, использующим набор символов ASCII. Во время установления, поддержания и разрушения соеди­нения при помощи протокола MGCP устройство управления и шлюз обмениваются командами и ответами.


MGCP поддерживает концепцию инкапсуляции, при которой одна команда может быть включена в состав другой. Например, когда Softswitch передает к шлюзу команду создать соединение (команду CRCX), он может одновременно передать шлюзу коман­ду уведомлять его об определенных событиях. Таким образом, мы можем встретить команду NotificationRequest, инкапсулированной в команду CreateConnection. Эта функциональная возможность особенно полезна в тех случаях, когда некоторое действие должно выполняться или событие следует обнаруживать только в сочетании с другими условиями. Например, Softswitch может потребовать от MG обнаружения и сообщения о тональных сигналах DTMF но только при продолжении обслуживания вызова. В таком случае команда NotificationRequest, настраивающая шлюз на обнаружение тональ­ных сигналов DTMF и сообщение об их содержании, могут быть инкапсулированы в команду CreateConnection, и обнаружение то­нального сигнала будет происходить только в контексте созданного соединения. MGCP предусматривает только один уровень инкапсу­ляции. Иначе говоря, одна команда не может быть инкапсулирована в другую команду, если эта вторая команда уже инкапсулирована в третью команду. Однако MGCP позволяет передавать несколько команд одновременно в одном и том же пакете UDP.

Таблица 6.1. Команды протокола MGCP
Команда Код Направление передачи Назначение
EndpointConfiguration (Конфигурация оконечного пункта) EPCF Softswitch ^ MG Softswitch инструктирует шлюз, каким образом ему нужно обрабатывать получае­мые речевые сигналы
CreateConnection (Создать подключение) CRCX Softswitch ^ MG Softswitch дает указание шлю­зу создать подключение
ModifyConnection (Модифицировать подключение) MDCX Softswitch ^ MG Softswitch дает указание шлю­зу изменить параметры су­ществующего подключение
DeleteConnection (Разрушить подключение) DLCX Softswitch ^ MG, MG ^ Softswitch Softswitch и шлюзы ликвиди­руют подключение
NotificationRequest (Запрос уведомления) RQNT Softswitch ^ MG Softswitch инструктирует шлюз, какие события нужно обнаруживать и уведомлять о них
Notify (Уведомление) NTFY MG ^ Softswitch Шлюз информирует Softswitch о том, что произошло событие из числа тех, которые были специфицированы в команде NotificationRequest
AuditEndpoint (Проверить порт) AUEP Softswitch ^ MG Softswitch запрашивает ин­формацию о каком-либо пор­те шлюза
AuditConnection (Проверить подключение) AUCX Softswitch ^ MG Softswitch запрашивает пара­метры подключения
ReStartInProgress (Идет рестарт) RSIP MG ^ Softswitch Шлюз информирует Softswitch о том, что один или несколько портов выводятся из рабочего состояния или возвращаются в рабочее состояние

Команда протокола MGCP обязательно содержит заголовок, за которым может следовать описание сеанса связи (session description). Заголовок команды и описание сеанса связи представ­ляют собой набор текстовых строк. Описание сеанса отделено от заголовка команды пустой строкой. Заголовок содержит команд­ную строку, например, вида CRCX 1204 ts/ 1@skri.niits.ru MGCP 0.1, и список параметров.

Как видно из примера, командная строка состоит из нескольких информационных полей. Первое поле - название команды - пред­ставлено в виде кода из четырех букв (табл. 6.1). Далее следует иден­тификатор транзакции.

Протокол MGCP предусматривает корреляцию команд и ответов: команда и ответ на нее образуют транзакцию, имею­щую уникальный идентификатор Transactionldentifier. Идентифи­катор транзакции включается в заголовок и команды, и ответа. Значения идентификаторов выбираются из диапазона чисел 1 - 999999999, причем значение идентификатора текущей тран­закции всегда на единицу больше идентификатора предыдущей транзакции.

Идентификатор порта определяет тот порт, которому над­лежит выполнить команду, за исключением команд Notify и ReStartInProgress, в которых идентификатор определяет порт, пе­редавший команду. Идентификаторы портов кодируются таким же образом, как кодируются адреса электронной почты (в соответствии с RFC 821). Например, возможен идентификатор ts/1@skri.niits.ru, который идентифицирует первый порт (временной интервал) шлю­за skri, расположенного в домене niits. Замыкает пример версия про­токола, которая кодируется очевидным образом - MGCP 1.0.

Выше указывалось, что заголовок команды, кроме командной строки, содержит список параметров. Параметры команд протоко­ла MGCP сведены в табл. 6.2. Каждый параметр идентифицируется кодом, который состоит из одной или двух заглавных букв. За кодом параметра следуют одно двоеточие, один символ пробела и значе­ние параметра.

В некоторых случаях значение параметра может быть единой численной величиной. В других случаях значение параметра может быть единой шестнадцатеричной строкой. Еще в ряде случаев оно может быть списком разделенных запятыми значений или включать в себя список субполей. Один и тот же набор параметров допуска­ется для использования и в командах, и в ответах.

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

Таблица 6.2. Параметры команд протокола MGCP
Название параметра Код Описание и значение параметра
ResponseAck (Подтверждение транзакции) К Подтверждает завершение одной или нескольких транзак­ций. Например, параметр К: 6234-6255, 6257, 19030-19044 подтверждает завершение транзакций, имеющих иденти­фикаторы с 6234 по 6255, 6257 и с 19030 по 19044
BearerInformation (Сведения о до­ставке информации) B Служит для передачи сведений о законе кодирования рече­вой информации - A или ц
ReasonCode (Код причины)   Определены следующие коды причины: 000 - нормальное состояние порта, передается только в от­вете на запрос о состоянии порта 900 - неисправность порта 901 - порт выведен из обслуживания 902 - отказ на физическом уровне (например, потеря синх­ронизации)
CallID (Идентификатор сеанса связи) C Идентифицирует сеанс связи, в котором может использо­ваться одно или несколько соединений. Кодируется шест- надцатеричной последовательностью символов длиной не более 32 символов
ConnectionID (Идентификатор подключения) I Идентифицирует подключение данного порта к одному соединению, так как один порт может быть одновременно подключен к нескольким соединениям
NotifiedEntity (Уведомляемый объект) N Идентификатор объекта, к которому следует передавать уведомления об обнаруженных событиях. Если параметр отсутствует, порт сообщает об этом объекту, от которого была получена команда. Идентификатор объекта коди­руется так же, как кодируются адреса электронной почты согласно RFC 821, например, MGC@alex.niits.ru:5625 или Alex@[128.23.0.4]. При использовании IP-адреса, он должен быть заключен в квадратные скобки
RequestIdentifier (Идентификатор запроса) X Согласует требование уведомить о событии, полученное от Softswitch, с уведомлением, передаваемым шлюзом в ко­манде Notify
LocalConnection Options (Параметры подключения порта к соедине­нию) L Данные об алгоритме кодирования информации, о периоде пакетизации в мс, об используемой полосе пропускания в Кбит/c, о типе обслуживания, использовании эхокомпен- сации и другие сведения. Передается от Softswitch к шлюзу, обычно в команде CRCX
ConnectionMode (Режим соединения) M Определены следующие режимы соединения: передача, прием, прием/передача, конференция, передача данных, отсутствие активности, петля, тест и другие режимы. Значе­ние параметру присваивает Softswitch
RequestedEvents (Запрашиваемые события) R Список событий, о которых следует оповестить Softswitch, и действия шлюза при обнаружении события. Определены следующие действия: оповестить Softswitch о событии немедленно; ожидать дальнейших событий; если событием является прием сигнала DTMF, то накапливать цифры в со­ответствии с требованиями параметра DigitMap; в опреде­ленных ситуациях передавать в канал акустические или вы­зывные сигналы; обработать инкапсулированную команду Endpoint Configuration, игнорировать событие и др.
Окончание табл. 6.2.
Название параметра Код Описание и значение параметра
SignalRequests (Требование передать сигнал) S Специфицирует сигнал, который должен быть передан абоненту, например, акустический сигнал «Ответ станции»
DigitMap (План нумерации) D Специфицирует правила обработки сигналов DTMF. При накоплении количества цифр, ука­занного в параметре, шлюз должен передать их устройству управления
ObservedEvents (Обнаруженные события) O Список обнаруженных событий
ConnectionParameters (Параметры соединения) P Статистические данные о соединении, пере­даваемые шлюзом после его разрушения
SpecifiedEndPointID (Идентификатор порта) Z Идентификатор порта в формате RFC821, на­пример, EndPoint@alex.niits.ru:1234
RequestedInfo (Запрашиваемая инфор­мация) F Описывает информацию, которую Softswitch запрашивает у шлюза, например, цифры но­мера вызываемого абонента, набранные вы­зывающим абонентом
QuarantineHandling (Карантинная обработка) Q Определяет правила обработки событий, ко­торые были обнаружены до получения этой команды в период так называемого карантина (quarantine period), и о которых Softswitch еще не был оповещен
DetectEvents (Выявляемые события) T Перечень событий, которые оконечный пункт должен обнаруживать, а при их обнаружении - извещать об этом Softswitch
EventStates (Состояния, обусловлен­ные событиями) ES Перечень состояний оконечного пункта, обус­ловленных, например, тем, что абонент снял или положил трубку; информация об этих состояниях должна передаваться к Softswitch в ответ на команду AuditEndpoint
RestartMethod (Метод рестарта) RM Способ индикации шлюзом вывода оконеч­ного пункта из обслуживания или ввода его в обслуживание. Поддерживаются несколь­ко вариантов рестарта: «graceful», «forced», «restart», «disconnected» or «cancel-graceful»
RestartDelay (Задержка перезапуска) RD Определяет время в секундах. Если этот па­раметр отсутствует, задержка рестарта равна нулю. При получении от Softswitch требования о принудительном рестарте оконечного пункта команда выполняется незамедлительно
Capabilities (Функциональные возможности порта) A Softswitch запрашивает сведения о функцио­нальных возможностях оконечного пункта. Эти возможности включают в себя: поддерживае­мые алгоритмы кодирования, период пакети­зации, полосу пропускания, эхокомпенсацию, подавление пауз речи, режимы соединения, тип обслуживания, совокупность событий и др.

6.3.3. Ответы на команды

На каждую команду MGCP передается ответ. Структура ответов на команды в протоколе MGCP идентична вышеописанной структу­ре самих команд. Строку ответа составляет код возврата, за кото­рым следует идентификатор транзакции и, опционально, - фраза комментария или причины. Каждый из этих элементов отделен символом единичный пробел (SP), при этом строка ответа закан­чивается символом возврат каретки/ перевод строки (CRLF). Коды возврата являются целыми числами и разделяются на следующие категории:

• 0XX (от 000 до 099) - ответ с подтверждением,

• 1XX (от 100 до 199) - предварительные ответы; окончательный ответ последует позже,

• 2XX (от 200 до 299) - команда успешно выполнена,

• 4XX (от 400 до 499) - отказ из-за случайной ошибки,

• 5XX (от 500 до 599) - отказ из-за постоянной ошибки,

• 8XX (от 800 до 899) - ответы с пакетной спецификой.

В табл. 6.3 приведены возможные варианты кода ответа на ко­манды протокола MGCP.

Из представленного перечня кодов ответов видно, что ответ дол­жен быть увязан с командой, на которую он отвечает. Поэтому иден­тификатор TransactionId появляется как в командах, так и в ответах. Ответ на команду должен использовать тот же самый TransactionId, что и вызвавшая ответ команда. Те же параметры, которые разреше­но применять в командах MGCP, разрешено применять и в ответах MGCP. Однако разрешенное использование в ответах отличается от разрешенного использования в командах. Например, параметр LocalConnectionOptions является опциональным параметром в ко­манде CRCX, но он запрещен в ответе на команду CRCX.

Основная роль ответов заключается в защите от ошибок про­токола, конфигурации или функциональных ошибок. И, все же, на основании информации, предоставляемой кодами ошибок, невоз­можно реализовать осмысленный механизм диагностики. Для по­лучения диагностической информации от шлюзов и портов шлюза нужны другие методы. Одним из них является использование про­токола SNMP.


Таблица 6.3. Коды ответов на команды протокола MGCP

Код Значение кода
  Полученная команда обрабатывается, сообщение о выполнении команды будет передано позже
  Полученная команда выполнена
  Соединение разрушено
  Транзакция не может быть выполнена из-за временной ошибки
  Трубка телефона уже снята
  Трубка телефона уже положена
  Команда не может быть выполнена из-за отсутствия необходимых ресурсов
  В настоящий момент отсутствует необходимая полоса пропускания
  Команда не может быть выполнена, потому что порт неизвестен
  Команда не может быть выполнена, потому что порт не готов к ее выполнению
  Команда не может быть выполнена, потому что порт не имеет необходимой по­лосы пропускания
  Команда не может быть выполнена из-за ошибки в протоколе
  Команда не может быть выполнена, так как в ней содержится нераспознанное расширение
  Команда не может быть выполнена, потому что шлюз не имеет средств детекти­рования одного из указанных в ней сигналов
  Команда не может быть выполнена, потому что шлюз не имеет средств генери­рования одного из запрашиваемых сигналов
  Команда не может быть выполнена, потому что шлюз не может передать необхо­димое речевое уведомление или подсказку
  Команда имеет некорректный идентификатор соединения, например, иденти­фикатор уже завершенного соединения
  Команда имеет некорректный идентификатор сеанса связи
  Не поддерживаемый или некорректный режим
  Не поддерживаемая или неизвестная совокупность сигналов или событий
  Порт не имеет сведений о плане нумерации
  Команда не может быть выполнена, потому что идет рестарт порта
  Порт передан другому Call Agent
  Нет такого события или сигнала
  Неизвестное действие или неразрешенная комбинация действий
  Внутреннее несоответствие в параметре LocalConnectionOptions
  Неизвестное расширение параметра LocalConnectionOptions
  Недостаточная полоса пропускания
  Отсутствует параметр LocalConnectionOptions
  Несовместимая версия протокола
  Отказ в аппаратном обеспечении
  Ошибка в сигнальном протоколе CAS
  Отказ группы каналов или трактов
  Не поддерживаемое значение(ия) в параметре LocalConnectionOptions
  Ответ слишком большой
  Неисправность согласования кодека
  Период пакетизации не поддерживается
  Неизвестный или не поддерживаемый параметр RestartMethod
  Неизвестное или не поддерживаемое расширение плана нумерации
  Ошибка параметра события/сигнала (отсутствует, ошибочный, не поддерживает­ся, неизвестный и пр.)
  Неверный или не поддерживаемый параметр команды
  Превышен предел числа соединений в расчете на оконечный пункт
  Неверный или не поддерживаемый параметр LocalConnectionOptions

9. Б.С. Гольдштейн

6.3.4. Описание сеансов связи SDP

При установлении соединений Softswitch предоставляет портам шлюзов, участвующим в этих соединениях, необходимую инфор­мацию друг о друге - описание сеансов связи. Описание сеанса связи вводится в состав некоторых команд и ответов протокола MGCP и включает в себя IP-адрес, номер UDP/RTP-порта, указа­ние вида информации и алгоритма ее кодирования информации, данные о периоде пакетизации и т.д. Синтаксис описания сеанса связи в протоколе MGCP соответствует синтаксису протокола SDP (Session Description Protocol), уже упоминавшегося в главе 4.

Рассмотрим синтаксис протокола SDP в части описания сеанса речевой связи. Для описания такого сеанса в протоколе предусмот­рено несколько информационных полей:

• версия протокола SDP кодируется v=0;

• IP-адрес шлюза содержит IP-адрес, который будет использо­ваться для обмена пакетами RTP, причем если это поле включено в команды протокола MGCP, то оно означает адрес удаленного шлюза, а если поле включено в ответы, то - адрес шлюза, пере­дающего ответ;

• поле описания речевого канала кодируется буквой «т» и содер­жит индикацию вида передаваемой или принимаемой информа­ции (в нашем случае - речи), номер порта, используемого для приема RTP пакетов удаленным шлюзом (если поле описания речевого канала включено в команды MGCP) или локальным шлюзом (если это поле включено в ответы), индикацию исполь­зования протокола RTP для передачи речи и указание алгоритма кодирования речевой информации;

• режим соединения может быть одним из следующих: sendonly - шлюзу надлежит только передавать информацию, recvonly - шлюзу надлежит только принимать информацию, sendrecv - шлюзу надлежит передавать и принимать информа­цию, inactive - шлюз не должен ни передавать, ни принимать ин­формацию, loopback - шлюз должен передавать принимаемую информацию в обратном направлении и conttest - шлюзу надле­жит перевести порт в режим тестирования.

Кроме вышеуказанных полей, для описания сеанса речевой свя­зи в протоколе SDP предусмотрено еще несколько необязательных информационных полей. Отметим, что если в команду или в ответ протокола MGCP включены описания нескольких сеансов связи, то они отделяются друг от друга строкой с указанием версии протоко­ла SDP. Типичный пример описания сеанса речевой связи с исполь­зованием протокола SDP:

v = 0

c = IN IP4 212.18.62.1

m = audio 1234 RTP/AVP 0

Поясним приведенный пример: для описания сеанса связи ис­пользуется протокол SDP, версия 0, в сети используется протокол IP, версия 4, IP адрес шлюза - 212.18.62.1, передается или прини­мается речевая информация, упакованная в пакеты RTP, номер пор­та RTP - 1234, алгоритм кодирования речи - G.711, закон ц.

Приведенное описание протокола MGCP сможет быть полез­ным читателю хотя бы для того, чтобы сравнить его с протоколом Megaco/H.248, речь о котором пойдет ниже.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: