Tamkovich.com: Телеком/VoIP блог
Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys
sipp: шпаргалка
8 апреля, 2010 by Сергей Тамкович
Asterisk SIP, sippsipp — мощная утилита для генерации нагрузки на 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()
Вот и всё. Успехов в стресс тестах! :)
Asterisk SIP, sipp
А можно ссылочку на утилиту
Alex, конечно можно http://sipp.sourceforge.net — кстати там есть версия под windows
Хорошая утилита для нагрузочного тестирования. А можно ли при помощи неё тестировать проблемы у единичного пользователя? С SIP все более-менее понятно, а вот RTP более проблематично. Или какие посоветуете утилиты для тестирования локальных проблем?
Проблемы «одного пользователя с качеством звука» — это самые сложные для отладки проблемы в IP телефонии. Как их решать индустриально (не ковыряясь руками в каждом случае) — я не знаю. Если звонящий по SIP пользователь RTP отправляет напрямую на шлюзы Cisco — можно снимать с них CDR. В CDR записях генерируемых шлюзами Cisco есть поля описывающие качество состоявшегося звонка (MOS, jitter, rtt, и т.д.). Можно сохранять эти данные и затем пытаться анализировать — искать закономерности/периоды и т.п.
«К сожалению, заставить sipp совершать вызовы от имени существующего пользователя – нельзя.»
Ну самому писать скрипт конечно предлагать не буду, но если человек скачал sipp и компилит его, то в файлике scenario.cpp есть текстовый вид дефолтного сценария UAC, там можно подставить что угодно. и будет sipp представляться тем номером который надо.
Pavel, как несложно догадаться, речь шла про бинарный sipp с дефолтным сценарием. Тем кому по силам/не лень писать сценарии, может помочь вот эта заметка о сценариях в sipp — http://tamkovich.com/2010/09/benchmarking-redirect-server-with-sipp/
Хотел протестировать свою звездочку* PBX (Asterisk) на предмет нагрузки. Установил на свою любимую Kubuntu 10 SIP tester (SIPp v 3.1) из репозитория.
На одной консоли запускаю:sipp -sn uas
на второй консоли:
sipp -sn uac 127.0.0.1
Команда ./sipp -sn uaс предписывает sipp читать дефолтный сценарий uac и отправлять сигнальные сообщения на loopback. Сценарий uac эмулирует работу клиента, посылающего сигнальные сообщения в сторону сервера. Соответственно ./sipp -sn uas работает как SIP server слушающий на порту 5060.
Но почему то у меня другая картина:
http://s013.radikal.ru/i325/1103/31/86cc5bf95208.jpg
Удаляю версию 3.1 и собираю из исходников 3.2 но увы, таже картина.
Возможно чтото с моей Ubuntu не так..
klistrod, из вашего скриншота видно, что UAS слушает порт 5061. Кто отвечает с порта 5060 — загадка. Возможно, что у вас стоит SIP сервер на вашей кубунте.
Тоже так подумал что UAC и UAS сидят на разных портах.Но Как такое может быть.
По дефолту должен быть 5060. вечером попробую запустить с привязкой к порту.
Плюс ко всему не могу открыть сценарий XML …. что может быть
А если нужно провести 10 тысяч регистраций в 4 потока, какие нужны опции? xml под это дело есть, а вот опции запуска непонятны.
> А если нужно провести 10 тысяч регистраций в 4 потока, какие нужны опции? xml под это дело есть, а вот опции запуска непонятны.
sipp -r 4 -l 10000 (далее остальные параметры…)