Flavio E. Goncalves подготовил сравнительный обзор двух основных открытых пакетов для для реализации VoIP телефонии: Asterisk и OpenSER.
Архитектура
Asterisk — это Back to Back пользовательский агент (B2BUA), в то время, как OpenSER является SIP прокси. В этом их основное различие. Архитектура SIP прокси быстрее, чем B2BUA, потому что имеет дело только с управляющими сигналами, в то время, как последняя контролирует еще и медиа трафик, открывая возможность трансляции между кодеками G729<->G.711, протоколами SIP<->H323 и добавляя такие свойства, как IVR, очередность вызовов и голосовые функции.
Nat Traversal
OpenSER намного лучше работает с NAT. В большинстве случаев (несимметричный NAT) медиа поток можно посылать напрямую провайдеру. Прямое манипулирование SIP протоколом позволяет обеспечивать работу в таких случаях, когда пользователи находятся за одним и тем же NAT и обмен данными осуществляется напрямую между ними.
Балансировка трафика
Для балансировки трафика у OpenSER есть специальных хеширующий алгоритм. С его помощью может осуществляться балансировка по «ruri», "username", "call-id" и другим свойствам вызова. Так же может использоваться перенаправление сообщений, потребляющее очень мало ресурсов компьютера. Эти функции, а так же восстановление при отказе не входят в комплект Asterisk, но хорошо дополняет список характеристик IP АТС .
Низкоуровневый доступ к SIP заголовкам и транзакциям
OpenSER открывает низкоуровневый доступ к протоколу, позволяя обрабатывать запросы и ответы на них. Это предоставляет возможность транслировать обмен между двумя несовместимыми версиями SIP, преобразуя SIP пакеты. Такое свойство может потребоваться, когда необходимо обеспечить взаимодействие между несовместимыми SIP серверами различных производителей.
Взаимодействие с Radius, Diameter с LDAP
OpenSER имеет встроенный модуль для работы с LDAP, Radius и Diameter, который написан на Си и входит в дистрибутив. В отличие от Asterisk никаких дополнительных пакетов, типа perl, python или других устанавливать не требуется.
Маршрутизация уровня провайдера
Модуль CARRIERROUTE реализует изощренный алгоритм маршрутизации вызовов в обычную телефонную сеть. Таблицы некоторых крупных VoIP провайдеров содержат более 40 000 маршрутов. В этом случае абсолютно необходим специальный модуль, отвечающий за выбор маршрута при отказе, черные списки и другие функции.
Медиа сервисы
OpenSER — это SIP прокси и не может быть использован для предоставления медиа услуг, таких как голосовая почта, распознавание речевых команд, IVR и TTS. Тем не менее существует возможность реализации этих услуг с помощью отдельного медиа-сервера, такого как Asterisk, Yate или FreeSwitch.
Интеграция с обычной телефонной сетью.
Для соединения OpenSER с аналоговой телефонной сетью необходим отдельный SIP шлюз. Не существует специальных компьютерных карт, которые могли бы быть использованы для этой цели. В некоторых случаях роль шлюза может выполнять Asterisk.
Заключение
Asterisk и OpenSER хорошо дополняют друг друга. OpenSER предлагает провайдерам надежный сервис, способный обслуживать большое количество вызовов, распределять трафик, работать с NAT и модифицировать SIP управляющие сигналы. Asterisk имеет сильные позиции на рынке решений IP телефонии, его легче настраивать и он хорошо подходит для обработки небольшого объема вызовов. Архитектурно Asterisk может быть выполнен в виде отдельного сервера, выполняющего весь спектр VoIP функций. OpenSER используется крупными провайдерами и университетами, в то время как Asterisk больше подходит в качестве IP мини АТС.
|