Tag: Asterisk

  • sipp

    \"\"

    sipp – мощная утилита для генерации нагрузки на SIP оборудование. Обычно sipp используется для проверки отказоустойчивости систем IP-телефонии, выявления максимально-допустимой нагрузки или ddos-а конкурентов :) Сценарий сессии в sipp описывается в XML файле. Можно воспользоваться одним из множества сценариев распространяемых в комплекте с sipp или создать свой.

    Кроме тестирования сигнализации (SIP) sipp способен тестировать и медиа нагрузку. Для этого существуют два модуля: PCAP play и RTP echo. PCAP play – проигрывает заранее записанный сетевым анализатором (например wireshark) медиа файл. RTP echo – позволяет sipp отсылать обратно все полученные RTP потоки.

    Пример использования sipp

     sipp 10.10.10.1 -s 12345 -i 10.10.10.2 -d 2h -l 60 -aa -mi 10.10.10.2 -rtp_echo -nd -r 10

    10.10.10.1 – IP адрес SIP сервера, на который следует слать запросы.

    -s 12345 – Указывает номер который будет вызван. Может быть числом или текстом. Значение по умолчанию – service

    -i 10.10.10.2 – Локальный IP адрес. Этот адрес будет использован в SIP сообщениях в качестве адреса источника сообщений. По умолчанию используется адрес 127.0.0.1.

    -d 2h – Устанавливает длительность звонков. В данном случае звонки будут длиться 2 часа. Длительность по умолчанию – 1 секунда.

    -l 60 – Ограничивает максимальное количество одновременных звонков – 60.

    -aa – Включает автоматические ответы 200 OK на сообщения INFO, UPDATE и NOTIFY.

    -mi 10.10.10.2 – Устанавливает локальный IP для RTP.

    -rtp_echo – Включает режим RTP эха. Все RTP пакеты полученные от удалённой стороны – отправляются обратно.

    -nd – Отключает стандартную обработку неожиданных ситуаций – sipp будет прерывать звонки в случае получения неправильных SIP сообщений.

    -r 10 – Устанавливает максимальную «скорость звонков» (CPS) в данном случае – не более 10 звонков в секунду.

    Максимальной скоростью вызовов можно управлять во время работы sipp с помощью клавиш «+» и «-» – повышая и понижая её соответственно. Вообще, опустив параметры -aa -mi 10.10.10.2 -rtp_echo -nd – мы получаем отличное средство для тестирования отказоустойчивости и максимального CPS у SIP proxy.

    Настройка Asterisk

    Для того, что бы Asterisk принимал звонки от sipp, необходимо создать в SIP.conf специальный SIP-peer с именем sipp. К сожалению, заставить sipp совершать вызовы от имени существующего пользователя – нельзя. В стандартных сценариях sipp всегда представляется как sipp. Добавляем в SIP.conf запись:

     [sipp]
     type=friend
     context=in
     username=sipp
     host=10.10.10.2
     dtmfmode=rfc2833
     disallow=all
     allow=ulaw,alaw
     insecure=port,invite

    Важными моментом, является наличие кодека ulaw в списке разрешенных т.к. именно его анонсирует sipp. Если 711u не будет в списке разрешённых кодеков, то Asterisk отклонит вызов от sipp. Вторым важным моментом, является строка insecure=port,invite. Данная строка заставляет Asterisk авторизовать sipp не по паролю, а по IP адресу указанному в поле host. Кроме записи в SIP.conf, можно создать специальный контекст в extensions.conf для обработки тестовых звонков от sipp.

    Следующий пример принимает звонки на «номер» service – именно этот идентификатор используется по умолчанию:

     [in]
     exten => service,1,MusicOnHold()

    Вот и всё. Успехов в стресс тестах! :)

    P.S. Документация по sipp – http://sipp.sourceforge.net/doc3.0/reference.html