Iperf – утилита с открытым исходным кодом, предназначенная для тестирования пропускной способности сети между двумя узлами. Утилита iperf позволяет генерировать нагрузочный TCP и UDP трафик между хостами. С помощью iperf вы можете быстро измерить максимальную пропускную способность сети между сервером и клиентом, провести нагрузочное тестирование канала связи, маршрутизатора, сетевого шлюза (файервола), вашей Ethernet или Wi-Fi сети.
В этой статье мы покажем, как установить и использовать утилиту iperf для проверки скорости сети в Windows и Linux CentOS (есть версии iperf для Android, MacOS, RouterOS от MikroTik и других платформ).
Версии iperf: iperf2 и iperf3
Утилита Iperf является кроссплатформенной и не требует установки, достаточно скопировать и запустить ее на двух устройствах, пропускную способность сети между которыми нужно оценить. Iperf работает в режиме клиент-сервер. На первом компьютере утилита Iperf запускается в режиме сервера (ожидает трафик от клиента). На втором компьютере Iperf запускается в режиме клиента, начинает генерировать TCP/UDP трафик и выполнять измерение максимальной скорости передачи данных.
На текущий момент есть две независимые ветки iperf, развивающиеся параллельно: iperf2 и iperf3. По большому счету эти две версии iperf совместимы между собой, но используют разные порты по умолчанию. В iperf1/2 это 5001, в iperf3 – 5201.
- iperf2 нужно использовать для параллельных потоков, двунаправленных тестов, а также эта версия официально поддерживается в Windows
- В iperf3 лучше реализовано высокоскоростное тестирование UDP. Код iper3 значительно меньше и лучше оптимизирован.
Остальные отличия не настолько существенны, чтобы специально использовать определенную версию (даже опции запуска у них совпадают). В этой статье мы будем использовать iperf3.
Установка iPerf для Windows
Вы можете скачать iperf 3.1 для Windows по ссылке https://iperf.fr/iperf-download.php или версию iperf2 (здесь). Достаточно скачать архив iperf и распаковать в локальный каталог на диске. Установка утилиты не требуется.В архиве всего два файла: cygwin1.dll и iperf3.exe.
Для Windows есть несколько реализаций графического интерфейса. Например, Iperf3-Cygwin-GUI и jperf.
Утилита jperf написана на Java (для работы на компьютере должна быть установлена Java-машина). Помимо графических рюшечек к CLI интерфейсу, Jperf умеет в реальном времени строить графики пропускной способности канала связи.
Для использования достаточно указать адрес сервера iPerf и запустить проверку.
Install-Module -Name iPerfAutomate
Установка iperf в CentOS Linux
В CentOS 8 пакет iperf3 включен в состав базового репозитория AppStream (в CentOS 7 iperf3 есть в EPEL). Вы можете установить его стандартной командой yum/dnf:
# dnf install iperf3
sudo apt install iperf3
Если данный Linux сервер планируется использовать в качестве сервере iperf3, нужно открыть порт 5201 в firewalld:
# firewall-cmd --permanent --add-port=5201/tcp
# firewall-cmd --permanent --add-port=5201/udp
# firewall-cmd --reload
Измерение скорости сети с помощью Iperf
Рассмотрим теперь несколько примеров использования iperf для тестирования пропускной способности сети. В этом примере мы будем использовать сервер с CentOS в качестве сервера iperf. Запустим утилиту iperf в серверном режиме:
# iperf3 –s
Сервер iperf запущен, он ожидает соединения на порту TCP/5201.
Server listening on 5201
# iperf3 -s -w 32768 –p 5203
-w 32768 – зададим размер окна TCP в 32 KB (по умолчанию около 8 Кб)
–p 5203 – порт, на котором ожидает подключения iperf (напоминаю, что iperf2 по умолчанию слушает на порту 5001.
В качестве клиента iperf я использую компьютер с Windows 10. Запустите командную строку и перейдите в каталог с исполняемым файлом iperf:
cd c:\tools\iperf
Чтобы запустить проверку сети со стороны клиента, укажите адрес (имя) сервера iperf:
iperf3.exe -c 192.168.1.202
Если вы запустили сервер iperf с увеличенным размером TCP окна, вы можете использовать следующую команду для получения максимальной нагрузки на сеть:
iperf3.exe -c 192.168.1.202 -P 8 -t 30 -w 32768
- -c168.1.202 – IP адрес сервера iperf;
- -w 32768 — увеличиваем размер TCP окна;
- -t 30 – время в секундах, в течении которого выполняется тестирование (по умолчанию 10 секунд);
- -P 8 — число параллельных потоков (подключений), используется для получения максимальной нагрузки на канал.
В нашем примере тестирование длилось 30 секунд. В итоговом отчете нас интересует значения столбца Bandwidth в последней строки [SUM]. В нашем случае средняя пропускная способность сети между двумя узлами – 79,7 Мбит/с. Было передано 285 Мб данных (столбец Transfer).
С помощью аргумента –f можно изменить формат отображения скорости передачи (биты, килобиты, мегабайты). С помощью опции –i можно указать интервал, через который нужно отображать промежуточные результаты. Это удобно при продолжительных тестах (несколько минут, часов).
Можно запустить iperf в обратном режиме (сервер отправляет данные, а клиент принимает), для этого на клиенте указывается опция –R.
По-умолчанию утилита генерирует TCP трафик, если вам нужно проверить скорость сети для UDP пакетов, необходимо использовать ключ –u (сервер при этом запускается командой:
iperf3 -s –u
).
Если вам нужно проверить ваш интернет-канал (предоставляемый провайдером), можно воспользоваться одним из публичных iperf серверов (список доступен здесь):
iperf3 -c iperf.it-north.net
Если нужно оценить пропускную способность сети в обоих направлениях (в дуплексом режиме), дополнительно на клиенте нужно указать опцию –d:
iperf3.exe -c IP -P 8 -t 30 -w 32768 -d
Во время выполнения теста сете с помощью iperf вы можете следить за нагрузкой на сетевой интервейс компьютера через Task Manager.
Полный список опций утилиты iperf можно получить так:
iperf3 –help
Iperf – простая и удобная сетевая утилита, которая поможет вам измерить производительность сетевого подключения и максимальную скорость передачи данных между двумя устройствами.
Утилита классная. Хорошо помогает замерять скорость между компами, и выяснять проблемы, почему у пользователя что-то там тормозит. Но, иногда возникают проблемы, как объяснить удаленному пользователю запустить «iperf.exe -s». По умолчанию эта утилита не установлена. Но её можно установить на всех компах домена как службу. Я сделал так:
Скриптом через групповую политику скопировал её на всё компы в «%windir%\system32» — пусть всегда под рукой будет.
Чтоб вручную на удаленных компах её не запускать, также скриптом через powershell создал службу с автоматическим запуском:
New-Service -Name «Iperf» -BinaryPathName «%windir%\system32\iperf.exe» -DisplayName ″Iperf″ -Description ″Iperf″
Set-Service -Name «Iperf» -StartupType Auto
Память отожрала ровно 1000кб.
Теперь в любой момент времени можно проверить скорость соединения между компами, и если выясняется, что заявленная скорость ниже, перенаправляю проблему в отдел связи, разбирайтесь, почему связь тормозит.
А вы не думали что таким образом вашу сеть можно заDOS-ить всего одной командой . Если такие тесты требуется часто выполнять довольно часто, хотя бы отмените автозапуск службы. И запускайте ее по-необходимости.
«как объяснить удаленному пользователю запустить «iperf.exe -s».»
Как-то так:
psexec.exe iperf.exe -s
В инструкции для Windows не говорится как использовать программу. Так же там нету примечания, что в брандмауэре Windows на стороне сервера нужно добавить правило для разрешения входящих по TCP :5201. Вообще смысл этой статьи не понятен. Единственно ценная информация это ссылка на официальный ресурс https://iperf.fr
Можно поставить iperf и на esxi из офлайн пакета (_https://www.controlup.com/resources/blog/entry/iperf-on-esxi/)
esxcli software vib install -d /iperf-2.0.5-1-offline_bundle.zip –no-sig-check