iperf3
iPerf3 — кроссплатформенная консольная клиент-серверная программа — генератор TCP, UDP и SCTP трафика для тестирования пропускной способности сети. 1
С её помощью можно измерить максимальную пропускную способность сети между сервером и клиентом или провести нагрузочное тестирование канала связи для определения уровня потерь. 2
Для установки утилиту нужно скачать с официального сайта (iperf.fr) и распаковать файлы в удобную папку. Затем открыть командную строку (клавиши Win+R), ввести cmd и перейти в папку с распакованными файлами iPerf3. 2
Пример использования
Запуск сервера на порту по умолчанию
$ iperf3 -s
Запуск сервера на определённом порту
$ iperf3 -s -p 12345
Запуск теста пропускной способности
$ iperf3 -c server
Запуск сервера в UDP-режиме с выводом результатов раз в секунду, на порту 65005
$ iperf -u -s -i1 -p 65005
Тестирование UDP c длиной 100 байт со скоростью 20 Кбит/с в течение 180 секунд (имитация VoIP трафика, запускать нужно в обе стороны).
$ iperf -u -c server_host -l100 -b20k -t180
Передать 10 мегабайт данных на порт 65005
$ iperf -n 10m -p 65005 -c server_host
Синтаксис команды iperf3
Общие опции для сервера и клиента:
- -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