iperf3: как правильно измерять пропускную способность между серверами

iperf3 показывает только то, что способен передать канал между двумя серверами, если не перегружен публичный тестовый сервер, учтены настройки TCP-окна и исключены прокси. Рассказываем, какие метрики отдаёт утилита, как запустить тест и почему её результаты не равны скорости до сайта в интернете.

iperf3: как правильно измерять пропускную способность между серверами

iperf3 показывает только то, что способен передать канал между двумя серверами — и то, если вы не перегрузили публичный тестовый сервер, не забыли про TCP-окно и не запустили тест через прокси.


Что именно измеряет iperf3

Утилита отдаёт три ключевые метрики: Bitrate (пропускная способность в битах в секунду), Transfer (объём переданных данных) и Retr (число повторных передач TCP). Для UDP добавляются Lost/Total Datagrams и задержка. Пример вывода:

[  5]  0.00-10.01 sec  2.18 GBytes  1.87 Gbits/sec receiver
[SUM] 0.0-10.0 sec   1.23 MBytes  1.03 Mbits/sec  0.123 ms  0/123 (0%)

Первая строка — TCP, вторая — UDP. Цифры честные, но только для канала между двумя узлами. Они не учитывают задержки, джиттер, маршрутизацию через CDN или ограничения провайдера на последней миле — то есть всё то, что определяет, как быстро откроется браузер.


Запуск теста: минимальный набор

На обеих машинах нужен iperf3. На Debian/Ubuntu:

sudo apt install iperf3

Сервер на одной машине:

iperf3 -s -p 5201

Клиент на другой:

iperf3 -c 192.168.10.10 -t 20 -P 4 -w 1m -J > report.json
  • -t 20 — двадцатисекундный тест, достаточно для стабильного замера.
  • -P 4 — четыре параллельных потока, чтобы загрузить канал.
  • -w 1m — TCP-окно 1 МБ, чтобы выжать максимум, если обе стороны его поддерживают.
  • -J — JSON-выход для дальнейшего парсинга.

В Windows открываем порт 5201 в файерволе:

New-NetFirewallRule -DisplayName 'iPerf-Server-Inbound-TCP' -Direction Inbound -Protocol TCP -LocalPort 5201 -Action Allow

Для ESXi iperf3 встроен в vSAN, но запуск требует временного отключения защиты:

esxcli network firewall set --enabled false
localcli system settings advanced set -o /User/execInstalledOnly -i 0

Публичные серверы: удобно, но ненадёжно

В сети хватает списков «бесплатных» серверов:

  • iperf.selectel.ru (Москва)
  • speedtest.kolnet.ru (Россия)
  • iperf.worldstream.nl (Нидерланды)
  • iperf.donapex.net (публичный стенд)

Но у них два системных ограничения. Во-первых, только один тест на сервер: если второй клиент стучится на iperf.selectel.ru, он получит «port already in use». Во-вторых, в час пик цифры могут просесть на 20–30 % из-за нагрузки на CPU или сеть. Проверьте честность: запустите тест три раза в разное время и сравните. Если разброс больше 15 %, сервер не подходит для эталонных замеров.


TCP против UDP: где правда, а где — нет

TCP даёт максимальную пропускную способность, но результат зависит от настроек. Без увеличения окна (-w) канал на 10 Гбит/с может показать только 4–5 Гбит/с. Пример из документации:

[  5]  0.00-10.01 sec  2.18 GBytes  1.87 Gbits/sec receiver

Здесь 1.87 Гбит/с — результат после двадцатисекундного теста с четырьмя потоками и окном 1 МБ. Без этих параметров цифра будет ниже.

UDP полезен для джиттера и потерь, но не для максимальной скорости. Ограничение по умолчанию в некоторых сборках — 1 Мбит/с, но его можно снять ключом -b. Пример:

[SUM] 0.0-10.0 sec   1.23 MBytes  1.03 Mbits/sec  0.123 ms  0/123 (0%)

Если UDP теряет 5 % пакетов, а TCP показывает 9 Гбит/с, это не значит, что канал идеален — просто TCP компенсирует потери повторными передачами. Для диагностики задержек UDP полезен. Для максимальной скорости — только TCP с правильными настройками.


Три сценария, где iperf3 бесполезен

  1. Скорость до сайта в интернете. Даже если iperf3 между серверами в Москве показывает 9 Гбит/с, Speedtest до того же хоста может выдать 800 Мбит/с. Причина — маршрутизация через CDN, ограничения провайдера, задержки на последней миле.
  2. Пропускная способность Wi-Fi или домашней сети. iperf3 измеряет только проводной канал между серверами.
  3. Реальная нагрузка приложений. iperf3 создаёт искусственный трафик, а не показывает, как браузер или база данных нагружают сеть.

Что делать, если цифры не совпадают с ожиданиями

Если iperf3 показывает меньше, чем должен, проверьте:

  • Обе машины работают с одной версией iperf3.
  • Порт 5201 открыт на файерволе обеих машин.
  • Параметры -w и -P учтены на обеих сторонах.
  • Тест запущен не через NAT, прокси или VPN.

Если разница между TCP и UDP значительна, канал нестабилен или перегружен. Если результаты скачут от теста к тесту, сервер или клиент нагружен другими задачами.


Не подменяйте iperf3 Speedtest. iperf3 — инструмент для инженеров, которые проверяют канал между серверами. Speedtest — для пользователей, которые хотят узнать Mbps до ближайшего Yandex-сервера.

Read more

Когда FPGA-кластер выгоднее подписки: расчёт на реальных цифрах

Когда FPGA-кластер выгоднее подписки: расчёт на реальных цифрах

FPGA-кластер из 72 устройств ускорил взлом FileVault в 498 раз и снизил латентность в банковских контурах до 0,8 мкс, но окупается только при стабильной нагрузке и наличии аппаратной экспертизы. В остальных случаях дешевле арендовать облачные инстансы или подписаться на коммерческие инструменты.

Три подхода к памяти AI-агентов на базе Git: где помогает, а где только перекладывает старые проблемы

Три подхода к памяти AI-агентов на базе Git: где помогает, а где только перекладывает старые проблемы

Memoir, Beads и Mem0 + Valkey обещают AI-агентам память, которая не теряется между сессиями и не загрязняет контекст. Но на практике Git-подобная память не универсальна: одни инструменты экономят токены, другие структурируют факты, третьи управляют задачами.