Возможности Астериск. Нагрузочное тестирование Астериск 1.8. Утилита sipp.
Когда появлятся задача проверить возможности конкретного сервера по обработке голосового трафика, то удобно использовать утилиту sipp, которая не просто генерирует трафик SIP и RTP, а также позволяет оценить скорость ответа сервера, ошибки и другие статистические данные.
1. Лабораторный стэнд
2. Тестирование утилитой sipp и Астериск 1.8
Лабораторный стэнд
Два сервера DELL T110:
- процессор Xeon E3-1220
- память 2Gb DDR3 RAM
- 500 HDD SATA 7200
- сеть 1Гбит/с
ОС и дополнительный софт:
- Centos 5.8 2.6.18-308.4.1.el5 x86_64
- FreePBX 2.10
- Asterisk 1.8.14.0
- sipp генерация нагрузки SIP
- мониторинг htop, atop
Тестирование утилитой sipp и Астериск 1.8
sipp 192.168.192.128 -s 100 -i 192.168.192.125 -d 100s -l 5000 -aa -mi 192.168.192.125 -rtp_echo -nd -r 10
192.168.192.128 — IP адрес SIP сервера, куда будут генерироваться вызовы
-s 100 — Указывает номер который будет вызван на SIP сервере
-i 192.168.192.125 — Локальный IP адрес. Этот адрес будет использован в SIP сообщениях в качестве адреса источника сообщений. По умолчанию используется адрес 127.0.0.1.
-d 100s — Устанавливает длительность звонков. Сейчас установлен в режим 100 секунд. Длительность по умолчанию — 1 секунда.
-l 5000 — Ограничивает максимальное количество одновременных звонков.
-aa — Включает автоматические ответы 200 OK на сообщения INFO, UPDATE и NOTIFY.
-mi 192.168.192.125 — Устанавливает локальный IP для RTP.
-rtp_echo — Включает режим RTP эха. Все RTP пакеты полученные от удалённой стороны — отправляются обратно.
-nd — Отключает стандартную обработку неожиданных ситуаций — sipp будет прерывать звонки в случае получения неправильных SIP сообщений.
-r 10 — Устанавливает максимальную «скорость звонков» (CPS) в данном случае — не более 10 звонков в секунду. По ходу работы утилиты sipp можно этот параметр регулировать клавиши +/- на Numpad
На сервере Астериск создаем SIP транк, например:
[sipp]
type=peer
context=in
defaultuser=sipp
host=192.168.192.125
dtmfmode=rfc2833
disallow=all
allow=ulaw
qualify=yes
2.1 Терминация на Playback
Простой диалплан:
[in]
exten ≥ 100,1,Answer ()
exten ≥ 100,n,Playback (/var/lib/asterisk/moh/02_MACROFORM_CANASTER)
htop — красиво показывает нагрузку на CPU
atop — показывает CPU, Network, загрузку файловой системы DSK
В данном случае 1 SIP канал = 1 Вызову call. Субъективный контроль на слух онлайн использовался chanspy. Музыку слышно с небольшим эхом, как и положено. Работает опция rtp_echo, которая возвращает RTP поток Астериска.
Визуальный контроль
2 экран sipp. Суммарная статистика за период
3 экран sipp. Скорость ответа Астериск в ms на запрос вызовы.
Краткое резюме на данном этапе тестирования:
Астериск успешно держит 2000 вызовов, загрузка ЦПУ около 60%, сеть 170Мбит/с
Увеличиваем до 2500 звонков. Эхо слышно сильнее, т.е. время на обработку медиа трафика увеличивается. Иногда слышны небольшие дефекты в звуке. Астериск держится, но уже появился WARNING.
Предельное количество вызовов при которых Астериск начинает некорректно обрабатывать звонки.
Критические ошибки посыпались после >2600 звонков
2.2 Терминация на MusicOnHold
Иногда спорят, что MusicOnHold сильного грузит CPU. Давайте посмотрим.
Диалплан:
[in]
exten ≥ 101,1,MusicOnHold ()
Дествительно, при 2000 вызовах уже наступил предел. На >1200 примерно начались искажение музыки в канале. На ранних версиях Астериск показатели могут быть и хуже. Поэтому тестирование на MusicOnHold неверное.
2.3 Проксирование: sipp — тестовый Астериск — терминация Астериск (Playback)
Тестирование выше имеет право на существование, но это не совсем корректно. Т.к. чаще всего или большую часть звонков Астериск проксирует, т.е. соединяет два устройства и просто гонит RTP трафик через себя (canreinvite=no), а не генерирует его как в предыдущих тестах, что вызывает дополнительную нагрузку. Для этого нам необходима оригинация и терминация вызовов. Для этого нам и понадобится второй аналогичный сервер, он будет выполнять две эти функции одновременно.
Настраиваем SIP транк аналогичный для второго сервера.
Диалплан на тестируемов (прокси):
[in]
exten ≥ 102,1,Dial (SIP/sipp/100)
Диалплан на втором сервере sipp (оригинация), Астериск (терминация):
[in]
exten ≥ 100,1,Answer ()
exten ≥ 100,n,Playback (/var/lib/asterisk/moh/02_MACROFORM_CANASTER)
Теперь 1 SIP вызов = 2 SIP канала.
1000 звонков, 2000 SIP каналов
1500 звонков, 3000 SIP каналов
1800 звонков, 3600 SIP каналов
Астериск держит каналы и обрабатывает звонки. Но в каналах иногда слышны небольшие потрескивания. Видим, что трафик уже 300 Мбит.
Пределом оказалось 1900+ звонков
2.4 Проксирование + Запись: sipp — тестовый Астериск — терминация Астериск (Playback)
Ну и конечно интересно, сколько же сможет писать таких звонков астериск на обычном SATA HDD 7,200, на встроенном контроллере. Тут atop и покажет узкое место в виде файловой системы.
Скорость диска на чтение:
[root@localhost asterisk]# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 37120 MB in 1.99 seconds = 18608.60 MB/sec
Timing buffered disk reads: 388 MB in 3.00 seconds = 129.32 MB/sec
Диалплан тестирования:
[in]
exten ≥ 103,1,MixMonitor (/tmp/${UNIQUEID}.wav)
exten ≥ 103,n,Dial (SIP/sipp/100)
Хотя на слух все хорошо, но видно, что на большое количество одновременных записей скорости не хватает и возрастает latency на I/O. Опытным путем выяснилось, что планка в 400 звонков оказалась максимальной. При таком количестве звонков DSK sda/busy 100% то есть, то нет.
При 200 звонках busy прыгает до 60%
Резюме:
Хотя тест довольно «синтетический» не учитывает сложных логик диалплана, AGI, параллельной работы с АТС и т.п., но он показывает возможности версии Астериск 1.8.14 на конкретной железке Dell T110. Также нужно понимать, что если требуется запись большого объема одновременных звонков >100 на обычных SATA дисках, то без аппартного RAID контроллера не обойтись.
Остались вопросы?
Я - Кондрашин Игорь, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.