Тестирование пропускной способности локального подключения с помощью iperf

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.

iperf3-10.png

На компьютере, который будет выступать в роли сервера, в командной строке операционной системы Windows перейдите в каталог, в котором находится исполняемый файл iperf3, и выполните команду:

iperf3 -s


Если на компьютере включен Брандмауэр, при первом запуске приложения появится окно "Оповещение Безопасности Windows". Нажмите кнопку "Разрешить доступ", чтобы открыть порт, на котором будет работать приложение iperf3.

iperf-01.png

iperf-02.png

NOTE: Важно! Не закрывайте окно с запущенным сервером.

На компьютере, который выступает в роли клиента, для запуска тестирования выполните команду вида:

iperf3 -c <адрес_сервера_iperf3>


Например:

iperf3 -c 192.168.1.143


На протяжении 10 секунд между этими хостами будет идти обмен трафиком, после чего соединение будет завершено и выведена информация с результатами теста. В нашем примере измерение пропускной способности (Bandwidth) локального гигабитного соединения составило 949 Мбит/сек. В данном случае это значение является реальной скоростью подключения на линке 1 Гбит/с.

iperf-03.png

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

При измерении пропускной способности локальной сети через интернет-центр с портами 100 Мбит/сек, реальная скорость составила 95.1 Мбит/сек.

iperf-04.png

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

iperf3-05.png

На компьютере, который подключен к роутеру по кабелю и будет выступать в роли сервера (в нашем примере с IP-адресом 192.168.1.143), в командной строке операционной системы выполните команду:

iperf3 -s


На ноутбуке, который выступает в роли клиента, для запуска тестирования выполните команду вида:

iperf3 -c <адрес_сервера_iperf3> -R


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

iperf3-06.png

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

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

iperf3-07.png

На компьютере, который будет выступать в роли сервера (в нашем примере с IP-адресом 192.168.1.143), в командной строке операционной системы выполните команду:

iperf3 -s


На смартфоне с ОС Android, который выступает в роли клиента, установите приложение Magic iPerf including iPerf3. Запустите его и в левом верхнем углу экрана переведите переключатель в положение использовать iPerf3.

Используйте команду вида:

-c <адрес_сервера_iperf3> -R


Запустите тестирование, переведя переключатель в положение Started в правом верхнем углу экрана.

iperf3-08.png

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

iperf3-09.png

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

iperf3-07.png

Но в роли сервера будет выступать сам роутер Keenetic (его локальный IP-адрес 192.168.1.1).

TIP: Справка: Пакет iperf3 присутствует в операционной системе роутера KeeneticOS при установленном компоненте "Поддержка открытых пакетов".

Подключитесь к интерфейсу командной строки (CLI) интернет-центра и выполните команду для запуска сервера iperf3:

exec iperf3 -s

 

k-iperf-01.png

На смартфоне с ОС Android, который выступает в роли клиента, установите приложение Magic iPerf including iPerf3. Запустите его и в левом верхнем углу экрана переведите переключатель в положение использовать iPerf3.

Используйте команду вида:

-c <адрес_сервера_iperf3>


Запустите тестирование, переведя переключатель в положение Started в правом верхнем углу экрана.

k-iperf-02.png

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

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

k-iperf-03.png


Синтаксис команды 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

  

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 199 из 205