RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


network:iperf

iperf: измерение пропускной способности сети

Установка

Debian/Ubuntu

# apt-get install iperf

Для установки iperf3

# apt-get install iperf3

CentOS 6/7

Утилита доступна в EPEL

# yum install iperf

Для установки iperf3

# yum install iperf3

OS X

brew

brew install iperf

macports :?:

sudo port install iperf

Сайт iperf

https://iperf.fr/iperf-download.php#macos

iOS/Android

Утилита доступна в программе HE.NET Network Tools в AppStore и Google Play

Windows

Java GUI

JPerf (github, sourceforge)

Измеряем попугая

На сайте разработчика утилиты представлен список публичных iperf серверов где можно измерить пропускную способность.

В самом простом случае iperf-клиенту достаточно указать один ключ -c с адресом сервера

iperf -c ping.online.net

По-умолчанию сервер использует порт 5001.

Для указания альтернативного порта используется ключ -p.

TCP тест

С iperf-клиентом всё просто.

Рассмотрим случай, когда у нас есть возможность самостоятельно запустить и сервер и клиент.

Для запуска iperf в режиме сервера используется ключ -s.

На стороне iperf-сервера выполняем комадну iperf -s. Вывод будет приблизительно такой

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

Подключаемся с другого хоста к нашему iperf-серверу

iperf -c 192.168.1.77
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.13 port 53204 connected with 192.168.1.77 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  31.1 MBytes  26.0 Mbits/sec

На стороне iperf-сервера это будет выглядеть так:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.77 port 5001 connected with 192.168.1.13 port 53204
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec  31.1 MBytes  25.9 Mbits/sec

UDP тест

При желании можно провести тест по UDP протоколу

Для этого добавляем ключ -u

iperf -s -u

Так выглядит запуск iperf-сервера

------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------

На стороне клиента также следует указать дополнительный ключ -u

iperf -c 192.168.1.77 -u

Так выглядит результат теста

------------------------------------------------------------
Client connecting to 192.168.1.77, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.13 port 46076 connected with 192.168.1.77 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec
[  3] Sent 893 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   0.094 ms    0/  893 (0%)

И тут нас убило роялем из кустов. Как же так 1.05 мегабит! Это же медленнее, чем через TCP.

Дело в том, что по-умолчанию для iperf-клиента стоит ограничение в 1 мегабит.

Чтобы указать максимальную пропускную способность используется ключ -b.

Для канала 100 мегабит команда будет выглядеть так

iperf -c 192.168.1.77 -u -b 100m

Для канала 1 гигабит команда будет выглядеть так

iperf -c 192.168.1.77 -u -b 1000m

Результат команды будет такой

------------------------------------------------------------
Client connecting to 192.168.1.77, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.13 port 49672 connected with 192.168.1.77 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  55.4 MBytes  46.5 Mbits/sec
[  3] Sent 39545 datagrams
[  3] Server Report:
[  3]  0.0-10.1 sec  55.4 MBytes  46.1 Mbits/sec   0.728 ms   10/39544 (0.025%)
[  3]  0.0-10.1 sec  1 datagrams received out-of-order

Двунаправленный тест (bidirectional test)

В некоторых случаях необходимо протестировать оба хоста\сервера. Это можно легко сделать с помощью встроенной функции двунаправленного тестирования (ключ -d).

Вывод команды

iperf -c 192.168.1.77 -d

будет такой

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size:  136 KByte (default)
------------------------------------------------------------
[  5] local 192.168.1.13 port 53208 connected with 192.168.1.77 port 5001
[  4] local 192.168.1.13 port 5001 connected with 192.168.1.77 port 39076
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.1 sec  51.4 MBytes  42.8 Mbits/sec
[  4]  0.0-10.2 sec  18.4 MBytes  15.2 Mbits/sec

На стороне iperf-сервера это будет выглядеть следующим образом

------------------------------------------------------------
Client connecting to 192.168.1.13, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  6] local 192.168.1.77 port 39076 connected with 192.168.1.13 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.2 sec  51.4 MBytes  42.3 Mbits/sec
[  6]  0.0-10.2 sec  18.4 MBytes  15.1 Mbits/sec

Опции (основные)

Опция Описание
-B Запускает iperf на выбранном интерфейсе или адресе.
-f Изменить формат вывода. Доступные значения - m (Mbits, default), k (Kbits), K (KBytes), and M (MBytes). Пример: -f k выведет результат в килобитах в секунду вместо мегабит в секунду.
-i Выводить отчёт теста на экран каждые N секунд.
-p Указать порт вручную. Если не указано, то используется стандартный 5001.
-t Время в секундах для передачи данных. По-умолчанию 10 секунд.
-V Принудительно использовать IPv6 вместо IPv4.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
network/iperf.txt · Последнее изменение: 2017/03/09 23:14 — 127.0.0.1