Протокол MGCP предусматривает подтверждение получения всех команд. Структура ответов на команды в протоколе MGCP идентична вышеописанной структуре самих команд. Ответ на команду также представляет собой набор текстовых строк и обязательно содержит заголовок ответа, за которым (после пустой строки) может следовать описание сеанса связи.
В этом параграфе речь пойдет, главным образом, о заголовке ответа. Заголовок состоит из ответной строки, например,2001203 OK,и списка параметров. Ответная строка, в свою очередь, состоит из нескольких информационных полей: кода ответа, идентификатора транзакции и необязательного комментария.
В таблице 8.5 приведены возможные варианты кода ответа на команды протокола MGCP.
Таблица 8.5 Коды ответов на команды протокола MGCP
Код | Значение кода |
Полученная команда в данный момент обрабатывается, сообщение о выполнении команды будет передано позже | |
Полученная команда выполнена | |
Соединение разрушено | |
Транзакция не может быть выполнена из-за временной ошибки | |
Трубка телефона уже снята | |
Трубка телефона уже повешена | |
Команда не может быть выполнена из-за отсутствия в данный момент необходимых ресурсов | |
В настоящий момент отсутствует необходимая полоса пропускания | |
Команда не может быть выполнена, потому что порт неизвестен | |
Команда не может быть выполнена, потому что порт не готов к ее выполнению | |
Команда не может быть выполнена, потому что порт не имеет необходимой полосы пропускания | |
Команда не может быть выполнена из-за ошибки в протоколе | |
Команда не может быть выполнена, так как в ней содержится нераспознанное расширение | |
Команда не может быть выполнена, потому что шлюз не имеет средств детектирования одного из запрашиваемых сигналов | |
Команда не может быть выполнена, потому что шлюз не имеет средств генерирования одного из запрашиваемых сигналов | |
Команда не может быть выполнена, потому что шлюз не может передать необходимое речевое уведомление или подсказку | |
Команда имеет некорректный идентификатор соединения, например, идентификатор уже завершенного соединения | |
Команда имеет некорректный идентификатор сеанса связи | |
Неподдерживаемый или некорректный режим | |
Неподдерживаемая или неизвестная совокупность сигналов или событий | |
Порт не имеет сведений о плане нумерации | |
Команда не может быть выполнена, потому что идет рестарт порта | |
Порт передан другому Call Agent | |
Нет такого события или сигнала | |
Неизвестное действие или неразрешённая комбинация действий | |
Внутреннее несоответствие в параметре LocalConnectionOptions | |
Неизвестное расширение параметра LocalConnectionOptions | |
Недостаточная полоса пропускания | |
Отсутствует параметр LocalConnectionOptions | |
Несовместимая версия протокола | |
Отказ в аппаратном обеспечении | |
Ошибка в сигнальном протоколе CAS | |
Отказ группы каналов или трактов |
Из представленного в таблице 8.5 перечня кодов ответов видно, что их основная роль заключается в защите от ошибок протокола, конфигурации или функциональных возможностей. На основании информации, предоставляемой этими кодами ошибок, невозможно реализовать осмысленный механизм диагностики. Для получения диагностической информации от шлюзов и портов шлюза нужны другие методы. Одним из возможных методов является упоминавшийся в главе 4 протокол SNMP (простой протокол эксплуатационного управления сетью), который, безусловно, найдёт применение в транспортных шлюзах IP-телефонии.
В заключение рассмотрения структуры ответов на команды протокола MGCP приведем возможные комбинации параметров в ответах (таблица 8.6).
Таблица 8.6 Возможные комбинации параметров в ответах протокола MGCP
Имя параметра | EP CF | CR CX | MD CX | DL CX | RQ NT | NT FY | AU EP | AU CX | RS IP |
ResponseAck | F | F | F | F | F | F | F | F | F |
Bearerlnformation | F | F | F | F | F | F | F | F | |
Callld | F | F | F | F | F | F | F | F | |
Connectionid | F | F | F | F | F | F | F | F | |
Requestldentifier | F | F | F | F | F | F | F | F | |
LocalConnection | F | F | F | F | F | F | F | ||
Options | |||||||||
Connection Mode | F | F | F | F | F | F | F | F | |
RequestedEvents | F | F | F | F | F | F | F | F | |
SignalRequests | F | F | F | F | F | F | F | F | |
Notified Entity | F | F | F | F | F | F | F | F | |
ReasonCode | F | F | F | F | F | F | F | F | |
Observed Events | F | F | F | F | F | F | F | F | |
DigitMap | F | F | F | F | F | F | F | F | |
Connection | F | F | F | F | F | F | F | ||
Parameters | |||||||||
Specific Endpoint ID | F | F | F | F | F | F | F | F | |
Requested Info | F | F | F | F | F | F | F | F | F |
QuarantineHandling | F | F | F | F | F | F | F | F | |
DetectEvents | F | F | F | F | F | F | F | F | |
EventStates | F | F | F | F | F | F | F | F | |
RestartMethod | F | F | F | F | F | F | F | F | |
RestartDelay | F | F | F | F | F | F | F | F | |
Capabilities | F | F | F | F | F | F | F | F | |
SecondConnectionId | F | F | F | F | F | F | F | F | |
SecondEndpointID | F | F | F | F | F | F | F | F | |
LocalConnection | F | м | F | F | F | F | F | ||
Descriptor | |||||||||
RemoteConnection | F | F | F | F | F | F | F | F | |
Descriptor |