Skip to main content

Руководство пользователя

Тестирование пропускной способности локального подключения с помощью 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.

Для выполнения тестирования программа должна быть запущена на двух устройствах (это могут быть как компьютеры, так и смартфоны, планшеты). Одно из них будет выполнять роль сервера, а другое роль клиента. Между ними и будет происходить передача данных для измерения пропускной способности соединения.

Важно

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

— При проведении тестирования отключить все устройства от роутера, оставив только 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-парному патч-корду. В нашем случае компьютеры подключены к портам с номерами 1 и 3.

iperf-00-en.png

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

iperf3 -s

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

iperf-fw-win-en.png
iperf-01-en.png

Предупреждение

Не закрывайте окно с запущенным сервером.

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

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

Например:

iperf3 -c 192.168.1.143

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

iperf-02-en.png

Внимание

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

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

iperf-03-en.png

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

win-wifi-adapter-en.png

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

iperf3 -s

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

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

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

iperf-04-en.png

Внимание

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

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

mob-client-lists-en.png

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

iperf3 -s

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

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

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

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

magic-iperf-01-en.png

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

magic-iperf-02-en.png

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

mob-client-lists-en.png

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

Подсказка

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

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

exec iperf3 -s
iperf-05-en.png

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

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

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

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

magic-iperf-03-en.png

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

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

iperf-06-en.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.

Примечание

Сервер может принимать соединения одновременно только от одного клиента. Если сервер занят другим клиентом, при попытке тестирования будет появляться ошибка 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