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.
Для выполнения тестирования программа должна быть запущена на двух устройствах (это могут быть как компьютеры, так и смартфоны, планшеты). Одно из них будет выполнять роль сервера, а другое роль клиента. Между ними и будет происходить передача данных для измерения пропускной способности соединения.
NOTE: Важно! Для повышения точности измерений скорости передачи данных по локальной сети рекомендуем:
— При проведении тестирования отключить все устройства от роутера, оставив только 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.
NOTE: Важно! Не закрывайте окно с запущенным сервером.
На компьютере, который выступает в роли клиента, для запуска тестирования выполните команду вида:
iperf3 -c <адрес_сервера_iperf3>
Например:
iperf3 -c 192.168.1.143
На протяжении 10 секунд между этими хостами будет идти обмен трафиком, после чего соединение будет завершено и выведена информация с результатами теста. В нашем примере измерение пропускной способности (Bandwidth) локального гигабитного соединения составило 949 Мбит/сек. В данном случае это значение является реальной скоростью подключения на линке 1 Гбит/с.
NOTE: Важно! По умолчанию программа 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 Мбит/сек). Это и есть реальная скорость подключения.
NOTE: Важно! При измерении беспроводного подключения рекомендуется включать режим 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).
TIP: Справка: Пакет 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.
NOTE: Важно! Сервер может принимать соединения одновременно только от одного клиента. Если сервер занят другим клиентом, при попытке тестирования будет появляться ошибка 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