Введение

Протокол связи голосом по IP

Протокол инициирования сеанса (SIP) — это протокол сигнализации, используемый для установления, поддержания и завершения сеансов связи, включающих приложения для голоса, видео и обмена сообщениями. Протокол определяет конкретный формат обмена сообщениями и последовательность коммуникаций для обеспечения взаимодействия участников. SIP является текстовым протоколом, включающим множество элементов протокола передачи гипертекста (HTTP) и протокола простой передачи почты (SMTP). Вызов, установленный с помощью SIP, может состоять из нескольких медиапотоков, но отдельные потоки не требуются для приложений, таких как текстовые сообщения, которые обмениваются данными в качестве полезной нагрузки в сообщении SIP. SIP работает в сочетании с несколькими другими протоколами, которые определяют и передают медиаданные сеанса. Чаще всего, согласование типа и параметров медиа, а также настройка медиа выполняются с помощью протокола описания сеанса (SDP), который передается в качестве полезной нагрузки в сообщениях SIP. SIP разработан независимо от базового протокола транспортного уровня и может использоваться с протоколом пользовательских датаграмм (UDP), протоколом управления передачей (TCP) и протоколом управления потоковой передачей (SCTP). Для безопасной передачи сообщений SIP по незащищенным сетевым каналам протокол может быть зашифрован с помощью протокола безопасности транспортного уровня (TLS). Для передачи медиапотоков (голоса, видео) полезная нагрузка SDP, передаваемая в сообщениях SIP, обычно использует протокол передачи в реальном времени (RTP) или защищенный протокол передачи в реальном времени (SRTP).

История

SIP был первоначально разработан Марком Хэндли, Хеннингом Шульцринне, Евой Шкулер и Джонатаном Розенбергом в 1996 году для упрощения организации мультимедийных сессий с использованием многоадресной рассылки (multicast) в Mbone. Протокол был стандартизирован в 1999 году. В ноябре 2000 года SIP был принят в качестве протокола сигнализации 3GPP и постоянного элемента архитектуры IP Multimedia Subsystem (IMS) для IP-сервисов потоковой передачи мультимедиа в сотовых сетях. В июне 2002 года спецификация была пересмотрена, и с тех пор было опубликовано множество расширений и уточнений. SIP был разработан как протокол сигнализации и установления соединения для IP-коммуникаций, поддерживающий функции обработки вызовов и возможности, присутствующие в общедоступной телефонной сети (PSTN), с расчетом на поддержку новых мультимедийных приложений. Он был расширен для видеоконференций, потоковой передачи медиаданных, обмена мгновенными сообщениями, информации о присутствии, передачи файлов, интернет-факса и онлайн-игр. Сторонники SIP отмечают, что его корни лежат в интернет-сообществе, а не в телекоммуникационной индустрии. Стандартизацией SIP занимался в основном Internet Engineering Task Force (IETF), в то время как другие протоколы, такие как H.323, традиционно ассоциируются с Международным союзом электросвязи (ITU).

Протокольная операция

SIP участвует только в операциях сигнализации сеанса медиа-коммуникации и в основном используется для установления и завершения голосовых или видеовызовов. SIP может использоваться для установления двухсторонних (unicast) или многосторонних (multicast) сессий. Он также позволяет изменять существующие вызовы. Изменение может включать в себя изменение адресов или портов, приглашение дополнительных участников, а также добавление или удаление медиапотоков. SIP также нашел применение в приложениях обмена сообщениями, таких как мгновенные сообщения, а также в подписке на события и уведомления. SIP работает в сочетании с другими протоколами, которые определяют формат и кодирование медиа, и которые передают медиа после установления вызова. Для установления вызова тело сообщения SIP содержит блок данных протокола описания сеанса (SDP), который определяет формат медиа, кодек и протокол медиа-коммуникации. Голосовые и видеомедиапотоки обычно передаются между терминалами с использованием протокола передачи в реальном времени (RTP) или защищенного протокола передачи в реальном времени (SRTP). Каждый ресурс сети SIP, такой как пользовательские агенты, маршрутизаторы вызовов и почтовые ящики голосовой почты, идентифицируется универсальным идентификатором ресурса (URI). Синтаксис URI соответствует общему стандартному синтаксису, также используемому в веб-сервисах и электронной почте. Схема URI, используемая для SIP, — это sip, и типичный SIP URI имеет вид sip:username@domainname или sip:username@hostport, где domainname требует DNS SRV-записей для определения местоположения серверов для домена SIP, а hostport может быть IP-адресом или полностью квалифицированным доменным именем хоста и порта. Если требуется безопасная передача, используется схема sips. SIP использует элементы дизайна, аналогичные модели транзакций запросов и ответов HTTP. Каждая транзакция состоит из клиентского запроса, который вызывает определенный метод или функцию на сервере, и как минимум одного ответа. SIP повторно использует большинство полей заголовков, правил кодирования и кодов состояния HTTP, обеспечивая читаемый текстовый формат. SIP может передаваться по нескольким протоколам транспортного уровня, включая протокол управления передачей (TCP), протокол пользовательских датаграмм (UDP) и протокол управления потоком (SCTP). Клиенты SIP обычно используют TCP или UDP на портах 5060 или 5061 для трафика SIP к серверам и другим конечным точкам. Порт 5060 обычно используется для незашифрованного сигнального трафика, в то время как порт 5061 обычно используется для трафика, зашифрованного с помощью протокола безопасности транспортного уровня (TLS). Телефонные сети на основе SIP часто реализуют функции обработки вызовов системы сигнализации №7 (SS7), для которых существуют специальные расширения протокола SIP, хотя сами протоколы очень отличаются. SS7 — это централизованный протокол, характеризующийся сложной архитектурой центральной сети и простыми конечными точками (традиционными телефонными аппаратами). SIP — это клиент-серверный протокол равноправных узлов. Функции SIP реализуются в взаимодействующих конечных точках, в то время как традиционная архитектура SS7 используется только между коммутационными центрами.

Элементы сети

Сетевые элементы, использующие протокол инициации сеанса для связи, называются SIP-агентами пользователя. Каждый пользовательский агент (UA) выполняет функцию клиента пользовательского агента (UAC), когда он запрашивает сервис, и функцию сервера пользовательского агента (UAS), когда отвечает на запрос. Таким образом, любые две конечные точки SIP теоретически могут работать без какой-либо промежуточной SIP-инфраструктуры. Однако, в целях обеспечения работы сети, предоставления пользователям публичных сервисов и организации служб каталогов, SIP определяет несколько специфических типов сетевых серверных элементов. Каждый из этих сервисных элементов также взаимодействует по модели «клиент-сервер», реализованной в клиентах и серверах пользовательского агента.

Агент пользователя

Пользовательский агент — это логическая сетевая конечная точка, которая отправляет или принимает сообщения SIP и управляет SIP-сессиями. Пользовательские агенты имеют клиентские и серверные компоненты. Клиентский пользовательский агент (UAC) отправляет SIP-запросы. Сервер пользовательского агента (UAS) принимает запросы и возвращает SIP-ответ. В отличие от других сетевых протоколов, жестко определяющих роли клиента и сервера, например, HTTP, где веб-браузер действует исключительно как клиент и никогда как сервер, SIP требует, чтобы оба участника поддерживали обе роли. Роли UAC и UAS действительны только в течение одной SIP-транзакции. SIP-телефоны могут быть реализованы как аппаратное устройство или как программный телефон (софтофон). Поскольку поставщики все чаще внедряют SIP в качестве стандартной платформы телефонии, различие между аппаратными и программными SIP-телефонами стирается, и SIP-элементы реализуются в базовых функциях прошивки многих IP-совместимых коммуникационных устройств, таких как смартфоны. В SIP, как и в HTTP, пользовательский агент может идентифицировать себя с помощью поля заголовка сообщения (User-Agent), содержащего текстовое описание программного обеспечения, аппаратного обеспечения или названия продукта. Поле пользовательского агента отправляется в запросах, что позволяет принимающему SIP-серверу анализировать эту информацию для выполнения специфической конфигурации устройства или активации функций. Операторы сетевых элементов SIP иногда сохраняют эту информацию в клиентских порталах, где она может быть полезна для диагностики проблем совместимости SIP или отображения статуса сервиса.

Прокси-сервер

Прокси-сервер — это сетевой сервер с компонентами UAC и UAS, который выполняет функцию посредника при обработке запросов от имени других сетевых элементов. Основная роль прокси-сервера — маршрутизация вызовов: он отправляет SIP-запросы другому участнику сети, находящемуся ближе к конечному пункту назначения. Прокси также полезны для реализации политик, например, для определения права пользователя на совершение вызова. Прокси-сервер интерпретирует и, при необходимости, изменяет определенные части сообщения запроса перед его пересылкой. SIP-прокси-серверы, маршрутизирующие сообщения к нескольким пунктам назначения, называются прокси-серверами форкинга. Форкинг SIP-запроса позволяет установить несколько диалогов из одного запроса. Таким образом, вызов может быть принят на одном из нескольких SIP-терминалов. Для идентификации этих диалогов каждый из них имеет уникальный идентификатор, формируемый обеими сторонами.

Перенаправление сервера

Сервер перенаправления — это сервер пользовательского агента, который генерирует ответы 3xx (перенаправление) на полученные запросы, перенаправляя клиент на альтернативный набор URI. Сервер перенаправления позволяет прокси-серверам направлять приглашения SIP-сеансов во внешние домены.

Секретарь

Регистратор — это SIP-устройство, предоставляющее службу определения местоположения. Он принимает запросы REGISTER, записывая адрес и другие параметры от пользовательского агента. Для последующих запросов он обеспечивает ключевой механизм для поиска возможных абонентов в сети. Служба определения местоположения связывает один или несколько IP-адресов с SIP URI регистрирующегося агента. Несколько пользовательских агентов могут зарегистрироваться для одного и того же URI, в результате чего все зарегистрированные агенты получают вызовы, предназначенные для этого URI. SIP-регистраторы являются логическими компонентами и часто размещаются совместно с SIP-прокси. Для повышения масштабируемости сети служба определения местоположения может быть реализована на сервере перенаправления.

Контроллер границы сеанса

Контроллеры границ сеанса (SBC) выступают в роли промежуточных устройств между пользовательскими агентами и SIP-серверами, выполняя различные функции, такие как сокрытие топологии сети и помощь в преодолении NAT. SBC – это автономное решение, не описанное в RFC для SIP.

Вход

Шлюзы могут использоваться для соединения сети SIP с другими сетями, такими как PSTN, использующими различные протоколы или технологии.

Сообщения SIP

SIP — это текстовый протокол с синтаксисом, схожим с синтаксисом HTTP. Существуют два различных типа сообщений SIP: запросы и ответы. Первая строка запроса содержит метод, определяющий тип запроса, и URI запроса, указывающий, куда следует отправить запрос. Первая строка ответа содержит код ответа.

Запросы

Запросы инициируют функциональность протокола. Они отправляются клиентским агентом пользователя на сервер и получают ответ в виде одного или нескольких ответов SIP, которые возвращают код результата транзакции и обычно указывают на успех, неудачу или другое состояние транзакции. + SIP-запросы Название запроса Описание Примечания Ссылки на RFC REGISTER Регистрирует URI, указанный в поле заголовка To, с сервером определения местоположения и связывает его с сетевым адресом, указанным в поле заголовка Contact. Команда реализует службу определения местоположения. INVITE Инициирует диалог для установления вызова. Запрос отправляется клиентским агентом пользователя на сервер агента пользователя. При отправке во время установленного диалога (повторный INVITE) изменяет сеанс, например, помещает вызов на удержание. ACK Подтверждает получение конечной точки окончательного ответа на запрос INVITE. BYE Сигнализирует о завершении диалога и окончании вызова. Это сообщение может быть отправлено любой конечной точкой диалога. CANCEL Отменяет любой ожидающий запрос. Обычно означает прекращение вызова во время вызова, до ответа. UPDATE Изменяет состояние сеанса, не изменяя состояние диалога. REFER Просит получателя отправить запрос с целью переадресации вызова. PRACK Предварительное подтверждение. PRACK отправляется в ответ на предварительный ответ (1xx). SUBSCRIBE Инициирует подписку на уведомления о событиях от оповещателя. NOTIFY Информирует подписчика об уведомлениях о новом событии. PUBLISH Публикует событие на сервере уведомлений. MESSAGE Доставляет текстовое сообщение. Используется в приложениях для обмена мгновенными сообщениями. INFO Отправляет информацию в середине сеанса, которая не изменяет состояние сеанса. Этот метод часто используется для ретрансляции DTMF. OPTIONS Запрашивает возможности конечной точки. Часто используется для поддержания NAT-соединения.

Ответы

Ответы отправляются сервером пользовательского агента, указывая результат полученного запроса. Распознаются несколько классов ответов, определяемых числовым диапазоном кодов результатов: 1xx: Предварительные ответы на запросы указывают, что запрос был принят и обрабатывается. 2xx: Успешное выполнение запроса. В ответ на INVITE указывает на установление соединения. Наиболее распространенный код – 200, означающий безусловный успех. 3xx: Для завершения запроса требуется перенаправление вызова. Запрос должен быть выполнен с новым адресатом. 4xx: Запрос не может быть выполнен сервером по различным причинам, включая синтаксическую ошибку в запросе (код 400). 5xx: Сервер не смог выполнить, казалось бы, корректный запрос, включая внутренние ошибки сервера (код 500). 6xx: Запрос не может быть выполнен ни одним сервером. Это указывает на глобальную ошибку, включая отклонение вызова адресатом.

Сделки

SIP определяет механизм транзакций для управления обменом данными между участниками и обеспечения надежной доставки сообщений. Транзакция представляет собой состояние сеанса, которое контролируется различными таймерами. Клиентские транзакции отправляют запросы, а серверные транзакции отвечают на них одним или несколькими ответами. Ответы могут включать предварительные ответы с кодом ответа в формате 1xx, а также один или несколько окончательных ответов (2xx – 6xx). Транзакции далее классифицируются как транзакции типа "приглашение" или типа "не приглашение". Транзакции типа "приглашение" отличаются тем, что они могут устанавливать продолжительный разговор, называемый диалогом в SIP, и, следовательно, включают подтверждение (ACK) любого успешного окончательного ответа, например, 200 OK.

Обмен мгновенными сообщениями и присутствие

Протокол инициирования сеанса для мгновенных сообщений и присутствия с использованием расширений (SIMPLE) — это набор стандартов на базе SIP для мгновенных сообщений и информации о присутствии. Протокол ретрансляции сеансов обмена сообщениями (MSRP) обеспечивает сеансы мгновенных сообщений и передачу файлов.

Испытания соответствия

Сообщество разработчиков SIP регулярно встречается на конференциях, организованных SIP Forum, для тестирования взаимодействия реализаций SIP. Язык спецификации тестов TTCN 3, разработанный рабочей группой ETSI (STF 196), используется для определения тестов соответствия для реализаций SIP.

Испытания производительности

При разработке SIP-программного обеспечения или развертывании новой SIP-инфраструктуры важно протестировать способность серверов и IP-сетей обрабатывать определенную нагрузку по вызовам: количество одновременных вызовов и количество вызовов в секунду. Программное обеспечение для тестирования производительности SIP используется для имитации SIP и RTP трафика, чтобы оценить стабильность сервера и IP-сети под нагрузкой. Программное обеспечение измеряет такие показатели производительности, как задержка установления соединения, отношение успешных установлений к попыткам, джиттер RTP и потеря пакетов, а также время кругового обхода.

Приложения

SIP-соединение – это маркетинговый термин, обозначающий услуги передачи голоса по интернет-протоколу (VoIP), предлагаемые многими провайдерами услуг интернет-телефонии (ITSP). Данная услуга обеспечивает маршрутизацию телефонных вызовов из частной автоматической телефонной станции (PBX) клиента в общедоступную телефонную сеть (PSTN). Такие услуги могут упростить корпоративную информационную инфраструктуру за счет совместного использования интернет-канала для передачи голоса и данных, а также снизить затраты на телефонные линии с базовым (BRI) или первичным (PRI) интерфейсом. SIP-транкинг – это схожий маркетинговый термин, который предпочтительнее использовать, когда услуга применяется для упрощения телекоммуникационной инфраструктуры путем совместного использования канала связи оператора для передачи голоса, данных и интернет-трафика, устраняя необходимость в линиях PRI. Видеокамеры с поддержкой SIP могут инициировать вызовы для оповещения оператора о событиях, например, о движении объектов в охраняемой зоне. SIP также используется в аудио по IP для вещания, обеспечивая совместимость аудиоинтерфейсов от разных производителей для установления соединения между ними.

Реализация

Национальный институт стандартов и технологий США (NIST), Отдел передовых сетевых технологий предоставляет реализацию на Java в общественном достоянии, которая служит эталонной реализацией стандарта. Эта реализация может использоваться в сценариях прокси-сервера или пользовательского агента и применялась во многих коммерческих и исследовательских проектах. Она полностью поддерживает стандарт и ряд расширяющих RFC, включая (уведомление о событиях) и (надежные предварительные ответы). Существует множество других коммерческих и открытых реализаций SIP. См. Список программного обеспечения SIP.

SIP-ISUP взаимодействие

SIP I, Session Initiation Protocol with encapsulated ISUP, — это протокол, используемый для установления, изменения и завершения сеансов связи на основе ISUP посредством сетей SIP и IP. Сервисы, использующие SIP I, включают в себя голосовую связь, видеотелефонию, факсимильную связь и передачу данных. SIP I и SIP T — два протокола с аналогичными возможностями, в частности, позволяющие передавать сообщения ISUP по сетям SIP, сохраняя при этом всю информацию, содержащуюся в заголовке ISUP. SIP I был разработан ITU-T, а SIP T — IETF.

Шифрование

Опасения по поводу безопасности вызовов через общедоступный Интернет были устранены за счет шифрования протокола SIP для обеспечения безопасной передачи данных. Схема URI SIPS используется для обязательного обеспечения безопасности SIP-коммуникаций с помощью Transport Layer Security (TLS). URI SIPS имеют вид sips:user@example.com. Сквозное шифрование SIP возможно только при наличии прямого соединения между конечными точками связи. Хотя прямое соединение может быть установлено через SIP "точка-точка" или через VPN между конечными точками, большинство SIP-коммуникаций включает в себя несколько переходов, при этом первый переход осуществляется от пользовательского агента к ITSP этого агента. В случае множественных переходов SIPS защитит только первый переход; остальные переходы обычно не будут защищены TLS, и SIP-коммуникация будет небезопасной. В отличие от этого, протокол HTTPS обеспечивает сквозную безопасность, поскольку осуществляется через прямое соединение и не предполагает наличия переходов. Потоки мультимедиа (аудио и видео), являющиеся отдельными соединениями от сигнального потока SIPS, могут быть зашифрованы с использованием SRTP. Обмен ключами для SRTP выполняется с помощью SDES или ZRTP. При использовании SDES ключи будут передаваться через незащищенный SIP, если не используется SIPS. Также можно добавить обмен MIKEY в SIP для определения ключей сеанса для использования с SRTP.