Общая идеология технологии VoIP
IP-телефония – это технология, позволяющая использовать сеть Интернет или сеть передачи данных (IP-сеть) для осуществления телефонных соединений и передачи факсов в режиме реального времени.
IP-телефония (VoIP Voice-over-IP протокол) базируется на TCP/IP протоколе, который используется для передачи информации между компьютерами и устройствами через сеть передачи данных. TCP/IP разбивает передаваемую информацию на части (пакеты), а затем присваивает каждой части (пакету) заголовок с адресом отправления и адресом назначения. После этого этот пакет посылается в сеть передачи данных, где он доставляется к месту назначения. Поскольку каждый пакет представляет собой самостоятельную единицу, VoIP называют протоколом пакетной коммутации. Протокол VoIP идеально подходит для передачи информации через Интернет, поскольку он специально разработан для использования в сетях с меняющейся структурой, в которых пакеты могут менять порядок следования или задерживаться.
Передача голоса по Интернет происходит в несколько этапов. Первый этап – процедура перевода голосового сигнала в цифровой формат (оцифровка голоса). Затем оцифрованные данные анализируются и обрабатываются с целью уменьшения физического объема данных, передаваемых адресату. На этом этапе происходит подавление ненужных пауз и фонового шума. На следующем этапе полученная последовательность данных разбивается на пакеты и к ней добавляется протокольная информация – адрес получателя, порядковый номер пакета на случай, если они будут доставлены не последовательно, и дополнительные данные для коррекции ошибок. Компрессия данных позволяет передавать по Интернет-каналу одновременно несколько разговоров (в отличие от традиционной телефонии, где для передачи одного разговора используется целый канал), что существенно уменьшает стоимость междугородных и международных телефонных разговоров по сравнению с традиционной телефонией.
Извлечение переданной голосовой информации из полученных пакетов также происходит в несколько этапов. Когда голосовые пакеты приходят на терминал получателя, то сначала проверяется их порядковая последовательность (IP-сети не гарантируют время доставки, то пакеты со старшими порядковыми номерами могут прийти раньше, более того, интервал времени получения также может колебаться). Для восстановления исходной последовательности и синхронизации происходит временное накопление пакетов в так называемый Jitter-буфер. Некоторые пакеты могут быть вообще утеряны при доставке, либо задержка их доставки превышает допустимый разброс. В обычных условиях приемный терминал запрашивает повторную передачу ошибочных либо потерянных данных. Передача голосовых пакетов по сети чувствительна ко времени доставки пакетов. Поэтому, если какой либо из пакетов (или их часть) был потерян, включается алгоритм аппроксимации, позволяющий на основе полученных пакетов приблизительно восстановить потерянные данные.
Протокол Н.323. Исторически первый – это введенный Международным союзом электросвязи (МСЭ) набор рекомендаций Н.323 (для простоты будем называть его протоколом). Н.323 стал плодом деятельности разработчиков протоколов мультимедийной связи в сетях ISDN (H.320). Соответствующие работы велись еще c начала 90-х годов, когда никакой IP-телефонии и в помине не было. Первая версия этого протокола была принята МСЭ в 1996 г. и по сути была попыткой перенести телефонную сигнализацию ISDN Q.931 на IP-соединения, т. е. как бы "наложить" традиционную телефонию на сети передачи данных. Рекомендации H.323 достаточно подробно описывают способы организации мультимедийных конференций, охватывая сервисы передачи голоса, видео и компьютерных данных в пакетных сетях с негарантированной доставкой. К настоящему времени принята уже четвертая версия этого набора рекомендаций. К основным компонентам набора относятся описанные ниже протоколы.
H.225 – полный аналог протокола Q.931 в сетях ISDN; описывает процесс установления, поддержки и завершения соединения. Обмен сообщениями происходит по протоколу TCP.
RAS (Registration, Admission, Status) – отвечает за регистрацию устройств в сети, контроль доступа к ресурсам, контроль полосы пропускания, необходимой для сеанса связи, и контроль состояния устройств в сети. Работает по протоколу UDP.
H.245 – отвечает за обмен информацией, необходимой для согласования параметров логических каналов для передачи медиа-потоков, т. е. собственно голоса или видео. Сюда входит, к примеру, согласование кодеков, номеров UDP-портов и т. д. Обмен происходит по протоколу TCP.
H.450.x (появившийся в четвертой версии H.323) – отвечает за обеспечение таких дополнительных или интеллектуальных функций, как Hold, Transfer и т. д.
Архитектура H.323 весьма проста и состоит всего из четырех функциональных компонентов, ни один из которых не является обязательным.
Терминал (H.323 Terminal) – абонентское устройство, способное обеспечивать связь (голосовую, видео- и т. д.) с другими терминалами, шлюзами или устройствами многопользовательских конференций.
Шлюз (H.323 Gateway) – центральное понятие сегодняшней IP-телефонии. Данное устройство обеспечивает взаимное сопряжение телефонной сети с IP-сетью. При этом предоставляется поддержка разных протоколов и интерфейсов сетей обоих типов. Если выход в телефонную сеть не требуется, то данный компонент не нужен, а терминалы могут связываться друг с другом напрямую.
Привратник (H.323 Gatekeeper, GK) – управляющий элемент, "интеллект" H.323 сети, обеспечивающий ее масштабируемость, централизацию управления и настроек, а также трансляцию телефонных префиксов и идентификаторов (H.323 ID) в IP-адреса шлюзов или H.323 терминалов. Кроме того, привратник отвечает за управление доступом (Admission Сontrol) при регистрации шлюзов и терминалов, авторизацию звонков (Call Admission Control), управление полосой пропускания и маршрутизацию вызовов. Привратник управляет подчиненной ему частью сети (зоной) через RAS – протокол общения шлюзов с ним. Предусмотрено объединение привратников в группы, управлять которыми можно с помощью выделенного привратника – Directory Gatekeeper.
Устройство многопользовательских конференций (H.323 Multipoint Conference Unit, MCU) – управляет проведением многопользовательских конференций, согласует параметры соединения всех участников в режиме централизованной, децентрализованной или комбинированной конференции. Возможно переключение или смешивание медиа-потоков.
Обмен сообщениями между компонентами сети H.323 происходит в двоичном формате (ASN.1), для анализа которого нужен транслятор из двоичного формата в текстовый (ASN parser). Что же касается способов адресации, то в рекомендациях H.323 на этот счет определено несколько вариантов:
- телефонные номера в формате E.164, т. е. только символы из набора "0123456789#*,";
- H.323-идентификатор (H323-ID) – произвольный набор символов Unicode;
- универсальный идентификатор ресурса в формате URL (URL-ID);
- IP-адрес с номером порта, например, 10.2.3.4:1720;
- адрес электронной почты (Email-ID).
В наиболее общей форме сценарий соединения по протоколу H.323 выглядит как ряд последовательных шагов. Вначале для установления соединения терминал обнаруживает привратника и регистрируется у него по протоколу RAS. Затем происходит установление сигнального канала по протоколам RAS и H.225. На следующем этапе выполняется согласование параметров оборудования, обмен информацией о его функциональных возможностях и открытие логических каналов по протоколу H.245. Только после этого происходит передача медиа-трафика по протоколам RTP/RTCP, а по ее окончании – завершение соединения.
Протокол SIP. SIP (Session Initiation Protocol); он описан в рекомендациях RFC 2543. SIP регламентирует установление и завершение мультимедийных сессий – сеансов связи, в ходе которых пользователи могут говорить друг с другом, обмениваться видео и текстом, совместно работать над приложениями и т. д.
SIP и сопутствующие ему протоколы родились и развиваются в рамках IETF – главного органа стандартизации Интернета. Первая версия протокола SIP была принята в марте 1999 г., на три года позже, чем H.323, но благодаря интенсивному развитию этого направления сегодня набор рекомендаций RFC (базовых официальных документов IETF), имеющих отношение к SIP-архитектуре, насчитывает десятки, если не сотни документов SIP очень похож на протокол HTTP, поскольку разрабатывался по образу и подобию широко известных спецификаций HTTP и SMTP. По сути это клиент-серверный протокол, работа которого состоит из череды запросов и ответов, причем все SIP-заголовки передаются в формате ASCII-текста, а потому легко читаются. Наверняка коды возврата 200 (OK), а особенно 404 (Not found) хорошо знакомы всем пользователям Интернета. SIP позволяет использовать логическую адресацию (URL) на базе протокола TCP или UDP. Проще всего в качестве адреса в сети SIP задавать адреса электронной почты, к примеру, sip:igor@comptek.ru – это самый естественный URL, адекватно понимаемый SIP. При этом допускается применение разнообразных параметров, определяющих функциональность SIP-адреса или тип протокола связи. Например, можно указать, что соединение осуществляется с обычным телефонным номером сети общего пользования – sip:tel:+70957852525, и дополнить его добавочным номером postd= pp521, или определить параметры модемной связи-modem:+70957852526;type=v32b?7e1;type=v110.
SIP имеет несколько комплементарных протоколов, которые служат для реализации дополнительных возможностей. Наиболее важный из них – SDP (Session Description Protocol, RFC 2327), протокол согласования таких параметров сеанса связи, как виды кодеков, номера UDP-портов и т. д. SDP обеспечивает изменение параметров сеанса связи "на ходу", во время сеанса. Перенос сообщений SDP основан на протоколе Session Announcement Protocol (SAP, RFC 2974).
Другой пример комплементарного протокола – SIMPLE (SIP for Instant Messaging and Presence Levering Extension). Фактически это расширение SIP, служащее для предоставления информации о событиях (presence) и для рассылки "мгновенных" сообщений (instant messaging).
Следует также упомянуть SIP-T (Trunk) – протокол переноса сообщений SS7 в виде MIME-объектов между контроллерами сигнализации, а также SIGTRAN (Signaling Transport) – протокол переноса сообщений сигнализации SS7 через IP-сеть.
Архитектура SIP очень проста и состоит из нескольких необязательных компонентов.
Клиент SIP (SIP user agent) – может быть представлен как устройством (IP-телефон, шлюз или другой пользовательский терминал), так и программным приложением для ПК, PDA и т. д. Обычно SIP-клиент содержит и клиентскую, и серверную часть (User Agent Client, или UAC, и User Agent Server, или UAS). Основные функции данного компонента – инициирование и завершение вызовов.
Прокси-сервер SIP – управляет маршрутизацией вызовов и работой приложения. Прокси-сервер не может инициировать или терминировать вызовы.
Redirect-сервер SIP – перенаправляет звонки согласно заданным условиям.
Сервер регистрации SIP (registrar/location) – осуществляет регистрацию пользователей и ведет базу соответствия имен пользователей их адресам, телефонным номерам и т. д.
Еще один важный компонент реальных SIP-сетей, хотя и не входящий формально в архитектуру SIP, – Back-to-Back User Agent (B2BUA). Это своеобразный сервер, представляющий собой два соединенных друг с другом SIP-клиента и поэтому способный инициировать и завершать вызовы.
Из этих компонентов, как из функциональных "кирпичиков", можно строить сети VoIP любой топологии, сложности и масштаба, вплоть до сетей, полностью замещающих функции современных АТС. Можно также создавать совершенно новые сервисы – интеграцию Интернет- и бизнес-приложений, программируемые службы, многоадресный поиск абонента, мультимедийные сервисы, уведомления о событиях и т. д.
В наиболее общей форме сценарий соединения по протоколу SIP с участием прокси-сервера показан на рисунке. Абонент посылает на прокси-сервер запрос на соединение, отправляя сообщение Invite. Прокси-сервер возвращает сообщение Trying и передает сообщение Invite вызываемому абоненту. Вызываемая сторона отвечает сообщением Ringing, которое прокси-сервер пересылает вызывающей стороне. После того как вызываемый абонент снимет трубку, вызывающей стороне отправляется сообщение ОК, которое транслируется прокси-сервером. Вызываемому абоненту возвращается подтверждающее сообщение Ack.
C этого момента соединение считается установленным и начинается обмен медиа-трафиком по протоколам RTP/RTCP. Сторона, желающая завершить соединение, посылает сообщение Bye, и после получения подтверждающего ОК соединение разрывается.
Этот сценарий очень прост, в нем не участвуют никакие другие серверы (Redirection, Registrar, Location), но он дает представление о схеме взаимодействия функциональных элементов SIP-сети.