В этой публикации я покажу один из возможных вариантов того, как можно осуществить тестирование пропускной способности канала связи. Это может быть необходимо в тех ситуациях, когда нужно проверить потенциально возможную максимальную скорость передачи информации от одного хоста до другого хоста с учетом всего промежуточного оборудования. Или же, например, в сценариях тестирования производительности клиентов за VPN. Именно этот сценарий мне и приходилось тестировать. Собственно, за основу я брал вот этот опорный материал.
Я очень оценил простоту использования утилиты iperf и решил, что нужно сохранить в своих заметках этот подход.
Общая схема тестируемого сценария следующая:
В качестве операционной системы я буду использовать 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>
Тестирование пропускной способности канала связи завершено.