Протокол SIP — (Session Initiation Protocol) — протокол установления сеанса связи. Данный протокол является одним из основных, используемых в IP-телефонии. Он был разработан в 1996 году Марком Хэндли, Джонатаном Розенбергом и Хеннигом Шульцринном, в 1999 году была выпущена версия 1.0 (RFC 2543), затем протокол был доработан, и в 2002 году и принят в качестве протокола […]
Протокол SIP — (Session Initiation Protocol) — протокол установления сеанса связи. Данный протокол является одним из основных, используемых в IP-телефонии. Он был разработан в 1996 году Марком Хэндли, Джонатаном Розенбергом и Хеннигом Шульцринном, в 1999 году была выпущена версия 1.0 (RFC 2543), затем протокол был доработан, и в 2002 году и принят в качестве протокола сигнализации в мобильной телефонии (RFC 3261). SIP был изначально разработан только для работы с сеансами связи (установка/завершение/изменение), но не для передачи данных.Отметим некоторые особенности работы протокола SIP:
- SIP является протоколом прикладного уровня и может использовать в качестве транспорта протоколы UDP, TCP, SCTP;
- SIP позволяет устанавливать как одноадресные, так и многоадресные сеансы связи;
- SIP использует регистрацию абонентов для установления сеанса;
- SIP расширяем, за счет передачи параметров не в бинарном виде, а в виде текста;
- SIP масштабируем и не имеет ограничений номерной базы, т.к. использует адресацию в стиле URI;
- SIP модифицируем и позволяет изменять параметры созданных сессий, такие как адрес, номер порта, количество абонентов и количество медиапотоков.
Как выбрать кабель СИП? Что такое СИП?
Инфраструктура сетевых агентов протокола SIP
Протокол SIP разработан таким образом, что два конечных пира могут устанавливать соединение без участия каких-либо дополнительных элементов, однако, из соображений эксплуатации сетей были введены следующие типы агентов, которые взаимодействуют по модели клиент-сервер:
- Терминал — является конечным узлом в SIP-сессии, который либо участвует в передаче сообщений, либо управляет сессией. Терминал в модели взаимодействия SIP выполняет одновременно роль и клиента и сервера.
- Регистратор — узел в сети SIP, который производит регистрацию терминалов и хранит информацию о них, а также позволяет производить поиск терминалов по необходимым параметрам.
- Прокси-сервер — промежуточный объект SIP-сети, обеспечивающий маршрутизацию сессий и отвечающий за доставку сообщений терминалам. Позволяет выполнять запросы от имени других узлов сети, тем самым ускоряя доставку сообщений через наиболее короткие маршруты.
- Шлюз — пограничный узел, используемый для передачи сообщений между сетями.
- Контроллер границы сеанса — специализированный элемент сети, служащий для выполнения сервисных функций между терминалами, такими, например, как обход NAT.
- Сервер перенаправления — вспомогательный элемент сети, используемый для перенаправления запросов от прокси-серверов к внешним доменам.
Обмен сообщениями в протоколе SIP
SIP является текстовым протоколом и его синтаксис во многом схож с HTTP. Сообщения в SIP разделяются на запросы и ответы. Первая строка запроса содержит метод, определяющий природу запроса, затем следует URI-адрес назначения запроса. Ответ содержит в первой строке код, определяющий результат поступившего запроса.
Сип (sip) панели — что это такое. Преимущества Сип-панелей
Запросы генерируются терминалами-клиентами к серверам и инициализируют функциональность протокола. Отправка запроса подразумевает получение ответа о результате транзакции. Рассмотрим подробно возможные варианты запросов SIP клиентов:
- REGISTER — регистрация URI клиента на сервере регистрации;
- INVITE — инициализация протокола для установления сеанса;
- ACK — подтверждение инициализации сеанса со стороны клиента;
- BYE — завершение сеанса;
- CANCEL — отмена любого ожидающего запроса;
- UPDATE — изменение состояния сеанса без изменения диалога;
- REFER — запрос на оформление переадресации;
- PRACK — предварительное (временное) подтверждение;
- SUBSCRIBE — подписка на уведомления о событии;
- NOTIFY — сообщение подписчику о произошедшем событии;
- PUBLISH — публикация сообщения на сервере;
- MESSAGE — отправка текстового сообщения;
- INFO — информация о сеансе, без его модификации;
- OPTIONS — запрос информации о функциональности сервера.
Ответы разделяются на классы, определяемые их цифровым кодом. Рассмотрим подробно классы возможных ответов:
- 1XX — коды предварительного состояния сеанса. Указывают на то, что запрос был получен сервером и поступил в обработку;
- 2XX — успешное завершение запроса;
- 3XX — перенаправление запроса с указанием необходимости заполнения его новым адресом назначения;
- 4XX — отклонение запроса, либо указание на ошибку в запросе;
- 5XX — отказ в выполнении запроса;
- 6XX — отклонение запроса по причине невозможности установить соединение.
Дополнительные возможности SIP
SIP-сжатие
Являясь текстовым протоколом, SIP может создавать высокую нагрузку на используемый транспортный протокол. Возможны случаи превышения максимального MTU при использования в качестве транспорта протокола UDP. Для обхода подобных проблемных ситуаций SIP предусматривает сжатие заголовков сообщений и передачу их в компактной форме. Компактная форма может быть заменена на обычную в любое время передачи сообщения, без изменения его семантики.
Сигнализация SIP DTMF
Протокол SIP использует четыре метода для передачи цифровых сигналов между терминальными агентами:
- Использование аудио тональных сигналов в RTP-потоке с lossles-кодированием ( u-law, a-law).
- Использование именованных телефонных событий (NTE) в потоке RTP (наиболее распространенный метод).
- Метод SIP INFO — отправка DTMF-кодов в заголовке пакета, определенных контекстом /dtmf-relay.
- Метод SIP NOTIFY — передача кодов DTMF в запросе NOTIFY (уведомление о произошедшем событии).
SIP Perfomance Tester
SIP Perfomance Tester является инструментом для тестирования ПО, либо инфраструктуры сети под нагрузкой. Он позволяет определить максимальное количество вызовов, количество вызовов в секунду, так же количество одновременных вызовов. Данный продукт имитирует SIP- и RTP- трафик для того, чтобы определить будет ли стабильно работать ваша конфигурация сервера или сети под нагрузкой. SIP Perfomance Tester измеряет такие показатели, как задержка ответа, соотношение запросов и ответов, потеря пакетов, время задержки приема или передачи.
SSIP
Security SIP разработан для обеспечения безопасной передачи информации путем шифрования данных, передаваемых по протоколу SIP. SIPS использует TLS для обеспечения защищенного канала связи между клиентом и сервером с использованием механизма рукопожатия. Данные же упаковываются по протоколу SRTP в шифрованные IP-пакеты и их передача начинается только после того, как устанавливается SSL-туннель между клиентом и сервером. Важной особенностью использования SSIP является необходимость его поддержки всеми используемыми устройствами в сети, если хотя бы один узел не поддерживает SRTP/TLS, то установить защищенное соединение будет невозможно.
SIP ALG
SIP ALG это механизм маршрутизации SIP-трафика, несколько похожий на SIP Proxy. ALG является программным шлюзом и используется в прослойке между устройствами SIP и сетью. SIP ALG анализирует поступающий трафик и может управлять им разрешая, запрещая, либо перенаправляя его другим узлам сети.
Данный программный шлюз позволяет синхронизировать входящие потоки либо сессии между клиентами и серверами. Также в число его возможностей входит использование динамических портов транспортных протоколов для взаимодействия с устройствами NAT. Этот механизм позволяет SIP-трафику беспрепятственно транслировать адреса назначения и отправителя через таблицы NAT. При использовании данной технологии маскарадинг адресов происходит на уровне самого шлюза ALG.
Источник: voxlink.ru
SIP-телефония
IP (Internet Protocol) — межсетевой протокол передачи данных через интернет, благодаря которому устройства могут взаимодействовать. На принципе IP-телефонии базируется SIP-телефония — самый популярный на сегодня протокол передачи голосовой информации.
Session Initiation Protocol (Протокол Установления Сеанса) используется для аудио и видеоконференций, телефонии, онлайн-игр. Благодаря ему устройства чередуют запросы и ответы и корректно передают данные.
Статья поможет не путаться в понятиях IP, VoIP и SIP, зачем нужна SIP-телефония и как она работает.
Алгоритм работы SIP
Схема обмена аудио-сообщениями выглядит так:
- Специальными кодеками в момент соединения голос записывается и трансформируется из аналогового сигнала в цифровой — такой способ позволяет снизить нагрузку на сеть и ускорить связь без потери качества соединения
- Далее сигнал поступает на компьютер, СИП-телефон или смартфон другого абонента
- С помощью уникальных IP-адресов устройства находят и распознают друг друга, а затем подключаются: теперь взаимодействие ведется по SIP-протоколу
- Сигнал из цифрового снова преобразуется в аналоговый, передается на принимающее устройство и абонент на «на другом конце провода» слышит речь собеседника
Представьте, что вы планируете приобрести отделочные материалы для ремонта в офисе и на вашем телефоне установлен SIP-клиент. Магазин строительных материалов, в котором вы хотите оформить заказ, использует виртуальную автоматическую телефонную станцию с поддержкой того же протокола. Вы набираете номер, сервер смартфона ищет IP-адрес устройства “на том конце провода” и при отклике происходит соединение. Ваши голосовые сообщения сжимаются и преобразуются в цифровые данные, отправляются на сервер абонента-собеседника, дешифруются АТС и оператор магазина слышит ваш голос.
Если же с помощью SIP-программы вы пытаетесь позвонить на мобильный телефон, то алгоритм выглядит так: при неудачной попытке найти адрес абонента-собеседник сервер соединяется с устройством посредством стандартных технологий. Сигнал по прежнему сжимается и цифруется.
Разница между SIP-телефонией, VoIP и IP
Почему для определения одного и того же явления используют три разных термина? Чтобы разобраться, остановимся на каждом подробнее.
Как было сказано выше, у каждого гаджета, подключенного к сети Интернет, для передачи информации есть IP-адрес, чтобы устройства могли устанавливать соединение и обмениваться данными по межсетевому протоколу IP — он объединяет все компьютерные сети в одну.
VoIP (Voice over IP) можно перевести как “голос по Интернет-протоколу” — эту технологию создали специально для обмена данными в аудиоформате и используют для совершения звонков через Интернет, онлайн-трансляций и вебинаров, игр по сети и видеонаблюдения через камеры, передающие не только изображение, но и звук.
SIP-телефония — понятие узкое и представляет собой один из IP-протоколов. В этой разновидности телефонии используется SIP-протокол и соединение устанавливается только по этому каналу без использования других технологий.
Что нужно для совершения звонков через Интернет
Какое оборудование использовать для отправки и приема звонков через SIP:
- стационарный SIP-телефон с возможностью подключения к роутеру
- проводной телефон, подключенный к VoIP-шлюзу, который, в свою очередь, подключен к интернету
- мобильный телефон или планшет с подключением к Wi-Fi или мобильному интернету и установленным SIP-приложением
- на ноутбук или стационарный ПК также можно установить специальное приложение для звонков и подключить наушники с микрофоном
Итак, чтобы пользоваться SIP-телефонией вы должны иметь виртуальный или физический телефон и соединение с интернетом. также необходим SIP-номер и получить его можно у провайдера, который предоставит вам ID и вы сможете совершать бесплатные звонки внутри сети. URI – тоже способ идентификации, комбинация вашего ID и адреса провайдера. Он нужен для того, чтобы у вас была возможность связываться с абонентами, использующими другие сети.
Номера при этом разные. Каждый не раз звонил на номера, комбинации которых начинаются с 8-800. Они бесплатны и используются в России для служб поддержки. Привычные всем городские и междугородные номера называются прямыми. Звонки на них производятся как через обычные АТС, но сигнал лучше, так как преобразуется в цифровой.
При совершении звонка на виртуальный номер, сначала вы попадаете на сервер провайдера и только потом происходит соединение с абонентом.
В SIP-телефонии при вводе номера, также как и в сотовой связи, используется код страны: например, +7 для России.
Преимущества SIP-телефонии
Причин, по которым эта технология предпочтительнее стандартной телефонии, немало:
- Скорость подключения и настройки. Работы по телефонизации осуществляются компанией-провайдером, как правило, в течении одного дня, что удобно при переездах, когда важно непрерывно оставаться на связи с клиентами
- Экономичность. При подключении к SIP-протоколу не требуется покупать дорогостоящее оборудование. За ежемесячную абонентскую плату предоставляется многоканальный номер и качественное соединение на высокой скорости, что позволяет при необходимости легко подключать дополнительных операторов. Единственное требование — скорость интернет-соединения не менее 64 Кбит в секунду
- Возможность интегрировать с системами автоматизации. Например, подключение к CRM позволяет не только повысить эффективность за счет контроля работы операторов и менеджеров продаж, но и выявить, например, по каким каналам на вас чаще всего выходят клиенты
- Отсутствие привязки к расположению. Если вы владеете сетью с множеством филиалов в разных городах — решение с SIP-телефонией удобно возможностью создания удаленного колл-центра с отсутствием привязки к офису и даже стране
- Использование разных устройств. Для использования технологией подходят не только обычные и специализированные телефоны, но и другие устройства. Приложения доступны к установке на любом компьютере или ноутбуке, смартфоне и планшете
- Дополнительных сервисы. Пользователям доступны коммуникационные опции, среди которых запись разговоров, автоответчик, голосовое меню, переадресация и очередь звонков
- Соединение в рамках SIP-протокола защищено от внешнего прослушивания лучше, чем при пользовании аналоговыми линиями связи
Подведем итоги
Применяя SIP-протокол, организации создают экономичную сеть высокого качества и скорости для внутренней связи и общения с клиентами. Теперь, зная о разнице между терминами IP, VoIP и SIP, алгоритме работы и сферах применения, вы сможете использовать SIP-телефонию для повышения эффективности процессов в организации и качества обслуживания.
Источник: okocrm.com
Взаимодействие клиентов SIP. Часть 1
Месяц назад я начал свое знакомство с IP-телефонией, а именно с Lync и Asterisk. И заметил следующую картину: в сети очень много интересных статей по практической стороне вопроса (как и что делать) и очень мало внимания уделено теории (в конце статьи приведены ссылки). Если Вы хотите разобраться с SIP, то извольте либо читать RFC 3261, либо одну из «этих толстых книг». Это, естественно, полезно, но многим хочется в начале изучить некую выжимку, а уж потом бросаться в омут с головой. Эта статья как раз для таких людей.
Чтобы не перегружать читателя, я решил разбить статью на две части. В первой части мы рассмотрим работы протокола SIP при взаимодействии двух клиентов.
Простое взаимодействие клиентов
Взаимодействие клиентов в рамках SIP чаще всего осуществляется в виде диалога.
Диалог – это равноправное взаимодействие двух User Agent (UA) в виде последовательности SIP-сообщений между ними. При этом, существуют запросы, не образующие диалогов. Однако обо всем по-порядку.
Ниже приведен пример простого взаимодействия между двумя устройствами с поддержкой SIP:
Петр хочет начать обмен сообщениями с Иваном, для этого он посылает INVITE-сообщение с данными о типе сессии (простая, мультимедиа и т.д.). Сообщения имеют следующий формат: стартовая строка, одно или несколько полей заголовка, пустая строка, обозначающая конец полей заголовка и необязательное тело сообщения.
Стартовая строка содержит метод, Request-URI и версию SIP (актуальная – 2.0). Request-URI – это SIP-адрес ресурса, которому посылается запрос.
Поля заголовков имеют следующий формат: :
Первая строка начинается с заголовка Via. Каждое SIP-устройство, создающее или пересылающее сообщение, добавляет свой адрес в поле Via (как это происходит, я планирую показать в следующей части статьи). Обычно адрес представляет собой имя хоста, которое может быть разрешено с помощью DNS-запроса. Поле Via содержит версию SIP, знак “/”, пробел, транспортный протокол (UDP, TCP, TLS, SCTP), двоеточие, номер порта и branch – идентификатор транзакции. Ответы на этот запрос будут содержать такой же номер транзакции.
Чаще всего, значение branch начинается с “z9hG4bK”. Это значит, что запрос был сгенерирован клиентом, поддерживающим RFC 3261 и параметр уникален для каждой транзакции этого клиента.
Следующее поле, Max-Forwards, содержит относительно большое целое число. Каждый сервер SIP, который пересылает сообщение, уменьшает это число на единицу. Данное поле обеспечивает простой механизм обнаружение петель (loop).
Следом идут поля From и To, которые описывают отправителя и получателя запроса. Важно, что SIP-запросы маршрутизируются исходя из Request-URI, указанного в стартовой строке (см. выше). Это объясняется тем, что поля From и To могут быть изменены при пересылке. Если используется отображаемое имя (например, Ivan Ivanov), то SIP URI помещается внутрь пары угловых скобок.
Параметр tag в поле From генерирует отправляющая сторона. В свою очередь принимающая сторона поместит свой tag в поле To.
Поле Call-ID – идентификатор вызова. Совокупность tag’ов из полей From и To и Call-ID однозначно идентифицируют данный диалог. Это необходимо, так как между клиентами может идти сразу несколько диалогов.
Следующее поле, Cseq, содержит порядковый номер запроса и название метода. В данном случае – INVTITE. Номер увеличивается с каждым новым запросом.
Поля Via, Max-Forwards, To, From, Call-ID и CSeq составляют минимальный необходимый набор полей заголовков SIP-сообщения.
Для сообщения INVITE также необходимо поле заголовка Contact, в котором содержится SIP URI, относящийся к коммуникационному устройству отправляющей стороны. Это поле используется, чтобы из всех устройств, которыми одновременно может пользоваться Петр, ответ был отправлен именно на данное устройство. Обратите внимание на значения полей From и Contact. Первый раз я не заметил разницу:
В сообщении присутствует опциональное поле Subject, то есть тема сообщения. Некоторые SIP-клиенты могут выводить значение этого поля на экран. Для маршрутизации и идентификации диалога поле не используется и может быть произвольным.
Поля Content-Type и Content-Length отвечают за описание тела сообщения. В данном случае будет использоваться Session Description Protocol (SDP). Размер сообщения вычисляется с учетом символов перевода строки:
Детальное описание работы протокола SDP заслуживает отдельной статьи, поэтому ниже приведена только краткая расшифровка:
В ответ на INVITE SIP-клиент Ивана отправляет два сообщения: 180 Ringing и 200 OK. Первое сообщает, что на стороне Ивана SIP-клиент подает звуковой сигнал звонка, второе – подтверждает установку диалога. Разберемся с каждым из них.
Так будет выглядеть сообщение 180 Ringing:
Бледным выделен текст, который не изменился по сравнению с сообщением INVITE.
Обратите внимание на поля заголовков To и From. Несмотря на то, что данное сообщение идет со стороны Ивана, значения полей остаются такими же, как были в первоначальном запросе (от Петра к Ивану). Это объясняется тем, что данные поля определяют направление запроса, а не сообщения.
Строка Via также перекочевала из исходного запроса, в конце строки добавлен параметр received этот параметр содержит IP-адрес, с которого пришел запрос. Обычно это адрес, который может быть получен путем разрешения URI, содержащегося в Via.
Как я и обещал, в поле To добавился tag, идентифицирующий диалог. Все последующие сообщения в рамках диалога будут содержать неизменные значения tag.
Наконец, в поле Contact содержится актуальный адрес Ивана.
Так выглядит сообщение 200 ОК, которое отправил SIP-клиент Ивана:
Думаю, смысл всех полей, относящихся к протоколу SIP теперь ясен.
В ответ на 200 ОК клиент Петра отправляет подтверждение:
Данное сообщение подтверждает, что клиента Петра успешно получил ответ от клиента Ивана. Оба клиента договорились о параметрах меди-сессии, которая будет осуществляться по протоколу RTP.
Обратите внимание, что номер последовательности CSeq все еще равен единице, но в качестве метода уже стоит ACK. Параметр Branch в поле Via содержит новый идентификатор транзакции, так как ACK, отправляемый в ответ на 200 OK считает новой транзакцией.
Теперь давайте рассмотрим, как происходит завершение медиа-сессии. Клиент Петра посылает BYE-запрос для завершение сессии:
Получив запрос на завершение сессии, клиент Ивана посылает подтверждение: