VoIP на базе SIP и его архитектура

Протокол SIP (Session Initiation Protocol)  – один из центральных протоколов IP телефонии, который описан в рекомендациях  RFC 2543. В нем описываются процессы установления и завершения мультимедийных сеансов связи.

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

Протокол SIP  в своей основе состоит из базовых принципов:

  • простота

  • совместимость с базовыми протоколами в интернет-сети

  • независимость и автономность от транспортного уровня

  • масштабируемость сети

  • взаимодействие с другими сигнальными протоколами

  • мобильность протокола

Простота SIP. Протокол реализует архитектуру клиент-сервер, и при этом использует ограниченное количество методов –  всего 6.

Мобильность. Главным преимуществом протокола SIP  является то, что пользователь может подключаться и использовать весь набор услуг не с одного конкретного места, а из любой точки сети. Такая процедура стала доступной, поскольку каждому пользователю предоставляется уникальный идентификатор. Благодаря такому идентификатору становится возможной авторизация пользователя с помощью сервера Register.

Масштабируемость сети. Количество устройств в сети увеличивается, особенно абонентские устройства. При этом сеть расширяется, но глобальная конфигурация не изменяется.

Взаимодействие протокола SIP с RTP. Поскольку протокол SIP  разрабатывал комитет IETF в ходе реализации проекта по передачи мультимедийной информации по пакетным сетям, то в SIP протокол заложили функции взаимодействия с протоколами RTP (Real-timeTransport Protocol), RSVP (ResourceReSerVation Protocol – протокол резервирования ресурсов), RSTP( RapidSpanningTree Protocol – протокол передачи потока информации реальном времени, SDP – протокол описания параметров связи.

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

Протокол SIP отличается возможностью взаимодействия с различными сигнальными протоколами не только IР-сетей, но и телефонных сетей общего пользования.

С помощью SIP  протокола вы можете организовать три вида конференций:

    1. Централизованную. Из специального сервера ведется управление тремя и более пользователями.

    2. Децентрализованное. Под контролем специального сервера каждый пользователь соединяется с каждым.

    3. Смешанное. Происходит и то, и другое.

Адресация SIP протокола

SIP протокол использует адресацию четірех типов, благодаря окторім пользователи получают мобильность.

Имя пользователя@домен

Имя пользователя@IP адрес

Имя пользователя@хост

Номер телефона@шлюз

Архитектура сети на основе протокола SIP.

Когда строится сеть, то SIP терминал получает интеллектуальные свойства. Поэтому в составе терминалов всегда есть 2 агента пользователя: UserAgentClient(UAC), UserAgentServer(UAS).

UAC генерирует запросы, а UAS обрабатывает вопросы и дает на них ответы. Сам протокол SIP реализован в SIP  сервере и  имеет отдельное место в сети. SIP серверы на сегодня используются различные, а самыми распространенными являются Ondo, Mera, Asterisk, Skype.

SIP  сервер состоит из 4 частей:

    1. Proxy сервер. Он является основным. В его функции входит представление интересов пользователя в сети, прием и обработка запросов, а также формирование ответов, в зависимости от типа запроса.  Proxy сервер состоит из 2 частей: серверной и клиентской. Благодаря этому Proxy сервер имеет интеллектуальные свойства. В его распоряжении такие функции:

    • аутентицикаця;

    • авторизация;

    • маршрутизация;

    • безопасность;

    • контроль доступа.

Также прокси-сервер может иметь функцию сохранения состояний, или не иметь ее. Без такой функции сервер работает более быстро, и соответственно, это позволяет ему обслуживать большее количество пользователей.

Если сервер сохраняет состояния, то он будет работать чуть медленнее, обслужит меньшее количество пользователей за то же время, однако работать он будет надежнее, поскольку будет использовать процедуру повторения.

2. Redirect сервер. Осуществляет переадресацию и направляет звонки Клиент получает информацию о следующем шаге пересылки сообщений.

3. Location сервер. Определяет местоположение пользователя. Также в нем хранятся временные адреса пользователей.

4. Register сервер. Данный сервер отвечает за регистрацию, а также имеет базу данных. Он обслуживает запросы от UAC для регистрации клиента. зачастую Register сервер совмещается с прокси-сервером, или сервером переадресации. Поскольку в данном сервере есть база данных, она хранит в сеье имена пользователей и их IP -адрес. Также иногда в базе данных могут хранится доменные номера или номера IP.

Все данные серверы могут объединятся друг с другом в различные комбинации. Все зависит от реализации и целей. Чтобы обеспечить установку связи и передачу трафика, клиенты и серверы пользователя начинают использовать систему передачи сообщений друг другу. При этом, самое главное – это правильная связь агентов пользователя между собой, а также с прокси-сервером.

SIP протокол сообщения имеет 2 типов: это запросы и ответы.

Чтобы установить соединение по протоколу SIP, существует три алгоритма:

  • с участием прокси-сервера

  • с участием сервера переадресации

  • установление протокола непосредственно между пользователями

Чаще всего среди пользователей встречается сценарий установки соединения с участием прокси-сервера.

При нем пользователь А запрашивает установку соединения, посылая  «INVITE» на конкретный адрес сервера, который ему заранее известен. По умолчанию используется порт 5060. В данном запросе уже указан адрес пользователя, который вызывается.

Далее прокси-сервер посылает запрос серверу определения месторасположения, чтобы узнать текущий адрес вызываемого пользователя. Соответственно,               прокси-сервер получает ответ на свой вопрос.

После того, как адрес другого пользователя уточняется, прокси-сервер пересылает запрос «INVITE» уже непосредственно пользователю Б. Запрос имеет в себе данные о функциональных возможностях пользователя, который вызывается. Однако, в запрос добавляется поле «via», в котором значится адрес прокси-сервера, чтобы все ответы шли через него.

Оборудования пользователя Б посылает вызов, а прокси-сервер передает сообщение 180 «RINGING» (также вместо этого сообщения может передаваться 183 «Session Progress»). В переводе это означает, что “запрос обрабатывается”.

Затем прокси-сервер отправляет «RINGING» сообщение пользователю, которого вызывают.

Когда пользователь Б принимает его, то оборудование извещает об этом прокси-сервер сообщением 200 “Ок”.

Сервер подтверждает принятие сообщение – отправляет сообщение «ACK». Затем устанавливается соединение и начинается обмен данными.

Когда разговор завершается, наступает фаза закрытия сессии разговора. Одна из сторон отсылает сообщение «BYE», которое передается на обе стороны. Сторона, которая вызывала, подтверждает его сообщением 200 «OK».