
Команда разработчиков IPFire представила открытый проект fireperf — инструмент для измерения производительности сети. Это решение предназначено для измерения производительности сети и ориентировано на системных администраторов, разработчиков и тестировщиков. Проект также позволяет имитировать шаблоны «запрос-ответ» для более точного моделирования реального сетевого трафика.

В то время как популярные сетевые инструменты, такие как iperf3, измеряют пропускную способность канала между двумя узлами, fireperf решает иную, но не менее важную для межсетевых экранов (файрволов) и маршрутизаторов задачу: сколько новых соединений в секунду способно обработать устройство и насколько эффективно оно управляет ими с течением времени?
Принцип работы инструмента заключается в создании соединений с заданной частотой. При этом фиксируется время выполнения процедуры «рукопожатия» (handshake) для каждого соединения, а в случае сбоя записывается его причина — будь то тайм-аут, отклонение запроса или исчерпание ресурсов на тестируемом устройстве.
Кроме того, fireperf умеет поддерживать соединения открытыми и периодически проверять их активность. Это позволяет выявить, сколько соединений было «тихо» отброшено межсетевым экраном после определённого периода бездействия.
В отличие от iperf3, который выполняет только один тест за раз, сервер fireperf может одновременно принимать любое количество клиентов через один порт, при этом каждый клиент проводит свой собственный независимый тест. Для тех, кто уже использует iperf3, предусмотрена совместимость: сервер fireperf поддерживает работу с клиентами iperf3, а сам fireperf может взаимодействовать с существующими серверами iperf3 или iperf.

Помимо измерения чистой пропускной способности, fireperf позволяет имитировать сценарии «запрос-ответ» (например, запрос объёмом 100 байт и ответ размером 10 КБ), что дает возможность более точно моделировать реальный сетевой трафик.
При тестировании между двумя виртуальными машинами (с использованием восьми соединений через интерфейс virtio) инструмент потреблял 0,071 процессорной секунды на каждый переданный гибибайт (GiB) данных при использовании технологии io_uring. Для сравнения: показатели iperf3 составляют 0,505 секунды в стандартном режиме и 0,153 секунды при использовании опции ‑zerocopy. На 16-ядерной системе fireperf продемонстрировал результат более 230 000 соединений в секунду при тестировании через loopback‑интерфейс. При запуске в терминале fireperf отображает график в режиме реального времени и сводную информацию о клиентах. Если же терминал недоступен, программа выводит данные построчно; также предусмотрена опция ‑json, позволяющая получать ежесекундные JSON‑отчеты, удобные для автоматизированной обработки.

Сборка fireperf доступна в виде пакета для Debian, Arch Linux, RHEL (и совместимых с ним дистрибутивов, таких как AlmaLinux и Rocky Linux), а также для openSUSE Tumbleweed. Исходный код и полная документация по тестированию представлены на официальном сайте проекта. Для достижения наилучшей производительности рекомендуется использовать библиотеку liburing версии 2.3 или новее.

Источник: habr.com