Протокол инициирования сеансов связи (SIP)
Аннотация: Лекция посвящена протоколу SIP Приведены архитектура, принцип работы и рекомендации стандарта SIP. Описаны компоненты архитектуры основанной на SIP и их роль. Описана интеграция протокола с IP-сетями
5.1. Принципы построения протокола SIP
Протокол инициирования сеансов ( Session Initiation Protocol — SIP ) является протоколом прикладного уровня и предназначается для организации, модификации и завершения сеансов связи (например, мультимедийных конференций, телефонных соединений). Пользователи могут принимать участие в существующих сеансах связи, приглашать других пользователей и быть приглашенными ими к новому сеансу связи.
Протокол SIP разработан группой MMUSIC комитета IETF , а спецификации протокола представлены в документе RFC 2543. В основу протокола заложены следующие принципы:
- Персональная мобильность пользователей. Пользователи могут перемещаться без ограничений в пределах сети. Пользователю присваивается уникальный идентификатор, а сеть предоставляет ему услуги связи вне зависимости от того, где он находится.
- Масштабируемость сети. Она характеризуется, в первую очередь, возможностью увеличения количества элементов сети при ее расширении. Серверная структура сети, построенная на базе протокола SIP , отвечает этому требованию.
- Расширяемость протокола. Она характеризуется возможностью дополнения протокола новыми функциями при введении новых услуг и его адаптации к работе с различными приложениями. Расширение функций протокола SIP может быть произведено за счет введения новых заголовков сообщений, которые должны быть зарегистрированы в организации IANA . При этом если SIP -сервер принимает сообщение с неизвестными ему атрибутами, то он просто игнорирует их.
5.2. Интеграция протокола SIP с IP-сетями
Одной из важнейших особенностей протокола SIP является его независимость от транспортных технологий. Но в то же время предпочтение отдается технологии маршрутизации пакетов IP и протоколу UDP . Следует оговориться, что для этого необходимо создать дополнительные механизмы надежной доставки сигнальной информации. К таким механизмам относятся повторная передача информации при ее потере, подтверждение приема и др.
Сигнальные сообщения могут переноситься как протоколом транспортного уровня UDP , так и протоколом TCP . Протокол UDP позволяет быстрее, чем TCP , доставлять сигнальную информацию (даже с учетом повторной передачи неподтвержденных сообщений), а также вести параллельный поиск местоположения пользователей и передавать приглашения к участию в сеансе связи в режиме многоадресной рассылки. В свою очередь , протокол TCP упрощает работу с межсетевыми экранами ( firewall ), а также гарантирует надежную доставку данных. При использовании протокола TCP разные сообщения, относящиеся к одному вызову, могут либо передаваться по одному TCP -соединению, либо для каждого запроса и ответа на него может открываться отдельное TCP -соединение. На рисунке 5.1 показано место , занимаемое протоколом SIP в стеке протоколов TCP/IP .
По сети с маршрутизацией пакетов IP может передаваться пользовательская информация практически любого вида: речь, видео и данные, а также любая их комбинация. При организации связи между терминалами пользователей необходимо сообщить встречной стороне, какого рода информация может приниматься (передаваться), алгоритм ее кодирования и адрес , на который следует передавать информацию. Таким образом, одним из обязательных условий организации связи при помощи протокола SIP является обмен между сторонами данными об их функциональных возможностях. Для этой цели чаще всего используется протокол описания сеансов связи — SDP ( Session Description Protocol ). Поскольку в течение сеанса связи может производиться его модификация, предусмотрена передача сообщений SIP с новыми описаниями сеанса средствами SDP .
Для передачи речевой информации комитет IETF предлагает использовать протокол RTP , рассмотренный выше, но сам протокол SIP не исключает возможность применения для этих целей и других протоколов.
Протокол SIP предусматривает организацию конференций трех видов:
- в режиме многоадресной рассылки ( multicasting ), когда информация передается на один multicast -адрес, откуда затем доставляется сетью конечным адресатам;
- при помощи контроллера управления конференции ( MCU ), к которому участники конференции передают информацию в режиме «точка-точка», а контроллер обрабатывает информацию (т. е. смешивает или коммутирует) и рассылает ее участникам конференции;
- путем соединения каждого пользователя с каждым в режиме «точка-точка».
Протокол SIP дает возможность присоединения новых участников к уже существующему сеансу связи, т. е. двусторонний сеанс может перейти в конференцию.
5.3. Адресация
Для организации взаимодействия с существующими приложениями IP -сетей и для обеспечения мобильности пользователей протокол SIP использует адрес , подобный адресу электронной почты. В качестве адресов рабочих станций используются специальные универсальные указатели ресурсов — так называемые SIP URL (Universal Resource Locators).
SIP -адреса бывают четырех типов:
Таким образом, адрес состоит из двух частей. Первая часть — это имя пользователя , зарегистрированного в домене или на рабочей станции. Если вторая часть адреса идентифицирует какой-либо шлюз , то в первой указывается телефонный номер абонента.
Во второй части адреса указывается имя домена, рабочей станции или шлюза. Для определения IP -адреса устройства необходимо обратиться к службе доменных имен — Domain Name Service ( DNS ). Если же во второй части SIP -адреса размещается IP — адрес , то с рабочей станцией можно связаться напрямую.
В начале SIP -адреса ставится слово » sip :» , указывающее, что это именно SIP — адрес .
sip: als@rts.loniis.ru sip: user1@192.168.100.152 sip: 294-75-47@gateway.ru
5.4. Архитектура сети SIP
На рисунке 5.2 представлена упрощенная схема действия протокола.
Клиент выдает запросы, в которых указывает, что он желает получить от сервера. Сервер принимает запрос , обрабатывает его и выдает ответ, который может содержать уведомление об успешном выполнении запроса, уведомление об ошибке или информацию, затребованную клиентом.
Управление процессом обслуживания вызова распределено между разными элементами сети SIP . Основным функциональным элементом , реализующим функции управления соединением, является терминал . Остальные элементы сети отвечают за маршрутизацию вызовов, а в некоторых случаях предоставляют дополнительные услуги.
В протоколе SIP устанавливаются следующие основные компоненты:
- Терминал. В случае, когда клиент и сервер взаимодействуют непосредственно с пользователем, они называются, соответственно, клиентом агента пользователя — User Agent Client ( UAC ) и сервером агента пользователя — User Agent Server ( UAS ) .
Предусмотрено два типа прокси-серверов — с сохранением состояний (stateful) и без сохранения состояний ( stateless ).
Сервер первого типа хранит в памяти входящий запрос, который явился причиной генерации одного или нескольких исходящих запросов. Эти исходящие запросы сервер также запоминает. Все запросы хранятся в памяти сервера только до окончания транзакции, т. е. до получения ответов на запросы. Он позволяет предоставить большее количество услуг, но работает медленнее, чем сервер второго типа. Он может применяться для обслуживания небольшого количества клиентов, например, в локальной сети. Прокси-сервер должен сохранять информацию о состояниях, если он:
- использует протокол TCP для передачи сигнальной информации;
- работает в режиме многоадресной рассылки сигнальной информации;
- размножает запросы.
Последний случай имеет место, когда прокси-сервер ведет поиск вызываемого пользователя сразу в нескольких направлениях, т. е. один запрос, который пришел к прокси-серверу, размножается и передается одновременно по всем этим направлениям.
Сервер без сохранения состояний просто ретранслирует запросы и ответы, которые получает. Он работает быстрее, чем сервер первого типа, так как ресурс процессора не тратится на запоминание состояний, вследствие чего сервер этого типа может обслужить большее количество пользователей. Недостатком такого сервера является то, что на его базе можно реализовать лишь наиболее простые услуги. Впрочем, прокси-сервер может функционировать как сервер с сохранением состояний для одних пользователей и как сервер без сохранения состояний — для других.
Алгоритм работы пользователей с прокси-сервером выглядит следующим образом. Поставщик услуг IP-телефонии сообщает адрес прокси-сервера своим пользователям. Вызывающий пользователь передает к прокси-серверу запрос соединения. Сервер обрабатывает запрос, определяет местоположение вызываемого пользователя и передает запрос этому пользователю, а затем получает от него ответ, подтверждающий успешную обработку запроса, и транслирует этот ответ пользователю, передавшему запрос. Прокси-сервер может модифицировать некоторые заголовки сообщений, которые он транслирует, причем каждый сервер, обработавший запрос в процессе его передачи от источника к приемнику, должен указать это в SIP -запросе для того, чтобы ответ на запрос вернулся по такому же пути.
Для хранения текущего адреса пользователя служит сервер определения местоположения пользователей, представляющий собой базу данных адресной информации. Кроме постоянного адреса пользователя, в этой базе данных может храниться один или несколько текущих адресов.
Этот сервер может быть совмещен с прокси-сервером или быть реализован отдельно от прокси-сервера, но иметь возможность связываться с ним.
Функции сеанса (управление общей сетевой папкой)
Функции сеансов управления сетью управляют сетевыми сеансами, установленными между рабочими станциями и серверами. Для выполнения функций требуется, чтобы служба сервера была запущена на сервере.
Ниже перечислены функции сеанса.
Функция | Описание |
---|---|
NetSessionDel | Удаляет текущие подключения между рабочей станцией и сервером; завершает сетевой сеанс. |
NetSessionEnum | Возвращает сведения обо всех текущих сеансах, установленных для сервера. |
NetSessionGetInfo | Возвращает сведения об определенном сеансе. |
Сеанс — это связь между рабочей станцией и сервером. Сеанс устанавливается при первом подключении рабочей станции к общему ресурсу на сервере. До завершения сеанса все последующие подключения между рабочей станцией и сервером будут частью одного сеанса. Чтобы завершить сеанс, приложение на сервере соединения вызывает функцию NetSessionDel .
Функции сеанса управления сетью управляют сведениями для каждого пользователя с помощью параметра username . Так как в сеансе может быть несколько пользователей, этот параметр необходим для доступа к сведениям о пользователе для сеанса.
Функции сеанса доступны на пяти уровнях информации:
При программировании для Active Directory вы можете вызвать определенные методы интерфейса службы Active Directory (ADSI) для достижения тех же функциональных возможностей, которые можно достичь, вызвав функции сеанса управления сетью. Дополнительные сведения см. в разделах IADsSession и IADsFileServiceOperations.