
Всем привет!
Сейчас многие компании активно ищут замену сетевому оборудованию. Наиболее остро вопрос замены присутствует в сегменте NGFW. Важным этапом выбора является нагрузочное тестирование, которое позволяет убедиться, справится ли устройство с обработкой боевого трафика в инфраструктуре. В прошлой своей статье я рассказывал про нюансы проведения пилотного проекта NGFW и кратко описал способы нагрузочного тестирования (вот она: Вредные советы для пилота NGFW). В этой статье я затронул практику и описал подробную настройку стенда для проведения нагрузочного тестирования межсетевого экрана следующего поколения. Мы с командой инженеров Positive Technologies часто применяем эти знания для демонстрации возможностей продукта PT NGFW, настало время рассказать об этом вам!
Для быстрой навигации по статье
Исходные данные
Этап 1. Настройка операционной системы на VM3
Этап 2. Установка TRex на VM3
Этап 3. Настройка и запуск TRex на VM3
Этап 4. Настройка передачи телеметрии TRex в Grafana
Этап 5. Запуск тестов
Тест 1: UDP
Тест 2: TCP, HTTP, 16 КБ
Тест 3: TCP, HTTP, 64 КБ
Тест 4: MAX_CPS
Тест 5: MAX_CC
Тест 6: EMIX
Вместо заключения
В статье содержится подробная инструкция по установке и настройке генератора трафика TRex для запуска тестирования и отображения его результатов в Grafana, а также подробное описание распространенных тестов. Инструкция не содержит информации о тонкой настройке Cisco TRex для тестирования высокопроизводительных активных сетевых устройств.
Коротко о том, кто такой Cisco TRex: это свободно распространяемый проект Cisco, применяемый для нагрузочного тестирования различных активных сетевых устройств. В руках умелого инженера TRex становиться мощным сервисом, который помогает протестировать основные характеристики производительности, а именно:
пропускную способность для трафика UDP (UDP часто используется для DNS-запросов и работы IP-телефонии);
пропускную способность для трафика TCP HTTP с различными размерами HTTP-ответов (весь вебчик это HTTP);
максимальное значение скорости открытия новых HTTP-сессий каждую секунду (скорость трафика в сети непостоянна, всегда возникают всплески и просадки, вызванные открытием или закрытием сессий);
максимальное количество открытых HTTP-сессий без их закрытия (чтобы понять, сколько сессий одновременно может обрабатывать тестируемое устройство)
и так далее.
Исходные данные

Мой стенд состоит из трех виртуальных машин:
vm1 — NGFW
vm2 — Debian 11 с установленными InfluxDB и Grafana:
CPU: 4
RAM: 8 Gb
HDD: 20 Gbvm3 — Debian 11 с установленным генератором трафика TRex:
CPU: 4
RAM: 8 Gb
HDD: 20 Gb
По синим линкам передается телеметрия. По зеленым — полезный трафик. Оранжевым отмечены логические подсети, которые создаются на TRex в процессе настройки.
Адресация интерфейсов указана также на рисунке. Вся настройка производится от имени пользователя с правами root.
Этап 1. Настройка операционной системы на VM3
Создать необходимые символьные ссылки:
cd /usr/lib/x86_64-linux-gnu/ && sudo ln -s -f libc.a liblibc.aУстановить требуемые пакеты:
sudo apt-get install -y python3-pip tshark wgetОтредактировать параметры grub:
sudo nano /etc/default/grubВставить:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"Пример:
GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" GRUB_CMDLINE_LINUX=""Обновить параметры grub:
sudo update-grubПерезагрузить сервер:
sudo reboot now
Этап 2. Установка TRex на VM3
Создать папку и перейти в нее:
sudo mkdir -p /opt/trex && cd /opt/trexСкачать TRex:
sudo wget --no-check-certificate --no-cache https://173.36.109.208/trex/release/v3.00.tar.gzВскрыть архив:
sudo tar xvf v3.00.tar.gz -C /opt/trex --strip-components 1Создать сервис:
sudo nano /etc/systemd/system/trex.serviceВставить в созданный trex.service
[Unit]
Description=TREX Service Instance 1
[Service]
StandardOutput=journal
StandardError=journal
WorkingDirectory=/opt/trex
ExecStart=/opt/trex/t-rex-64 -c 2 -i --astf --tso-disable --lro-disable --iom 0
[Install]
WantedBy=multi-user.target5. Перезагрузить systemd:
sudo systemctl daemon-reload
6. Задать размер (больших страниц) виртуальной памяти:
sudo sysctl vm.nr_hugepages=2048
Справка по nr_hugepages
Команда "sudo sysctl vm.nrhugepages=2048" используется для управления количеством huge pages (больших страниц) в системе. Huge pages используются для увеличения производительности и эффективности работы с большими объемами данных, такими как базы данных и виртуальная память.
Когда вы устанавливаете значение vm.nrhugepages, вы резервируете определенное количество больших страниц для использования в системе. Это может быть полезно для оптимизации работы определенных приложений и уменьшения фрагментации памяти. Однако устанавливать это значение следует с осторожностью, так как большие страницы занимают больше памяти и их использование может привести к неэффективному использованию ресурсов.
Этап 3. Настройка и запуск TRex на VM3
Перейти в папку и запустить конфигуратор:
cd /opt/trex && sudo ./dpdk_setup_ports.py -i1.1 Отказаться от MAC based config
1.2 Выбрать интерфейсы для использования в DPDK
1.3 Задать IP-адрес и шлюз по умолчанию для каждого интерфейса
1.4 Перезаписать конфигурацию

Перезапустить сервис:
sudo systemctl restart trex.serviceПроверить статус (через 1–2 минуты)
sudo systemctl status trex.serviceВозможно возникновение ошибки: Faled resolveng dest MAC for deafult gateway
Эта ошибка возникает, когда TRex не может обнаружить шлюз по умолчанию, заданный в параметрах.
Проверьте конфигурацию или коммутацию.
Успешный старт выглядит так:

Справка
Отредактировать самостоятельно конфигурацию можно тут:
sudo nano /etc/trex_cfg.yaml
Этап 4. Настройка передачи телеметрии TRex в Grafana
Настройка на VM3
Перейти в домашний каталог пользователя:
cd ~Скачать вспомогательные данные (профили трафика, РСАР-файлы, скрипт запуска)
Вот ссылка на Githab: https://github.com/alksegrv/Trex_install_and_start_tests.git
Вот ссылка на ЯДиск: https://disk.yandex.ru/d/gLlPXpTo8VBCfw
Вот ссылка на позитивную хранилку: https://storage.ptsecurity.com/f/0d6769d05265455e8366/?dl=1
(не знаю, что из этого проживет дольше, оставляю три источника для наших потомков
