Утилита iPerf: тестирование пропускной способности и скорости сети

Iperf – кроссплатформенная консольная утилита с открытым исходным кодом, предназначенная для тестирования пропускной способности сети между двумя узлами. Утилита iperf позволяет генерировать нагрузочный TCP и UDP трафик между хостами. С помощью iperf можете быстро измерить максимальную пропускную способность сети (скорость передачи данных) между сервером и клиентом, провести нагрузочное тестирование канала связи, маршрутизатора, сетевого шлюза (файервола), Ethernet или Wi-Fi сети.

В этой статье мы покажем, как использовать утилиту iPerf (в большинстве случае используется версия iPerf3) для проверки скорости сети между различными узлами: Windows, Linux и VMware ESXi (есть версии iperf для Android, MacOS, RouterOS от MikroTik и других платформ).

Утилита iperf является кроссплатформенной и доступна для всех операционных систем. Iperf работает в клиент- сервером режиме (весь функционал в одном биранике). Утилиту нужно запустить на обоих устройствах, пропускную способность сети между которыми нужно оценить:

  • Сервер iperf – запускается на любом устройстве, слушает определенный порт и принимает трафик от клиента. Сервер запускается командой: iperf3 -s
  • Клиент iperf генерирует тестовый TCP/UDP трафик и отравляет его на сервер. При запуске клиента в качестве параметра указывается имя сервера, где запущен iperf: iperf3 -c 192.168.123.123

Утилита iPerf для Windows

Скомпилированную версию iPerf для Windows можно скачать с GitHub https://github.com/ar51an/iperf3-win-builds/releases

Есть версии iPerf3 с поддержкой openssl и аутентификации, но в самом простом случае достаточно простой версии. Скачайте и распакуйте архив с последней версией ( iperf-3.19.1-win64.zip в этом примере на диск).

скачать iperf3 для windows с github

Утилита не требует установки. В архиве всего два файла: cygwin1.dll и iperf3.exe.

скачать версию iperf для windows 10

Iperf это консольная утилита, которая запускается из командной строки. При запуске iperf3.exe без параметров, она выведет список доступных опций.

утилита iperf для windows

Если вы планируете запускать iPerf3 в Windows в режиме сервере (параметр -ы), нужно в Windows Defender Firewal открыть входящий порт 5201 для протоколов TCP и UDP. Можно создать разрешающие правила файервола с помощью PowerShell:

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

открыть порт 5201 для iperf в windows

Для Windows есть несколько реализаций графического интерфейса iPerf. Например, Iperf3-Cygwin-GUI и jperf.

Утилита jperf написана на Java (для работы на компьютере должна быть установлена Java-машина). Помимо графических рюшечек к CLI интерфейсу, Jperf умеет в реальном времени строить графики пропускной способности канала связи.

Для использования достаточно указать адрес сервера iPerf и запустить проверку.

Jperf 2.0.2 - графический интерефейс

Установка iPerf в Linux

В RHEL подобных дистрибутивах (CentOS/RHEL/Fedora) пакет iperf3 включен в состав базового репозитория AppStream. Вы можете установить его стандартной командой yum/dnf:

# dnf install iperf3

В дистрибутивах Debian/Ubuntu для установки iperf3, выполните:

$ sudo apt install iperf3

iperf - установить в Linux

При установке пакета в Debian он предлагает запустить iperf в виде системного демона. Если вы часто используете тестирование iperf с этим хостом в режиме сервера, подтвердите это.

iperf в режиме демона linux

Если данный Linux хост будет использоваться в качестве сервера iPerf, нужно открыть соответствующие порты:

Debian/Ubuntu:

$ sudo ufw allow 5201/tcp

$ sudo ufw allow 5201/udp

linux: открыть порты в файерволе для iperf3

В RHEL дистрибутивах Linux, чтобы открыть порт 5201 в firewalld (или iptables):

# firewall-cmd --permanent --add-port=5201/tcp
# firewall-cmd --permanent --add-port=5201/udp
# firewall-cmd --reload

Запуск iPerf в VMware ESXi

В VMware ESXi 8 утилита iperf3 доступна по умолчанию (как часть vSAN), но из-за ограничений безопасности ее запуск из консоли запрещен.

Чтобы разрешить использовать iPerf в ESXi 8, подключитесь к консоли ESXi по SSH и выполните команды (как для клиента, так и сервера iPerf):

# временно отключить файервол хоста

# esxcli network firewall set --enabled false

# разрешить запуск скопированных бинарников

# localcli system settings advanced set -o /User/execInstalledOnly -i 0

# cp /usr/lib/vmware/vsan/bin/iperf3 /usr/lib/vmware/vsan/bin/iperf3.copy

При запуске сервера iPerf в ESXi его нужно привязывать к интерфейсу vmkernel:

Узнайте IP адрес vmkernel:

# esxcli network ip interface ipv4 get

# cd /usr/lib/vmware/vsan/bin/

# ./iperf3.copy -s -B <vmkernel-IP> -p <port>

Запуск клиента:

# cd /usr/lib/vmware/vsan/bin/

# ./iperf3.copy -c <Server-IP> -u -b 10M -l 1400 -i 1 -t 300 -p <port>

После завершения тестирования, верните исходные настройки файервола и системы безопасности:

# localcli system settings advanced set -o /User/execInstalledOnly -i 1

# esxcli network firewall set --enabled true

открыть порт iperf в файерволе vmware esxi

Проверка скорости сети с помощью iPerf

Рассмотрим несколько примеров использования iperf для тестирования пропускной способности сети.

Запускаем утилиту iPerf на любом хосте (в нашем случае это Linux) в режиме сервера:

# iperf3 –s

Сервер iPerf3 сразу запускается с поддержкой TCP и UDP и ожидает подключений от клиентов на порту 5201.

Server listening on 5201

Чтобы запустить сервер iPerf в фоновом режиме, добавьте ключ -D:

iperf3 -s -D

Важно. Аргументы утилиты iperf регистрозависимы!

запуска iperf3 сервера на примере centos

Можно запустить iperf сервер с большим размером TCP окна и на другом порту:

# iperf3 -s -w 32768 –p 5203

-w 32768 – зададим размер окна TCP в 32 KB (по умолчанию около 8 Кб)

–p 5203 – порт, на котором ожидает подключения iperf (напоминаю, что iperf2 по умолчанию слушает на порту 5001).

В качестве клиента iPerf у меня выступает компьютер с Windows 11. Откройте командную строку и перейдите в каталог с исполняемым файлом iperf3:

cd c:\tools\iperf

Чтобы запустить тестирование клиентом iPerf, укажите адрес (имя) хоста, где запущен сервер iperf:

iperf3.exe -c 192.168.1.202

Клиент начнет генерировать сетевой трафик и выполнит тестирование канала. С настройками по-умолчанию используется только TCP, тестирование длится 10 секунд, без ограничения максимальной скорости.

анализ измерения производительности сети с помощью iperf, результаты

  • Interval – интервал тестирования (в сек.);
  • Transfer – размер переданных данных за это время
  • Bitrate – средняя пропускная способность сети за данный период

Если вы запустили сервер iperf с увеличенным размером TCP окна, вы можете использовать следующую команду для получения максимальной нагрузки на сеть:

iperf3.exe -c 192.168.1.202 -P 8 -t 30 -w 32768 -i 5 -f g

  • -c 192.168.1.202 – IP адрес сервера iperf;
  • -w 32768 — увеличиваем размер TCP окна;
  • -t 30 – время в секундах, в течении которого выполняется тестирование (по умолчанию 10 секунд);
  • -P 8 — число параллельных потоков (подключений), используется для получения максимальной нагрузки на канал;
  • -i 5 – выводить статистику на экран каждые 5 секунд. Параметр удобно использовать при продолжительных тестах (несколько минут, часов);
  • -f m — выводить результаты в Мбит/с. Здесь можно использовать атрибуты kmgKMG (килобиты, мегабиты, мегабайты и т.д.).
  • -n 1G – количество данных, которые нужно передать на сервер iPerf

В нашем примере тестирование длилось 30 секунд. В итоговом отчете нас интересует значения столбца Bandwidth в последней строке [SUM]. Здесь указаны средняя скорость отправки (sender) и получения данных по сети (receiver).

В нашем случае средняя пропускная способность сети между двумя узлами – 79,7 Мбит/с. Было передано 285 Мб данных (столбец Transfer).

iperf итоговые данные о максимальной скорости передачи данных в сети между двумя хостами

Можно запустить iperf в обратном режиме (сервер отправляет данные, а клиент принимает), для этого на клиенте указывается опция –R.

По-умолчанию утилита генерирует TCP трафик, если вам нужно протестировать скорость сети для UDP пакетов, добавьте на клиенте параметр –u

iPerf: тестирование скорости Интернета

Если вам нужно проверить ваш интернет-канал (предоставляемый провайдером), можно воспользоваться одним из iperf публичных серверов (список доступен здесь):

iperf3 -c speedtest.uztelecom.uz

Также у компании Эр-Телеком (Дом.Ру) во многих городах запущены собственные публичные сервера iperf. Например:

  • st.samara.ertelecom.ru
  • st.nsk.ertelecom.ru
  • st.nn.ertelecom.ru
  • st.ufa.ertelecom.ru
  • st.chel.ertelecom.ru

iperf3 -c st.nn.ertelecom.ru

iperf проверить скорость интернета

Публичные сервера iPerf могут выступать в качестве альтернативы сервиса проверки скорости Интернета Speedtest , который заблокирован в РФ в 2025.

Основной недостаток публичных серверов — iperf3 не поддерживает несколько одновременных тестов. Если сервер iperf сейчас выполняет тестирование одним клиентом, то при попытке подключиться к нему с другого вы получите ошибку: iperf3: error — the server is busy running a test. try again later.

Если нужно оценить пропускную способность сети в обоих направлениях (в дуплексном режиме), дополнительно на клиенте нужно указать опцию —bidir:

iperf3.exe -c IP -P 8 -t 30 -w 32768 --bidir

iperf bi-direct режим - скорость в обе стороны

Во время выполнения теста сети iperf вы можете следить за нагрузкой сетевого интерфейс компьютера через Task Manager.

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

Загрузка LAN интерфейса ethernet с помощью iperf

Полный список опций утилиты iperf можно получить так:

iperf3 –-help

Утилита iperf3 при тестировании канала позволяет настраивать параметры времени, буферов и протоколов (TCP, UDP, SCTP), что может быть полезным как для диагностики, так и для тюнинга сетевых соединений. Позволяет выполнить стресс-тестирование канала связи, найти узкие мест в сети, тестирования локальных сетей, Wi-Fi и облачных систем.


Предыдущая статья Следующая статья


Комментариев: 8 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)