iPerf3 — это инструмент для активных измерений максимально достижимой пропускной способности в IP-сетях. Он поддерживает настройку различных параметров, связанных с синхронизацией, буферами и протоколами (TCP, UDP, SCTP с IPv4 и IPv6). Для каждого теста он сообщает пропускную способность, потери и другие параметры. Это новая реализация, которая не имеет общего кода с исходным iPerf, а также не имеет обратной совместимости. iPerf изначально был разработан NLANR/DAST . iPerf3 в основном разработан ESnet / Национальной лабораторией Лоуренса Беркли . Он выпущен под лицензией BSD из трех пунктов .
Iperf3 — кроссплатформенная консольная клиент-серверная программа — генератор TCP и UDP трафика для тестирования пропускной способности сети. С ее помощью довольно просто измерить максимальную пропускную способность сети между сервером и клиентом и провести нагрузочное тестирование канала связи.
Скачать iperf3 можно с сайта https://iperf.fr/iperf-download. Для загрузки доступны версии утилиты для разных ОС (Windows, macOS, Ubuntu, Debian, Mint, Fedora, Red Hat, CentOS, openSUSE, Arch Linux, FreeBSD).
Для мобильных устройств с ОС Android можно воспользоваться приложением Magic iPerf including iPerf3.
Для выполнения тестирования программа должна быть запущена на двух устройствах (это могут быть как компьютеры, так и смартфоны, планшеты). Одно из них будет выполнять роль сервера, а другое роль клиента. Между ними и будет происходить передача данных для измерения пропускной способности соединения.
Важно! Для повышения точности измерений скорости передачи данных по локальной сети рекомендуем:
— При проведении тестирования отключить все устройства от роутера, оставив только 2 хоста, которые будут участвовать в тесте;
— Перед тестированием определите локальный IP-адрес устройства, которое будет работать в роли сервера (это можно сделать в веб-конфигураторе на странице «Список устройств«);
— Перед тестированием проверьте физическую канальную скорость подключения устройств в настройках роутера (для Wi-Fi-клиентов на странице «Список устройств» и для проводных на странице «Системный монитор«). Линк должен соответствовать максимально возможным канальным скоростям. Например, если устройство подключено по сетевому кабелю к гигабитному роутеру, нужно использовать 4-парный кабель (8 жил) категории не ниже 5e и линк должен составлять 1G/FDX (1 Гигабит/с, полный дуплекс). В младших моделях он должен быть 100M/FDX (100 Мегабит/с, полный дуплекс). Если канальная скорость ниже или вы видите режим HDX (полудуплекс), проверьте патч-корд (кабель Ethernet, витую пару) на соответствие стандарту, поменяйте его, а также обратите внимание на настройки сетевого адаптера (не установлен ли вручную режим ограничения скорости);
— Не используйте класс обслуживания. Если используется класс обслуживания, то для устройства отключается аппаратный сетевой ускоритель (ppe hardware; hwnat), поскольку ускоритель не умеет работать с приоритизацией трафика. При выключенном ускорителе возможно снижение скорости. На странице «Список устройств» в поле «Класс обслуживания» установите значение «Не использовать» для устройств, которые используются в тестировании.
— На хостах, которые участвуют в тестировании, закройте все запущенные пользовательские программы и приложения передающие данные по сети;
— Временно, на момент тестирования, отключите на хостах брандмауэр или сетевой экран, если они включены, или разрешите в их настройках прохождение трафика по рабочим портам iperf3;
— При проведении тестирования с Wi-Fi-устройствами, мобильное устройство должно находиться вблизи роутера в прямой видимости от него на расстоянии не более 2 метров;
— Выполните тестирование несколько раз. По умолчанию iperf3 выполняет передачу трафика от клиента на сервер, т.е. происходит измерение исходящей скорости. Запустите также тестирование входящей скорости (от сервера к клиенту), для этого на клиенте используйте ключ -R (включает Reverse mode).
При измерении пропускной способности канала связи между двумя устройствами, которые подключены к роутеру на разных скоростях, полученные значения реальной скорости будут ограничиваться самым медленным подключением. Например, если один хост подключен на скорости 1 Гбит/с, а другой на скорости 100 Мбит/с, то при тестировании пропускной способности скорость не превысит 100 Мбит/с.
Пример 1. Предположим, нужно узнать пропускную способность локальной сети между двумя компьютерами, подключенными к гигабитному интернет-центру Keenetic по 4-парному патч-корду. В нашем случае компьютеры подключены к портам с номерами 3 и 4.

На компьютере, который будет выступать в роли сервера, в командной строке операционной системы Windows перейдите в каталог, в котором находится исполняемый файл iperf3, и выполните команду:
iperf3 -s
Если на компьютере включен Брандмауэр, при первом запуске приложения появится окно «Оповещение Безопасности Windows». Нажмите кнопку «Разрешить доступ», чтобы открыть порт, на котором будет работать приложение iperf3.


Важно! Не закрывайте окно с запущенным сервером.
На компьютере, который выступает в роли клиента, для запуска тестирования выполните команду вида:
iperf3 -c <адрес_сервера_iperf3>
Например:
iperf3 -c 192.168.1.143
На протяжении 10 секунд между этими хостами будет идти обмен трафиком, после чего соединение будет завершено и выведена информация с результатами теста. В нашем примере измерение пропускной способности (Bandwidth) локального гигабитного соединения составило 949 Мбит/сек. В данном случае это значение является реальной скоростью подключения на линке 1 Гбит/с.

Важно! По умолчанию программа iperf3 выполняет передачу трафика от клиента на сервер, использует протокол TCP, тестирование выполняется 10 секунд и без ограничения максимальной скорости.
При измерении пропускной способности локальной сети через интернет-центр с портами 100 Мбит/сек, реальная скорость составила 95.1 Мбит/сек.

Пример 2. Рассмотрим измерение реальной скорости подключения ноутбука, подключенного к интернет-центру Keenetic по Wi-Fi. В нашем примере ноутбук подключен к роутеру на канальной скорости 135 Мбит/сек.

На компьютере, который подключен к роутеру по кабелю и будет выступать в роли сервера (в нашем примере с IP-адресом 192.168.1.143), в командной строке операционной системы выполните команду:
iperf3 -s
На ноутбуке, который выступает в роли клиента, для запуска тестирования выполните команду вида:
iperf3 -c <адрес_сервера_iperf3> -R
Затем вы увидите результат выполнения этой команды. В нашем примере измерение пропускной способности (Bandwidth) локального Wi-Fi-подключения составило примерно 47 Мбит/сек (при канальной скорости подключения 135 Мбит/сек). Это и есть реальная скорость подключения.

Важно! При измерении беспроводного подключения рекомендуется включать режим Reverse Mode для тестирования входящей скорости на клиенте (в этом случае сервер передает данные, а клиент принимает). Добавляйте в команду ключ -R. При тестировании Wi-Fi-подключения вы можете наблюдать, что цифры полученных скоростей значительно отличаются, что является нормальным и связано с особенностью среды передачи данных в сетях Wi-Fi.
Пример 3. Рассмотрим измерение реальной скорости подключения на смартфоне/планшете, подключенном к интернет-центру Keenetic по Wi-Fi. В нашем примере смартфон подключен к роутеру на канальной скорости 200 Мбит/сек.

На компьютере, который будет выступать в роли сервера (в нашем примере с IP-адресом 192.168.1.143), в командной строке операционной системы выполните команду:
iperf3 -s
На смартфоне с ОС Android, который выступает в роли клиента, установите приложение Magic iPerf including iPerf3. Запустите его и в левом верхнем углу экрана переведите переключатель в положение использовать iPerf3.
Используйте команду вида:
-c <адрес_сервера_iperf3> -R
Запустите тестирование, переведя переключатель в положение Started в правом верхнем углу экрана.

Вы увидите результат выполнения этой команды. В нашем примере измерение пропускной способности локального Wi-Fi-подключения составило примерно 97 Мбит/сек (при канальной скорости подключения 200 Мбит/сек). Это и есть реальная скорость подключения Wi-Fi-клиента.

Пример 4. Рассмотрим измерение реальной скорости подключения на смартфоне/планшете, подключенном к интернет-центру Keenetic по Wi-Fi. В нашем примере смартфон подключен к роутеру на канальной скорости 200 Мбит/сек.

Но в роли сервера будет выступать сам роутер Keenetic (его локальный IP-адрес 192.168.1.1).
Справка: Пакет iperf3 присутствует в операционной системе роутера KeeneticOS при установленном компоненте «Поддержка открытых пакетов«.
Подключитесь к интерфейсу командной строки (CLI) интернет-центра и выполните команду для запуска сервера iperf3:
exec iperf3 -s

На смартфоне с ОС Android, который выступает в роли клиента, установите приложение Magic iPerf including iPerf3. Запустите его и в левом верхнем углу экрана переведите переключатель в положение использовать iPerf3.
Используйте команду вида:
-c <адрес_сервера_iperf3>
Запустите тестирование, переведя переключатель в положение Started в правом верхнем углу экрана.

В нашем примере измерение пропускной способности локального Wi-Fi-подключения составило примерно 94 Мбит/сек (при канальной скорости подключения 200 Мбит/сек). Это и есть реальная скорость подключения.
В терминале сервера вы также увидите результат выполнения теста.

Синтаксис команды iperf3
Рассмотрим синтаксис команды iperf3 и основные (наиболее часто используемые) опции. Полное актуальное описание опций вы найдете на сайте разработчика.
Использование:
iperf3 [-s | -c хост] [опции]
Общие опции для сервера и клиента:
-p, —port # | номер порта, на котором будет работать сервер/клиент (по умолчанию используется 5201) |
-f, —format [kmgKMG] | формат скорости в результатах теста: k (Кбит), K (Кбайт), m (Мбит), M (Мбайт), g (Гбит), G (Гбайт) |
-i, —interval # | интервал между выводом результата тестирования, в секундах |
-V, —verbose | более детализированный вывод информации |
-d, —debug | вывод дополнительной информации для отладки |
-v, —version | показать версию |
-h, —help | показать справку |
Основные опции для сервера:
-s, —server | запуск сервера c отображением информации на экране |
-D, —daemon | запуск сервера в фоновом режиме, без отображения информации на экране; будет оставаться запущенным, даже после закрытия окна программы |
Основные опции для клиента:
-c, —client <хост> | запуск клиента и подключение к серверу <хосту> |
-u, —udp | протокол UDP вместо TCP |
-b, —bandwidth #[KMG][/#] | максимальная скорость в битах/сек (0 — отсутствует ограничение); по умолчанию отсутствует ограничение скорости для TCP, а для UDP составляет 1 Мбит/сек (опция /# для пакетного режима передачи данных) |
-t, —time # | время тестирования в секундах (по умолчанию 10 сек) |
-n, —bytes #[KMG] | количество байт для передачи данных (вместо ключа -t) |
-l, —len #[KMG] | размер буфера (по умолчанию 128 КБ для TCP, 8 КБ для UDP) |
-P, —parallel # | число одновременных параллельных клиентских потоков |
-R, —reverse | запуск в обратном режиме (Reverse mode: сервер отправляет трафик, клиент принимает) |
-4, —version4 | использовать только IPv4 |
-6, —version6 | использовать только IPv6 |
-Z, —zerocopy | метод отправки данных по технологии zero copу для снижения нагрузки на процессор |
-O, —omit N | пропустить первые n секунд (игнорировать алгоритм TCP slowstart) |
—get-server-output | получить результаты с сервера |
Приведем примеры использования команд iperf3 с разными опциями:
Запуск сервера (с настройками по умолчанию):
iperf3 -s
Запуск клиента (с настройками по умолчанию):
iperf3 -c 192.168.1.143
В наших примерах 192.168.1.143 это IP-адрес сервера iperf3.
Важно! Сервер может принимать соединения одновременно только от одного клиента. Если сервер занят другим клиентом, при попытке тестирования будет появляться ошибка server is busy running a test. try again later. В таком случае нужно подождать освобождение сервера.
Но также есть возможность запустить несколько экземпляров клиентов и серверов на одном и том же хосте. Для этого используйте назначение разных портов при помощи ключа -p <порт>.
Например, вы можете на сервере открыть 2 окна командной строки, в одном выполнить команду:
iperf3 -s 5005 (сервер будет работать на порту 5005)
и в другом окне:
iperf3 -s -p 5006 (сервер будет работать на порту 5006)
Теперь на одном клиенте выполните команду для подключения к серверу, который работает на порту 5005:
iperf3 -c -p 5005 192.168.1.143
и на втором клиенте команду для подключения к серверу, который работает на порту 5006:
iperf3 -c -p 5006 192.168.1.143
Запуск клиента с выводом более детализированной информации:
iperf3 -Vc 192.168.1.143
iperf3 -c -V 192.168.1.143
По умолчанию iperf3 работает так: сервер принимает данные, а клиент отправляет. Для тестирования входящей скорости на клиенте нужно использовать обратный режим (Reverse mode) и в команду добавить ключ -R:
iperf3 -c 192.168.1.143 -R
Чтобы увеличить длительность тестирования (по умолчанию 10 сек) используйте ключ -t <сек>:
iperf3 -c 192.168.1.143 -R -t 60
В программе можно использовать многопоточный режим тестирования. Чтобы указать количество потоков используйте ключ -P <число> (в данном примере тестирование будет выполняться в 2 потока):
iperf3 -c 192.168.1.143 -R -t 60 -P 2
При тестировании с настройками по умолчанию вывод результатов происходит каждую секунду. С помощью ключа -i <сек> можно изменить интервал времени для вывода результатов (в данном примере интервал увеличен до 3 секунд):
iperf3 -c 192.168.1.143 -R -t 60 -P 2 -i 3
Можно также указать объем трафика, который необходимо передать при тестировании. Для этого используйте ключ -n <байты>[KMG] вместо ключа -t:
iperf3 -c 192.168.1.143 -R -n 500M -P 2 -i 3
По умолчанию тестирование выполняется с помощью протокола TCP, но поддерживается также работа с протоколом UDP. Для этого используйте ключ -u:
iperf3 -Vc 192.168.1.143 -u -R -t 60
Протокол UDP, в отличие от TCP, не использует алгоритмы контроля доставки пакетов и контроля скорости передачи, и имеет другое поведение в сети. Так как UDP не контролирует скорость передачи данных, это должно делать приложение передающее трафик. По умолчанию установлено ограничение максимальной скорости 1 Мегабит для UDP-трафика. Не указывайте слишком большую максимальную скорость для протокола UDP, т.к. это может привести к перегрузке сети (рекомендуем этот параметр устанавливать до 100 Мегабит). Установить ограничение максимальной скорости можно с помощью ключа -b <биты>[KMG]:
iperf3 -Vc 192.168.1.143 -u -R -t 60 -b 100M
Также обращаем ваше внимание на ключ -l <байты>, он устанавливает длину пакета. В режиме UDP устанавливайте этот параметр не более 1400 байт.
iperf3 -Vc 192.168.1.143 -u -R -t 60 -b 100M -l 1400