iperf3

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