IPFire представила fireperf: тест соединений для файрволов и маршрутизаторов
Команда разработчиков IPFire представила открытый проект fireperf. Он предназначен системным администраторам, разработчикам и тестировщикам, которым нужно понять не просто пропускную способность канала, а поведение сетевого оборудования под нагрузкой из множества коротких сессий. Обычные утилиты, например iperf3, хороши для замера скорости между двумя узлами.
Fireperf решает другую задачу: сколько новых соединений в секунду способно обработать устройство и насколько устойчиво оно управляет ими с течением времени. Для файрвола или маршрутизатора именно эта метрика часто важнее пиковой скорости. Инструмент создаёт соединения с заранее заданной частотой.
Для каждого из них фиксируется длительность рукопожатия, а при сбое записывается причина — тайм-аут, отказ или исчерпание ресурсов на тестируемом устройстве. Благодаря этому администратор видит, где именно ломается обработка трафика. Отдельный режим позволяет держать соединения открытыми и время от времени проверять их активность.
Так выявляются случаи, когда межсетевой экран тихо отбрасывает сессию после определённого периода бездействия. Подобные обрывы не мешают замеру пропускной способности, но в реальных приложениях приводят к ошибкам. Серверная часть fireperf рассчитана на параллельную работу: через один порт может подключаться любое количество клиентов, каждый из которых ведёт собственный тест.
В iperf3 такой сценарий не предусмотрен — там за раз выполняется только одно измерение. Для владельцев уже развёрнутых стендов fireperf поддерживает совместимость с клиентами и серверами iperf3 или iperf. Ещё одна возможность — имитация шаблонов «запрос-ответ».
Вместо непрерывной передачи данных можно задать, например, запрос на 100 байт и ответ на 10 килобайт. Так трафик становится ближе к реальному поведению веб-сервисов и API, где короткие обращения сменяются объёмными ответами. В тестах между двумя виртуальными машинами с восемью соединениями через интерфейс virtio fireperf потреблял 0,071 процессорной секунды на каждый переданный гибибайт при использовании io_uring.
Для сравнения, у iperf3 в обычном режиме уходило 0,505 секунды, а с опцией ‑zerocopy — 0,153 секунды. На 16-ядерной системе через loopback инструмент достиг более 230 000 соединений в секунду. В терминале он показывает график в реальном времени и сводку по клиентам.
Если терминал недоступен, данные выводятся построчно, а флаг ‑json позволяет получать ежесекундные отчёты для автоматической обработки. Сборки подготовлены для Debian, Arch Linux, RHEL и совместимых с ним дистрибутивов — AlmaLinux и Rocky Linux, а также для openSUSE Tumbleweed. Исходный код и полная документация доступны на официальном сайте проекта.
Для максимальной производительности рекомендуется liburing версии 2.3 или новее.