Поиск по сайту:

Использование iPerf для проверки скорости и пропускной способности сети


IPerf — это инструмент командной строки с открытым исходным кодом, предназначенный для проверки пропускной способности сети между двумя сетевыми хостами. iPerf позволяет генерировать трафик TCP и UDP (нагрузку) между двумя хостами. Вы можете использовать iPerf для быстрого измерения максимальной пропускной способности сети (пропускной способности) между сервером и клиентом, а также проведения стресс-тестирования канала интернет-провайдера, маршрутизатора, сетевого шлюза (брандмауэра), производительности сети Ethernet или Wi-Fi.

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

IPerf - кроссплатформенный инструмент, не требующий установки в Windows. Просто скачайте исполняемый файл и запустите его на двух устройствах, пропускную способность сети между которыми необходимо протестировать. IPerf работает в режиме клиент-сервер. На первом устройстве iPerf запускается в режиме сервера (ожидает трафика от клиента iPerf). На втором компьютере iPerf запускается в режиме клиента, генерирует трафик TCP или UDP и измеряет максимальную скорость передачи данных.

В большинстве случаев сейчас используется версия iPerf3 (она поддерживает высокоскоростное тестирование UDP, по умолчанию используется порт 5201 TCP/UDP).

Как установить и использовать iPerf в Windows?

Вы можете скачать iPerf 3.1.3 для Windows по следующей ссылке https://iperf.fr/iperf-download.php. Если вы хотите использовать iPerf 2.0, вы можете получить его здесь. Вам не нужно устанавливать iPerf в Windows, достаточно скачать архив iPerf и распаковать его в локальную директорию на диске. В архиве всего два файла:

cygwin1.dll

и

iperf3.exe

Вы можете скачать архив iPerf и извлечь его на локальный диск с помощью скрипта PowerShell:

$iPerfZip = "https://iperf.fr/download/windows/iperf-3.1.3-win64.zip"
$TargetFolder = Join-Path $env:TEMP "iperf.zip"$iPerfPath = Join-Path $env:TEMP "iperf"
if (!(Test-Path $iPerfPath))
{ Invoke-WebRequest -Uri $iPerfZip -OutFile $TargetFolder
Expand-Archive -Path $TargetFolder -DestinationPath $iPerfPath
}

Iperf — это консольный инструмент, и вам нужно запускать его из командной строки. Откройте командную строку (cmd.exe) и перейдите в каталог с утилитой. Например:

cd c:\tools\iperf

Если вы запустите программу iperf3.exe без параметров, она отобразит список доступных параметров.

Утилита iPerf может работать в режиме сервера (

-s

вариант) или клиентский режим (

-c

). Если вы используете сервер iPerf в Windows, вам необходимо открыть входящий порт 5201 для протоколов TCP и UDP. Вы можете открывать порты с помощью графического интерфейса брандмауэра Защитника Windows или с помощью команд 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

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

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

В галерее сценариев PowerShell есть отдельный модуль iPerfAutomate, который можно использовать для получения показателей производительности сети в сценариях PowerShell. Установить модуль можно командой:

Install-Module -Name iPerfAutomate

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

В CentOS/RHEL/Fedora/Rocky Linux/Oracle Linux 8 пакет iperf3 доступен в базовом репозитории AppStream (в CentOS 7 вы можете найти iperf3 в репозитории EPEL).

Вы можете установить его с помощью команды dnf (yum):

# dnf install iperf3

В дистрибутивах Debian/Ubuntu/Mint вы можете установить iperf3 с помощью команды:

$ sudo apt install iperf3 

Если вы хотите использовать хост Linux в качестве сервера iperf3, вам необходимо открыть порты TCP/UDP 5201 в firewalld (или iptables):

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

Использование iPerf на VMware ESXi

VMware удалила инструмент iPerf из ESXi 6.7, но вернула его в 6.7U1. Убедитесь, что на вашем хосте ESXi установлен iPerf. Подключитесь к консоли ESXi через SSH, перейдите в каталог /usr/lib/vmware/vsan/bin и проверьте, содержит ли он двоичный файл iperf или iperf3.

Если iPerf не установлен, вы можете вручную загрузить автономный пакет iperf здесь (http://vibsdepot.v-front.de/depot/bundles/iperf-2.0.5-1-offline_bundle.zip). Скопируйте его на хост ESXi и установите командой:

# esxcli software vib install -d /iperf-2.0.5-1-offline_bundle.zip -no-sig-check

Инструмент будет установлен в каталог /opt/iperf/bin. Используйте следующую команду для запуска iPerf на VMware ESXi:

# /opt/iperf/bin/iperf3

На сайте v-front вы можете найти большое количество драйверов и инструментов сообщества для ESXi. Скрипты для добавления драйверов в установочный образ ESXi также доступны здесь.

Если вы используете сервер iPerf на хосте ESXi, вам необходимо открыть порт 5201. Этот порт по умолчанию отключен в брандмауэре ESXi. Чтобы их открыть, вы можете временно отключить брандмауэр ESXi:

# esxcli network firewall get
# esxcli network firewall set --enabled=false

# esxcli network firewall set --enabled true

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

# esxcli network ip interface ipv4 get

Проверить доступность между хостами ESXi можно с помощью команды vmkping:

# vmkping IP_address

Запустите iPerf на IP-адресе vmkernel:

# iperf -s -B 192.168.31.50

Используйте инструмент iPerf для проверки скорости/пропускной способности сети

Давайте теперь рассмотрим несколько примеров использования iPerf для проверки пропускной способности сети. В этом примере мы будем использовать хост Linux в качестве сервера iperf. Давайте запустим iperf в режиме сервера:

# iperf3 -s

Сервер iPerf запущен, ожидает подключения по TCP-порту 5201.

Server listening on 5201.

Подсказка. Аргументы iPerf чувствительны к регистру!

В зависимости от настроек брандмауэра между клиентом и сервером вы можете изменить порт прослушивания, используя аргумент -p [номер_порта]. Вы можете запустить сервер iPerf с большим размером окна TCP и на другом порту TCP. Используйте команду:

# iperf3 -s -w 32768 -p 5200
  • -w 32768 - изменить размер TCP-окна на 32 КБ (по умолчанию около 8 КБ);

  • -p 5200 - порт, на котором iPerf ожидает соединений (обратите внимание, что iperf2 по умолчанию прослушивает порт 5001, а iperf3 прослушивает порт 5201).

Вы можете запустить сервер iPerf как службу Windows, используя аргумент -D.

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

cd c:\tools\iperf

Чтобы запустить тест пропускной способности сети с клиента, укажите адрес сервера iPerf (или DNS-имя):

iperf3.exe -c 192.168.1.200

Клиент начнет генерировать сетевой трафик, проверит соединение в течение 10 секунд и отобразит следующую таблицу результатов.

  • Интервал - интервал тестирования (в секундах);

  • Передача - размер передаваемых данных;

  • Пропускная способность - средняя скорость передачи данных.

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

iperf3.exe -c 192.168.1.200 -P 8 -t 30 -w 32768 -i 5 -f g
  • -c 192.168.1.200 - IP-адрес сервера iPerf;

  • -w 32768 - увеличить размер TCP-окна;

  • -t 30 - продолжительность теста в секундах (по умолчанию 10 секунд);

  • -P 8 - количество параллельных потоков для получения максимальной загрузки канала;

  • -i 5 - отображать статистику iPerf каждые 5 секунд. Параметр удобно использовать при длительных тестах (несколько минут, часов);

  • -f m — вывести результаты в Мбит/с. Здесь можно использовать значения kmgKMG (килобиты, мегабиты, мегабайты, гигабиты и т. д.).

В моем примере тест длился 30 секунд. В итоговом отчете нас интересуют значения столбца Пропускная способность, указанные в последней строке [SUM]. Здесь показана средняя скорость отправки и получения данных по сети. В нашем случае средняя пропускная способность сети между двумя хостами составляет 85,9 Мбит/с. Было передано 307 МБ данных (столбец Передача) с симметричной скоростью (отправитель=получатель).

Вы можете запустить iPerf в обратном режиме (сервер отправляет данные, а клиент их получает). Для этого используйте опцию -R на клиенте.

По умолчанию iPerf генерирует TCP-трафик. Если вам нужно проверить пропускную способность вашей сети на наличие UDP-пакетов, вы должны использовать опцию -u. В этом случае вам следует запустить сервер iPerf командой: iperf3 -s -u).

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

iperf3 -c iperf.scottlinux.com

Обратите внимание, что сервер iPerf3 одновременно принимает только одно клиентское соединение (в iPerf2 допускается проведение нескольких одновременных клиентских тестов). Если сервер iPerf в данный момент обслуживает клиентское соединение, вы получите сообщение об ошибке: iperf3: error — сервер занят выполнением теста. повторите попытку позже.

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

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

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

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

Полный список опций можно отобразить следующим образом:

iperf3 -help

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

Статьи по данной тематике