Iperf, как пользоваться, замерить ширину канала?
Iperf инструкция.
Нужно замерить ширину канала интернета или локальной сети? Тогда вам поможет программа iperf. Преимущество iperf в том, что ее не надо устанавливать и бесплатна.
Вы можете встретить две версии iperf.exe и iperf3.exe, которые не совместимы друг с другом. В обеих версиях поддерживается многопоточная работа (в версии 2 посредством запуска на разных портах, в версии 3 — параметром у клиента).
Как запустить iperf?
Программа должна быть запущена на двух компьютерах.
Первый компьютер – должен играть роль сервера (192.168.0.100), второй – роль клиента (192.168.0.200).
На “сервере” с запускаем программу и вводим команду, которая запускает ее в режиме сервера
1. Копируем файл iperf3.exe на диск C.
2. Запускаем iperf server.
На клиенте аналогично запускаем iperf client, но с указанием адреса сервера 192.168.0.100:
Измерение скорости iperf. Программа в течении 10 секунд проведет тест ширины канала и покажет результат.
Можно тонко настроить тест, используя дополнительные ключи (обратите внимание, что большие\маленькие буквы имеют значение в заданной команде):
Опции для сервера:
-s — запустить как сервер и отображать всю информацию на экран;
-D — запустить как сервис (в фоновом режиме) и не отображать информацию.
Опции клиента:
-b — используемая полоса для UDP (по умолчанию 1Mbit/sec);
-c — запустить как клиент и соединиться с сервером;
-d — тестировать линию в обе стороны;
-n — установить размер передаваемого трафика (нельзя использовать с ключом -t);
-r — производить двунаправленное тестирование по отдельности;
-t — указать время тестирования (по умолчанию 10 сек);
-F — не генерировать трафик, а передавать готовый файл;
-I — ввод данных, передаваемых из STDIN (стандартный поток ввода);
-L — порт, на котором клиент будет принимать двунаправленный трафик;
-P — запуск нескольких потоков параллельно;
-T — время жизни пакета для групповой рассылки (по умолчанию 1);
Общие опции:
-f — в каком формате показывать скорость (Kbits, Mbits, KBytes, Mbytes);
-i — с какими интервалами отображать промежуточные результаты;
-l — размер буфера (по умолчанию 8 KB);
-m — показывать максимальный размер TCP сегмента (MSS);
-p — указать порт, по которому будет происходить соединение (по умолчанию 5001);
-u — использовать UDP вместо TCP;
-w — размер окна TCP;
-B — указание для сервера, на каком интерфейсе принимать трафик;
-C — режим совместимости со старыми версиями;
-M — позволяет изменить максимальный размер TCP сегмента (MSS);
-N — меняет некоторые опции TCP (отключение алгоритма Нагла);
-V — использовать IPV6;
-h — вывод справки.
Для примера, следующие команды покажут тесты:
Замер скорости при окне TCP 2 мбита:
Замер скорости при запуске 10 потоков одновременно:
Установка, настройка и использование iPerf
iPerf является кроссплатформенным приложением и может быть установлен на любую популярную операционную систему. В данной инструкции будет рассмотрена установка сервера на Linux CentOS и клиента как на последнем, так и Microsoft Windows.
Установка сервера/клиента
По сути, нет отдельного iPerf для сервера или клиента — это один и тот же программный продукт, который может запускаться в режиме сервера или выполнять клиентские команды.
Для начала выполняем установку расширенного репозитория:
yum install epel-release
yum install iperf3
Открываем порт в брандмауэре:
firewall-cmd —permanent —add-port=5201/tcp
firewall-cmd —permanent —add-port=5201/udp
* в данном примере мы открыли порт 5201 (для iPerf по умолчанию) для пакетов TCP и UDP.
На экране появится:
Сервер ждет запросов.
Клиентские запросы и проверка сервера
Напомню, что клиент может быть установлен на любую систему. Также, как в первом случае, выполняем установку клиента на другой компьютер в сети.
После можно сразу выполнить команду:
iperf3 -c 192.168.0.15
* где 192.168.0.15 — iPerf сервер.
На клиенте мы увидим что-то подобное:
[ 4] local 192.168.0.20 port 47068 connected to 192.168.0.15 port 5201[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 104 MBytes 873 Mbits/sec 10 391 KBytes
[ 4] 1.00-2.00 sec 110 MBytes 921 Mbits/sec 4 393 KBytes
[ 4] 2.00-3.00 sec 111 MBytes 928 Mbits/sec 1 478 KBytes
[ 4] 3.00-4.00 sec 104 MBytes 875 Mbits/sec 5 423 KBytes
- 192.168.0.20 — адрес клиента
- 192.168.0.15 — адрес сервера
- ID — идентификатор запросов, нужен для ориентирования, если к серверу идет несколько обращений.
- Interval — промежуток времени в секундах, на протяжении которого выполнялась передача данных.
- Transfer — сколько было передано данных за интервал времени.
- Bandwidth — средняя скорость передачи данных за интервал времени.
- Retr — количество повторно отправленных TCP-сегментов.
- Cwnd — одновременно переданных данных.
Все ключи запуска iPerf
Общие для сервера и клиента:
Ключ | Описание |
---|---|
-p | Определить порт, на котором будет слушать сервер или отправлять запросы клиент |
-f | Формат отчетов — kmgKMG (Kbits, Mbits, KBytes, MBytes, . ) |
-i | Задать интервал, в течение которого выполняется одна проверка |
-F | Указать файл, из которого будут взяты входные данные для запуска |
-A | Степень нагрузки на процессор |
-B | Указать, через какой сетевой интерфейс работать |
-V | Детализированные сообщения в консоли |
-J | Вывод в формате json |
—logfile | Весь вывод в отдельный лог-файл |
-d | Режим отладки (много сообщений) |
-v | Показать версию программы |
-h | Вызвать справку по работе с программой |
Для сервера:
Ключ | Описание |
---|---|
-s | Запустить iPerf в режиме сервера |
-D | Запустить как демона (как службу) |
-I | Указать pid-файл |
-1 | Принять запрос от одного клиента и завершить работу |
Для клиента:
Ключ | Описание |
---|---|
-c | Запустить iPerf в режиме клиента |
-u | Отправлять UDP-пакеты |
-b | Формат отчетов для bandwidth (средней скорости) |
-t | Количество секунд, в течение которых будет идти проверка скорости |
-n | Объем данных для проверки (применяется вместо времени -t) |
-k | Количество пакетов для проверки (вместо -t или -n) |
-l | Длина буфера записи/чтения |
-P | Число параллельных запросов |
-R | Обратный режим — сервер отправляет, клиент принимает |
-w | Размер сетевого окна |
-C | Установить алгоритм управления перегрузкой TCP |
-M | Задать максимальный размер MTU |
-4 | Работать только для IPv4 |
-6 | Работать только для IPv6 |
-Z | Использовать метод «нулевой копии» для отправки данных |
-O | Опустить первые n секунд |
-T | Задать префикс для каждой строки вывода |
Также самый свежий список ключей можно получить командой:
Автозапуск сервера (создание сервиса в systemd)
По умолчанию, программу нужно запускать вручную. Если мы хотим, чтобы сервер запускался автоматически и работал как служба systemd, выполняем инструкцию ниже.
Создаем юнит в systemd со следующим содержимым:
[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
Iperf: тестирование пропускной способности и скорости сети
Iperf – утилита с открытым исходным кодом, предназначенная для тестирования пропускной способности сети между двумя узлами. Утилита iperf позволяет генерировать нагрузочный TCP и UDP трафик между хостами. С помощью iperf вы можете быстро измерить максимальную пропускную способность сети между сервером и клиентом, провести нагрузочное тестирование канала связи, маршрутизатора, сетевого шлюза (файервола), вашей Ethernet или Wi-Fi сети.
В этой статье мы покажем, как установить и использовать утилиту iperf для проверки скорости сети в Windows и Linux CentOS (есть версии iperf для Android, MacOS, RouterOS от MikroTik и других платформ).
Версии iperf: iperf2 и iperf3
Утилита Iperf является кроссплатформенной и не требует установки, достаточно скопировать и запустить ее на двух устройствах, пропускную способность сети между которыми нужно оценить. Iperf работает в режиме клиент-сервер. На первом компьютере утилита Iperf запускается в режиме сервера (ожидает трафик от клиента). На втором компьютере Iperf запускается в режиме клиента, начинает генерировать TCP/UDP трафик и выполнять измерение максимальной скорости передачи данных.
На текущий момент есть две независимые ветки iperf, развивающиеся параллельно: iperf2 и iperf3. По большому счету эти две версии iperf совместимы между собой, но используют разные порты по умолчанию. В iperf1/2 это 5001, в iperf3 – 5201.
- iperf2 нужно использовать для параллельных потоков, двунаправленных тестов, а также эта версия официально поддерживается в Windows
- В iperf3 лучше реализовано высокоскоростное тестирование UDP. Код iper3 значительно меньше и лучше оптимизирован.
Остальные отличия не настолько существенны, чтобы специально использовать определенную версию (даже опции запуска у них совпадают). В этой статье мы будем использовать iperf3.
Установка iPerf для Windows
Вы можете скачать iperf 3.1 для Windows по ссылке https://iperf.fr/iperf-download.php или версию iperf2 (здесь). Достаточно скачать архив iperf и распаковать в локальный каталог на диске. Установка утилиты не требуется.В архиве всего два файла: cygwin1.dll и iperf3.exe.
Для Windows есть несколько реализаций графического интерфейса. Например, Iperf3-Cygwin-GUI и jperf.
Утилита jperf написана на Java (для работы на компьютере должна быть установлена Java-машина). Помимо графических рюшечек к CLI интерфейсу, Jperf умеет в реальном времени строить графики пропускной способности канала связи.
Для использования достаточно указать адрес сервера iPerf и запустить проверку.
Установка iperf в CentOS Linux
В CentOS 8 пакет iperf3 включен в состав базового репозитория AppStream (в CentOS 7 iperf3 есть в EPEL). Вы можете установить его стандартной командой yum/dnf:
# dnf install iperf3
sudo apt install iperf3
Если данный Linux сервер планируется использовать в качестве сервере iperf3, нужно открыть порт 5201 в firewalld:
# firewall-cmd —permanent —add-port=5201/tcp
# firewall-cmd —permanent —add-port=5201/udp
# firewall-cmd —reload
Измерение скорости сети с помощью Iperf
Рассмотрим теперь несколько примеров использования iperf для тестирования пропускной способности сети. В этом примере мы будем использовать сервер с CentOS в качестве сервера iperf. Запустим утилиту iperf в серверном режиме:
Сервер iperf запущен, он ожидает соединения на порту TCP/5201.
# iperf3 -s -w 32768 –p 5203
-w 32768 – зададим размер окна TCP в 32 KB (по умолчанию около 8 Кб)
–p 5203 – порт, на котором ожидает подключения iperf (напоминаю, что iperf2 по умолчанию слушает на порту 5001.
В качестве клиента iperf я использую компьютер с Windows 10. Запустите командную строку и перейдите в каталог с исполняемым файлом iperf:
Чтобы запустить проверку сети со стороны клиента, укажите адрес (имя) сервера iperf:
iperf3.exe -c 192.168.1.202
Если вы запустили сервер iperf с увеличенным размером TCP окна, вы можете использовать следующую команду для получения максимальной нагрузки на сеть:
iperf3.exe -c 192.168.1.202 -P 8 -t 30 -w 32768
- -c168.1.202 – IP адрес сервера iperf;
- -w32768 — увеличиваем размер TCP окна;
- -t30 – время в секундах, в течении которого выполняется тестирование (по умолчанию 10 секунд);
- -P8 — число параллельных потоков (подключений), используется для получения максимальной нагрузки на канал.
В нашем примере тестирование длилось 30 секунд. В итоговом отчете нас интересует значения столбца Bandwidth в последней строки [SUM]. В нашем случае средняя пропускная способность сети между двумя узлами – 79,7 Мбит/с. Было передано 285 Мб данных (столбец Transfer).
С помощью аргумента –f можно изменить формат отображения скорости передачи (биты, килобиты, мегабайты). С помощью опции –i можно указать интервал, через который нужно отображать промежуточные результаты. Это удобно при продолжительных тестах (несколько минут, часов).
Можно запустить iperf в обратном режиме (сервер отправляет данные, а клиент принимает), для этого на клиенте указывается опция –R.
По-умолчанию утилита генерирует TCP трафик, если вам нужно проверить скорость сети для UDP пакетов, необходимо использовать ключ –u (сервер при этом запускается командой: iperf3 -s –u ).
Если вам нужно проверить ваш интернет-канал (предоставляемый провайдером), можно воспользоваться одним из публичных iperf серверов (список доступен здесь):
iperf3 -c iperf.it-north.net
Если нужно оценить пропускную способность сети в обоих направлениях (в дуплексом режиме), дополнительно на клиенте нужно указать опцию –d:
iperf3.exe -c IP -P 8 -t 30 -w 32768 -d
Во время выполнения теста сете с помощью iperf вы можете следить за нагрузкой на сетевой интервейс компьютера через Task Manager.
Полный список опций утилиты iperf можно получить так:
Iperf – простая и удобная сетевая утилита, которая поможет вам измерить производительность сетевого подключения и максимальную скорость передачи данных между двумя устройствами.