Тестирование скорости локального сегмента с помощью iPerf3

У вас дома или в офисе роутер заявил гигабит, а файлы между компатором ползут со скоростью 30–40 Мбит/с. Или, может, вы подключили новый коммутатор и хотите убедиться, что он реально пропускает нужный объём трафика. Или сервер подключён по 10G, а клиенты жалуются, что всё медленно. Во всех этих случаях первым делом хочется понять: проблема в сети или где-то дальше — в дисках, процессорах, настройках ОС.

Именно для этого существует iPerf3. Это утилита, которая позволяет измерять пропускную способность сети между двумя точками, генерируя искусственный трафик. Не нужно копировать гигабайтные файлы и засекать время — iPerf3 сам создаёт поток данных заданной ширины и показывает, сколько реально проходит.

Что такое iPerf3 и зачем он нужен

iPerf3 — это кроссплатформенная консольная утилита для измерения пропускной способности TCP и UDP между двумя узлами. Она работает на Linux, Windows, macOS и даже на многих роутерах с открытой прошивкой.

Главная идея проста: одна машина выступает в роли сервера (слушает), вторая — в роли клиента (отправляет данные). iPerf3 генерирует искусственный трафик и замеряет, сколько реально доезжает до приёмника.

Почему это лучше, чем копировать файлы через общую папку или качать что-то по интернету:

  • Вы тестируете именно сеть, а не дисковую подсистему. iPerf3 не пишет данные на диск — он гоняет их в памяти.
  • Вы контролируете параметры: размер окна, количество потоков, длительность теста, протокол.
  • Результаты воспроизводимы. Запустили тест, записали параметры — через месяц можете повторить и сравнить.
  • Это стандарт. Если вы скажете коллеге «прогнал iPerf3 и получил 940 Мбит/с», он сразу поймёт, о чём речь.

Установка iPerf3

Установка занимает минуту. iPerf3 есть в репозиториях практически всех популярных систем.

Linux (Debian/Ubuntu):

sudo apt update && sudo apt install iperf3

Linux (CentOS/RHEL/Fedora):

sudo dnf install iperf3

macOS (через Homebrew):

brew install iperf3

Windows:

  1. Скачайте готовый бинарник с официального сайта iperf.fr.
  2. Распакуйте архив, например, в C:\iperf3\.
  3. Запустите командную строку от имени администратора и перейдите в эту папку.

После установки проверьте, что всё работает:

iperf3 --version

Быстрый старт: первый тест за 30 секунд

Допустим, у вас два компьютера в одной локальной сети. Один имеет IP 192.168.1.10, второй — 192.168.1.20.

Шаг 1. На первом компьютере (192.168.1.10) запустите сервер:

iperf3 -s

Сервер начнёт слушать на порту 5201 по умолчанию. Он будет ждать подключения клиента.

Шаг 2. На втором компьютере (192.168.1.20) запустите клиент:

iperf3 -c 192.168.1.10

По умолчанию iPerf3 отправляет TCP-трафик в течение 10 секунд и показывает результат. Вы увидите примерно следующее:

Connecting to host 192.168.1.10, port 5201
[  5] local 192.168.1.20 port 49876 connected to 192.168.1.10 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   112 MBytes   941 Mbits/sec
[  5]   1.00-2.00   sec   112 MBytes   941 Mbits/sec
[  5]   2.00-3.00   sec   112 MBytes   941 Mbits/sec
...
[  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec                  sender
[  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec                  receiver

Всё. Вы только что измерили пропускную способность между двумя машинами. 941 Мбит/с — это типичный результат для гигабитной сети (до теоретических 940–950 Мбит/с с учётом накладных расходов).

Что означают результаты

В выводе iPerf3 ключевые строки — это sender и receiver:

  • Sender — сколько данных клиент реально отправил в сеть.
  • Receiver — сколько данных сервер реально принял.

В идеале эти числа совпадают. Если sender показывает 940 Мбит/с, а receiver — 200 Мбит/с, значит, приёмник не справляется: узкое место где-то на стороне сервера (процессор, диск, настройки сетевой карты, драйвер).

Строка Interval показывает временной отрезок измерения. По умолчанию — каждую секунду. Это полезно, чтобы увидеть, стабильная ли скорость или она «прыгает».

Если вы видите, что в первую секунду скорость 500 Мбит/с, а потом стабильно 940 — это нормально, TCP «разгоняется». Но если скорость скачет от 100 до 900 каждую секунду — в сети что-то не так.

Ключевые параметры, которые стоит знать

По умолчанию iPerf3 делает то, что подходит в 80% случаев. Но иногда нужно изменить поведение теста. Вот параметры, которые я использую регулярно:

  • -t — длительность теста в секундах. По умолчанию 10. Для более стабильной картины запускайте на 30–60 секунд: iperf3 -c 192.168.1.10 -t 30
  • -P — количество параллельных потоков. По умолчанию один поток. Иногда один TCP-поток не может загрузить канал на всю ширину — попробуйте 4 или 8: iperf3 -c 192.168.1.10 -P 4
  • -u — переключиться на UDP вместо TCP. По умолчанию нужно ещё указать полосу: iperf3 -c 192.168.1.10 -u -b 1000M (тест UDP с полосой 1 Гбит/с)
  • -b — задание целевой полосы для UDP. Для TCP этот параметр не имеет смысла — TCP сам пытается занять всю доступную полосу.
  • -w — размер TCP-окна. По умолчанию система выбирает сама, но иногда стоит увеличить: iperf3 -c 192.168.1.10 -w 256K
  • -R — реверсивный тест. Сервер отправляет данные, клиент принимает. Полезно, когда хотите проверить направление от сервера к клиенту: iperf3 -c 192.168.1.10 -R
  • -p — порт сервера. По умолчанию 5201. Если запускаете несколько тестов одновременно или порт занят: iperf3 -s -p 5202
  • -J — вывод в формате JSON. Удобно, если хотите автоматизировать сбор результатов или строить графики.

TCP или UDP: что и когда использовать

Это важный момент, который часто упускают. TCP и UDP показывают разные вещи.

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

UDP-тест — вы задаёте конкретную полосу, и iPerf3 пытается гнать трафик с этой скоростью без переотправок. Если пакеты теряются — они теряются навсегда. В результатах вы увидите процент потерь. Это полезно для проверки качества канала: если при полосе 940 Мбит/с потери 0.01% — всё отлично, а если 5% — где-то проблема.

Когда что использовать:

  • Хотите узнать максимальную скорость канала — TCP.
  • Хотите проверить, есть ли потери пакетов — UDP.
  • Хотите проверить, как сеть ведёт себя под нагрузкой без управления перегрузкой — UDP с заданной полосой.
  • Тестируете качество VoIP или видеостриминга — UDP, потому что эти протоколы работают поверх UDP.

Практические сценарии тестирования

Сценарий 1: Проверка, что гигабитная сеть реально работает на гигабит

У вас гигабитный роутер, гигабитные сетевые карты, кабель Cat5e или Cat6. Подключаете два компьютера к роутеру и запускаете тест:

# На сервере (ПК1):
iperf3 -s

# На клиенте (ПК2):
iperf3 -c 192.168.1.10 -t 30 -P 4

Ожидаемый результат: 900–950 Мбит/с. Если получаете 100 Мбит/с — одно из звеньев договорилось о 100M (плохой кабель, грязный контакт, несовместимость). Если получаете 600–700 — возможно, один из узлов не может обработать гигабит в один поток, попробуйте увеличить -P.

Сценарий 2: Проверка производительности коммутатора

Подключаете два порта коммутатора кабелем, на каждый садитесь со своим ноутбуком и гоняете iPerf3 между ними. Если коммутатор заявлен как гигабитный на всех портах, то и между любыми двумя портами должны быть ~940 Мбит/с. Если на определённых портах скорость падает — возможно, у коммутатора слабая внутренняя шина или эти порты разделены на отдельный домен с ограниченной полосой.

Сценарий 3: Поиск узкого места в цепочке

У вас цепочка: сервер → коммутатор A → коммутатор B → клиент. Запускаете iPerf3 между сервером и клиентом — получаете 400 Мбит/с. Потом подключаете клиент напрямую к серверу (или к коммутатору A) — получаете 940 Мбит/с. Значит, проблема между коммутаторами A и B: плохой кабель, несовместимость скоростей, загрузка линка.

Сценарий 4: Проверка Wi-Fi сегмента

Сервер подключён по кабелю к роутеру, клиент — по Wi-Fi. Запускаете iPerf3 и видите реальную скорость Wi-Fi-канала. Это нагляднее, чем любой онлайн-тест, потому что вы измеряете именно ваш роутер, вашу сеть, вашу квартиру с её помехами.

Сравнение подходов к тестированию

Когда нужно выбрать инструмент или метод, бывает сложно сориентироваться. Вот сравнение основных подходов к тестированию локальной сети:

Метод Что измеряет Плюсы Минусы
iPerf3 (TCP) Реальную пропускную способность с гарантией доставки Стандарт де-факто, кроссплатформенный, гибкий Нужно установить на оба узла
iPerf3 (UDP) Качество канала с контролем потерь и джиттера Показывает потери, подходит для мультимедиа Сложнее интерпретировать результаты
Копирование файла (SMB/NFS) Реальную скорость передачи файлов Не нужен дополнительный софт Зависит от дисков, протокола, настроек ОС — не чистый тест сети
speedtest.net (локальный сервер) Скорость до конкретного узла в интернете Быстро, ничего не нужно настраивать Зависит от интернет-канала, не показрует локальную сеть
netperf Пропускная способность (аналог iPerf) Старый, мощный, много режимов Сложнее в использовании, менее распространён

Частые ошибки при тестировании

Вот реальные ошибки, которые я вижу снова и снова:

  • Запуск сервера и клиента на одной машине через localhost. Это не тест сети — это тест стеков TCP/IP операционной системы. Данные не проходят через сетевой интерфейс, скорость будет нереалистично высокой (десятки гигабит) и не иметь отношения к вашей реальной сети.
  • Забывают про брандмауэр. iPerf3 использует порт 5201 по умолчанию. Если он заблокирован файрволом на сервере, клиент не подключится. Решение: либо откройте порт, либо укажите другой через -p.
  • Тестируют по Wi-Fi и удивляются низкой скорости. Wi-Fi — это разделясреда. Скорость зависит от расстояния, помех, количества соседних сетей, ширины канала (20/40/80 МГц). Для чистого теста сети используйте кабельное подключение. Wi-Fi тестируйте отдельно и с пониманием этих ограничений.
  • Запускают тест на 1 секунду. 10 секунд по умолчанию — это минимум. TCP не успевает «разогнаться» за первую секунду. Для адекватной картины — 30 секунд минимум.
  • Тестируют в часы пиковой нагрузки на сеть. Если в это же время кто-то качает торренты, стримит 4K или бэкапит терабайты — результат будет занижен не из-за проблем в сети, а из-за того, что полоса уже занята. Запускайте тест, когда сеть свободна.
  • Не проверяют оба направления. Сеть может быть асимметричной: в одну сторону 940 Мбит/с, в другую — 200. Это редко для проводной сети, но бывает с плохими кабелями или некорректными настройками сетевых карт. Запустите тест с -R, чтобы проверить обратное направление.
  • Один поток и сразу выводы. Один TCP-поток иногда не может загрузить канал полностью из-за ограничений на стороне приёма или передачи (размер окна, обработка прерываний). Попробуйте -P 4 или -P 8 перед тем, как делать выводы о скорости канала.

Как интерпретировать результаты: что нормально, а что нет

Вот ориентиры для типовых сценариев:

  • Гигабитная сеть (1G) по кабелю Cat5e/Cat6: 900–950 Мбит/с — отлично. 850–900 — нормально. Ниже 800 — есть повод разобраться.
  • 10-гигабитная сеть (10G): 9.0–9.4 Гбит/с — отлично. Здесь накладные расходы меньше в процентном соотношении.
  • Wi-Fi 5 (802.11ac), 80 МГц, 2×2: 300–600 Мбит/с в реальности — нормально. Заявленные 866+ Мбит/с — это теоретический PHY rate, реальная пропускная способность всегда ниже.
  • Wi-Fi 6 (802.11ax), 160 МГц, 2×2: 600–1200 Мбит/с — хороший результат в реальных условиях.
  • UDP-потери: менее 0.1% — отлично. 0.1–1% — приемлемо для большинства задач. Более 1% — проблема, нужно искать причину.

Продвинутые возможности

Автоматизация и сбор результатов

Если нужно регулярно тестировать сеть и сохранять результаты, ключ -J (JSON-вывод) очень удобен:

iperf3 -c 192.168.1.10 -t 30 -J > result.json

JSON можно распарсить скриптом и сложить в базу или использовать для построения графиков. Есть готовые инструменты вроде iperf3 + Grafana для визуализации результатов во времени.

Тестирование с несколькими клиентами

По умолчанию iPerf3-сервер обслуживает одно соединение за раз. Если нужно запустить несколько тестов одновременно, запустите сервер на разных портах:

iperf3 -s -p 5201
iperf3 -s -p 5202
iperf3 -s -p 5203

Или используйте флаг -P на клиенте для параллельных потоков — это проще и в большинстве случаев достаточно.

Ограничение полосы для нагрузочного тестирования

Иногда нужно посмотреть, как сеть ведёт себя под нагрузкой, но не на всю ширину. Например, хотите проверить, что при 300 Мбит/с на один клиент коммутатор справляется без потерок:

iperf3 -c 192.168.1.10 -u -b 300M -t 60

Что делать, если результаты плохие

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

  1. Проверьте кабель. Самая частая причина — плохой контакт или повреждённый кабель. Переожмите, замените патч-корд. Для гигабита нужны все 8 жил, для 100 Мбит/с достаточно 4 — поэтому сеть «работает», но на пониженной скорости.
  2. Проверьте согласование скорости. На Linux: ethtool eth0. На Windows: свойства сетевого адаптера → Скорость и дуплекс. Должно быть 1000 Мбит/с, Full Duplex. Если 100M или Half Duplex — проблема.
  3. Отключите энергосбережение сетевой карты. Некоторые NIC снижают производительность для экономии энергии. На Linux: ethtool -s eth0 wol d и проверьте настройки ASPM.
  4. Проверьте загрузку процессора. На слабом роутере или старом ПК процессор может не справляться с обработкой гигабитного трафика. Если при тесте CPU в топе — это ваше узкое место.
  5. Проверьте буферы и кольца сетевой карты. ethtool -g eth0 покажет размеры RX/TX буферов. Маленькие буферы приводят к потерям пакетов при всплесках трафика.
  6. Обновите драйверы. Особенно на Windows и со встроенными сетевыми контроллерами (Realtek, Intel). Свежий драйвер иногда даёт прирост в 20–30%.

Рекомендации по организации тестирования

Чтобы результаты iPerf3 были честными и полезными:

  • Всегда запускайте тест минимум на 30 секунд и делайте 2–3 прогона. Берите среднее.
  • Тестируйте в моменты, когда сеть не нагружена другой активностью.
  • Записывайте параметры теста: длительность, количество потоков, направление, версию iPerf3. Через месяц вы забудете, при каких условиях получили тот или иной результат.
  • Если тестируете коммутатор или роутер — проверяйте несколько пар портов. Иногда проблема в конкретном порту, а не в устройстве в целом.
  • Для воспроизводимости используйте одинаковые параметры на всех тестируемых машинах: одинаковый размер окна, одинаковую длительность, одинаковое количество потоков.

Итог

iPerf3 — это тот инструмент, который должен быть в арсенале любого, кто так или иначе работает с сетями. Он бесплатный, занимает пару мегабайт, работает везде и даёт честный ответ на вопрос «а сеть-то реально держит заявленную скорость?».

Если коротко — ваш алгоритм действий:

  1. Установите iPerf3 на оба тестируемых узла.
  2. Запустите сервер на одном: iperf3 -s.
  3. Запустите клиент на другом: iperf3 -c <IP сервера> -t 30 -P 4.
  4. Сравните результат с ожидаемым для вашего типа подключения.
  5. Если результат плохой — проверяйте кабель, согласование скорости, драйверы и загрузку процессора.

Не нужно гадать, «тормозит ли сеть или это диск». Запустите iPerf3 — и через 30 секунд у вас будет точный ответ.

dfncfg.ru — цифровой мир и технологии