Стек протоколов H.323 является одним из самых распространенных на сегодня. Это старейший и наиболее стабильный из всех используемых сейчас протоколов, поэтому он требует особого внимания.
Протокол инициации сессий (SIP) — это относительно новый протокол, получающий широкое распространение. Он является значительно более молодым относительно H.323 и поэтому пока не получил такого же масштабного распространения.
Протокол MGCP — это управляющий VoIP-протокол, который наиболее часто используется для управления шлюзами в VoIP-сети. Относительно новый протокол MGCP получил широкое распространение как часть архитектуры Cisco AVVID. AVVID обычно использует именно MGCP в связке с CCM для управления шлюзами.
Как уже говорилось, H.323 является набором протоколов. Взаимодействие протоколов H.323 показано на Рис. 5.
Рис. 4. Взаимодействие протоколов H.323
Все устройства, используемые H.323, можно поделить на четыре категории: терминалы, шлюзы, гейткиперы (Gatekeeper — привратник) и точки многопунктового контроля (Multipoint Control Unit — MTU).
Терминалы, также называемые конечными точками (endpoints), предоставляют пользовательский интерфейс к протоколу H.323 и обеспечивают двустороннюю мультимедийную связь реального времени. Шлюзы выполняют роль "переводчиков" для обеспечения взаимодействия между H.323 и не-H.323 сущностями. Шлюзы, так же как и терминалы, рассматриваются как конечные точки. Гейткиперы выполняют функции контроля вызовов, такие как трансляция адресов и управление занимаемой полосой пропускания. Гейткиперы можно считать наиболее важным компонентом в стеке H.323. MCU обеспечивают возможность конференций.
Протоколы IP, TCP и UDP несомненно являются протоколами стека TCP/IP, но они здесь рассматриваются потому, что предоставляют транспортный сервис для стека протоколов H.323.
Каждый терминал, шлюз, гейткипер и MCU должен иметь свой уникальный IP-адрес. Это также относится и к ПК с приложениями, которые используют H.323. IP предоставляет каждой точке H.323-адрес и обеспечивает механизм маршрутизации H.323-пакетов в сети. TCP используется для установления начального соединения между терминалами H.323 и шлюзами/гейткиперами. Протокол UDP используется для передачи непосредственно голоса через сеть.
H.225 обеспечивает установление и контроль вызовов со всей необходимой сигнализацией для осуществления соединения между двумя конечными точками.
Управляющая сигнализация H.245 применяется для согласования использования канала и возможностей. Управляющие сообщения несут информацию, относящуюся к следующим моментам:
- обмен информацией о доступных возможностях;
- открывание и закрывание логического канала, используемого для медийного потока;
- сообщения управления потоком;
- общие команды.
После установления вызова все процессы передачи информации проходят по логическим каналам.
RAS — это протокол, использующийся между конечными точками (терминалами и шлюзами) и гейткиперами. Он применяется для осуществления регистрации, контроля доступа, статуса и изменений доступной полосы пропускания, а также для отключения конечных точек от гейткипера. RAS использует порт UDP 1719.
RTP предоставляет сквозной сетевой транспорт для приложений, передающих данные реального времени. Он использует для передачи данных протокол UDP. Передача данных сопровождается управляющим протоколом (RTCP) для мониторинга доставки данных.
Кодеки используются не только протоколом H.323, а всеми протоколами VoIP для определения алгоритмов компрессии и декомпрессии, применяемых для передачи аудио/видео по сети. H.323 поддерживает большинство стандартов кодирования аудио и видео, включая G.7XX для аудио и H.26X для видео.
Рис. 6 иллюстрирует взаимодействие протоколов стека H.323.
Рис. 5. Стек протоколов H.323
Процедуры соединения при формировании звонка по протоколу H.323 могут быть сгруппированы в пять этапов:
- Обнаружение и регистрация.
- Установление вызова.
- Сигнальный поток.
- Медийный поток и поток управления.
- Завершение вызова.
На стадии обнаружения и регистрации гейткипер инициирует процесс "разведывания" для определения гейткипера, с которым конечная точка должна взаимодействовать. Это может быть сконфигурировано статически, или процесс обнаружения может происходить с помощью многоадресных сообщений. После обнаружения терминал или шлюз регистрируется на заданном гейткипере.
Регистрация используется конечной точкой для определения зоны, с которой она может быть ассоциирована. Зона — это набор компонентов, управляемых одним гейткипером. После определения зоны привратник информируется об адресе зоны (Рис. 7).
Рис. 6. Процесс регистрации
Допустим, шлюзы (терминалы) уже зарегистрированы, и шлюз X хочет сделать вызов на терминал, подключенный к шлюзу Y. Шлюз X посылает ARQ (Admission Request) сообщение гейткиперу, запрашивая разрешение на установление вызова на телефон, обслуживаемый шлюзом Y. Гейткипер разрешает вызов с требованием сигнализации (дозвона) напрямую, посылая сообщение ACF (Admission Confirmation). См. Рис. 8.
Рис. 7. H.323. Установление внутризонового вызова
Допустим, гейткипер A контролирует зону A, а гейткипер B — зону B, шлюз X зарегистрирован на гейткипере A, а шлюз Y — на гейткипере B, и шлюз A хочет установить соединение с терминалом, подключенным к шлюзу Y.
Процесс установления вызова содержит следующие этапы (Рис. 9):
Рис. 8. H.323. Установление межзонового вызова
- Шлюз X запрашивает соединение со шлюзом Y у своего локального гейткипера.
- Запрос местоположения (LRQ — Location request). Гейткипер шлюза X не знает IP-адрес шлюза Y и запрашивает адрес у гейткипера шлюза Y.
- Местоположение подтверждено (LCF — Location confirm). Гейткипер шлюза Y отвечает IP-адресом шлюза Y.
- Гейткипер шлюза X подтверждает его запрос и предоставляет ему IP-адрес шлюза Y.
- Установление соединения между шлюзами.
На этапе установления соединения шлюзы взаимодействуют напрямую. Альтернативный метод установления соединения — это гейткипер-маршрутизируемая сигнализация, при которой все сообщения по установке соединения проходят через гейткипер.
Установление соединения основано на протоколе ITU-Q.931 (H.225 является подмножеством Q.931), который определяет метод установления, обработки и завершения сетевого соединения по цифровой сети ISDN. Процесс состоит из шести фаз (Рис. 10):
Рис. 9. Установление соединения
- Шлюз X посылает H.225 сообщение установления дозвона для запроса соединения.
- Шлюз Y посылает обратно H.225 сообщение, заявляя о возможности продолжения процесса.
- Шлюз Y запрашивает у гейткипера правомерность звонка, посылая ему RAS-сообщение (ARQ) по каналу RAS.
- Гейткипер подтверждает, что звонок правомерен, посылая шлюзу Y ACF-сообщение.
- Шлюз Y посылает H.225-сообщение шлюзу X, оповещая его, что соединение установлено.
- Шлюз Y посылает H.225-сообщение шлюзу X, оповещая его, что вызов установлен.
После того как соединение установлено, взаимодействие происходит по логическим каналам. H.245 используется для определения процесса управления этими каналами. На один вызов может приходиться несколько каналов для различных типов трафика (видео, аудио, данные). H.245 LCSE (Local Channel Signaling Entity) открывает логический канал для каждого потока. Каналы могут быть как однонаправленными, так и двунаправленными.
Установление логических каналов происходит следующим образом:
- Шлюз X сообщает шлюзу Y, какие возможности он поддерживает, посылая H.245 Terminal Capability Set сообщение.
- Шлюз Y подтверждает запрос, посылая H.245 Terminal Capability Set Acknowledge сообщение.
- Аналогичен п.1, но только в обратном направлении.
- Аналогичен п.2, но только в обратном направлении.
- Шлюз X открывает медиаканал со шлюзом Y, посылая H.245 сообщение Open Logical Channel, включая адрес RTCP канала.
- Шлюз Y подтверждает установление логического канала со шлюзом X, посылая H.245-сообщение Open Logical Channel Acknowledge, включая RTP-адрес, выделенный шлюзом Y, и RTCP-адрес, полученный от шлюза X.
- Аналогичен п.5, но только в обратном направлении.
- Аналогичен п.6, но только в обратном направлении.
Медийный поток управляется RTCP. RTCP использует выделенный логический канал для каждого RTP-потока. Конечные точки могут попытаться изменить выделенную полосу пропускания, которую они изначально запросили. Для увеличения выделенной полосы пропускания конечные точки должны запросить на это разрешение у гейткипера.
Завершение вызова останавливает медиапоток и закрывает логические каналы. Оно может быть запрошено как конечными точками, так и гейткипером. Завершение вызова также завершает H.245-сессию, освобождает H.225/Q.931 соединение и предоставляет гейткиперу подтверждение о разъединении по RAS.
Если шлюзы знают IP-адреса друг друга, то возможно их взаимодействие без гейткипера. Этот процесс можно описать следующими шагами:
- Шлюз инициирует H.225.0-сессию со шлюзом назначения.
- Процедура установления вызова, базирующаяся на Q.931, создает сигнальный канал между конечными точками.
- Конечные точки открывают канал для функций управления H.245. Происходит обмен возможностями и дескрипторами логических каналов.
- Открывается RTP-сессия.
Протокол MGCP представляет собой пример модели с централизованным управлением вызовами. Он определяет управление телефонными шлюзами с центрального управляющего компонента, называемого телефонным агентом (Call Agent). Шлюзы взаимодействуют с агентами, которые осуществляют сигнализацию и обработку вызовов.
В MGCP-окружении используются следующие компоненты:
- конечные точки;
- шлюзы;
- телефонный агент (назовем для краткости агентом).
Конечные точки — это точки соединения пакетной сети и традиционной телефонной сети. Они могут быть физическими и логическими. Шлюзы — это узлы объединения конечных точек.
Телефонный агент MGC (Media Gateway Controller) представляет собой центральный управляющий элемент в MGCP-окружении. MGC осуществляет управление деятельностью шлюзов в предположении, что шлюзы фиксируют события и докладывают о них. Агент, основываясь на событиях, инструктирует шлюзы о действиях, которые необходимо предпринимать. Он также инициирует все VoIP-этапы соединения.
Базовые понятия MGCP:
- вызовы и соединения. Позволяют устанавливать сквозные соединения двух и более конечных точек.
- События и сигналы. Позволяют телефонным агентам инструктировать шлюзы.
- Цифровые карты и пакеты. Позволяют шлюзам определять пункт назначения вызовов.
Рис. 10. Компоненты MGCP
Процесс взаимодействия телефонного агента со шлюзами для обеспечения телефонного вызова можно описать следующей последовательностью действий (Рис. 11):
Рис. 11. Взаимодействие шлюзов с агентом
- Агент направляет сообщение RQNT (Request Notification) каждому шлюзу. Этот запрос дает инструкцию шлюзам ждать события off-hook (когда снимается телефонная трубка) и дать гудок, когда такое событие произойдет. Агент также сообщает о необходимости мониторинга других событий. Предоставляя цифровую карту в запросе, агент позволяет шлюзам собрать цифры перед тем как информировать о событии агента (иначе шлюз не будет "знать", когда набор номера завершается, будет вынужден посылать агенту все цифры набора по одной).
- Шлюз отвечает на запрос. С этого момента агент и шлюзы ждут событий.
- Пользователь на шлюзе А поднял трубку. Следуя инструкции, шлюз дает телефонный гудок. Так как у шлюза есть карта номеров, он начинает собирать набираемые цифры, пока не будет получено соответствие (или пока набранные цифры не покажут, что соответствие невозможно).
- Шлюз А посылает оповещение (NTFY) агенту, сообщая ему, что требуемое событие произошло. Оповещение включает в себя конечную точку, событие и набранные цифры.
- После подтверждения возможности звонка агент инструктирует шлюз А создать соединение (CRCX) с его конечной точкой.
- Шлюз отвечает дескриптором сессии. Дескриптор определяет, как минимум, IP-адрес и UDP-порт для последующей RTP-сессии. Шлюз не имеет дескриптора сессии удаленной стороны, и соединение переходит в режим ожидания.
- Агент отправляет запрос на соединение шлюзу В. В запросе агент предоставляет дескриптор сессии, который он получил от шлюза А. Агент также посылает инструкции о том, какие в данный момент события важны и какие сигналы шлюзу генерировать. В данном случае таким событием является off-hook, сигналом — звонок.
- Шлюз В отвечает на запрос и сообщает свой дескриптор сессии.
- Агент передает дескриптор сессии шлюзу А в запросе MDCX (Modify Connection). Теперь шлюзы могут установить RTP-сессии для передачи голоса.
- В конце вызова одна из конечных точек распознает переход в состояние on-hook (трубка повешена). Допустим, это случилось на шлюзе А. Так как агент проинструктировал сообщить о таком событии, шлюз А посылает агенту уведомление.
- Агент рассылает сообщение DLCX (Delete Connection) каждому шлюзу.
- Шлюзы удаляют соединения и отвечают.