что такое sip server
Что такое SIP-сервер?
SIP сервер является важнейшим компонентом IP-АТС. В основном этот сервис управляет SIP-коммутациями между SIP-клиентами / конечными точками. В литературе SIP-сервер также может называться SIP-прокси или SIP-регистратором (Registrar).
Хотя этот сервер можно считать важнейшей частью телефонной системы на базе SIP, его задачи ограничиваются управлением и поддержанием SIP-сессий. Основные задачи SIP-сервера:
Установка сеанса связи между двумя (или более) конечными точками. Например, голосовая конференция может иметь несколько конечных точек.
Согласование параметров медиа для каждой сессии между конечными точками, используя протокол SDP
Подстройка или изменение параметров сессии уже после ее начала. Например, постановка вызова на удержание.
Переключение с одной конечной точки на другую. Например, перевод вызова абонента
SIP-сервер сам по себе не обрабатывает медиапотоки – это делает отдельный медиа-сервер (Media server), используя протокол RTP. В реализациях IP-АТС практически всегда SIP-сервер и его компаньон медиа-сервер находятся на одном физическом сервере.
Однако системы с очень большой нагрузкой (например, у крупных VoIP-операторов) могут использовать медиа-сервер, установленный на другой физической машине, чтобы лучше справляться с обработкой сессий. Также возможно распределение нагрузки на несколько медиа-серверов.
Что такое SIP и как его получить
SIP (англ.: Session Initiation Protocol — протокол инициации сеанса) — дополняет VoIP, поскольку предоставляет функции безопасного подключения. Помимо VoIP, используется в других мультимедийных технологиях: онлайн-игры, видео. Был разработан вместе с протоколом — H.323, который использовался с VoIP до SIP.
Session Initiation Protocol работает с сеансами связи, которые представляют собой периоды времени, в течение которых стороны общаются. К ним относятся телефонные звонки через Интернет, мультимедийные конференции, рассылка и т. д.
SIP обеспечивает необходимое подключение для создания, изменения и завершения сеансов с одним или несколькими общающимися участниками. Осуществляет безопасную передачу данных, отправляя небольшие сообщения, состоящие из заголовка и тела.
Функции SIP
SIP — это протокол безопасного подключения для VoIP и телефонии в целом, благодаря следующим функциям:
Перевод имени и местоположение пользователя: SIP преобразует адрес в имя и, таким образом, достигает вызываемого абонента в любом месте.
Согласование функций: не все взаимодействующие стороны (которых может быть более двух) имеют необходимые функции. Например, не у всех может быть поддержка видео. SIP позволяет группе согласовывать функции.
Управление участниками вызова: SIP позволяет участнику устанавливать или отменять подключения к другим пользователям во время вызова. Пользователи также могут быть переведены в режим ожидания.
Изменения в функции вызова: SIP позволяет пользователю изменять характеристики вызова. Например, как пользователь, вы можете захотеть отключить видео, особенно когда новый участник присоединяется к сеансу.
Согласование мультимедиа: этот механизм обеспечивает возможность выбора соответствующего кодека для установления вызова между различными устройствами.
Структура сообщения SIP
SIP работает, когда передающие устройства отправляют и получают сообщения. Сообщение SIP несет много информации, которая помогает идентифицировать сеанс, контролировать время и описывать мультимедиа. Ниже приведен список содержания сообщения:
Зачем использовать SIP?
SIP позволяет людям во всем мире общаться с помощью компьютеров и мобильных устройств через Интернет. Это важная часть интернет-телефонии, позволяющая использовать преимущества VoIP (передача голоса по IP).
SIP как протокол также очень мощный и эффективный во многих отношениях. Многие организации используют SIP для внутренней и внешней связи, сосредоточенной вокруг АТС.
Как работает SIP
Вы получаете SIP-адрес, устанавливаете SIP-клиент на вашем компьютере, мобильном устройстве. Затем нужно настроить свой SIP-клиент. Есть множество технических функций и опций. Просто подготовьте свои учетные данные и заполните все необходимые поля. Настройка занимает 1-2 минуты.
Что требуется?
Если хотите общаться посредством SIP, вам необходимо:
Протокол инициации сеанса обезопасит звонки через Интернет и другие IP- сети. SIP-адрес — это уникальный идентификатор для каждого пользователя в сети. Как и номер телефона, он идентифицирует каждого пользователя в глобальной телефонной сети. Он также известен как унифицированный идентификатор ресурса.
Вы получаете SIP-адрес, когда регистрируетесь для учетной записи. Действует как дескриптор связи, который люди используют для связи с вами. SIP-адреса могут быть преобразованы в телефонные номера, которые легче отследить в качестве идентификаторов контактов.
Экономия, достижимая с помощью учетной записи SIP, составляет 40 процентов для внутренних звонков и 90 процентов для международных звонков.
Зачем нужна учетная запись SIP?
Вы используете учетную запись SIP для настройки настольных телефонов VoIP, программных телефонов и мобильных клиентов VoIP. Учетная запись SIP открывает двери для бесплатных видеозвонков и голосовых вызовов HD на многих платформах, включая компьютеры под управлением Windows и Mac, а также мобильные устройства iOS и Android. SIP-to-SIP звонки между любыми двумя SIP-адресами через Интернет почти всегда бесплатны.
Для компаний, которые имеют много международных контактов, SIP предлагает огромную экономию. Поскольку это услуга VoIP с меньшим количеством закупок оборудования и низкими затратами на техническое обслуживание.
Хотя это может показаться странным, SIP-вызов удобен только после короткого сеанса обучения. В большинстве случаев качество звука лучше, чем при использовании проводного телефона.
Малые предприятия и стартапы используют учетные записи SIP, чтобы избежать первоначальных покупок и установки оборудования, необходимых для проводных телефонных линий.
Структура SIP-адреса
SIP-адрес напоминает адрес электронной почты. Структура которого:
Например, это SIP-адрес, полученный при регистрации в Ekiga:
SIP-адрес отличается от номера телефона и адреса электронной почты тем, что он привязан к пользователю, а не к поставщику услуг, провайдеру или оператору.
Как использовать SIP-адрес
Используйте свой SIP-адрес для настройки SIP-клиента. Если вы занимаетесь бизнесом, вам понадобится служба для настройки системы и предоставления SIP-адреса для каждого сотрудника. Затем раздайте SIP-адреса своим друзьям и клиентам, чтобы между вами и ними была бесплатная голосовая и видеосвязь.
Вы можете использовать свой SIP-адрес для связи с людьми, которые не используют SIP на своих стационарных или мобильных телефонах. Для совершения вызова из IP-сети в телефонную сеть услуга платная. Люди, использующие обычные телефоны и стандартные сети, могут также позвонить вам по вашему SIP-адресу. В этом случае нужно прикрепить номер телефона к своему SIP-адресу
Для связи через Интернет SIP интересен множеством функций, связанных с голосовыми и видеозвонками, часто с участием нескольких сторон. Для этого выберите хороший SIP-клиент и наслаждайтесь.
SIP-клиен
VoIP — это широкая и расширяющаяся отрасль. SIP является частью этого, строительным блоком (важным) в структуре VoIP. Но наряду с SIP существует ряд других протоколов, используемых для голосовой и видеосвязи в IP- сетях. Например, Skype использует свою собственную архитектуру P2P.
Но, к счастью, большинство VoIP-провайдеров поддерживают SIP как в своих службах (то есть они дают вам SIP-адреса), так и в клиентских приложениях VoIP. Поскольку то, что предлагает Skype, является платным и предназначено для бизнеса вы захотите попробовать другие службы и клиенты для SIP. Существует множество поставщиков SIP-адресов и SIP-клиентов, которые предоставляют услугу связи бесплатно.
OnSIP
Бесплатный план OnSIP предоставляет решение для голосовой связи среди группы, передачи видео и обмена сообщениями. Особенности включают в себя:
Бесплатный план OnSIP заменяет программу GetOnSIP компании.
Определяемся с SIP сервером
Современный человек легко может уменьшить свои материальные затраты на связь посредствам телефонных устройств, используя возможности SIP-телефонии. Благодаря провайдерам IP-телефонии, пользователи могут не просто сэкономить немалую сумму, но и общаться с людьми из разных уголков мира по достаточно лояльной стоимости в рамках, предлагаемых ТП. Также, это удобное решение для связи внутри офиса. Чтобы наладить ее, потребуется установить соответствующий сервер на одном из рабочих ПК и провести подключение аппаратных и программных телефонных устройств. В настоящем обзоре мы проведем сравнительный анализ наиболее известных серверов этого типа, в частности работающих на бесплатной основе.
Теперь поговорим о каждом сервере детальнее, в ходе чего определимся, как произвести запуск оборудования собственноручно.
Серверы для Linux
Начнем свой обзор из анализа наиболее востребованного, точнее одного из таковых, сервера, используемого для организации IP-телефонии, а именно Asterisk. Популярный тип оборудования, который ориентирован на запуск связи в офисах.
Asterisk
Данный вариант относится больше к свободно распространяемым, хотя в нем присутствуют модули, прошедшие лицензирование. Программное обеспечение активно функционирует в ОС Linux. Форма выпуска подразумевает под собой несколько разных дистрибутивов, которые различны по функционалу, комплектами модулей дополнительного назначения и интерфейсом. Предназначено такое решение для профессионалов. К возможностям оборудования относятся:
Исходя из этого, можно сделать выводы, что этот сервер дает возможность пользователю решить даже самый сложный вопрос. К достоинствам Asterisk относятся – множество протоколов, которые поддерживаются, дополнительные модули, масштабируемость. Недостатки, также присутствуют. К ним относятся: двойная лицензия и достаточно существенная сложность в настраивании для людей, которые ранее этим не занимались.
Хоть сервер и позиционируется, как абсолютно бесплатный, в нем могут содержаться модули, которые распространяются на базе лицензии, что в отдельных случаях может вызвать определенные проблемы, неудобства.
Kamailio
Ранее проект носил несколько другое название, звучащее как OpenSER. Действующее имя он получил в 2008 году. К самым известным отнести его нельзя, особенно в сравнении с Asterisk и 3CX. Применим этот сервер в большинстве своем в профессиональном плане, так как обладает неплохим функционалом. Для решения стандартных, простых вопросов это не лучший вариант.
Что касается достоинств продукта, то сюда входит поддержка множества разноплановых модулей, способных сделать его функциональность гораздо шире. Что касается недостатков, то он только один – настройки достаточно сложные.
Данное предложение для Linux-систем, также работает на бесплатной основе. Сервер довольно простой, ориентирован на использование в рамках офисов. Функционал продукта более чем приличный. Подразумевается объемный перечень функций, необходимых для управления голосовой связью. Если применить подходящее, качественное оборудование, то это решение позволит справиться даже с максимально сложными вопросами.
Неоспоримыми достоинствами являются небольшие параметры, простота и стабильность. Благодаря ему SIP-сети местного значения разворачиваются в течение нескольких часов. Это очень удобно при необходимости оперативного налаживания связи в офисных помещениях. Существенным преимуществом выступает и то, что сервер работает на бесплатной основе. Есть и минусы. Главный из них заключается в том, что есть необходимость в навороченных Voip-шлюзов и телефонных аппаратах.
SIP-серверы для Windows
Описанные выше Linux-системы отличаются высокими показателями устойчивости и хорошее производительностью. Но для того, чтобы их применять на практике, нужны специальные знания. К обычным пользователям они настроены не очень дружественно. Чтобы исправить ситуацию, разработчики позаботились о создании продукта для Windows, более понятного и удобного. Конечно, и системных администраторов, и самих пользователей могут поджидать незначительные подводные камни, которые гораздо легче обойти, тем самым преодолев возникшие трудности.
3CX сервер
Если говорить о самых крутых предложениях для Windows, то не стоит забывать о продукте Voip-АТС 3CX Phone System. Ориентир направлен на налаживание связи корпоративного формата, при чем, самого разного масштаба. При этом не важно, где расположены офисы, хоть в разных концах мира.
Применение данного сервера дает возможность существенно снизить расходы и привнести больше удобства в телефонию офисного назначения. Разработчик позаботился об обучении пользователей. проводятся специальные мероприятия и предоставляется материал для обучения. Также, предоставляется и другая поддержка. Клиент может выбрать одну из возможных версий: бесплатную или коммерческую. Второй вариант имеет ряд дополнительных важных функций, необходимых в работе.
Бесплатный вариант является пробным, рабочим. Поэтому его можно спокойно взять за базу при налаживании IP-телефонии в офисах.
Перечень достоинств довольно объемный. Во-первых, его работа осуществляется под управлением ОС Windows. Кроме этого у него очень внушительный функционал. Также, сервер отличается гибкостью настроек. Если кол-центр вам не нужен и вполне хватает стандартной телефонии, то бесплатного решения будет достаточно. К недостаткам относят закрытость первоначального кода. Поэтому внести свои дополнения не получится, но это не так уж и страшно.
OfficeSIP Server
Этот продукт для Windows является свободно распространяемым ПО, которое работает на бесплатной основе. Самая яркая его характеристика – простота. Установить и настроить его может даже человек, который мало знаком с подобными делами. На инсталляцию и запуск уходит не более двух минут. Дальше можно спокойно создавать учетные записи тех, кто будет им пользоваться.
Чтобы звонить в разные уголки планеты, предусмотрено подключение к другим провайдерам IP-телефонии. Эта программа считается одной из лучших для небольших офисов, которым необходима связь.
Нельзя подключиться к «собственной» АТС, если находишься не в локальной сети.
Это очень удобный, доступный и, что немаловажно, бесплатный продукт для сравнительно маленьких офисных помещений.
Лучший выход
Хотите беседовать в телефонном режиме на выгодных условиях, но изучать структуру ip-телефонии желания нет? Тогда есть смысл рассмотреть готовое предложение и АТС виртуального типа, работающую бесплатно.
SIP-телефония
Большинство пользователей глобальной сети знают и даже активно используют способ передачи мультимедийных данных через Интернет – межсетевой протокол IP (Internet Protocol). Если говорить просто, то для обмена информацией, включая аудиосообщения, требуется установить IP-соединение между устройствами.
Но что такое SIP-телефония? Это один из протоколов передачи голосовой информации, который базируется на принципах IP-телефонии. Расшифровывается SIP как Session Initiation Protocol – «Протокол Установления Сеанса». Используется для множества целей – аудио и видеоконференции, телефония, онлайн-игры и другое. Протокол SIP работает по схеме «клиент-сервер-клиент», чередуя запросы и ответы.
Далее подробно остановимся на алгоритме работы, отличиях от IP и VoIP и преимуществах SIP-телефонии.
Как работает
Что такое звонок через SIP? Обмен голосовыми сообщениями выполняется по следующему алгоритму:
Детально схема соединения выглядит так: голос первого абонента передается в SIP-оператор, сжимается в цифровой сигнал и направляется через интернет на SIP-оператор второго абонента, где он преобразуется в аналоговый сигнал и подается на приемное устройство.
Что нужно для отправки и приема звонка через Интернет?
Пользователям предлагается несколько вариантов применения SIP-протокола:
Разберем на примере, что такое SIP.
Владислав планирует перелет самолетом из Пхукета в Москву на определенное время. На смартфоне у него SIP-клиент. Российская авиакомпания также имеет виртуальную АТС с поддержкой этого протокола. Владислав набирает номер компании, через сервер смартфона выполняется поиск IP-адреса авиаперевозчика. При отклике абоненты соединяются для обмена информацией.
Голосовые сообщения Владислава сжимаются и оцифровываются, после чего передаются на сервер собеседника. СИП-модуль виртуальной АТС дешифрует сигнал и передает его на устройство уже в аналоговом качестве – абонент слышит голос.
Для связи с мобильным телефоном через SIP-клиент алгоритм немного другой. Сначала сервер пытается найти IP-адрес абонента, если не может найти, то выполняется соединение с устройством напрямую стандартными технологиями. При этом сохраняется сжатие и оцифровка аналогового сигнала.
Из примера видим, что для работы SIP-телефонии необходимо интернет-соединение, а также наличие виртуального или физического телефона. Возникают вопросы, что такое SIP-номер и как его получить.
Обычно поставщик услуги предоставляет пользователям цифровую комбинацию – ID, с её помощью можно осуществлять бесплатные звонки внутри сети. Для соединения с абонентами других сетей требуется знать URI – комбинация ID и адреса провайдера.
Также клиентам выдаются стандартные телефонные номера:
Ввод комбинаций номера в SIP-телефонии аналогичен с сотовой связью, то есть используется код страны. Например, для России – (+7).
Чем отличается SIP-телефония от VoIP и IP
Если СИП-протокол – это стандарт для звонков через Интернет, тогда возникает вопрос: для каких целей применяют IP-телефонию и VoIP? Например, подключаясь к виртуальной АТС, эти технологии используются совместно, что несколько запутывает неопытных пользователей. Давайте разберемся в понятиях.
Начнем с фундамента – это Internet Protocol или IP, что означает межсетевой протокол. По нему все сетевые устройства в мире связываются в глобальную сеть. Соответственно у каждого компьютера, гаджета, сервера или прибора подключенного к интернету есть уникальный IP-адрес. С его помощью пользователи обмениваются любыми данными и информацией.
Чтобы передавать аудиоданные по сети была придумана собственная технология, ответвление Internet Protocol – VoIP, то есть Voice over IP. Переводится как «голос по IP» или проще «голос по Интернету». С помощью этой технологии пользователи могут обмениваться данными, где в каком-либо виде присутствует голос. Например, вебинары и трансляции через Интернет, звонки в сети, онлайн-игры, видеонаблюдение с оповещением и другое.
SIP-телефония представляет собой более узкое понятие, то есть разновидность IP-телефонии, выделенный протокол связи. Основное отличие в том, что соединение между абонентами осуществляется только по этому каналу, не используя другие технологии. Это позволяет привязать номер к конкретному пользователю, а не к общей локации. Например, SIP-протокол применяется в Skype, а также в сервисах отслеживания звонков call tracking.
Преимущества технологии
Звонить и поддерживать связь через Интернет сегодня намного выгоднее и практичнее, чем пользоваться традиционной телефонией. Например, SIP-технология позволяет быстро и недорого обеспечить компанию связью. Рассмотрим преимущества для бизнеса и не только:
Мы ответили на вопрос, SIP-телефония: что это и как работает. Рассмотрим, где эта технология активнее всего применяется.
СИП-телефония применяется коммерческими и государственными корпорациями, малым и средним бизнесом для создания скоростной сети внутрикорпоративного общения, а также для связи с партнерами и клиентами. Например, крупные колл-центры, торговые павильоны и мега-маркеты используют этот IP-протокол.
Обычные пользователи также применяют программы и оборудование для интернет-звонков. Технология СИП существенно сокращает расходы на телефонию.
Резюме
Мы изучили, что такое SIP. Узнали отличия этого вида интернет-телефонии от IP-связи и VoIP. Рассмотрели принцип работы, преимущества, программное обеспечение и сферу применения технологии.
СИП-телефония – эффективное и экономичное решение для стартапа, а также практичный вариант организации бизнес-процессов в корпорации, на крупных предприятиях и госорганизациях. Технология помогает вести аналитику звонков, повышать качество обслуживания клиентов и доходы компании.
Какой SIP-сервер выбрать: SER, OpenSER, Kamailio, OpenSIPS? Что в них общего и в чем разница?
У многих администраторов voip-сетей, сталкивающихся с sip-серверами слова ser, openser, kamailio, opensips вызывают по меньшей мере головокружение. Почему их так много? Почему так похожи? Какие активно развиваются, а какие уже нет? Какой в конце-концов выбрать?
Давайте обратимся к истории.
1995 год. Берлин, Германия. Группа бывших студентов профессора Henning Schulzrinne, одного из авторов технологии SIP, занимается исследованиями в области VoIP в рамках Fraunhofer Fokus, независимоой исследовательской организации в области телекоммуникаций при университете Fraunhofer. Рабочая группы во главе с Dorgham Sisalem публикует научные статьи, описывающие экспериментальную реализацию SIP и рекомендации для первых промышленных разработчиков этой технологии.
1996 год. Henning Schulzrinne и Mark Handley разрабатывают окончательную спецификацию SIP-протокола.
Март 1999 года. Первый стандарт sip-протокол принят и опубликован в RFC2543.
2001 год. Andrei Pelinescu написал первые строки SIP Express Router (SER). В то время им была реализована функция маршрутизации по принципу первого найденного маршрута в таблице, которая в скором времени была заменена на скриптовый язык SER. Также был добавлен интерфейс поддержки модулей для возможности быстрого добавления новых функций. Результаты были представлены на специально созданном для этих целей сайте iptel.org
C 2001 по 2003 год к проекту подключаются новые люди, на тот момент студенты. Разработкой модулей для SER занимаются Alex Hoffmann, Bogdan-Andrei Iancu, Daniel-Constantin Mierla, Jan Janak. Raphael Coeffic, Uli Abend и Stephan Sayer разрабатывают SIP Express Media Server. Nils Ohlmeier разрабатывает утилиту диагностики SIP-протокола SipSak. Karel Kozlik занимается разработкой web-интерфейса.
Сентябрь 2002 года. SER выходит в свободное плавание, его выпускают под лицензией GPL.
14 июня 2005 года. От проекта отделяется два центральных разработчика — Bogdan-Andrei Iancu и Daniel-Constantin Mierla. Совместно с Elena-Ramona Modroiu они образуют новый проект, OpenSER.
28 июля 2008 года проект переименовывается в Kamailio из-за конфликта с торговой маркой.
24 августа 2008. В результате конфликта между разработчиками, от Kamailio отделяется Bogdan-Andrei Iancu, который образует новый проект — Opensips.
04 ноября 2008. Происходит слияние проекта Kamailio с первоначальным SER.
Итак, на сегодня, август 2012 года, мы имеем два активно развивающихся проекта: Kamailio (или SIP router) и OpenSIPS.
Для начала давайте сравним некоторые статистические данные:
Параметр | Kamailio | OpenSIPS |
---|---|---|
Число коммитов за 2011 год | 802 | 593 |
Число коммитов за 2012 год (по август включительно) | 1199 | 1015 |
Последняя (devel) версия | 3.4 | 1.9 |
Число строк c-кода (без пустых и комментариев) | 411940 | 228301 |
Количество модулей | 145 | 117 |
Хочу обратить ваше внимание на то, что больше не значит лучше. А из данной таблицы мы можем сделать вывод о том, что оба проекта активно развиваются.
Следующее, что можно сравнить — это модули. Какие-то из них одинаковые, какие-то разные. Модули с одинаковыми названиями зачастую происходят от одних и тех же модулей раннего kamailio, но за столько лет многие функции могут различаться параметрами или названиями. Нижеприведенные данные не могут претендовать на объективность, я лишь попытался поверхностно сравнить то, что есть в одном sip-сервере, и чего нет в другом.
Kamailio | общие | OpenSIPS |
---|---|---|
Аккаунтинг и аутентификация | ||
Radius | ||
ACC_RADIUS Accounting module for RADIUS backend AUTH_RADIUS RADIUS-backend authentication module MISC_RADIUS Generic RADIUS functions, replaces avp_radius, uri_radius and group_radius | — | AAA_RADIUS RADIUS backend for the AAA API AUTH_AAA AAA-backend authentication module |
Diameter | ||
CDP C Diameter Peer — core communication engine CDP_AVP C Diameter Peer — application extensions | AUTH_DIAMETER DIAMETER-backend authentication module | — |
Поддержка скриптов на других языках | ||
---|---|---|
Kamailio | общие | OpenSIPS |
APP_LUA Execute embedded Lua scripts APP_MONO Execute embedded managed code — C#, VisualBasic.NET, Java, Java Script APP_PYTHON Execute embedded Python scripts | PERL embed execution of Perl function | CPL-C CPL interpreter module LUA Call LUA scripts from OpenSIPS cfg PYTHON Python scripting support |
Базы данных, включая nosql | ||
---|---|---|
Kamailio | общие | OpenSIPS |
DB_CASSANDRA Cassandra database server connector DB_CLUSTER Generic database connectors clustering DB_SQLITE SQLITE-backend for database API module HTABLE Generich Hash Table container in shared memory MATRIX Matrix operations MEMCACHED Memcached connector module NDB_REDIS Connector to REDIS NoSQL Database engine | DB_BERKELEY Berkeley DB driver for DB API DB_FLATSTORE Fast writing-only text-backend for database module DB_MYSQL MYSQL-backend for database API module DB_ORACLE ORACLE-backend for database API module DB_POSTGRES POSTGRES-backend for database API module DB_TEXT Text-backend for database API module DB_UNIXODBC unixODBC driver module LDAP LDAP connector PERLVDB Perl Virtual Database engine | CACHEDB_CASSANDRA Cassandra Implementation of CacheDB CACHEDB_LOCAL Local Implementation of CacheDB CACHEDB_MEMCACHED Memcached Implementation of CacheDB CACHEDB_REDIS Redis Implementation of CacheDB DB_HTTP HTTP-backend for DB API DB_VIRTUAL Middle-layer DB mixer |
* в opensips помимо DB API добавился CACHEDB API, что систематизирует работу с nosql-бэкэндами.
Поддержка черных списков | ||
---|---|---|
Kamailio | общие | |
BLST Blacklisting API for config | USERBLACKLIST User black/white listing |
Механизмы management interface | ||
---|---|---|
Kamailio | общие | OpenSIPS |
MI_RPC RPC support for Management Interface | MI_DATAGRAM DATAGRAM (unix and network) support for Management Interface MI_FIFO FIFO support for Management Interface MI_XMLRPC XMLRPC support for Management Interface | MI_HTTP — HTTP support for Management Interface |
Механизм PRESENCE | ||
---|---|---|
Kamailio | общие | OpenSIPS |
PRESENCE_CONFERENCE Extension to Presence server for conference events handling PRESENCE_PROFILE Presence server module — user profile extensions — RFC6080 PRESENCE_REGINFO Extension to Presence server for registration info replication (RFC3680) PUA_REGINFO Extension to PUA server for registration info replication (RFC3680) | PRESENCE Presence server module — common API PRESENCE_DIALOGINFO Extension to Presence server for Dialog Info PRESENCE_MWI Extension to Presence server for Message Waiting Indication PRESENCE_XML Presence server module — presence & watcher info and XCAP PUA Common API for presence user agent client PUA_BLA BLA extension for PUA PUA_DIALOGINFO Dialog-Info extension for PUA PUA_MI MI extension for PUA PUA_USRLOC USRLOC extension for PUA PUA_XMPP XMPP extension for PUA (SIMPLE-XMPP presence gateway) | PRESENCE_CALLINFO Extension to Presence server for Call-Info PRESENCE_XCAPDIFF Extension to Presence server for XCAP-DIFF event |
Поддержка XCAP | ||
---|---|---|
Kamailio | общие | |
XCAP_SERVER XCAP server implementation | XCAP_CLIENT XCAP client implementation |
Функции TLS | ||
---|---|---|
Kamailio | OpenSIPS | |
TLS TLS operations module | TLSOPS TLS operations module |
Скрытие топологии, поддержка B2B | ||
---|---|---|
Kamailio | OpenSIPS | |
TOPOH Topology hiding module | B2B_ENTITIES Back-to-Back User Agent Entities B2B_LOGIC Back-to-Back User Agent Logic MANGLER SIP mangler module |
* kamailio не поддерживает b2b, у opensips функция скрытия топологии встроена в модуль DIALOG
Поддержка RPC | ||
---|---|---|
Kamailio | ||
CTL Control connector for RPC interface (fifo, unixsock, tcp, udp) JSONRPC-C JSON-RPC client over netstrings protocol MI_RPC RPC support for Management Interface XHTTP Basic HTTP request handling server XHTTP_RPC RPC commands handling over HTTP XMLRPC XMLRPC connector for RPC interface |
Маршрутизация звонков, LCR, балансировка | ||
---|---|---|
Kamailio | общие | OpenSIPS |
LCR Least Cost Routing module PREFIX_ROUTE Execute config file route blocks based on prefix | CARRIERROUTE routing extension suitable for carriers CALL_CONTROL PrePaid application module DIALPLAN Dialplan management DISPATCHER Dispatcher module DROUTING Dynamic Routing / LCR PDT Prefix-to-Domain translator module | CLOSEDDIAL PBX-like dialling features LOAD_BALANCER Load Balancer (for calls) module |
Различные уникальные функции | ||
---|---|---|
Kamailio | OpenSIPS | |
ASYNC Asynchronous SIP request handling functions DEBUGGER Interactive config debugger DMQ Distributed Message Queue System using SIP IPTRTPPROXY NAT traversal module using kernel for media relay MQUEUE Message queue system for config file MTREE Generic memory caching system using tree indexes PDB Number portability module P_USRLOC Partitioned and distributed user location services PIPELIMIT Traffic shaping policies PURPLE Multi-protocol gateway using Purple library RTIMER Execute config route blocks on timer basis TMREC Match time recurrences defined based on RFC2445 XMLOPS XML operations in config file using XPATH | DNS_CACHE Module for caching DNS records that can be used with any Key-Value back-end EVENT_DATAGRAM Event datagram module EVENT_RABBITMQ Event RabbitMQ client module HTTPD Embedded HTTP server IDENTITY SIP Identity implementation OPTIONS OPTIONS server replier module SIGNALING SIP signaling module STUN Built-in STUN server UAC_AUTH UAC Authentication functionality UAC_REGISTRANT SIP Registrant implementation module |
Модули, дублирующие функционал конкурента или имеющие функции, включенные в ядро | ||
---|---|---|
Kamailio | OpenSIPS | |
COUNTERS Internal counter API for config IPOPS IP and DNS related operations for configuration file KEX Kamailio core extensions module PV Module holding Pseudo-Variables SANITY SIP message formatting sanity checks SDPOPS SDP operations SIPUTILS SIP utilities SQLOPS SQL operations TEXTOPSX Extra text operations TMX Transaction management extenstions module URI_DB URI operation with database support module UTILS A set of useful functions | GFLAGS Global shared flags module SIPMSGOPS SIP operations module URI Generic URI operation module XLOG Advanced logger module |
Общие модули (в первую очередь по названию, могут сильно отличаться по функциям) |
---|
ALIAS_DB Database SIP aliases module AVPOPS AVP operation module BENCHMARK Config file benchmarking CFGUTILS Different config utilities DIALOG Dialog support module DIVERSION Diversion header insertion module DOMAIN Multi-domain support module DOMAINPOLICY Policies to connect federations ENUM ENUM lookup module EXEC External exec module GROUP User-groups module with DB-backend H350 H350 implementation IMC Instant Messaging Conferencing module JABBER JABBER IM and PRESENCE interconnection module JSON JSON packing function MAXFWD Max-Forward processor module MEDIAPROXY NAT traversal module MSILO SIP message silo module NATHELPER NAT traversal helper module NAT_TRAVERSAL NAT traversal module OSP OSP peering module PATH Path support for SIP frontending PEERING Radius peering module PERMISSIONS Permissions control module PIKE Flood detector module QOS QOS (RTP) module RATELIMIT SIP traffic shaping module REGEX RegExp via PCRE library REGISTRAR SIP Registrar implementation module RLS Resource List Server implementation RR Record-Route and Route module RTPPROXY NAT traversal using RTPProxy module SEAS Sip Express Application Server (interface module) SIPCAPTURE SipCapture module SIPTRACE SipTrace module SL Stateless replier module SMS SIP-to-SMS IM gateway module SNMPStats SNMP interface for statistics module SPEEDDIAL Per-user speed-dial controller module SST SIP Session Timer support STATISTICS Script statistics support TEXTOPS Text operations module TM Transaction (stateful) module UAC UAC functionalies (FROM mangling and UAC auth) UAC_REDIRECT UAC redirection functionality USRLOC User location implementation module XMPP SIP-to-XMPP Gateway (SIP to Jabber/Google Talk) |
Многие функции дублируются разными модулями, но в каждом сервере есть и свои уникальные черты. Каждый из серверов в той или иной степени может вам больше подойти по каким-то параметрам.
kamailio продолжает развитие текущего sip-сервера.
В тоже время opensips работают над версией 2.0, которая будет принципиально отличаться по архитектуре. По мнению разработчиков, старый дизайн не может решить некоторые проблемы. Новый сервер планируется полностью асинхронным, что поможет устранить, к примеру, архитектурный недочёт с блокировками при обработке tcp-соединений.
Планируемая архитектура представляет из себя несколько последовательных уровней.
Самый низкий уровень — ядро. Оно отвечает за sip-функционал, который может быть выполнен автоматически, без конфигурации.
Следующий уровень — маршрутизация. В ней будет реализован функционал, близкий к тому, который сейчас используется для маршрутизации в opensips.
И последний уровень — уровень приложений. С его помощью можно будет выполнять операции на самом высоком уровне, используя языки такие, как python.
Вот так будет выглядеть взаимодействие приложений с ядром.
Первый альфа-релиз OpenSIPS 2.0 уже выпущен и я с нетерпением жду полноценного релиза, т.к. предложенная разработчиками архитектура должна помочь решить некоторые наболевшие проблемы, которые не в состоянии решить ни kamailio, ни opensips сегодня.
В данный момент лично я выбираю opensips, т.к. на мой взгляд у разработчиков более системный подход к организации модулей и введению api в случаях, когда это необходимо. А также из-за наличия в opensips cachedb api, B2B и встроенного STUN-сервера.
Но повторюсь, это лишь мое личное мнение, оно субъективно и, возможно, для ваших задач больше будет подходить другой сервер. В любом случае, надеюсь, что эта статья хоть немного прольет свет на отличия двух серверов тем, кто не может или не хочет с этим разбираться.