Использование 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 -helpIperf — это простой в использовании и удобный сетевой инструмент, который помогает измерять производительность сетевого подключения и максимальную скорость передачи данных между двумя устройствами.










