SIP-телефония

Вместо вступления…

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

Целью данной статьи является поверхностное рассмотрение возможностей IP-телефонии, использующей протокол SIP, для ознакомления с общими принципами ее работы.

Протокол SIP (Session Initiat Protocol, протокол установки соединения) не является первопроходцем в области IP-телефонии. Протокол H.323 уже давно используется для целей IP-телефонии, однако изначально он не разрабатывался для IP-сетей, что снижает "оптимальность" их совместной работы. За годы работы с протоколом H.323 накоплен большой опыт использования, который позволил выявить как его положительные черты, так и недостатки, которые были учтены при разработке протокола SIP.

Протокол H.323 использует двоичный формат. Одним из следствий этого является необходимость стандартизации всех возможностей данного протокола, так как в случае если определенная возможность не поддерживается устройством, то такие устройства из-за двоичного формата не смогут работать друг с другом. SIP-протокол использует текстовый формат сообщений, если одному из устройств не знаком определенный тип сообщения или заголовка, то оно просто игнорируется (как и в HTTP, который по своему формату очень похож формат протокола SIP). К тому же сам протокол SIP значительно проще H.323.

Возможности протокола SIP

Основные преимущества протокола SIP:

1. Масштабируемость — возможность увеличения количества клиентов при расширении сети.

2. Мобильность — возможность получения сервиса вне зависимости от местоположения (как например электронная почта), а каждому пользователю выдается персональный идентификатор, по которому он может быть найден.

3. Расширяемость — возможность дополнения протокола новыми функциями (за счет введения новых заголовков и сообщений). Как уже говорилось выше, если устройству встречается неизвестное ему расширение протокола, оно попросту игнорируется. Так как протокол H.323 использует сообщения двоичного формата, то неизвестные функции могут привести к невозможности предоставления сервиса.

Протокол SIP разрабатывался с расчетом на возможность использования любых транспортов, но, тем не менее, наиболее предпочтительным является использование UDP-пакетов (это позволяет повысить производительность по сравнению с использованием протокола TCP, но требует использования дополнительных механизмов проверки доставки сигнальных сообщений).

Так как телефония с использованием протокола SIP позволяет использовать большое количество разнообразных сервисов (помимо передачи голоса, возможна передача видео, текстовых сообщений, факсов и др.), необходим механизм обмена информацией о том, какие сервисы может использовать вызываемаявызывающая стороны. Для этой цели используется протокол SDP (Session Description Protocol) — протокол описания сессии. Данный протокол позволяет определить какие звуковые (видео и другие) кодеки и иные возможности может использовать удаленная сторона.

Собственно сама передача голоса осуществляется благодаря использованию протокола RTP (Real-time Transport Protocol, протокол транспортировки в реальном времени). Сам протокол SIP непосредственного участия в передаче голосовых, видео и других данных не принимает, он отвечает только за установление связи (по протоколам SDP, RTP и др.), поэтому под SIP-телефонией понимается не передача голоса по протоколу SIP, а передача голоса с использованием протокола SIP. Использование протокола SIP предоставляет новые возможности установления соединений (а также возможность беспроблемного расширения данных возможностей), а не непосредственной передачи голосового и других видов трафика.

Формат адресов используемых протоколом SIP напоминает формат E-Mail-адреса: имя@идентификатор_хоста. В начале адреса ствится приставка "sip:" (пример: sip:user@host.com). В качестве идентификатора хоста может служить его IP-адрес, домен или имя хоста (IP-адрес определяется с использованием DNS, так что в итоге все равно получается обращение по адресу sip: имя@IP-адрес).

Архитектура SIP-сети

Стандартными элементами в SIP-сети являются:

1. User Agent: по протоколу SIP устанавливаются соединения "клиент-сервер". Клиент устанавливает соединения, а сервер принимает вызовы, но так обычно телефонный аппарат (или программный телефон) может как устанавливать так и принимать звонки, то получается что он одновременно играет роль и клиента и сервера (хотя в реализации протокола это не является обязательным критерием) — в этом случае его называют User Agent (UA) или терминал.

2. Прокси-сервер: прокси сервер принимает запросы и производит с ним некоторые действия (например определяет местоположение клиента, производит переадресацию или перенаправление вызова и др.). Он также может устанавливать собственные соединения. Зачастую прокси-сервер совмещают с сервером определения местоположения (Register-сервер), в таком случае его называют Registrar-сервером.

3. Сервер опредления местоположения или сервер регистрации (Register): данный вид сервера служит для регистрации пользователей. Регистрация пользователя производится для определения его текущего IP-адреса, для того чтобы можно было произвести вызов user@IP-адрес. В случае если пользователь переместится в другое место и/или не имеет определенного IP-адреса, его текущий адрес можно будет определить после того, как он зарегистрируется на сервере регистрации. Таким образом клиент останется доступен по одному и тому же SIP-адресу вне зависимости от того, где на самом деле находится.

4. Сервер переадресации: обращается к серверу регистрации для определения текущего IP-адреса пользователя, но в отличие от прокси сервера только "переадресует" клиента, а не устанавливает собственные соединения.

Прокси-серверы в SIP-сети также могут вносить изменения в передаваемые сообщения — это позволяет беспрепятственно преодолевать NAT в случае если прокси-сервер стоит на NAT-маршрутизаторе (также возможна настройка прокси сервера, находящегося за NAT в случае если на последнем невозможно установить прокси сервер — для этого потребуется задать параметры переадресации так, чтобы получился прокси-сервер стал "виртуальным сервером"). Помимо этого прокси-серверы можно объединять в "цепочки", которые позволяют использовать телефонию, даже если конечная точка (UA) находится сразу за несколькими NAT-шлюзами.

Сообщения SIP

Сообщения SIP-протокола имеют следующую структуру:

  • Стартовая строка (start-line)
  • Заголовки сообщения (*message-header)
  • Пустая строка (CRLF)
  • Тело сообщения

Стартовая строка различается в зависимости от того является ли сообщение запросом или ответом (в случае запроса — в ней сообщается тип запроса, адресат и номер версии протокола, а в случае ответа — номер версии протокола, статус и текстовую расшифровку статуса).

В заголовках содержатся сведения об источнике, адресате, пути следования сообщения и др. Этих заголовков может быть достаточно много и это количество может меняться на пути следования пакетов.

В протоколе SIP версии 2.0 существует 6 типов запросов (тип запроса задается в стартовой строке):

  • INVITE — вызывает адресата для установления связи. С помощью этого сообщения адресату передаются виды поддерживаемых сервисов (которые могут быть использованы инициатором сеанса), а также виды сервисов, которые желает передавать инициатор связи
  • ACK — сообщение подтверждающее согласие адресата установить соединения. В этом сообщении могут быть переданы окончательные параметры сеанса связи (окончательно выбираются виды сервисов и их параметры которые будут использованы)
  • Cancel — отмена ранее переданных запросов (используется в случае если необходимости в них больше нет)
  • BYE — запрос завершения соединения
  • Register — данным запросом пользователь идентифицирует свое текущее местоположение
  • OPTIONS — запрос информации о функциональных возможностях терминала (применяется в случае, если эти данные нужно получить до установления соединения, то есть до фактического обмена данной информацией с помощью запросов INVITE и ACK)

На каждый запрос, отправителю направляется ответ, содержащий код результата выполнения запроса. Формат этих ответов унаследован от протокола HTTP. Ответы кодируются 3-хзначным числом, первая цифра которого указывает на класс ответов, а остальные две — идентифицируют конкретный ответ в каждом классе. Устройство может не знать, что означает код ответа, но должно обязательно знать класс ответа. Всего существует 6 классов ответов:

  • 1?? — информационные ответы
  • 2?? — успешное окончание запроса
  • 3?? — информация об изменения местоположения вызываемого абонента
  • 4?? — информация об ошибке
  • 5?? — информация об ошибке сервера
  • 6?? — информация о невозможности вызова абонента (пользователя с таким адресом не существует, или пользователь отказывается принять вызов)

Информационные ответы сообщают о стадии выполнения запроса, они не являются завершением запроса. Остальные же классы ответов завершают выполнение запроса.

Пример

Рассмотрим пример процесса установления соединения с использованием SIP-протокола (пример взят из RFC 3261). Данный пример отражает работу базовых функций телефонии и соответственно не затрагивает такие возможности как видеосвязь передача текстовых сообщений и др. — общий принцип работы протокола остается неизменным.


рис. 1 (RFC 3261)

Пользователь Alice (sip:alice@atlanta.com) вызывает пользователя Bob (sip:bob@biloxi.com).

1. Пользователь Alice посылает сообщение INVITE прокси-серверу по умолчанию (atlanta.com) Если бы пользователю Alice был известен IP-адрес пользователя Bob и он мог к нему обратиться напрямую, то запрос INVITE в этом случае мог быть послан непосредственно вызываемому пользователю.

2. Прокси-сервер посылает запрос INVITE серверу вызываемого абонента (biloxi.com).

3. Далее прокси-сервер пользователя Bob при необходимости определяет его текущий IP-адрес и посылает ему сообщение INVITE — у пользователя начинает звонить телефон, о чем сообщается в ответе 180 (Ringing).

4. Если вызываемый пользователь ответил на звонок, то на запрос INVITE высылается ответ 200 (OK).

5. Вызывающий пользователь отправляет сообщение ACK, сообщающее вызываемому о том, что он получил ответ на свой запрос INVITE, им задаются окончательные параметры соединения. На этом этапе все готово к установлению соединения по протоколу RTP (Real-time Transport Protocol).

6. Устанавливается RTP-соединение с заранее согласованными параметрами.

7. Для завершения соединения, завершающим пользователем (кладет трубку) высылается запрос BYE, на которое высылается ответ 200 (OK)

Пока сообщения установления соединения (INVITE) ходят между прокси-серверами и неизвестно доступен ли вызываемый пользователь, в ответ на INVITE посылается ответ 100 (Trying), сообщающий о попытке установления соединения.

Так как прокси-сервер может устанавливать собственные соединения, его использование позволяет вызовам без проблем преодолевать NAT. Также возможно построение нескольких прокси-серверов в одну цепочку, что позволяет преодолевать сразу несколько NAT.

Кодеки

Для передачи звука и видео используются различные алгоритмы сжатия и кодирования данных. Эти алгоритмы называются кодеками. Различные кодеки используют различную ширину полосы пропускания, а также вносят различные задержки и обеспечивают различное качество сервиса. Для звуковых кодеков обычно ширина полосы пропускания составляет от 4-х до 64 кбит/с.

Методика тестирования

Основное направления тестирования SIP-телефонии заключается в рассмотрении качества передачи голоса при ограничении ширины полосы пропускания. Также будет рассматриваться качество передачи голоса при динамическом изменении числа сеансов IP-телефонии и изменении загруженности канала связи. При тестировании IP-маршрутизаторов будет также рассматриваться поведение потоков трафика при установлении сеансов IP-телефонии.

Более четкая методика будет разрабатываться по мере нарастания основательной базы результатов тестирования SIP-оборудования различных производителей.

Заключение

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

 




14 июля 2006 Г.

SIP-���������

SIP-���������

������ ����������…

� ��������� ����� ����������� ���������� ������� � ����������� IP-���������, ������������� ������� ��������� � ������������ ���� ������� ��������� ���������� �����. ��� ���� ���������� ��������� ������������� ���� ��������, ��� ��������� ����� ������� "���������� ���������", � ������������� ��������� ������������� ������������ �������� ��������.

����� ������ ������ �������� ������������� ������������ ������������ IP-���������, ������������ �������� SIP, ��� ������������ � ������ ���������� �� ������.

�������� SIP (Session Initiat Protocol, �������� ��������� ����������) �� �������� �������������� � ������� IP-���������. �������� H.323 ��� ����� ������������ ��� ����� IP-���������, ������ ���������� �� �� �������������� ��� IP-�����, ��� ������� "�������������" �� ���������� ������. �� ���� ������ � ���������� H.323 �������� ������� ���� �������������, ������� �������� ������� ��� ��� ������������� �����, ��� � ����������, ������� ���� ������ ��� ���������� ��������� SIP.

�������� H.323 ���������� �������� ������. ����� �� ��������� ����� �������� ������������� �������������� ���� ������������ ������� ���������, ��� ��� � ������ ���� ������������ ����������� �� �������������� �����������, �� ����� ���������� ��-�� ��������� ������� �� ������ �������� ���� � ������. SIP-�������� ���������� ��������� ������ ���������, ���� ������ �� ��������� �� ������ ������������ ��� ��������� ��� ���������, �� ��� ������ ������������ (��� � � HTTP, ������� �� ������ ������� ����� ����� ������ ��������� SIP). � ���� �� ��� �������� SIP ����������� ����� H.323.

����������� ��������� SIP

�������� ������������ ��������� SIP:

1. ���������������� — ����������� ���������� ���������� �������� ��� ���������� ����.

2. ����������� — ����������� ��������� ������� ��� ����������� �� �������������� (��� �������� ����������� �����), � ������� ������������ �������� ������������ �������������, �� �������� �� ����� ���� ������.

3. ������������� — ����������� ���������� ��������� ������ ��������� (�� ���� �������� ����� ���������� � ���������). ��� ��� ���������� ����, ���� ���������� ����������� ����������� ��� ���������� ���������, ��� �������� ������������. ��� ��� �������� H.323 ���������� ��������� ��������� �������, �� ����������� ������� ����� �������� � ������������� �������������� �������.

�������� SIP �������������� � �������� �� ����������� ������������� ����� �����������, ��, ��� �� �����, �������� ���������������� �������� ������������� UDP-������� (��� ��������� �������� ������������������ �� ��������� � �������������� ��������� TCP, �� ������� ������������� �������������� ���������� �������� �������� ���������� ���������).

��� ��� ��������� � �������������� ��������� SIP ��������� ������������ ������� ���������� ������������� �������� (������ �������� ������, �������� �������� �����, ��������� ���������, ������ � ��.), ��������� �������� ������ ����������� � ���, ����� ������� ����� ������������ ����������\���������� �������. ��� ���� ���� ������������ �������� SDP (Session Description Protocol) — �������� �������� ������. ������ �������� ��������� ���������� ����� �������� (����� � ������) ������ � ���� ����������� ����� ������������ ��������� �������.

���������� ���� �������� ������ �������������� ��������� ������������� ��������� RTP (Real-time Transport Protocol, �������� ��������������� � �������� �������). ��� �������� SIP ����������������� ������� � �������� ���������, ����� � ������ ������ �� ���������, �� �������� ������ �� ������������ ����� (�� ���������� SDP, RTP � ��.), ������� ��� SIP-���������� ���������� �� �������� ������ �� ��������� SIP, � �������� ������ � �������������� ��������� SIP. ������������� ��������� SIP ������������� ����� ����������� ������������ ���������� (� ����� ����������� �������������� ���������� ������ ������������), � �� ���������������� �������� ���������� � ������ ����� �������.

������ ������� ������������ ���������� SIP ���������� ������ E-Mail-������: ���@�������������_�����. � ������ ������ ������� ��������� "sip:" (������: sip:user@host.com). � �������� �������������� ����� ����� ������� ��� IP-�����, ����� ��� ��� ����� (IP-����� ������������ � �������������� DNS, ��� ��� � ����� ��� ����� ���������� ��������� �� ������ sip: ���@IP-�����).

����������� SIP-����

������������ ���������� � SIP-���� ��������:

1. User Agent: �� ��������� SIP ��������������� ���������� "������-������". ������ ������������� ����������, � ������ ��������� ������, �� ��� ������ ���������� ������� (��� ����������� �������) ����� ��� ������������� ��� � ��������� ������, �� ���������� ��� �� ������������ ������ ���� � ������� � ������� (���� � ���������� ��������� ��� �� �������� ������������ ���������) — � ���� ������ ��� �������� User Agent (UA) ��� ��������.

2. ������-������: ������ ������ ��������� ������� � ���������� � ��� ��������� �������� (�������� ���������� �������������� �������, ���������� ������������� ��� ��������������� ������ � ��.). �� ����� ����� ������������� ����������� ����������. �������� ������-������ ��������� � �������� ����������� �������������� (Register-������), � ����� ������ ��� �������� Registrar-��������.

3. ������ ���������� �������������� ��� ������ ����������� (Register): ������ ��� ������� ������ ��� ����������� �������������. ����������� ������������ ������������ ��� ����������� ��� �������� IP-������, ��� ���� ����� ����� ���� ���������� ����� user@IP-�����. � ������ ���� ������������ ������������ � ������ ����� �/��� �� ����� ������������� IP-������, ��� ������� ����� ����� ����� ���������� ����� ����, ��� �� ���������������� �� ������� �����������. ����� ������� ������ ��������� �������� �� ������ � ���� �� SIP-������ ��� ����������� �� ����, ��� �� ����� ���� ���������.

4. ������ �������������: ���������� � ������� ����������� ��� ����������� �������� IP-������ ������������, �� � ������� �� ������ ������� ������ "������������" �������, � �� ������������� ����������� ����������.

������-������� � SIP-���� ����� ����� ������� ��������� � ������������ ��������� — ��� ��������� ���������������� ������������ NAT � ������ ���� ������-������ ����� �� NAT-�������������� (����� �������� ��������� ������ �������, ������������ �� NAT � ������ ���� �� ��������� ���������� ���������� ������ ������ — ��� ����� ����������� ������ ��������� ������������� ���, ����� ��������� ������-������ ���� "����������� ��������"). ������ ����� ������-������� ����� ���������� � "�������", ������� ��������� ������������ ���������, ���� ���� �������� ����� (UA) ��������� ����� �� ����������� NAT-�������.

��������� SIP

��������� SIP-��������� ����� ��������� ���������:

  • ��������� ������ (start-line)
  • ��������� ��������� (*message-header)
  • ������ ������ (CRLF)
  • ���� ���������

��������� ������ ����������� � ����������� �� ���� �������� �� ��������� �������� ��� ������� (� ������ ������� — � ��� ���������� ��� �������, ������� � ����� ������ ���������, � � ������ ������ — ����� ������ ���������, ������ � ��������� ����������� �������).

� ���������� ���������� �������� �� ���������, ��������, ���� ���������� ��������� � ��. ���� ���������� ����� ���� ���������� ����� � ��� ���������� ����� �������� �� ���� ���������� �������.

� ��������� SIP ������ 2.0 ���������� 6 ����� �������� (��� ������� �������� � ��������� ������):

  • INVITE — �������� �������� ��� ������������ �����. � ������� ����� ��������� �������� ���������� ���� �������������� �������� (������� ����� ���� ������������ ����������� ������), � ����� ���� ��������, ������� ������ ���������� ��������� �����
  • ACK — ��������� �������������� �������� �������� ���������� ����������. � ���� ��������� ����� ���� �������� ������������� ��������� ������ ����� (������������ ���������� ���� �������� � �� ��������� ������� ����� ������������)
  • Cancel — ������ ����� ���������� �������� (������������ � ������ ���� ������������� � ��� ������ ���)
  • BYE — ������ ���������� ����������
  • Register — ������ �������� ������������ �������������� ���� ������� ��������������
  • OPTIONS — ������ ���������� � �������������� ������������ ��������� (����������� � ������, ���� ��� ������ ����� �������� �� ������������ ����������, �� ���� �� ������������ ������ ������ ����������� � ������� �������� INVITE � ACK)

�� ������ ������, ����������� ������������ �����, ���������� ��� ���������� ���������� �������. ������ ���� ������� ����������� �� ��������� HTTP. ������ ���������� 3-�������� ������, ������ ����� �������� ��������� �� ����� �������, � ��������� ��� — �������������� ���������� ����� � ������ ������. ���������� ����� �� �����, ��� �������� ��� ������, �� ������ ����������� ����� ����� ������. ����� ���������� 6 ������� �������:

  • 1?? — �������������� ������
  • 2?? — �������� ��������� �������
  • 3?? — ���������� �� ��������� �������������� ����������� ��������
  • 4?? — ���������� �� ������
  • 5?? — ���������� �� ������ �������
  • 6?? — ���������� � ������������� ������ �������� (������������ � ����� ������� �� ����������, ��� ������������ ������������ ������� �����)

�������������� ������ �������� � ������ ���������� �������, ��� �� �������� ����������� �������. ��������� �� ������ ������� ��������� ���������� �������.

������

���������� ������ �������� ������������ ���������� � �������������� SIP-��������� (������ ���� �� RFC 3261). ������ ������ �������� ������ ������� ������� ��������� � �������������� �� ����������� ����� ����������� ��� ���������� �������� ��������� ��������� � ��. — ����� ������� ������ ��������� �������� ����������.


���. 1 (RFC 3261)

������������ Alice (sip:alice@atlanta.com) �������� ������������ Bob (sip:bob@biloxi.com).

1. ������������ Alice �������� ��������� INVITE ������-������� �� ��������� (atlanta.com) ���� �� ������������ Alice ��� �������� IP-����� ������������ Bob � �� ��� � ���� ���������� ��������, �� ������ INVITE � ���� ������ ��� ���� ������ ��������������� ����������� ������������.

2. ������-������ �������� ������ INVITE ������� ����������� �������� (biloxi.com).

3. ����� ������-������ ������������ Bob ��� ������������� ���������� ��� ������� IP-����� � �������� ��� ��������� INVITE — � ������������ �������� ������� �������, � ��� ���������� � ������ 180 (Ringing).

4. ���� ���������� ������������ ������� �� ������, �� �� ������ INVITE ���������� ����� 200 (OK).

5. ���������� ������������ ���������� ��������� ACK, ���������� ����������� � ���, ��� �� ������� ����� �� ���� ������ INVITE, �� �������� ������������� ��������� ����������. �� ���� ����� ��� ������ � ������������ ���������� �� ��������� RTP (Real-time Transport Protocol).

6. ��������������� RTP-���������� � ������� �������������� �����������.

7. ��� ���������� ����������, ����������� ������������� (������ ������) ���������� ������ BYE, �� ������� ���������� ����� 200 (OK)

���� ��������� ������������ ���������� (INVITE) ����� ����� ������-��������� � ���������� �������� �� ���������� ������������, � ����� �� INVITE ���������� ����� 100 (Trying), ���������� � ������� ������������ ����������.

��� ��� ������-������ ����� ������������� ����������� ����������, ��� ������������� ��������� ������� ��� ������� ������������ NAT. ����� �������� ���������� ���������� ������-�������� � ���� �������, ��� ��������� ������������ ����� ��������� NAT.

������

��� �������� ����� � ����� ������������ ��������� ��������� ������ � ����������� ������. ��� ��������� ���������� ��������. ��������� ������ ���������� ��������� ������ ������ �����������, � ����� ������ ��������� �������� � ������������ ��������� �������� �������. ��� �������� ������� ������ ������ ������ ����������� ���������� �� 4-� �� 64 ����/�.

�������� ������������

�������� ����������� ������������ SIP-��������� ����������� � ������������ �������� �������� ������ ��� ����������� ������ ������ �����������. ����� ����� ��������������� �������� �������� ������ ��� ������������ ��������� ����� ������� IP-��������� � ��������� ������������� ������ �����. ��� ������������ IP-��������������� ����� ����� ��������������� ��������� ������� ������� ��� ������������ ������� IP-���������.

����� ������ �������� ����� ��������������� �� ���� ���������� ������������� ���� ����������� ������������ SIP-������������ ��������� ��������������.

����������

�� ��������� �������������� ������������ IP-���������, ������������ SIP-��������� ����� ����� � ����� ����� ����� ����� ������������ ����� ����� IP-��������� � �����, ������� ���� ������������� ��������� �� SIP ������� �������. �� ��� �� ��������� ������ ����������� �������� � SIP-��������� (� �������������� ������������ ������������� SIP-��������) �� ������� �������� ������������� �������� ��� ��� �� 2006 ���. �� ���� ������� �� ������ ������������ ������������� �������� SIP �������� ������� ������ ��������, ���������� � ������� ������������.