Если нужно оперативно прикинуть пропускную способность канала между двумя Linux-машинами, можно обойтись без установки
iperf. Достаточно netcat, который в большинстве дистрибутивов уже есть.▪️ Простой тест
Допустим, есть сервер 10.25.1.157.
На нем запускаем слушатель:
nc -lvp 5201 > /dev/null
На второй машине отправляем 100 МБ нулевых данных (10 блоков по 10 МБ):
dd if=/dev/zero bs=10M count=10 | nc 10.25.1.157 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 и т.д.
#networking #netcat
🧑💻 NetworkAdmin