Сравнение производительности и нагрузочное тестирование chan_sip и pjsip
Введение Технологии не стоят на месте и на смену нашему любимому chan_sip пришел его более навороченный братишка pjsip. Но везде ли уместно его использовать? Эффективнее ли он использует возможности «железа» наших серверов? В данной статье мы рассмотрим процесс нагрузочного тестирования с помощью связки sipp и htop и сравним результаты для chan_sip и pjsip. Будет собрано […]
Введение
Технологии не стоят на месте и на смену нашему любимому chan_sip пришел его более навороченный братишка pjsip. Но везде ли уместно его использовать? Эффективнее ли он использует возможности «железа» наших серверов? В данной статье мы рассмотрим процесс нагрузочного тестирования с помощью связки sipp и htop и сравним результаты для chan_sip и pjsip. Будет собрано 2 стенда (для Asterisk версий 13 и 15), в каждом будет по 2 виртуальные машины с установленными на них voxlink Distro на базе CentOS 6.10 (c chan_sip) и FreePBX Distro на базе SangomaLinux 7.5 (c pjsip) в одной локальной сети. На всех виртуалках «железо» будет одинаковое:
- Процессор — Intel(R) Xeon(R) CPU E3-1226 v3 @ 3.30GHz
- Оперативная память – 1Gb ddr3 RAM
- Сеть – 1 Гбит/c
Так же стоит отметить, что на всех установленных дистрибутивах присутствует web-интерфейс FreePBX и необходимые нам утилиты sipp и htop.
Требования к тестированию и сборка стенда и начало тестов
Поскольку тестирование будет проводиться внутри локальной сети и на виртуальных машинах, результаты могут показаться несколько стерильными, но в достаточной мере будут демонстрировать отличия в производительности в работе протоколов без учета работы с диском (записи разговоров).
Итак, определим критерии отказа для нашего теста:
- CPU поднимается выше 60%
- «Проседания» в аудиопотоке в процессе звонка
- Менее 5 минут устойчивой производительности
Поясним, почему именно такие критерии. Начнем с нагрузки на CPU – тут все просто, в большинстве случаев сервер телефонии размещается на сервере, выполняющем множество других функций, будь то проксирование, контроль и анализ трафика и множество других, да и запас производительности всегда иметь не повредит. Далее стоит упомянуть что нас интересует «чистая» связь, без артефактов в течение некоторого времени, минимум пять минут, чтобы убедиться, что все в порядке, что и подводит нас к оставшимся двум критериям.
Как и говорилось выше сами звонки мы будем генерировать с помощью sipp – утилиты для генерации трафика по sip протоколу, включающей в себя сценарии работы как SIP-сервера (UAS) так и SIP-клиента (UAC). На момент написания статьи, установить sipp можно с помощью менеджера пакетов yum
#yum install -y sipp
Тесты без медиа для chan_sip и pjsip
Итак, виртуалки развернуты и запущены, прокидываем обычный сиповый транк для утилиты, добавляем простейший диалплан в /etc/asterisk/extensions_custom.conf и приступаем к тестированию. Диалплан выглядит так (для эхо-теста без медиа):
Транки для астерисков должны выглядеть примерно таким образом:
Начнем с chan_sip на Asterisk 13. Запускаем sipp указывая ей следующие параметры:
sipp 192.168.32.222 -s 101 -i 192.168.32.52 -d 300s -l 4000 -aa -mi 192.168.32.52 -rtp_echo -nd -r 20
- 192.168.32.222 – это ip станции на которую звоним
- -s 101 – номер на который звоним
- -i 192.168.32.52 – адрес АТС с которой звоним (там где запустили sipp, адрес источника сообщений)
- -d 300s – длительность звонка 5 минут (указано в секундах)
- -l 4000 – ограничение на 4000 одновременных звонков
- -aa – автоматические ответы ОК на UPDATE
- -mi 192.168.32.52 задаем локальный ip для rtp (в нашем случае АТС на которой запускаем sipp)
- -rtp_echo – запуск в режиме rtp-эха
- -nd – прерывание звонков при неправильных sip-сообщениях
- -r 20 -максимальное количество звонков в секунду (CPS)
В процессе тестирования меняем параметр -r, подставляя различные значения, и смотрим как ведет себя наша АТС.
Получаем вот такие результаты:
Эти же тесты теперь прогоним для станции использующей pjsip и получим следующие результаты:
Для виртуальных машин с Astrisk 15 проводим такие же тесты:
Итак, вывод: при работе с chan_sip в 13й и 15й версии мы получили примерно одинаковые результаты (около 40 звонков в секунду, если выше то начинается излишняя нагрузка на процессор и летят Warning’и) и они несколько ниже, чем при работе с pjsip (около 45-50 звонков в секунду, свыше так же загружается процессор). Теперь перейдем к тем же тестам, но уже с медиа.
Тесты с медиа для chan_sip и pjsip
Единственным отличием в исходных данных от предыдущих тестов будет разница в диалплане, теперь мы будем запускать в ответ медиа (проще всего для этого использовать music on hold).
Делаем все то же, что и делали до этого, используем sipp для наших астерисков и получаем интересующие нас результаты.
Из полученных данных можно сделать вывод, что в этот раз chan_sip проявил себя куда лучше, нежели его продвинутая версия в лице pjsip. Результаты таковы:
Для астериска 13й версии: chan_sip – 4 CPS, pjsip – 2
Для астериска 15й версии: chan_sip — 3, pjsip – 2
Вывод
Исходя из полученных результатов тестирования, хотелось бы отметить, что не всегда использование pjsip будет оправданно, и в процессе работы с ним может сложиться ситуация, что мы сами задушим производительность своей системы.
Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Я правильно понимаю, что статья утверждает, что PJSIP не выдерживает CPS более 2? Это кажется как минимум странным, так как тестирую media вы тестировали в основном media стэк астериска, а он один для SIP и PJSIP.
Также исходя из вывода SIPP у вас неправильно настроен сам сценарий и он не обрабатывает корректно ответы приходящие от asterisk.
Правильнее было бы вручную повышать интенсивность вызовов используя короткие вызовы и наблюдать за моментом появления retransmit, а проблемы со звуком отслеживать контрольными вызовами или voipmonitor.