Как можно проверить ширину канала через netcat

проверить ширину канала

Если нужно оперативно прикинуть пропускную способность канала между двумя 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 и т.д.

Понравилась статья? Поделиться с друзьями: