вторник, 5 декабря 2023 г.

Тестирование пропускной способности канала связи с помощью Iperf

 В этой публикации будет рассмотрен один из наиболее популярных способов тестирования пропускной способности канала связи.

Задачу тестирования пропускной способности обычно необходимо решать в тех ситуациях, когда нужно проверить потенциально возможную максимальную скорость передачи информации от одного хоста до другого хоста с учётом всего промежуточного оборудования. Или же, например, в сценариях тестирования производительности клиентов за VPN.

Общая схема тестируемого сценария следующая:

В качестве операционной системы здесь будет использоваться Linux Ubuntu 22.04.

Настройка на стороне сервера

Обновим метаинформацию по репозиториям и установим iperf3:

sudo apt update
sudo apt install -y iperf3

Запустим сервер iperf на прослушивание подключения от клиентов по всем доступным IP-адресам:

sudo iperf3 -s 0.0.0.0

Убедитесь, что порт TCP/5201 не закрыт брандмауэром.

Теперь можно переходить к тестированию со стороны клиентов.

Запуск iperf на клиенте Linux

Обновим метаинформацию по репозиториям и установим iperf3:

sudo apt update
sudo apt install -y iperf3

Запустим тест производительности канала связи до сервера iperf. Тестирование буем выполнять в течении одной минуты:

sudo iperf3 -c 10.10.10.71 -V -t 60
Linux task 5.15.0-41-generic #44-Ubuntu SMP Wed Jun 22 14:20:53 UTC 2022 x86_64
Control connection MSS 1448
Time: Sat, 16 Sep 2023 10:43:27 GMT
Connecting to host 10.10.10.71, port 5201
      Cookie: kmijzbq5bc2oiync7ftnwbdetvmep76gfcb7
      TCP MSS: 1448 (default)
[  5] local 10.10.10.35 port 44954 connected to 10.10.10.71 port 5201
Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 60 second test, tos 0
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  89.2 MBytes   748 Mbits/sec  652   90.5 KBytes       
[  5]   1.00-2.00   sec  74.3 MBytes   623 Mbits/sec  291   53.7 KBytes       
[  5]   2.00-3.00   sec  89.4 MBytes   750 Mbits/sec  613    228 KBytes       
[  5]   3.00-4.00   sec   174 MBytes  1.46 Gbits/sec  375    346 KBytes       
[  5]   4.00-5.00   sec   289 MBytes  2.42 Gbits/sec  100    525 KBytes 
<...>
[  5]  57.00-58.00  sec   119 MBytes   996 Mbits/sec  618    338 KBytes       
[  5]  58.00-59.00  sec  91.2 MBytes   765 Mbits/sec  1064    198 KBytes       
[  5]  59.00-60.00  sec   104 MBytes   870 Mbits/sec  490   91.9 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.00  sec  6.75 GBytes   966 Mbits/sec  28107             sender
[  5]   0.00-60.00  sec  6.75 GBytes   966 Mbits/sec                  receiver
CPU Utilization: local/sender 12.0% (0.0%u/12.0%s), remote/receiver 4.4% (0.0%u/4.4%s)
snd_tcp_congestion cubic
rcv_tcp_congestion cubic

iperf Done.
root@task:/home/roman# 

Как видно по результатам выше – средняя скорость передачи данных по каналу связи немного не дотягивает до одного гигабита в секунду.

Запуск iperf на клиенте Windows

Для запуска клиента iperf на Windows предварительно необходимо загрузить дистрибутив.

Распаковываем архив:

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

iperf3.exe -c 10.10.10.71 -V -t 60
C:\tmp\iperf-3.1.3-win64>iperf3.exe -c 10.10.10.71 -V -t 60
iperf 3.1.3
CYGWIN_NT-10.0 DESKTOP-QQRNKJQ 2.5.1(0.297/5/3) 2016-04-21 22:14 x86_64
Time: Sat, 16 Sep 2023 10:51:44 GMT
Connecting to host 10.10.10.71, port 5201
      Cookie: DESKTOP-QQRNKJQ.1694861504.261775.29
      TCP MSS: 0 (default)
[  4] local 10.10.10.45 port 51794 connected to 10.10.10.71 port 5201
Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 60 second test
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  60.8 MBytes   509 Mbits/sec
[  4]   1.00-2.00   sec  97.4 MBytes   817 Mbits/sec
[  4]   2.00-3.00   sec   105 MBytes   880 Mbits/sec
[  4]   3.00-4.00   sec   124 MBytes  1.04 Gbits/sec
[  4]  54.00-55.00  sec  81.0 MBytes   680 Mbits/sec
[  4]  55.00-56.00  sec  86.4 MBytes   723 Mbits/sec
[  4]  56.00-57.00  sec   109 MBytes   915 Mbits/sec
[  4]  57.00-58.00  sec   124 MBytes  1.04 Gbits/sec
[  4]  58.00-59.00  sec   104 MBytes   875 Mbits/sec
[  4]  59.00-60.00  sec  63.2 MBytes   530 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-60.00  sec  4.85 GBytes   694 Mbits/sec                  sender
[  4]   0.00-60.00  sec  4.85 GBytes   694 Mbits/sec                  receiver
CPU Utilization: local/sender 30.0% (1.8%u/28.2%s), remote/receiver 2.9% (0.0%u/2.9%s)

iperf Done.

C:\tmp\iperf-3.1.3-win64>


Тестирование пропускной способности канала связи завершено.