Iperf

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
iperf
Тип тестирование пропускной способности сети
Разработчик Jeff Boote, Jon Dugan
Написана на C, C++
Операционная система Кроссплатформенная
Последняя версия 2.0.14a (30 января 2019)
Лицензия BSD подобная
Сайт sourceforge.net/projects…
iperf3
Тип тестирование пропускной способности сети
Разработчик ESnet / Lawrence Berkeley National Laboratory
Написана на C
Операционная система Кроссплатформенная
Последняя версия 3.9 (17 августа 2020)
Состояние актуальный
Лицензия three-clause BSD
Сайт software.es.net/iperf

Iperf3 — кроссплатформенная консольная клиент-серверная программа — генератор TCP, UDP и SCTP трафика для тестирования пропускной способности сети. Написана с нуля и не совместима с предыдущей реализацией, хотя и содержит часть кода предыдущей реализации.

Возможности

Утилита позволяет генерировать трафик различного типа для анализа пропускной способности сети. Поддерживается многопоточная работа (в версии 2 посредством запуска на разных портах, в версии 3 — параметром у клиента). По умолчанию тест выполняется в направлении от клиента к серверу. Чтобы проводить двунаправленное тестирование со стороны клиента, необходимо использовать ключ -r (или -d для одновременной передачи пакетов в обоих направлениях) в версии 2 и ключ -R в версии 3.

Базовые параметры

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

iperf -s

На клиенте:

iperf -c server_host

Применение

Порт по умолчанию для iperf v1/v2 5001, для iperf3 — 5201

iperf

Запуск сервера в 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

Вывод:

[ ID] Interval       Transfer     Bandwidth       
[  3] 0.0- 12.0 sec   10.0 MBytes   6.97 Mbits/sec 

iperf3

Запуск сервера на порту по умолчанию

iperf3 -s

В отличие от оригинального iperf, сервер слушает только tcp-порт, выбор протокола осуществляется клиентом. Получить 2 мегабайта данных с сервера по UDP с установленным лимитом 100 мегабит/сек.

iperf3 -n 2M -c server_host -u -R -b 100M

Вывод на стороне клиента:

Connecting to host server_host, port 5201
Reverse mode, remote host server_host is sending
[  4] local x.x.x.10 port 57976 connected to y.y.y.5 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  1.30 MBytes  10.9 Mbits/sec  1.042 ms  1248/1414 (88%)
[  4]   1.00-1.58   sec   720 KBytes  10.2 Mbits/sec  1.219 ms  820/910 (90%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.58   sec  21.6 MBytes   115 Mbits/sec  1.119 ms  2342/2636 (89%)
[  4] Sent 2636 datagrams

То есть, чтобы клиент получил 2 мегабайта, серверу пришлось отправить 21.6 мегабайта данных, потери составили 89 %. При этом, сервер не очень точно выдержал лимит скорости передачи, который составил 115 мегабит/сек.


Ссылки