Скорость сети любят измерять «на глаз»: скачал файл, посмотрел на цифру в браузере и сделал вывод. Такой замер смешивает канал, диск, сервер и накладные расходы протокола. iperf3 даёт более честную картину: два хоста обмениваются данными по известному сценарию, а результат показывается в мегабитах в секунду, с потерями и повторами. Разберём установку, типовые команды, чтение вывода и ошибки, из-за которых цифры получаются заниженными.

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

Утилита создаёт TCP- или UDP-поток между клиентом и сервером и считает, сколько данных прошло за интервал. Это пропускная способность конкретного маршрута в конкретный момент, а не «скорость тарифа» провайдера. На результат влияют процессор, сетевой адаптер, драйвер, Wi-Fi, виртуальные коммутаторы и даже размер окна TCP. Поэтому один и тот же канал может дать разные числа утром и вечером, на одном ноутбуке и на другом.

iperf3 несовместим с iperf2: это разные протоколы и разные порты по умолчанию. Если на другой стороне запущен старый iperf, клиент просто не подключится. Проверяйте версию на обоих концах и используйте одинаковые сборки.

Установка и запуск сервера

Пакет есть в репозиториях большинства дистрибутивов. На одной машине запускается сервер, на другой — клиент. Сервер должен быть доступен по сети, а порт 5201 — открыт в межсетевом экране.

sudo apt install iperf3
iperf3 -s -p 5201
sudo ufw allow 5201/tcp

Для постоянного тестового стенда удобно завести службу systemd. Запускайте её от отдельного пользователя и не выставляйте сервер в публичный интернет без необходимости: это диагностический инструмент, а не сервис общего назначения.

[Unit]
Description=iperf3 server
After=network-online.target

[Service]
ExecStart=/usr/bin/iperf3 -s -p 5201
Restart=on-failure
User=iperf

[Install]
WantedBy=multi-user.target

После сохранения файла выполните systemctl daemon-reload и systemctl enable --now iperf3. Проверить, что порт слушается, можно командой ss -tlnp.

Первый замер

Базовый тест длится десять секунд и использует одно TCP-соединение. Для современных каналов этого мало: один поток часто упирается в процессор или в задержку. Запускайте несколько параллельных потоков и увеличьте время замера, чтобы отбросить всплески.

iperf3 -c 192.168.1.50 -t 30 -P 4
iperf3 -c 192.168.1.50 -t 30 -P 4 -R
iperf3 -c 192.168.1.50 -t 30 -P 4 --bidir

Параметр -R меняет направление: данные отправляет сервер, то есть проверяется приём на клиенте. Флаг --bidir гоняет трафик одновременно в обе стороны и показывает два независимых результата. Для домашнего канала важно мерить оба направления: провайдеры нередко дают разную скорость отдачи и приёма. Тридцати секунд обычно хватает, чтобы соединение вышло на плато; для каналов с большим произведением задержки на полосу добавьте время и ключ --get-server-output, чтобы увидеть статистику со стороны сервера.

UDP, JSON и настройка окна

UDP-режим показывает потери и джиттер, но не регулирует скорость сам: её нужно задавать флагом -b. Начните с значения ниже ожидаемого канала и повышайте, пока потери не станут заметными. JSON удобен для сохранения истории и построения графиков.

iperf3 -c 192.168.1.50 -u -b 200M -t 20
iperf3 -c 192.168.1.50 -u -b 200M -t 20 -R
iperf3 -c 192.168.1.50 -t 60 -O 5 -J > result.json
iperf3 -c 192.168.1.50 -t 30 -w 256K -M 1400

Ключ -O 5 исключает первые пять секунд из итоговой статистики — полезно, когда соединение разгоняется не сразу. -w задаёт размер окна TCP, -M — максимальный размер сегмента. Менять их стоит только при понимании, что делает сеть: неверные значения легко ухудшают результат.

Как читать вывод

  • Bitrate. Основная цифра, скорость передачи. Переведите её в мегабайты в секунду делением на восемь, если сравниваете с загрузкой файлов.
  • Retr. Количество повторных передач TCP. Ненулевое значение на локальной сети — повод искать проблему; небольшие значения на дальней линии допустимы.
  • Cwnd. Размер окна перегрузки. Если он постоянно мал, маршрут или приёмник ограничивают поток.
  • Sender и Receiver. Итоговые строки для отправителя и получателя. Расхождение говорит о потерях или о том, что данные не успевают обрабатываться.
  • Lost и Total. В UDP-режиме — потери и общее число датаграмм. Потери выше долей процента обычно уже слышны в голосовых сервисах.
  • Jitter. Вариация задержки. Для реального времени важнее стабильность, чем пиковая скорость.

Не путайте биты и байты: гигабитный линк в идеале даёт около 940 Мбит/с полезной нагрузки, а не 1000. Часть полосы съедают заголовки, а часть — ограничения драйвера.

Типичные ошибки

Если цифры заметно ниже ожидаемых, сначала проверьте базу: адрес, порт, линк и загрузку процессора. Часто проблема не в канале, а в том, что тест идёт через Wi-Fi или виртуальный интерфейс.

ss -tlnp 'sport = :5201'
ethtool eth0 | grep -E 'Speed|Duplex'
nstat -az TcpRetransSegs
ip -brief address
  • Разные версии. iperf2 и iperf3 несовместимы, а сообщение об ошибке бывает невнятным.
  • Закрытый порт. Проверьте firewall на обеих машинах и на промежуточном роутере.
  • Один поток. Без -P тест упирается в ядро одного соединения. Для 10G и выше это критично.
  • Wi-Fi. Беспроводной канал делит полосу с соседями, а ретрансляции снижают результат в разы.
  • CPU и энергосбережение. Слабый процессор или режим экономии энергии режут скорость раньше, чем сеть.
  • Асимметрия. Обратный тест может показать совсем другую цифру из-за настроек маршрутизатора.
  • Виртуализация. Виртуальный коммутатор и NAT добавляют накладные расходы; для чистого замера используйте мост.

Чек-лист честного замера

  1. Запустите сервер на проводном хосте и убедитесь, что порт доступен.
  2. Проверьте скорость линка через ethtool и отсутствие ошибок на интерфейсе.
  3. Сделайте прямой и обратный тест по 30–60 секунд с четырьмя потоками.
  4. Повторите замер два-три раза в разное время и сравните разброс.
  5. Сохраните результат в JSON, чтобы не спорить о цифрах по памяти.
  6. Для UDP добавьте потери и джиттер, но не используйте UDP для оценки «скорости интернета».

Итог

iperf3 хорош тем, что отделяет сеть от всего остального и даёт воспроизводимые числа. Запустите сервер, снимите прямой и обратный результат, посмотрите на повторы и потери — и только потом делайте выводы о канале. Аккуратный замер занимает несколько минут, зато экономит часы споров с провайдером и поисков несуществующей проблемы.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте