artem
15.03.2013
37262

Возможности Астериск. Нагрузочное тестирование Астериск 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 контроллера не обойтись.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.