какое сообщение протокола mgcp уведомляет медиашлюз об обнаруженных событиях
СОДЕРЖАНИЕ
Архитектура
Архитектура протокола управления медиашлюзом, ее методологии и программные интерфейсы описаны в RFC 2805.
MGCP представляет архитектуру управления вызовами с ограниченным интеллектом на границе (конечные точки, медиашлюзы) и интеллектом на основных контроллерах. Модель MGCP предполагает, что агенты вызовов синхронизируются друг с другом для отправки согласованных команд и ответов на шлюзы, находящиеся под их контролем.
Агент вызова использует протокол MGCP для запроса уведомлений о событиях, отчетов, данных о состоянии и конфигурации от медиашлюза, а также для определения параметров соединения и активации сигналов к телефонному интерфейсу PSTN.
Программный коммутатор обычно используется вместе со шлюзами сигнализации, например, для доступа к функциям системы сигнализации № 7 (SS7). Агент вызова не использует MGCP для управления шлюзом сигнализации; скорее протоколы SIGTRAN используются для транзитной передачи сигналов между шлюзом сигнализации и агентами вызова.
Агенты с несколькими вызовами
Обычно медиашлюз может быть сконфигурирован со списком агентов вызова, от которых он может принимать команды управления.
В принципе, уведомления о событиях могут быть отправлены различным агентам вызовов для каждой конечной точки на шлюзе в соответствии с инструкциями, полученными от агентов вызова путем установки параметра NotifiedEntity. Однако на практике обычно желательно, чтобы все конечные точки шлюза управлялись одним и тем же агентом вызова; другие агенты вызова доступны для обеспечения избыточности в случае отказа основного агента вызова или потери связи с медиашлюзом. В случае такого отказа агент резервного вызова должен перенастроить медиашлюз так, чтобы он отчитывался перед агентом резервного вызова. Шлюз может быть подвергнут аудиту для определения управляющего агента вызова, запрос, который может использоваться для разрешения любых конфликтов.
В случае нескольких агентов вызова MGCP предполагает, что они поддерживают информацию о состоянии устройства между собой. Такие функции аварийного переключения учитывают как плановые, так и внеплановые отключения.
Обзор протокола
Последовательность сообщения команды (или запроса) и ее ответа называется транзакцией, которая идентифицируется числовым идентификатором транзакции, которым обмениваются в каждой транзакции. Спецификация протокола определяет девять стандартных команд, которые различаются четырехбуквенным командным глаголом: AUEP, AUCX, CRCX, DLCX, EPCF, MDCX, NTFY, RQNT и RSIP. Ответы начинаются с трехзначного числового кода ответа, который определяет результат или результат транзакции.
Агент вызова использует два глагола для запроса состояния конечной точки и связанных с ней подключений.
Агент вызова использует три команды для управления подключением к конечной точке медиашлюза.
Один глагол используется агентом вызова для запроса уведомления о событиях, происходящих в конечной точке, и для подачи сигналов к подключенному сетевому каналу PSTN или к подключенной конечной точке телефонии, например телефону.
Конечная точка использует один глагол, чтобы указать агенту вызова, что он обнаружил событие, для которого агент вызова ранее запросил уведомление с помощью команды RQNT:
Один глагол используется агентом вызова для изменения характеристик кодирования, ожидаемых линейной стороной конечной точки:
Конечная точка использует один глагол, чтобы указать агенту вызова, что он находится в процессе перезапуска:
Стандарты документов
Мегако
Какое сообщение протокола mgcp уведомляет медиашлюз об обнаруженных событиях
На практике обычно сигнальный шлюз (SG) и медиа-шлюз (MG) подключены в один физический коммутатор, но это совсем не обязательно. Call Агент не использует MGCP для контроля сигнального шлюза (SG), для этих целей — обратной связи между сигнальным шлюзом (SG) и Агентом используются протоколы SIGTRAN.
Media Gateway (MG)
Медиа-шлюз выполняет функции преобразования речевой информации, поступающей со стороны ТфОП в голосовых каналах с постоянной скоростью передачи, в вид, пригодный для передачи по сетям с маршрутизацией пакетов IP (кодирование и упаковку речевой информации в пакеты RTP, и далее в UDP и IP) а также обратное преобразование).
Медиа-шлюз использует протокол MGCP для сигнализации событий, таких как информация что трубка положена/снята или набираемые цифры вызываемого номера (донабор).
Call Agent
MGCP позволяет также следить Call Агенту за состоянием оконечных устройств на медиа-шлюзе (MG).
Как правило, медиа-шлюз конфигурирован со списком Call Агентов, от которых может принимать инструкции-запросы.
В принципе, уведомления можно посылать разным Агентам от каждого оконечного устройства (как предусмотрено Call Агентами, для этого используется параметр NotifiedEntity). Практически однако, желательно, чтобы в данный момент всеми оконечными устройствами управлял один и тот контролер шлюзов; другие Call Агенты доступны при резервирования ресурсов в случае обеспечения избыточности, если первичный Агент отказывает, или теряет контакт с медиа-шлюзом. В случае такого отказа управление шлюзом автоматически переходит к резервному контролеру шлюзов. Всё о чём необходимо позаботиться для такого сценария, это обмен информацией о состоянии между двумя Агентами, однако, это не гарантирует, что оба не будут пытаться управлять одним и тем же шлюзом. Для разрешения конфликтов используется способность опрашивать шлюз, чтобы определить, который из Агентов является управляющим в данный момент.
Обзор протокола
Пакеты MGCP отличаются от многих других протоколов. Он резервирует обычно порт UDP 2427, датаграммы MGCP могут содержать и пустые значения, совсем не так как обычно строятся пакеты в протоколах TCP. Пакет MGCP является командой (запросом) или ответом. Команды (запросы) начинаются с четырехбуквенного кода, ответы начинаются с трехзначного цифрового кода.
В MGCP каждая команда несёт в себе идентификатор транзакции и получает ответ на каждую.
Список запросов содержит всего восемь команд: AUEP, AUCX, CRCX, DLCX, MDCX, NTFY, RQNT, RSIP.
Две команды используются Агентом, чтобы сделать запрос на медиа шлюза:
Три команды используются Call Агентом, чтобы управлять RTP соединением на медиа шлюзе (шлюз может также послать команду DLCX, когда нужно удалить соединение для самоуправления):
Команда RQNT используется медиа шлюзом для запроса об уведомлениях используется Агентом, чтобы запросить уведомление о событиях на медиа шлюзе.
Команда NTFY используется медиа шлюзом, чтобы сообщить Агенту, что обнаружено событие, о котором Агент предварительно запросил уведомление (командой RQNT).
Команда RSIP — рестарт в процессе, используется медиа шлюзом, чтобы указать Агенту, идёт процесс перезапуска.
Протокол управления шлюзами MGCP
Понятие медиашлюза Для того, чтобы иметь возможность использовать телефонные сети различных типов в единой инфраструктуре были созданы устройства, называемые медиашлюзами (MGW). Эти устройства служат для преобразования различного рода аналоговых и цифровых сигналов в формат, пригодный для использования в сетях с пакетной передачей данных (например, IP). Помимо транскодирования информации, медиашлюзы обеспечивают обработку тональных сигналов, эхоподавление и […]
Понятие медиашлюза
Для того, чтобы иметь возможность использовать телефонные сети различных типов в единой инфраструктуре были созданы устройства, называемые медиашлюзами (MGW). Эти устройства служат для преобразования различного рода аналоговых и цифровых сигналов в формат, пригодный для использования в сетях с пакетной передачей данных (например, IP). Помимо транскодирования информации, медиашлюзы обеспечивают обработку тональных сигналов, эхоподавление и некоторые сопутствующие задачи.
Функционал медиашлюза может быть расширен в том случае, когда помимо преобразования сигналов, шлюз осуществляет их трансляцию во внешний мир. Такие устройства называются медиасерверами. Медиасерверы могут использоваться для изменения уже перекодированных медиапотоков, например изменения формата видеоданных.
Структура медиашлюза состоит из трех функциональных компонентов, находящихся во взаимодействии:
Архитектура устройства медиашлюза позволяет управлять несколькими шлюзами за счет одного контроллера, но необходимо, чтобы управляющий контроллер был четко определен. В случае потери связи между шлюзом и контроллером возможно резервирование и передача управления на другой, заранее определенный резервный контроллер. Информация об управляющем контроллере хранится на самом шлюзе.
Описание протокола MGCP
Аббревиатура MGCP расшифровывается как Media Gateway Control Protocol — дословно, протокол управления медиашлюзами. Он используется для обеспечения связи между шлюзами и их контроллерами. MGCP определяет среду, в которой происходит взаимодействие между этими составляющими медиашлюза. Подробное описание протокола MGCP описано в документе RFC 2705, а его структура в RFC 2805.
Понимание функций протокола управления медиашлюзами (MGCP), его компонентов и взаимосвязей, которые компоненты устанавливают друг с другом, важно при реализации масштабируемой, отказоустойчивой и безопасной среды MGCP. Среда MGCP является примером модели централизованного управления вызовами. В этом разделе описывается, как настроить MGCP на шлюзе, а также функции и возможности среды MGCP.
Протокол MGCP использует модель главный-подчиненный. Главным в данной структуре является контроллер шлюза, а подчиненным сам шлюз. Это позволяет централизованно управлять шлюзами и при необходимости, производить масштабирование сети. MGCP предоставляет контроллеру средства по управлению определенными портами на подчиненных ему шлюзах. Реализация данного протокола основана на пересылке текстовых сообщений с помощью транспортного протокола UDP по порту 2427.
Протокол MGCP обеспечивает связь между двумя типами агентов, которые именуются конечными точками и агентами вызовов.
Конечные точки. Конечными точками являются любые голосовые порты на назначенном шлюзе. Это могут быть как аналоговые (FXO/FXS), так и цифровые (T1/E1) порты. В зависимости от числа портов, один шлю может содержать несколько конечных точек. Каждая конечная точка имеет свой собственный идентификатор в формате ‘локальное имя конечной точки’@’имя шлюза’ (localID@domian), по которому к ней обращается агент вызовов. Для управления конечной точкой агент вызова должен распознать характеристики конечной точки. Чтобы упростить этот процесс, конечные точки подразделяются на несколько типов. Цель состоит в том, чтобы сконфигурировать агент вызова для управления типом конечной точки, а не для управления каждой конечной точкой индивидуально.
RFC 2705 определяет восемь типов конечных точек следующим образом:
Агенты вызовов. Агент вызова осуществляет контроль над работой шлюза и связанных с ним конечных точек, запрашивая, чтобы шлюз наблюдал и сообщал о событиях. В ответ на события агент вызова указывает конечной точке, какой сигнал, если таковой имеется, должна отправлять конечная точка подключенному телефонному оборудованию. Для этого необходимо, чтобы агент вызова распознал каждый тип конечной точки, который он поддерживает, и характеристики сигнализации каждого физического и логического интерфейса, подключенного к шлюзу.
Команды MGCP
Общение по протоколу MGCP происходит в виде обмена текстовыми сообщениями. Существует восемь основных команд MGCP, которые указаны в таблице:
Параметры отправляются вместе с командами, чтобы точно указать что требуется или какая информация предоставляется.
Инициализация вызова в протоколе MGCP
Вызовы устанавливаются путем соединения двух или более конечных точек, как показано на рисунке 5. Чтобы установить вызов, агент вызова инструктирует шлюз, связанный с каждой конечной точкой, установить соединение с определенной конечной точкой или конечной точкой определенного типа. Шлюз возвращает параметры сеанса своего соединения агенту вызова, который, в свою очередь, отправляет эти параметры сеанса другому шлюзу. С помощью этого метода каждый шлюз получает необходимые параметры сеанса для установления RTP-сессий между конечными точками. Все соединения, связанные с одним и тем же вызовом, имеют общий идентификатор вызова и используют один и тот же медиапоток. По завершении вызова агент вызова отправляет запрос на удаление соединения каждому
В среде MGCP агент вызова контролирует всю обработку установки вызова на стороне сети IP и телефонии шлюза. Поскольку шлюз связан только с одним агентом вызова одновременно, то если этот агент вызова выходит из строя или недоступен по какой-либо причине, шлюз и его конечные точки остаются неконтролируемыми и, по-сути, бесполезными. Для решения данной проблемы используются резервные агенты вызовов, на которые происходит переключение при потери связи с действующими контроллерами шлюзов.
Реализация MGCP в Asterisk
СОДЕРЖАНИЕ
Архитектура
Архитектура протокола управления медиашлюзом, ее методологии и программные интерфейсы описаны в RFC 2805.
MGCP представляет архитектуру управления вызовами с ограниченным интеллектом на границе (конечные точки, медиашлюзы) и интеллектом на основных контроллерах. Модель MGCP предполагает, что агенты вызовов синхронизируются друг с другом для отправки согласованных команд и ответов на шлюзы, находящиеся под их контролем.
Агент вызова использует протокол MGCP для запроса уведомлений о событиях, отчетов, данных о состоянии и конфигурации от медиашлюза, а также для определения параметров соединения и активации сигналов к телефонному интерфейсу PSTN.
Программный коммутатор обычно используется вместе со шлюзами сигнализации, например, для доступа к функциям системы сигнализации № 7 (SS7). Агент вызова не использует MGCP для управления шлюзом сигнализации; скорее протоколы SIGTRAN используются для транзитной передачи сигналов между шлюзом сигнализации и агентами вызова.
Агенты с несколькими вызовами
Обычно медиашлюз может быть сконфигурирован со списком агентов вызова, от которых он может принимать команды управления.
В принципе, уведомления о событиях могут быть отправлены различным агентам вызовов для каждой конечной точки на шлюзе в соответствии с инструкциями, полученными от агентов вызова путем установки параметра NotifiedEntity. Однако на практике обычно желательно, чтобы все конечные точки шлюза управлялись одним и тем же агентом вызова; другие агенты вызова доступны для обеспечения избыточности в случае отказа основного агента вызова или потери связи с медиашлюзом. В случае такого отказа агент резервного вызова должен перенастроить медиашлюз так, чтобы он отчитывался перед агентом резервного вызова. Шлюз может быть подвергнут аудиту для определения управляющего агента вызова, запрос, который может использоваться для разрешения любых конфликтов.
В случае нескольких агентов вызова MGCP предполагает, что они поддерживают информацию о состоянии устройства между собой. Такие функции аварийного переключения учитывают как плановые, так и внеплановые отключения.
Обзор протокола
Последовательность сообщения команды (или запроса) и ее ответа называется транзакцией, которая идентифицируется числовым идентификатором транзакции, которым обмениваются в каждой транзакции. Спецификация протокола определяет девять стандартных команд, которые различаются четырехбуквенным командным глаголом: AUEP, AUCX, CRCX, DLCX, EPCF, MDCX, NTFY, RQNT и RSIP. Ответы начинаются с трехзначного числового кода ответа, который определяет результат или результат транзакции.
Агент вызова использует два глагола для запроса состояния конечной точки и связанных с ней подключений.
Агент вызова использует три команды для управления подключением к конечной точке медиашлюза.
Один глагол используется агентом вызова для запроса уведомления о событиях, происходящих в конечной точке, и для подачи сигналов к подключенному сетевому каналу PSTN или к подключенной конечной точке телефонии, например телефону.
Конечная точка использует один глагол, чтобы указать агенту вызова, что он обнаружил событие, для которого агент вызова ранее запросил уведомление с помощью команды RQNT:
Один глагол используется агентом вызова для изменения характеристик кодирования, ожидаемых линейной стороной конечной точки:
Конечная точка использует один глагол, чтобы указать агенту вызова, что он находится в процессе перезапуска:
Стандарты документов
Мегако
Команды протокола 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
|
Команда протокола MGCP обязательно содержит заголовок, за которым может следовать описание сеанса связи (session description). Заголовок команды и описание сеанса связи представляют собой набор текстовых строк. Описание сеанса отделено от заголовка команды пустой строкой. Заголовок содержит командную строку, например, вида CRCX 1204 ts/1@skri.niits.ru MGCP 0.1, и список параметров.
Выше указывалось, что заголовок команды, кроме командной строки, содержит список параметров. Параметры команд протокола MGCP сведены в табл. 6.2. Каждый параметр идентифицируется кодом, который состоит из одной или двух заглавных букв. За кодом параметра следуют одно двоеточие, один символ пробела и значение параметра.
В некоторых случаях значение параметра может быть единой численной величиной. В других случаях значение параметра может быть единой шестнадцатеричной строкой. Еще в ряде случаев оно может быть списком разделенных запятыми значений или включать в себя список субполей. Один и тот же набор параметров допускается для использования и в командах, и в ответах.
6.3.3. Ответы на команды
В табл. 6.3 приведены возможные варианты кода ответа на команды протокола MGCP.
Из представленного перечня кодов ответов видно, что ответ должен быть увязан с командой, на которую он отвечает. Поэтому идентификатор TransactionId появляется как в командах, так и в ответах. Ответ на команду должен использовать тот же самый TransactionId, что и вызвавшая ответ команда. Те же параметры, которые разрешено применять в командах MGCP, разрешено применять и в ответах MGCP. Однако разрешенное использование в ответах отличается от разрешенного использования в командах. Например, параметр LocalConnectionOptions является опциональным параметром в команде CRCX, но он запрещен в ответе на команду CRCX.
Основная роль ответов заключается в защите от ошибок протокола, конфигурации или функциональных ошибок. И, все же, на основании информации, предоставляемой кодами ошибок, невозможно реализовать осмысленный механизм диагностики. Для получения диагностической информации от шлюзов и портов шлюза нужны другие методы. Одним из них является использование протокола SNMP.
Таблица 6.3. Коды ответов на команды протокола MGCP
Код | Значение кода |
Полученная команда обрабатывается, сообщение о выполнении команды будет передано позже | |
Полученная команда выполнена | |
Соединение разрушено | |
Транзакция не может быть выполнена из-за временной ошибки | |
Трубка телефона уже снята | |
Трубка телефона уже положена | |
Команда не может быть выполнена из-за отсутствия необходимых ресурсов | |
В настоящий момент отсутствует необходимая полоса пропускания | |
Команда не может быть выполнена, потому что порт неизвестен | |
Команда не может быть выполнена, потому что порт не готов к ее выполнению | |
Команда не может быть выполнена, потому что порт не имеет необходимой полосы пропускания | |
Команда не может быть выполнена из-за ошибки в протоколе | |
Команда не может быть выполнена, так как в ней содержится нераспознанное расширение | |
Команда не может быть выполнена, потому что шлюз не имеет средств детектирования одного из указанных в ней сигналов | |
Команда не может быть выполнена, потому что шлюз не имеет средств генерирования одного из запрашиваемых сигналов | |
Команда не может быть выполнена, потому что шлюз не может передать необходимое речевое уведомление или подсказку | |
Команда имеет некорректный идентификатор соединения, например, идентификатор уже завершенного соединения | |
Команда имеет некорректный идентификатор сеанса связи | |
Не поддерживаемый или некорректный режим | |
Не поддерживаемая или неизвестная совокупность сигналов или событий | |
Порт не имеет сведений о плане нумерации | |
Команда не может быть выполнена, потому что идет рестарт порта | |
Порт передан другому Call Agent | |
Нет такого события или сигнала | |
Неизвестное действие или неразрешенная комбинация действий | |
Внутреннее несоответствие в параметре LocalConnectionOptions | |
Неизвестное расширение параметра LocalConnectionOptions | |
Недостаточная полоса пропускания | |
Отсутствует параметр LocalConnectionOptions | |
Несовместимая версия протокола | |
Отказ в аппаратном обеспечении | |
Ошибка в сигнальном протоколе CAS | |
Отказ группы каналов или трактов | |
Не поддерживаемое значение(ия) в параметре LocalConnectionOptions | |
Ответ слишком большой | |
Неисправность согласования кодека | |
Период пакетизации не поддерживается | |
Неизвестный или не поддерживаемый параметр RestartMethod | |
Неизвестное или не поддерживаемое расширение плана нумерации | |
Ошибка параметра события/сигнала (отсутствует, ошибочный, не поддерживается, неизвестный и пр.) | |
Неверный или не поддерживаемый параметр команды | |
Превышен предел числа соединений в расчете на оконечный пункт | |
Неверный или не поддерживаемый параметр LocalConnectionOptions |
6.3.4. Описание сеансов связи SDP
Рассмотрим синтаксис протокола SDP в части описания сеанса речевой связи. Для описания такого сеанса в протоколе предусмотрено несколько информационных полей:
• версия протокола SDP кодируется v=0;
Кроме вышеуказанных полей, для описания сеанса речевой связи в протоколе SDP предусмотрено еще несколько необязательных информационных полей. Отметим, что если в команду или в ответ протокола MGCP включены описания нескольких сеансов связи, то они отделяются друг от друга строкой с указанием версии протокола SDP. Типичный пример описания сеанса речевой связи с использованием протокола SDP:
c = IN IP4 212.18.62.1
m = audio 1234 RTP/AVP 0
Приведенное описание протокола MGCP сможет быть полезным читателю хотя бы для того, чтобы сравнить его с протоколом Megaco/H.248, речь о котором пойдет ниже.