TRex: установка, настройка и запуск тестов производительности NGFW

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Всем привет!

Сейчас многие компании активно ищут замену сетевому оборудованию. Наиболее остро вопрос замены присутствует в сегменте NGFW. Важным этапом выбора является нагрузочное тестирование, которое позволяет убедиться, справится ли устройство с обработкой боевого трафика в инфраструктуре. В прошлой своей статье я рассказывал про нюансы проведения пилотного проекта NGFW и кратко описал способы нагрузочного тестирования (вот она: Вредные советы для пилота NGFW). В этой статье я затронул практику и описал подробную настройку стенда для проведения нагрузочного тестирования межсетевого экрана следующего поколения. Мы с командой инженеров Positive Technologies часто применяем эти знания для демонстрации возможностей продукта PT NGFW, настало время рассказать об этом вам!

Для быстрой навигации по статье
  1. Исходные данные

  2. Этап 1. Настройка операционной системы на VM3

  3. Этап 2. Установка TRex на VM3

  4. Этап 3. Настройка и запуск TRex на VM3

  5. Этап 4. Настройка передачи телеметрии TRex в Grafana

  6. Этап 5. Запуск тестов

    • Тест 1: UDP

    • Тест 2: TCP, HTTP, 16 КБ

    • Тест 3: TCP, HTTP, 64 КБ

    • Тест 4: MAX_CPS

    • Тест 5: MAX_CC

    • Тест 6: EMIX

  7. Вместо заключения

В статье содержится подробная инструкция по установке и настройке генератора трафика 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 Gb

  • vm3 — Debian 11 с установленным генератором трафика TRex:
                CPU: 4
    RAM: 8 Gb
    HDD: 20 Gb

По синим линкам передается телеметрия. По зеленым — полезный трафик. Оранжевым отмечены логические подсети, которые создаются на TRex в процессе настройки.

Адресация интерфейсов указана также на рисунке. Вся настройка производится от имени пользователя с правами root.

Этап 1. Настройка операционной системы на VM3

  1. Создать необходимые символьные ссылки:

    cd /usr/lib/x86_64-linux-gnu/ && sudo ln -s -f libc.a liblibc.a

  2. Установить требуемые пакеты:

    sudo apt-get install -y python3-pip tshark wget

  3. Отредактировать параметры 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=""
  4. Обновить параметры grub:

    sudo update-grub

  5. Перезагрузить сервер:

    sudo reboot now

Этап 2. Установка TRex на VM3

  1. Создать папку и перейти в нее:

    sudo mkdir -p /opt/trex && cd /opt/trex

  2. Скачать 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

  3. Создать сервис:

    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.target

5. Перезагрузить 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

  1. Перейти в папку и запустить конфигуратор:

    cd /opt/trex && sudo ./dpdk_setup_ports.py -i

    1.1 Отказаться от MAC based config

    1.2 Выбрать интерфейсы для использования в DPDK

    1.3 Задать IP-адрес и шлюз по умолчанию для каждого интерфейса

    1.4 Перезаписать конфигурацию

  2. Перезапустить сервис:

    sudo systemctl restart trex.service

  3. Проверить статус (через 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

  1. Перейти в домашний каталог пользователя:

    cd ~

  2. Скачать вспомогательные данные (профили трафика, РСАР-файлы, скрипт запуска)

    Вот ссылка на 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
    (не знаю, что из этого проживет дольше, оставляю три источника для наших потомков

Источник: https://habr.com/ru/companies/pt/articles/883264/


Интересные статьи

Интересные статьи

Всем привет, случалось такое, что вам надо поставить кучу агентов битрикса на крон, а потом сидеть и разбираться - сколько они отрабатывают, отрабатывают ли вообще, когда падают или зависают? Ну конеч...
24 октября 2024 года директор подведомственного Роскомнадзору Центра мониторинга и управления сетью связи общего пользования (ЦМУ ССОП) Сергей Хуторцев заявил СМИ, что ведомство заблокировало в РФ на ...
Меня зовут Андрей Буйновский, я разработчик в ИТ-компании. Мы с командой решили написать эту статью и поделиться некоторыми проблемами, подводными камнями и их решениями в разработке мобильного прилож...
Неважно кто я, как меня зовут, где работаю и сколько опыта. Цель статьи больше похожа на крик души, а не на желание похвастаться и показать очередное "а вот у нас так работает", вывалив список, которы...
Приятно познакомиться, мы битриксоиды. Да-да, те самые которые:- вообще не модные,- пишут НЕ на Laravel и Symphony,- возятся с кучей мягко говоря “неидеального” кода под названием “1С-Битрикс: Управле...