Рубрики
debian daemons \ демоны \ службы \ сервисы

debian \ iperf3 \ systemd \ systemctl

Ссылки:

https://iperf.fr/
https://www.dmosk.ru/instruktions.php?object=iperf

iperf примеры использования:

!!! Совместимость iPerf и iPerf3
!!! Клиент и сервер совместимы, но нужно знать, что по умолчанию, рабочий порт для iPerf — 5001, для iPerf3 — 5201.

Сервер:
iperf -s
iperf3 -s -p 8080 поднять сервер для теста скорости

Клиент:
iperf -c 10.0.0.1 - подключится к серверу для теста (стандартный порт 5201)
iperf3 -c 172.16.12.1 -p 8080 -t 180 проверить скорость в течении 180 секунд
iperf3 -c 10.0.0.1 -u - используем UDP
iperf3 -c 10.0.0.1 -p 443 - используем не стандартный порт 443
iperf3 -c 10.0.0.1 -t 30 -i 2 - проверка скорости в течение 30 секунд с интервалами по 2 секунды
iperf3 -c 10.0.0.1 -P 3 - несколько параллельных запросов
iperf3 -c 10.0.0.1 -n 3G - отправляем на проверку 3 Гб данных
iperf3 -c 10.1 -R t 30 - тут мы используем(-R), режим Reverse Mode для тестирования входящей скорости на клиенте (в этом случае сервер передает данные, а клиент принимает.

-P <число> (в данном примере тестирование будет выполняться в 2 потока)
-t <сек> длительность тестирования (по умолчанию 10 сек)
-i <сек> можно изменить интервал времени для вывода результатов
-n <байты>[KMG] объем трафика, который необходимо передать при тестировании
-u по умолчанию тестирование выполняется с помощью протокола TCP, но поддерживается также работа с протоколом UDP, -u включает эту поддержу
-b <биты>[KMG]  ограничение максимальной скорости 
-l <байты> устанавливает длину пакета

iperf3 -c 10.0.0.1 -R -n 500M -P 2 -i 3
iperf3 -Vc 10.0.0.1 -u -R -t 60 -b 100M -l 1400


Чаще всего используется вот так для UDP:
iperf3 -c 10.0.0.1 -u -t 0 -b 0 -P 4
-u - протокол UDP
-t - время теста, 0 бесконечно
-b - шейпинг скорости, 0 -  шейпинг отключён 
-P - кол-во потоков

А так для TCP:
iperf3 -c 10.0.0.1 -u -t 0 -b 0 -P 4
-u - протокол UDP
-t - время теста, 0 бесконечно
-b - шейпинг скорости, 0 - шейпинг отключён 
-P - кол-во потоков

vim /etc/systemd/system/iperfd.service

[Unit]
Description=iPerf Service
After=network.target

[Service]
Type=forking
PIDFile=/run/iperf3.pid
ExecStart=-/bin/iperf3 -s -D -I /run/iperf3.pid
ExecReload=/bin/kill -HUP $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target

Описание параметров iperf3d.service:

Description — описание юнита
After указывает на юнит, после которого может загружаться наш сервис
Type — тип службы
PIDFile — путь к pid файлу, в котором хранится номер процесса
ExecStart — команда, которую нужно выполнить при старте сервиса (в данном примере запускается iPerf в режиме сервера как демон и создает pid-файл)
ExecReload — команда для перезапуска службы
Restart=always — опция, позволяющая автоматически перезапускать сервис, если он перестанет работать
опция WantedBy=multi-user.target позволяет установить для автозапуска службу в обычном многопользовательском режиме

systemctl

systemctl daemon-reload - перезапускаем systemd (иногда требуется после изменения и создания нового юнита)
systemctl enable iperf3d - добавляем в автозагрузку
systemctl start iperf3d - запускаем демон
systemctl status iperf3d - проверяем