Блог bitmanager

Стресс тестирование SIP-телефонии

Иногда надо дать ответ по надежности и отказоустойчивости какого-нибудь компонента локальной сети. У нас тоже попалась такая задача, отягощенная дополнительными условиями. А именно запрос звучал так: сколько входящих звонков мы сможем обработать от внешнего SIP-провайдера без существенной потери качества при 100% загрузке канала?

Да, у нас есть настройка QoS, но вопроса о том, а что конкретно дает эта настройка, какие у нее преимущества и недостатки, никогда не поднималось. И необходимости тестирования не было. Пробил наш час, пришел и наш черед погрязнуть в мелочах настройки тестовой среды.

В итоге все закончилось хорошо, несмотря на то, что по паре граблей пришлось пройти. И отметить некоторые особенности работы в моделировании псевдоинтернета. А почему псевдо? А потому что нам надо было сэмулировать для тестовой железки подключение к внешнему SIP-провайдеру, причем должна быть обеспечена эмуляция работы двух каналов, с возможностью тестового отключения любого из них.

В итоге была рождена чудовищная конструкция, в которую входил тестовый сервер с гипервизором и гигабитными сетевухами. На ней был установлен Proxmox, тестовый Pfsense для руления псевдоинтернетом, три сети для эмуляции писевдоинтернета, причем к двум из них были подключены сетевухи тестируемой железки, а в третьей оберетался тестовый Asterisk и endpoint, точка, на которой замыкались запросы трафика.

Также на этом же Pfsense была организована внутренняя сеть, в которой висел генератор трафика и еще один Asterisk. Оба Астера были настроены в связке друг с другом через тестируемую железку и плюс отдельный канал из псевдоинтернета был выведен в реальный инатернет, и подключался к нашей боевой телефонной станции. Для генерации трафика использовался сначала siege, но он страдал запущенной формой падучей и от него пришлось отказаться и пересесть на httperf. А для моделирования SIP трафика использовался sipp. httperf выкачивал с endpoint-а 10 мегабайтный рандомный файл. Все это плотно было обвязано Prometheus-ом и Zabbix-ом.

Схема несколько раз полностью переделывалась, потому что нас не удовлетворяло качество тестирования. В разное время отдельные компоненты системы становились узким местом. В итоге был подобран вариант близкий к идеальному, на котором была получена удовлетворительная производительность тестируемого компонента – около 700 Мбит/с пропускная способность и 30 входящих звонков при полной загруженности канала.

Кстати, включение QoS снижает скорость на 50-100 Мбит/с.
Записки сисадмина ip-телефония