Рассмотрим утилиту iperf, как пользоваться и какую информацию можно получить при помощи нее. iperf используется очень часто для анализа работы сети.
iperf есть в репозиториях самых популярных дистрибутивов: Ubuntu, Debian, CentOS
Утилита iperf как ей пользоваться в Linux
iperf генерирует трафик и позволяет отслеживать пропускную способность канала. Поддерживает TCP, UDP и может работать как с IPv4, так и с IPv6.
iperf3 — более современная реализация, содержащая часть кода iperf.
Эксперименты будем проводить с IPv4, поэтому IPv4 для текущего сеанса (до первой перезагрузки) отключим.
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
На клиентскую машину и на сервер с Ubuntu в обоих случаях устанавливаем пакеты
sudo apt install iperf iperf3
Запускаем на сервере
iperf3 -s
————————————————————
Server listening on 5201
————————————————————
На клиенте запускаем тесты. Сначала зададим размер для передачи — 500 Мб.
iperf3 -c 123.123.123.123 -n 500M
…
[ 4] 44.00-44.56 sec 6.28 MBytes 94.1 Mbits/sec 0 173 KBytes
— — — — — — — — — — — — — — — — — — — — — — — — —
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-44.56 sec 500 MBytes 94.1 Mbits/sec 0 sender
[ 4] 0.00-44.56 sec 500 MBytes 94.1 Mbits/sec receiver
iperf Done.
Обмен данными будет выполняться какое-то время, результат появится в консоли в виде значений по скорости на прием и передачу.
Можно установить ограничение по времени, в примере это 5 секунд
iperf3 -c 123.123.123.123 -t 5
— — — — — — — — — — — — — — — — — — — — — — — — —
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-5.00 sec 56.2 MBytes 94.3 Mbits/sec 0 sender
[ 4] 0.00-5.00 sec 56.1 MBytes 94.2 Mbits/sec receiver
iperf Done.
Результат выводится в консоль и на сервере и на клиенте.
iperf3 отличается от iperf тем, что сервер слушает TCP. Клиент может выбрать UDP флагом -u. -R задает двунаправленную передачу данных.
iperf3 -u -R -c 123.123.123.123
По UDP можно с точностью сказать какой процент пакетов был потерян
Старая версия (iperf)
По умолчанию использует другой порт, но можно указать желаемый флагом -p
На сервере
iperf -s
На клиенте
iperf -c 123.123.123.123 -b20k -t10 -d -u
Здесь указывается, что трафик должен быть UDP -u, идти в обоих направлениях -d, в течение 10 секунд -t10, со скоростью 20 Кбит/с.
Так можно имитировать любой трафик и измерять пропускную способность.
Аналогом является netperf (пример использования на CentOS). Также часто используется IPtraf