Зачем нужен iperf3, если есть тест скорости интернета
Онлайн-тесты измеряют путь до внешнего сервера, а на результат влияют провайдер, загрузка узла и ваш договор с провайдером. Если фильм с домашнего NAS тормозит, а интернет-скорость в порядке, нужно проверить сеть внутри дома: роутер, кабель, Wi-Fi. Для этого нужны два своих устройства: iperf3 генерирует поток данных между ними и измеряет фактическую скорость передачи.
Такой тест отвечает на вопросы: работает ли гигабитный порт на полной скорости, какую скорость реально даёт Wi-Fi в дальней комнате, не ограничивает ли скорость дешёвый кабель или слабый адаптер, симметричен ли канал в обе стороны. Он не зависит от интернета и не нагружает внешние серверы. Проверять нужно только свои устройства.
Программа состоит из сервера и клиента: вы запускаете одну и ту же утилиту на двух машинах в разных режимах. Она доступна для Linux, macOS и Windows, но в Windows её нужно скачать в виде готовой сборки, а в других системах установить из менеджера пакетов: apt install iperf3 или brew install iperf3.
Запуск: сервер и клиент
Порядок действий короткий.
- Определите адрес будущего сервера: ipconfig в Windows, ip addr в Linux, ifconfig в macOS. Допустим, это 192.168.1.10.
- На сервере запустите: iperf3 -s. Он слушает порт 5201 и ждёт подключения.
- Убедитесь, что брандмауэр сервера пропускает входящие соединения на этот порт, TCP для обычного теста и UDP для режима -u.
- На клиенте запустите: iperf3 -c 192.168.1.10.
- Через десять секунд (время по умолчанию) вы увидите итоговую строку. Сервер остановите сочетанием Ctrl и C.
Пример вывода (пример): по строке на каждую секунду с колонками Interval, Transfer, Bitrate, а в конце итоги отправителя и получателя, например около 940 Mbits/sec для проводного гигабитного соединения. Такое значение считается типичным: часть пропускной способности расходуется на служебные заголовки, поэтому 1000 не достигается. Для Wi-Fi значения гораздо ниже и заметно колеблются.
Ключи, которые действительно нужны
| Ключ | Что делает |
|---|---|
| -s | Режим сервера |
| -c адрес | Режим клиента, подключение к серверу |
| -t N | Длительность теста в секундах, по умолчанию 10 |
| -P N | Число параллельных потоков |
| -R | Обратный режим: данные идут от сервера к клиенту |
| -u | Использовать UDP вместо TCP |
| -b скорость | Целевая скорость, например -b 100M для UDP |
| -i N | Интервал вывода статистики в секундах |
| -p порт | Порт вместо 5201 |
| -f m | Показывать скорость в мегабитах |
| -J | Вывод в формате JSON |
| -O N | Пропустить первые N секунд, пока разгоняется TCP |
Ключ -R удобен потому, что по умолчанию тестируется отправка с клиента. Чтобы измерить и приём, добавьте -R и сравните значения: у Wi-Fi и у некоторых кабельных линий они различаются. В новых версиях есть ещё режим одновременной передачи в обе стороны, проверьте его наличие в справке своей версии.
Как читать результат и находить причину
Сравнивайте результат не с «идеальной» цифрой, а с ожиданием для вашей линии. Ориентиры: гигабитный кабель — около 930–940 Mbits/sec, сто мегабит — около 94, Wi-Fi зависит от стандарта, канала и расстояния.
- Проводное соединение показывает около 100 вместо 940: скорее всего, договорились на 100 Мбит/с из-за одной плохой пары в кабеле, разъёма, или порта. Проверьте кабель, замените, посмотрите скорость линка в свойствах адаптера.
- Один поток даёт мало, а -P 4 значительно больше: сказывается ограничение отдельного TCP-соединения, задержка или размер окна. Реальные программы нередко используют несколько соединений.
- Сильные колебания по секундам при Wi-Fi: помехи, перегруженный канал, дальняя комната. Сравните разные точки квартиры.
- Скорость в одну сторону заметно ниже, чем в другую: проверьте слабый адаптер, настройки энергосбережения и драйверы.
- Значение в столбце Retr, если он присутствует, показывает число повторных передач: высокие значения говорят о потерях.
Чтобы отделить проблему Wi-Fi от проблемы остальной сети, сначала подключите клиента проводом к роутеру и проведите тест, затем повторите по Wi-Fi. Если по кабелю всё хорошо, а по Wi-Fi плохо, ищите причину в эфире, а не в роутере.
UDP-тест и потери пакетов
Для проверки потерь и дрожания задержки используйте режим UDP: iperf3 -c адрес -u -b 50M. По умолчанию для UDP задана невысокая скорость, поэтому её задают явно. В итоговой строке появятся столбцы Jitter и Lost/Total Datagrams: вторая показывает число потерянных датаграмм и долю в процентах. Небольшая доля потерь при скорости ниже ёмкости канала — тревожный сигнал: причина в помехах или перегрузке.
Не задавайте слишком большую скорость: вы можете забить канал и помешать остальным устройствам сети. Запускайте тест в момент, когда сеть свободна, или предупредите домашних. Помните, что результат зависит и от производительности самих устройств: слабый процессор на старом ноутбуке или роутере в роли клиента ограничит скорость раньше, чем канал.
Практические советы и ограничения
Тестируйте несколько раз и берите типичное значение: скорость меняется. Закройте программы, которые активно используют сеть, включая облачную синхронизацию и обновления. Не проверяйте iperf3 на чужих устройствах и не запускайте сервер на открытом порту в интернете: он не предназначен для постоянной работы на внешнем адресе. После теста остановите сервер и закройте временно открытый порт в брандмауэре.
Для постоянного запуска в локальной сети сервер можно запустить как фоновую службу ключом -D, а для однократной проверки использовать -1, тогда он завершится после первого клиента. Если нужен отчёт, сохраните вывод в файл через ключ --logfile либо перенаправление, и сравнивайте результаты по времени суток.