- Статьи из других ресурсов
- Обзор свободно доступных и бесплатных IP АТС (Asterisk, FreeSWITCH, SipXecs, Yate)
Обзор свободно доступных и бесплатных IP АТС (Asterisk, FreeSWITCH, SipXecs, Yate)
Asterisk, FreeSWITCH, SipXecs, Yate
asterisk freeswitch sipxecs yate
Alexcr
Обзор свободно доступных и бесплатных IP АТС: Asterisk, FreeSWITCH, SipXecs, Yate. Приводятся преимущества и недостатки, сравнительный анализ функциональности и сфер применения. Делается вывод о том, что все продукты можно сочетать друг с другом.
Некоторое время назад ко мне обратился товарищ из «Открытых Систем» и попросил сделать обзор открытых IP АТС. Так как он обратился не только ко мне, а еще и к другим экспертам IP телефонии, то в результате в журнал попала компиляция, в которой мало осталось от моего оригинального обзора. Публикую его целиком на Хабре.
Вначале будет теоретическая вставка, для тех, кто не совсем в теме. Если будет скучно — просто пропустите ее! Приятного чтения! А чтобы лучше читалось, главы сопровождаются музыкальными подарками (настоятельно рекомендую наушники :-)
Поехали!
Теория
PBX (Private Branch Exhange) — английский термин, обозначающий офисную телефонную станцию, которая обеспечивает установление, поддержание и разрыв соединений между аппаратами, то есть коммутацию. PBX позволяет разделять ограниченные ресурсы (городские линии и номера) между неограниченным числом внутренних пользователей, при помощи таких телефонных функций, как внутренний номерной план, перевод звонков, постановка на удержание, и других.
Именно поэтому PBX система необходима любой организации — она позволяет эффективно организовать телефонную связь на предприятии (ну, пока еще нужна ;-)
Традиционные PBX системы коммутируют каналы (линии связи), переключая цепи электрического тока. Новые PBX системы коммутируют пакеты в сети TCP/IP, и называются IP PBX. IP PBX работает на основе протоколов IP телефонии. Также IP PBX могут поддерживать и традиционные линии связи — такие IP PBX называются гибридными. В переходный период миграции от традиционной телефонии в IP среду именно гибридные IP PBX наиболее востребованы, хотя функцию конвертации традиционных телефонных каналов в IP пакеты можно также вынести в отдельное устройство — VoIP адаптер или VoIP шлюз, который далее подключается по протоколу IP телефонии к IP PBX.
В настоящее время только два протокола IP телефонии получили широкое распространение — H.323 и SIP.
Протокол, а более правильно, стёк протоколов H.323, был разработан международным союзом электросвязи (англ. International Telecommunication Union, ITU) — международной организацией, определяющей рекомендации в области телекоммуникаций и радио. Целью создания протокола была необходимость проведения аудио и видеоконференций по современным телекоммуникационным сетям, включая цифровые и IP сети.
SIP (англ. Session Initiation Protocol — протокол установления сеанса) — стандарт на способ установления и завершения пользовательского интернет-сеанса, включающего обмен мультимедийным содержимым (видео- и аудиоконференции, мгновенные сообщения, онлайн-игры, и пр.). Разработкой протокола занималась Специальная Комиссия Интернет-разработок (Internet Engineering Task Force, IETF) — открытое международное сообщество проектировщиков, учёных, сетевых операторов и провайдеров, которое занимается развитием протоколов и архитектуры Интернета.
Протокол H.323 обладает большим стандартным набором возможностей по работе с видео конференциями (его создавали телефонисты, а интернет — одна из его рабочих сред), а протокол SIP больше приспособлен к работе в сетях TCP/IP, и более универсален (его создавали «интернетчики», и голос и видео — всего лишь одни из типов медиа контента).
Интернет победил, и в настояще время стандартом де-факто для IP телефонии считается SIP, а H.323 протокол используется в основном в системах многопользовательских видео конференций и для обмена голосовым трафиком по IP между операторами связи, хотя и в этих областях наблюдается тенденция перехода на SIP.
Таким образом, можно с уверенностью сделать вывод, что современные IP PBX системы работают на базе протокола IP телефонии SIP.
Рассмотрим архитектуру SIP подробнее.
Спецификация протокола SIP определяет клиент-серверную архитектуру. Клиент выдает запросы, с указанием того, что он хочет получить от сервера. Сервер принимает и обрабатывает запросы, выдает ответы, содержащие уведомление об успешности выполнения запроса, уведомление об ошибке или информацию, запрошенную клиентом. Обслуживание вызова распределено между различными элементами сети SIP.
Основным функциональным элементом, реализующим функции управления соединением, является абонентский терминал. Остальные элементы сети могут отвечать за маршрутизацию вызовов, а также предоставляют дополнительные сервисы. Перечислим основные элементы:
- Терминал. Когда клиент и сервер реализованы в оконечном оборудовании и взаимодействуют непосредственно с пользователем, они называются пользовательским агентским клиентом — User Agent Client (UAC), и пользовательским агентским сервером — User Agent Server (UAS). Если в устройстве присутствуют и UAC, и UAS, то оно называется пользовательским агентом — User Agent (UA), а по своей сути представляет собой терминальное оборудование SIP. Примеры UA — аппаратный или программный SIP телефон, SIP адаптер.
- Прокси-сервер (от англ. proxy — «представитель») представляет интересы пользователя в сети. Он принимает запросы, обрабатывает их и выполняет соответствующие действия. Прокси-сервер также состоит из клиентской и серверной частей, поэтому может принимать вызовы, инициировать запросы и возвращать ответы. Предусмотрено два типа прокси-серверов:
с сохранением состояний (stateful). Такой сервер хранит в своей памяти все полученные запросы и связанные с ним новые сформированные запросы до окончания транзакции.
без сохранения состояний(stateless). Такой сервер просто обрабатывает получаемые запросы и на его базе реализовать сложные, интеллектуальные услуги невозможно. - Сервер переадресации — используется для определения текущего местоположения пользователя. Сервер переадресации не терминирует вызовы и не инициирует собственные запросы, а только сообщает адрес необходимого терминала или прокси-сервера. Для этих целей он взаимодействует с сервером определения местоположения. Для осуществления соединения пользователь может не использовать сервер переадресации, если он сам знает текущий адрес требуемого пользователя.
Сервер определения местоположения пользователей. Пользователь может перемещаться в пределах сети SIP, поэтому существует механизм определения его местоположения в текущий момент времени. Сервер определения местоположения пользователей служит для хранения текущего адреса пользователя и представляет собой базу данных адресной информации.
Таким образом, спецификация протокола SIP не определяет ничего, кроме механизма установления и разрыва сессии между клиентом и сервером, а также поиска элементов сети. Поэтому SIP протокол используется одновременно с другими протоколами, реализующими пользовательские сервисы.
Одним из таких вспомогательных протоколов является SDP — Session Description Protocol, предназначенный для описания сессии передачи потоковых данных, включая телефонию, интернет-радио, приложения мультимедиа, и поточные приложения. SDP протокол описывает формат заголовков и полей, в которых SIP клиенты и серверы перечисляют свои сессионные возможности (например, поддерживаемые алгоритмы сжатия — кодеки).
Вторым необходимым протоколом является RTP (англ. Real-time Transport Protocol), который используется для непосредственной передачи трафика реального времени. Протокол RTP переносит в своем заголовке данные, необходимые для восстановления голоса или видеоизображения в приемном узле, а также данные о типе кодирования информации (JPEG, MPEG и т. п.). В заголовке данного протокола, в частности, передаются временная метка и номер пакета. Эти параметры позволяют при минимальных задержках определить порядок и момент декодирования каждого пакета, а также интерполировать потерянные пакеты. В качестве нижележащего протокола транспортного уровня, как правило, используется протокол UDP. Установление и разрыв соединения не входит в список возможностей RTP, такие действия выполняются сигнальным протоколом SIP.
Таким образом, работа SIP PBX основывается на трех основных протоколах: SIP, SDP, RTP.
Есть еще протоколы, реализующие дополнительную функциональность, например, SIP TLS и Secure RTP, добавляющие шифрование сигнализации и медиа потоков, и другие, однако основными все же являются SIP, SDP и RTP.
Однако, если SIP протокол не определяет никаких высокоуровневых функций и сервисов, тогда что же такое IP PBX на базе протокола SIP?
Что считать SIP АТС?
В настоящее время существует достаточно большое количество телекоммуникационных программных продуктов, которые отличаются друг от друга архитектурой, целевыми функциями, поддерживаемыми протоколами, популярностью, и другими параметрами. Чтобы понять, являются ли они системой IP PBX, надо рассмотреть их в соответствии со следующими критериями:
- Поддерживает ли система функции SIP регистратора? IP PBX должна знать о местонахождении своих пользователей, поэтому должна реализовывать функции SIP регистратора.
- Поддерживает ли система функции SIP прокси? IP PBX должна заниматься установкой соединений между своими пользователями, а также поддерживать информацию о состоянии этих соединений.
- Поддерживает ли система механизмы контроля над установленной SIP сессией? IP PBX должна иметь возможность прервать текущую сессию по причине поступающего более важного звонка, или для освобождения занятой линии, нужной руководителю, В архитектуре SIP такие функции выполняет так называемый Back-to-back User Agent (B2BUA). При использовании B2BU связь устанавливается не непосредственно между двумя пользователями, а между каждым из пользователей и B2BUA, и один звонок как бы превращается в две полностью независимые SIP сессии.
- Поддерживает ли система функции проксирования RTP трафика? IP PBX должна пропускать через себя медиа потоки, например, в целях записи разговоров.
- Какие дополнительные приложения доступны пользователям? Традиционно PBX системы поддерживают такие функции, как голосовая почта, конференц-связь, музыка на ожидании, статистика звонков и другие.
Целью моей статьи является обзор бесплатных IP PBX систем, распространяемых в исходном коде, которые я и буду сравнивать в соответствии с вышеперечисленными критериями. Наиболее популярными и зрелыми IP PBX системами с открытым кодом сегодня являются следующие:
- Asterisk
- FreeSWITCH
- SipXecs
- Yate
Рассмотрим их подробнее. Но сперва запустим следующий мега-трек!
Asterisk
Проект Asterisk был инициирован в 1999 году Марком Спенсером, владельцем и единственным сотрудником американской компании Linux Support Services.
Марк занимался системным администрированием и коммерческой поддержкой Linux, а также программировал на C.
Один из клиентов Марка обратился к нему с вопросом обеспечения офисной телефонии, и Марк Обнаружил, что офисные АТС стоят очень много денег. И решил написать свою АТС на базе Linux. Так родился проект под названием Asterisk.
Через некоторое время Марк основал компанию Digium, которая стала производить платы сопряжения Asterisk с традиционными телефонными сетями (через аналоговые и цифровые порты).
Вокруг Asterisk образовалось большое сообщество пользователей и разработчиков, проект стал активно развиваться.
В настоящее время Asterisk является самой популярной открытой IP АТС в мире, занимая почти 85% «рынка» open source PBX (а в целом открытые АТС занимают порядка 18% рынка PBX в USA — Открытые АТС занимают 18% рынка телефонии Северной Америки).
Название для Asterisk (от английского «звездочка», обозначение знака *) выбрали очень удачное. В IT звездочка обозначает замещение любого символа, или неограниченное количество символов. Даже штатные возможности Asterisk вызывают удивление. Модульная архитектура Asterisk позволяет легко подключать в коммутационное поле любую бизнес-логику, написанную на практически любом языке программирования, или реализованную на собственном языке диалплана Asterisk.
Приведем сокращенный список функциональных возможностей Asterisk:
- Поддерживаются как протоколы IP телефонии, так и традиционные линии связи. В сервер с Asterisk можно вставить PCI платы Digium с аналоговыми и/или цифровыми портами в нужном количестве и сочетании.
- Поддерживаются все базовые и расширенные функции АТС: голосовое меню, запись разговоров, статистика звонков, музыка на удержании, голосовая почта, постановка звонков в очередь и распределение по операторам (функции кол-центра), и многие другие.
- Напрямую поддерживается Skype (драйвер канала chan_skype от Digium), также есть небольшое WEB приложение, позволяющее вызывать Skype пользователей с кнопочных телефонов через короткие номера из записной книжки
- Поддерживается видео связь.
- Существуют приложения по распознаванию голоса и генерации речи.
- В последних версиях Asterisk поддерживается шифрование разговоров.
- Asterisk обладает простыми и хорошо документированными интерфейсами для интеграции с другими системами (AGI и AMI), что позволяет легко встраивать коммуникации в бизнес-процессы и бизнес-приложения.
- Существует большое количество всевозможных графических средств администрирования Asterisk, как платных, так и бесплатных, среди которых наиболее популярен бесплатный WEB интерфейс FreePBX. Также есть готовые дистрибутивы, позволяющие развернуть на обычном PC сервер IP PBX за считанные минуты. Наиболее популярными бесплатными дистрибутивами Asterisk являются TrixBox, Elastix. Следует сказать, что компания Digium, автор Asterisk, предлагает также коммерческое решение на базе Asterisk — SwitchVox, которое представляет из себя комплексное решение унифицированных коммуникаций. Помимо SwitchVox существует еще несколько десятков как коммерческих, так и открытых систем на базе Asterisk.
- Наконец, вокруг Asterisk собрано очень большое сообщество пользователей, разработчиков и интеграторов, которые помогают друг другу познавать и использовать все многообразие возможностей Asterisk. В рунете самое большое сообщество можно найти на сайте asterisk-support.ru, который был создан в 2004 году в целях поддержки сообщества силами самого сообщества. Также совсем недавно, в январе этого года, был запущен проект asteriskpeople.ru, на котором представлена карта сообщества Астерискеров.
В настоящее время Asterisk продолжает развиваться, еще более стремительно, чем раньше. Только за 2010 год число пользователей Asterisk удвоилось.
Если еще несколько лет назад коммерческую поддержку или индивидуальную разработку под Asterisk можно было получить только в нескольких компаниях, то сегодня десятки компаний со всех регионов России оказывают услуги технической поддержки и системной интеграции основанных на Asterisk решениях, что полностью устранило риск использования свободного ПО в бизнесе — любая компания за разумные деньги может быстро получить гарантированную помощь специалистов по Asterisk высшего класса, некоторые из которых входят в первые десятки мировых Asterisk разработчиков.
Обилие возможностей Asterisk и активное развитие также является и минусом этого продукта — новичкам сложно быстро освоить большой объем информации. Также самые «свежие» версии Asterisk могут испытывать проблемы со стабильностью в виду большого числа добавлений и изменений.
В завершение обзора Asterisk следует сказать, что Asterisk — это решение IP PBX для офиса, хотя многие операторы связи пытаются использовать систему для оказания различных сервисов для своих клиентов. Но Asterisk для этого не очень подходит, так как не очень хорошо масштабируется.
FreeSWITCH
FreeSWITCH — это программный коммутатор, создание которого было инициировано одним из бывших разработчиков Asterisk — Энтони Минессейлом (Anthony Minessale) в 2006 году. После многочисленных попыток использования Asterisk под высокой нагрузкой, Энтони высказал ряд замечаний к базовой архитектуре системы, и предложил ее сменить. Однако, автор Asterisk — Марк Спенсер, отказался менять ядро. Поэтому Энтони вышел из состава разработчиков Asterisk и создал «с нуля» свой продукт, который он назвал FreeSWITCH.
При разработке архитектуры FreeSWITCH авторами были учтены все проблемы существующих открытых программных продуктов для IP телефонии.
Поэтому одними из главных достоинств нового продукта стали стабильность работы и масштабируемость, а также кросс-платформенность — FreeSWITCH работает под управлением как Linux, так и Windows.
Другой особенностью FreeSWITCH является использование SIP стека sofia-sip от Nokia, который считается самой лучшей открытой реализацией SIP протокола, распространяемой в исходном коде. В Asterisk же chan_sip реализован с неполным соблюдением страндартов. SIP является основным протоколом работы FreeSWITCH, хотя также поддерживаются и драйверы PCI плат для интеграции с традиционной телефонией, а также другие протоколы IP телефонии.
FreeSWITCH может использоваться как SIP прокси и SIP регистратор, как Session Border Controller (SBC), транскодирующий Back-to-back User Agent (B2BUA), как сервер конференций или голосовой почты.
Также FreeSWITCH поддерживает и многие функции IP PBX, такие как перевод звонка, перехват, парковка вызова, запись разговоров, прослушивание и другие.
Однако, на сегодняшний день список приложений IP PBX, доступный для FreeSWITCH, проигрывает аналогичному в Asterisk.
Основным интерфейсом конфигурирования FreeSWITCH является текстовые файлы в формате XML, что затрудняет администрирование этой системы, тогда как в Asterisk применяются хорошо читаемые и удобные .ini файлы в формате секция / опция.
Для FreeSWITCH отсутствуют готовые к использованию графические интерфейсы по управлению, что также затрудняет его использование. А существующие GUI для FreeSWITCH (WikiPBX, FusionPBX, blue.box) далеки по функциональности от того же FreePBX для Asterisk.
Тем не менее, FreeSWITCH активно развивается. Некоторые эксперты открытых программных продуктов для телекоммуникаций называют FreeSWITCH «Asterisk killer app», другие утверждают (и я в том числе!), что для обоих продуктов есть место на рынке, так как у каждого из них своя уникальная специфика.
SipXecs
В основу продукта SipXecs заложен исходный код ПО SipXpbx, опубликованный в свободный доступ в в 2004 году компанией PingTel.
Следует сказать, что специалистами PingTel был создан один из самых первых продуктов, при помощи которых успешно взаимодействовали SIP устройства от разных производителей, и их по праву можно считать пионерами «SIPостроения». С тех пор SipXecs считается самой полной и правильной реализацией SIP RFC.
После старта SipXpbx, компания PingTel продолжала развивать свой коммерческий продукт, SIPxchange, периодически выкладывая в открытый доступ различные части кода и добавляя их в SipXpbx.
По мере того, как к открытому проекту подключались активные разработчики, стало сложным поддерживать два разных продукта, так как текущая лицензионная политика не разрешала включать открытый код, написанный энтузиастами, в состав коммерческого продукта. Для решения этой проблемы в 2007 году, PingTel меняет структуру проектов, и выкладывает остальную часть закрытого кода в общий доступ, объединяя его с SipXpbx. Новый проект получил название SipXecs.
В 2008 году PingTel поглощается компанией Nortel. Nortel уже занималась поставкой своим клиентам продукта SCS (Software Communications System), основанного на исходном коде SipXecs. Специалисты Nortel внесли большой вклад как в развитие своего коммерческого продукта SCS, так и в открытый проект SipXecs.
В 2009 году Nortel объявила себя банкротом, и права на коммерческий продукт SCS перешли к Avaya. В марте 2010 года Avaya прекратила добавление своих наработок в исходный код SipXecs. Тогда сообщество пользователей SipXecs, включая некоторых бывших сотрудников PingTel, объединилось под крышей свеже созданной компании eZuce, которая в настоящее время и занимается поддержкой и развитием проекта.
ПО SipXecs написано на языке программирования C++ и Java (на Java, в частности написан его SIP стэк с использованием библиотеки Jain SIP) и работает на ОС Linux.
Это единственная открытая IP PBX система, в ядро которой с самого начала был включен WEB интерфейс по управлению. Если Asterisk позиционируется как голосовая платформа, то разработчики SipXecs считают свой продукт «коробочным» решением унифицированных коммуникаций!
Богатый арсенал Asterisk находится в большом числе конфигурационных файлов всевозможных модулей, а также во встроенной командной строке по управлению (CLI). SipXecs управляется через WEB интерфейс, и в нем возможно сделать только то, что предусмотрено разработчиками.
Asterisk поддерживает много разнообразных телефонных интерфейсов — аналоговых, цифровых, несколько протоколов IP телефонии. SipXecs поддерживает только SIP, являясь чистым SIP решением. Весь телефонный функционал реализован в рамках спецификации протокола SIP, а также разнесен на полностью независимые компоненты, взаимодействующие по протоколам SIP / HTTP / XML-RPC, и которые могут работать как на одном, так и на разных серверах, что, кстати говоря, на новом уровне обеспечивает надежность и масштабируемость.
Если Asterisk — «многопротокольная» система, принимающая звонки из разных типов каналов, и преобразующая их в свой внутренний формат в целях обработки и коммутации (замена старым АТС), то SipXecs — это SIP прокси, который занимается маршрутизацией SIP транзакций, не пропуская через себя медиа-потоки, а замыкая их напрямую между агентскими устройствами (IP телефонами).
Однако, из сильных строн пакета SipXecs вытекают и все его слабости. Так как не проксируются медиа-потоки, невозможно реализовать некоторые важные функции PBX, например, запись разговоров. Также, возникает проблема в том случае, когда пользователь находится внутри сети с частными IP адресами — проблема NAT. Также невозможно реализовать транскодинг там, где это необходимо. Однако, этим проблемы в последних версиях SipXecs решаются при помощи пакета FreeSWITCH, который органично вписался в архитектуру SipXecs, выполняя такие функции, как сервер конференц-связи и IVR сервер.
Yate
Проект Yet Another Telephone Engine (Yate) был начат в 2004 году. Поддерживаемые операционные системы: Linux, BSD, Windows. Написан Yate на C++. Yate не использует внешних SIP библиотек, а реализует SIP стек самостоятельно.
Yate — это софтсвитч, который содержит также многие PBX функции, в частности:
- перевод, удержание и парковку вызова;
- музыку на ожидании;
- конференц-связь;
- очереди
- IVR
- статистику звонков
Однако, Yate в первую очередь — это мультипротокольный коммутатор с очень гибкими правилами маршрутизации. Yate хорошо поддерживает такие протоколы IP телефонии, как H323, IAX2, MGCP, различные уровни SS7 (MTP2, SIGTRAN), драйвера потоковых цифровых плат разных производителей.
Также Yate включает в себя механизм кластеризации, который позволяет стоить хорошо масштабируемые решения.
Архитектурно Yate использует модель микро ядра и шины сообщений, а для маршрутизации сообщений используются регулярные выражения с возможностью размещения любых сообщений на шине. Такая архитектура делает простым добавление новых модулей, не затрагивая существующего кода. Yate — самый настоящий телефонный низкоуровневый двигатель (engine).
Существует специальный свободный дистрибутив с Yate и WEB интерфейсом по управлению – FreeSentral, включающий в себя интерфейс пользователя, где он управляет своими настройками, такими как переадресация, голосовая почта, записная книга, а также может просматривать статистику своих звонков.
Среди всех рассмотренных продуктов Yate обладает наименьшим функционалом, однако то, что Yate умеет делать, делает очень хорошо и стабильно. Еще одним недостатком является недостаточная документация.
Наиболее частое применение Yate — конвертер H323-SIP сигнализации.
Заключение
Выбрать IP PBX систему для своей организации среди открытых продуктов весьма непросто.
Ситуацию ухудшает то, что все они в принципе могут работать одновременно.
По мнению автора этой статьи, следует не пожалеть времени, и самостоятельно протестировать Asterisk, FreeSWITCH и SipXecs, и выбрать для себя продукт, подходящий больше.
А может, использовать их все. Ничто не мешает использовать SipXecs в качестве опорной IP-PBX, на которой регистрируются пользователи, FreeSWITCH в качестве сервера аудио конференций, Yate в качестве SIP-H323 транслятора для подключения провайдеров связи по H323 протоколу, так как единственная реализация H323 в Yate намного лучше любой из 3-х реализаций H323 в Asterisk, и Asterisk в качестве медиа-шлюза с потоковыми платами Digium или Sangoma, а также в качестве сервера дополнительных приложений, например, селекторной видео связи.
Добро пожаловать в мир открытых и бесплатных телефонных решений!
А тем, кто дочитал до конца — музыкальный бонус! Enjoy!