Заметки сисадмина » Установка, настройка и использование iPerf

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

Установка, настройка и использование iPerf

2025-01-27 · Posted in Сеть

iPerf является кроссплатформенным приложением и может быть установлен на любую популярную операционную систему. В данной инструкции будет рассмотрена установка сервера на Linux CentOS и клиента как на последнем, так и Microsoft Windows.

Установка сервера/клиента

По сути, нет отдельного iPerf для сервера или клиента — это один и тот же программный продукт, который может запускаться в режиме сервера или выполнять клиентские команды.

Для начала выполняем установку расширенного репозитория:

Устанавливаем iPerf:

Открываем порт в брандмауэре:

* в данном примере мы открыли порт 5201 (для iPerf по умолчанию) для пакетов TCP и UDP.

Запускаем сервер:

На экране появится:

Сервер ждет запросов.

Клиентские запросы и проверка сервера

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

После можно сразу выполнить команду:

* где 192.168.0.15 — iPerf сервер.

На клиенте мы увидим что-то подобное:

* где:

  • 192.168.0.20 — адрес клиента
  • 192.168.0.15 — адрес сервера
  • ID — идентификатор запросов, нужен для ориентирования, если к серверу идет несколько обращений.
  • Interval — промежуток времени в секундах, на протяжении которого выполнялась передача данных.
  • Transfer — сколько было передано данных за интервал времени.
  • Bandwidth — средняя скорость передачи данных за интервал времени.
  • Retr — количество повторно отправленных TCP-сегментов.
  • Cwnd — одновременно переданных данных.

Все ключи запуска iPerf

Общие для сервера и клиента:
Ключ Описание
-p Определить порт, на котором будет слушать сервер или отправлять запросы клиент
-f Формат отчетов — kmgKMG (Kbits, Mbits, KBytes, MBytes, …)
-i Задать интервал, в течение которого выполняется одна проверка
-F Указать файл, из которого будут взяты входные данные для запуска
-A Степень нагрузки на процессор
-B Указать, через какой сетевой интерфейс работать
-V Детализированные сообщения в консоли
-J Вывод в формате json
–logfile Весь вывод в отдельный лог-файл
-d Режим отладки (много сообщений)
-v Показать версию программы
-h Вызвать справку по работе с программой
Для сервера:
Ключ Описание
-s Запустить iPerf в режиме сервера
-D Запустить как демона (как службу)
-I Указать pid-файл
-1 Принять запрос от одного клиента и завершить работу
Для клиента:
Ключ Описание
-c Запустить iPerf в режиме клиента
-u Отправлять UDP-пакеты
-b Формат отчетов для bandwidth (средней скорости)
-t Количество секунд, в течение которых будет идти проверка скорости
-n Объем данных для проверки (применяется вместо времени -t)
-k Количество пакетов для проверки (вместо -t или -n)
-l Длина буфера записи/чтения
-P Число параллельных запросов
-R Обратный режим — сервер отправляет, клиент принимает
-w Размер сетевого окна
-C Установить алгоритм управления перегрузкой TCP
-M Задать максимальный размер MTU
-4 Работать только для IPv4
-6 Работать только для IPv6
-Z Использовать метод «нулевой копии» для отправки данных
-O Опустить первые n секунд
-T Задать префикс для каждой строки вывода

Также самый свежий список ключей можно получить командой:

Автозапуск сервера (создание сервиса в systemd)

По умолчанию, программу нужно запускать вручную. Если мы хотим, чтобы сервер запускался автоматически и работал как служба systemd, выполняем инструкцию ниже.

Создаем юнит в systemd со следующим содержимым:

* где

  • Description — описание юнита;
  • After указывает на юнит, после которого может загружаться наш сервис;
  • Type — тип службы;
  • PIDFile — путь к pid файлу, в котором хранится номер процесса;
  • ExecStart — команда, которую нужно выполнить при старте сервиса (в данном примере запускается iPerf в режиме сервера как демон и создает pid-файл);
  • ExecReload — команда для перезапуска службы;
  • Restart=always — опция, позволяющая автоматически перезапускать сервис, если он перестанет работать;
  • опция WantedBy=multi-user.target позволяет установить для автозапуска службу в обычном многопользовательском режиме.

Перезапускаем systemd:

Разрешаем созданный сервис:

Запускаем его:

Проверяем:

Примеры использования iPerf

Рассмотрим некоторые команды запросов к серверу для проверки скорости соединения.

Использование UDP

* сам сервер не нужно запускать в UDP-режиме, так как он принимает любые запросы.

Альтернативные порты

Для этого необходимо сначала запустить сервер на нужном порту:

* кстати, можно запустить несколько процессов iperf одновременно, которые будут слушать на разных портах.
* стоит не забывать по настройки брандмауэра. В данном примере понадобиться ввести команды firewall-cmd –permanent –add-port=443/tcp и firewall-cmd –reload.

Теперь можно запускать клиента:

Проверка скорости в течение 30 секунд с интервалами по 2 секунды

Несколько параллельных запросов

Отправляем на проверку 3 Гб данных

Клиент/сервер для Windows

Скачиваем iPerf под Windows с официального сайта. Распаковываем архив и запускаем командную строку (cmd). Переходим в распакованную папку (команда cd).

Можем работать с iperf. Команды такие же, как для Linux, например:

GUI

Для работы с iPerf в графическом интерфейсе есть различные утилиты, например Iperf3-Cygwin-GUI.
http://www.softpedia.com/get/Network-Tools/Bandwidth-Tools/Iperf3-Cygwin-GUI.shtml

Скачиваем архив, распаковываем его и запускаем iperf3cygwingui.bat.

В открывшемся окне для простой проверки нужно только прописать адрес iPerf-сервера и нажать кнопку Run Iperf3:

Запуск графической iperf

Однако, на моей практике, программа не заработала, а после запуска зависала (или не запускался iperf3.exe). Проблему удалось решить с помощью скачанного с официального сайта клиента (файлов iperf3.exe и cygwin1.dll), которыми я заменил одноименные файлы в папке bin.

При желании, программу можно также запустить в режиме сервера:

Запуск графического iperf под Windows в режиме сервера

jPerf

Для работы в графическом интерфейсе также есть популярная программа jperf. Ее можно скачать с сайта sourceforge. Однако, она создана с использованием старой версии iperf, поэтому я не стал уделять ей много внимания. В целом, процесс и внешний вид не сильно отличается от Iperf3-Cygwin-GUI.

Совместимость iPerf и iPerf3

Клиент и сервер совместимы, но нужно знать, что по умолчанию, рабочий порт для iPerf — 5001, для iPerf3 — 5201.

Поэтому либо необходимо запускать сервер:

* также не забываем настроить брандмауэр.

Либо запускаем клиентские запросы командой:

Публичные сервера iPerf

Актуальные публичные сервера iPerf можно найти на официальном сайте программы. Внимательно смотрите на описания серверов и рабочие порты.

Пример проверки с использованием сервера во Франции:

или в Индонезии:

Свой публичный сервер

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

Мы настроим сервер при помощи systemd. Ранее мы уже создавали один юнит для запуска iperf. Повторяем процедуру с небольшими изменениями.

Создаем юнит со следующим содержимым:

* если сравнить с ранее созданным юнитом, мы добавили запуск сервера на порту 5205.

Перезапускаем systemd:

Разрешаем юнит и запускаем сервис:

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

Возможные ошибки

the server is busy running a test. try again later

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

Leave a Reply