Эта заметка поможет протестировать стабильность, производительность и корректность работы сетевого интерфейса под нагрузкой: генерация пакетов, проверка драйверов, поиск ошибок и переполнений.
⚠️ Внимание! Сетевой стресс может создать высокий трафик в локальной сети. Не запускайте без согласования в корпоративной или публичной сети!
Основные цели теста
- Проверить, не теряются ли пакеты под нагрузкой.
- Выявить ошибки в драйвере сетевой карты.
- Оценить максимальную пропускную способность (throughput).
- Протестировать поведение виртуальных сетей (в Proxmox, KVM и т.д.).
Инструменты для генерации сетевой нагрузки
| Утилита | Назначение |
|---|---|
iperf3 | Точный замер пропускной способности между двумя узлами |
stress-ng --net | Генерация UDP/TCP-нагрузки локально или на удалённый хост |
netcat + dd | Простая передача данных "сырым" потоком |
pktgen | Ядерный генератор пакетов (максимальная нагрузка, требует root) |
tcpreplay | Воспроизведение захваченного трафика (pcap-файлов) |
Установка необходимых пакетов
# Debian/Ubuntu
sudo apt update
sudo apt install iperf3 stress-ng netcat-openbsd tcpreplay -y
# CentOS/RHEL/Fedora
sudo dnf install iperf3 stress-ng nmap-ncat tcpreplay -y
Сценарии тестирования
1. Быстрый локальный стресс (без второй машины)
# Генерация UDP-трафика на localhost
stress-ng --net 4 --net-port 5001 --timeout 5m
# Или через netcat:
dd if=/dev/zero bs=1M count=1000 | nc -u 127.0.0.1 5001
# В другом терминале: nc -ul 5001 > /dev/null
— Проверяет обработку пакетов ядром, но не физическую карту.
2. Реальный сетевой стресс (требуется 2 машины)
На сервере:
iperf3 -s
На клиенте:
# TCP-тест
iperf3 -c 192.168.1.100 -t 300 -i 5
# UDP-тест (показывает потери!)
iperf3 -c 192.168.1.100 -u -b 1G -t 300
— Замеряет реальную пропускную способность и потери пакетов.
3. Максимальная нагрузка через pktgen (только для экспертов)
Требует загрузки модуля ядра и скрипта. Пример:
sudo modprobe pktgen
# Далее — запуск скрипта из /usr/src/linux/tools/net/... (редко используется)
— Генерирует миллионы пакетов в секунду. Подходит для тестирования high-performance сетей.
Как проверить состояние сетевой карты?
# Ошибки, переполнения, сброшенные пакеты
ethtool -S eth0
# Общая статистика
ip -s link show eth0
# Журнал ядра (ищи "rx errors", "tx timeout", "reset")
dmesg -T | grep -i "eth0\|error\|drop\|overrun"
# Температура (если поддерживается)
ethtool -d eth0 | grep -i temp
💡 Ключевые индикаторы проблем:
rx_missed_errors,rx_over_errors— переполнение буфераtx_timeoutв dmesg — драйвер "завис"- Рост
droppedвip -s— нехватка ресурсов CPU или памяти
Особенности в виртуальной среде (Proxmox, KVM)
- Используйте virtio-net — он быстрее и стабильнее эмуляции.
- Проверяйте не только гостевую ОС, но и хост:
ethtool -Sна физическом интерфейсе. - Виртуальные сети могут "терять" пакеты при нехватке CPU на хосте — следите за загрузкой ядер.
Пример: комплексный 10-минутный сетевой стресс
# На клиенте (предполагается, что сервер слушает на 192.168.1.100:5201)
echo "Запуск UDP-стресса на 1 Гбит/с..."
iperf3 -c 192.168.1.100 -u -b 1G -t 600 -i 10
# После завершения — проверка ошибок
ethtool -S eth0 | grep -E "err|drop|over"
dmesg -T | tail -20
🔒 Убедитесь, что коммутатор и кабель поддерживают заявленную скорость (1 Гбит/с, 10 Гбит/с). Иначе узкое место будет не в карте, а в инфраструктуре.
Комментарии
Пока нет комментариев. Будьте первым!