Если нужно оперативно прикинуть пропускную способность канала между двумя Linux-машинами, можно обойтись без установки iperf. Достаточно netcat, который в большинстве дистрибутивов уже есть.
▪️ Простой тест
Допустим, есть сервер 10.64.2.254.
На нем запускаем слушатель:
nc -lvp 5201 > /dev/null
На второй машине отправляем 100 МБ нулевых данных (10 блоков по 10 МБ):
dd if=/dev/zero bs=10M count=10 | nc 10.64.2.254 5201
dd покажет скорость передачи — это и будет приблизительная оценка ширины канала.
▪️ Насколько это точно?
Если сравнить результаты netcat и iperf3, получается интересная картина:
До 1 Gbit/sec показатели практически совпадают (разница в пределах погрешности).
Для обычных VPS и типичных серверных подключений — способ вполне рабочий.
Для быстрой диагностики, более чем достаточно.
Можно смело использовать netcat, если нужно быстро понять: канал живой и дает ли он заявленную скорость.
▪️ Что на высоких скоростях?
Внутри гипервизора картина меняется. При тестах в виртуальной среде:
iperf3 показывал около 15 Gbit/sec
netcat — примерно 4 Gbit/sec
при этом гипервизор заявлял бридж на 10 Gbit/sec.
Разброс серьезный. Почему так происходит:
netcat не оптимизирован под high-performance тестирование
нет тонкой настройки TCP-параметров
влияет размер буферов
влияет CPU и обработка в user-space
виртуальная сеть дает свою специфику
В таких сценариях уже сложно сказать, кто ближе к истине. Корректный замер реальной скорости требует учета множества факторов: MTU, offload, congestion control, NUMA, CPU pinning и т.д.