Как проверить пропускную способность сети с помощью iperf3 Tool в Linux

iperf3 - это бесплатная кроссплатформенная программа с открытым исходным кодом, для измерения пропускной способности сети в реальном времени. Это один из самых мощных инструментов для тестирования максимально достижимой полосы пропускания в IP-сетях (поддерживает IPv4 и IPv6).

С iperf3 можно настроить несколько параметров, связанных с синхронизацией, буферами и протоколами, такими как TCP, UDP, SCTP. Это удобно для операций настройки производительности сети.

Чтобы получить максимальную или, скорее, улучшенную производительность сети, необходимо увеличить пропускную способность, а также латентность сети. Однако, прежде чем приступить к реальной настройке, нужно выполнить определенные тесты, чтобы собрать общую статистику производительности сети, которая будет определять процесс настройки.

Результаты включают интервал времени в секундах, передаваемые данные, полосу пропускания (скорость передачи), потери и другие полезные параметры производительности сети. Тесты в первую очередь предназначены для помощи в настройке TCP-соединений по определенному пути.

Необходимые условия

Два сетевых компьютера, на которых установлен iperf3.

Перед использованием iperf3, необходимо установить его на две машины, которые будут использоваться для тестирования производительности сети. Поскольку iperf3 доступен в официальных репозиториях программного обеспечения большинства распространенных дистрибутивов Linux, его установка не должна вызвать сложности.

$ sudo apt install iperf3	#Debian/Ubuntu
$ sudo yum install iperf3	#RHEL/CentOS
$ sudo dnf install iperf3	#Fedora 22+ 

После установки iperf3 на обе машины, можно начать тестирование пропускной способности сети.

Сначала подключаемся к удаленному компьютеру, который будет использоваться в качестве сервера, и запустим iperf3 в режиме сервера, используя флаг -s, по умолчанию он будет прослушивать порт 5201.

Можно указать формат (k, m, g для Кбит, Мбит, Гбит, соответственно, или K, M, G для Кбайт, Мбайт, Гбайт, соответственно) для отчета, используя ключ -f, как показано ниже:

$ iperf3 -s -f K

Если порт 5201 используется другой программой на данном сервере, можно указать любой другой порт (например, 3000), используя ключ -p, как показано ниже:

$ iperf3 -s -p 3000

При желании можно запустить сервер как демон, используя флаг -D, и записывать сообщения сервера в файл журнала следующим образом:

$ iperf3 -s -D > iperf3log

Затем на локальном компьютере, который будет выполнять роль клиента (где и выполняется фактический бенчмаркинг), запустим iperf3 в режиме клиента, используя флаг -c, и укажем хост, на котором работает сервер (используя его IP-адрес, или домен, или имя хоста).

$ iperf3 -c 192.168.10.1 -f K

Примерно через 18-20 секунд клиент должен завершить работу и выдать результаты, указывающие среднюю пропускную способность для эталонного теста, как показано ниже:

Важное замечание: Результаты тестирования, как показано на скриншоте выше, показывают различные значения для сервера и клиента. Но использоваться должны результаты, полученные на клиентском компьютере iperf3, в каждом тесте, который проводится.

Существует ряд специфичных для клиента вариантов выполнения расширенного теста, как описано ниже.

Одним из важных факторов, определяющих объем данных в сети в данный момент времени, является размер окна TCP - это важно при настройке соединений TCP. Вы можете установить размер окна или размер буфера сокета, используя флаг -w, как показано ниже:

$ iperf3 -c 192.168.10.1 -f K -w 500K

Чтобы запустить его в обратном режиме, когда сервер отправляет, а клиент получает, добавьте ключ -R.

$ iperf3 -c 192.168.10.1 -f K -w 500K -R

Чтобы запустить двунаправленный тест, то есть для измерения пропускную способность в обоих направлениях, используется опция -d.

$ iperf3 -c 192.168.10.1 -f K -w 500K -d

Если необходимо получить результаты сервера в выводе клиента, используется опция –get-server-output.

$ iperf3 -c 192.168.10.1 -f K -w 500K -R --get-server-output

Также, с помощью параметров -P, можно установить количество параллельных клиентских потоков, которые выполняются одновременно.

$ iperf3 -c 192.168.10.1 -f K -w 500K -P 2

Для получения дополнительной информации можно воспользоваться манами iperf3.

$ man iperf3

Это все! Не забывайте всегда выполнять тесты производительности сети, прежде чем переходить к реальной настройке производительности сети. iperf3 - это мощный инструмент, который пригодится для тестов пропускной способности сети.