- Iperf
- Что такое iperf?
- Iperf и unix
- Iperf и windows.
- Что умеет iperf?
- Установка, настройка и использование iPerf
- Установка сервера/клиента
- Клиентские запросы и проверка сервера
- Все ключи запуска iPerf
- Автозапуск сервера (создание сервиса в systemd)
- iPerf3: утилита для замера пропускной способности сети
- Отличия версий iperf2 и iperf3
- Установка iperf3
- Синтаксис и опции iperf
- Пример использования
Iperf
Существует множество статей, как работать Iperf’ом, но ни одна статья не ответила мне на вопрос как его запустить из под windows 7\8\10 (а вот понадобилось), очень мало статей упонинает какую скорость он измеряет, что подразумевается под пропускной способностью канала. Итак, все по порядку.
Что такое iperf?
Iperf это клиент-серверная утилита котороя позволять производить замеры пропускной способности канала. Клиент-серваная утилита подразумевает под собой, что для проверки скорости между двумя ПК необходимо будет запустить iperf на одном ПК в режиме «сервер», а на другом ПК в режиме «клиент». Скорость измеряется от клиента к серверу, т.е. если вы на своем компьютере запустили iperf в режиме «клиент», то результатом будет «исходящая» скорость. Чтобы измерить входящую, небоходимо запустить iperf в режиме сервер, либо воспользоваться ключиком -d для измерения скорость входящей+исходящей. Важно отметить, что гененирует трафик только клиентская часть.
Iperf и unix
Iperf в unix-подобных система находится во всех репозиториях и, чтобы его установить, необходимо запусть стандартную инсталляционную команду для вашего дистрибутива, например для debian это:
Для работы с утилитой прото вызываем iperf, например запустить данную утилиту в режиме сервера на 3600 секунд(1 час)
Iperf и windows.
Iperf не входит в стандартный дистрибутив windows, поэтому его надо скачать, например тут
Далее, необходимо поместить этот файл для удобства на диск С:
Если вы 2 раза кликните на то, что скачали, утилита запуститься и сразу «вылетит». Пользоваться ей надо следующим образом
- Зайдите в командную строку Пуск->выполнить->cmd или если Windows 10 в поиске необходимо набрать Cmd, он сам автоматически найдет то, что нам нужно.
- В открывшейся командной строке, надо перейти в папку, куда вы поместили скаченный iperf, в нашем случае она будет лежать на диске C:/, выполнив команду: cd c:/
Чтобы запустить iperf, например, в режиме клиента, необходимо выполнить команду: iperf -c -t 30 -i 10, где -t — время теста, -i — интервал обновления данных теста
Как видим, исходящая скорость исходящая скорость до сервера x.x.x.201 в среднем 15 мегабит\сек
Что умеет iperf?
Вообще, все написано в хелпе к данной утилите, но если кто-то любит читать на русском, то ключи ниже.
Общие:
-f, —format, [kmKM] формат отчёта: Kbits, Mbits, KBytes, MBytes
-i, —interval n, пауза секунд между периодическими отчётами
-l, —len n[KM], задёт длину на чтение/запись буфера (по умолчанию 8 KB)
-m, —print_mss, показать максимальный размер сегмента (MTU — TCP/IP в заголовке)
-o, —output , Запись отчёта в указанный файл
-p, —port n, задаёт порт к которому конектится или на котором вешать сервер (по умолчанию 5001)
-u, —udp, использовать UDP, а не TCP
-w, —window n[KM], TCP размер окна (размер буфера сокета)
-B, —bind , привязки к хосту, интерфейсу или групповому адресу
-C, —compatibility, для использования с более старыми версиями не шлёт екстра сообщения
-M, —mss n, задать TCP максимальный размер сегмента (MTU — 40 байт)
-N, —nodelay, задать TCP без задержки, отключение алгоритма Нэгла
-v, —version, напечатать информацию о версии и выйти
-V, —IPv6Version, Использовать IPv6
-x, —reportexclude, [CDMSV] исключить C(соединение), D(данные), M(Multicast) S(настройки)
V(сервер) в отчетности
-y, —reportstyle C|c, если установлено в C или c Отчёт будет в результатах CSV (значения, разделенные запятыми)
Конкретные варианты SERVER
-s, —server, запустить в режиме сервера
-U, —single_udp, работать в однопоточном режиме UDP
-D, —daemon, запустить сервер как демон
Конкретные варианты CLIENT
-b, —bandwidth n[KM], установить пропускную способность в бит/сек (по умолчанию 1 Мбит/сек.). Эта установка требует UDP (-u).
-c, —client , запустить в режиме клиента, при подключении к
-d, —dualtest, двунаправленный тест одновременно
-n, —num n[KM], количество байт для передачи (вместо -t)
-r, —tradeoff, У двунаправленный тест индивидуально
-t, —time n, время передачи в секундах (по умолчанию 10 секунд)
-F, —fileinput , читать отсылаемый контент серверу из файла
-I, —stdin, самому писать что отдавать серверу
-L, —listenport n, порт клиента двунаправленный
-P, —parallel n, число параллельных потоков клиента для запуска
-T, —ttl n, время жизни, для multicast (по умолчанию 1)
Установка, настройка и использование 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
iPerf3: утилита для замера пропускной способности сети
Пропуская способность канала – важнейшая характеристика работы сети, влияющая на максимальный объем данных, который можно передать за единицу времени. Для измерения этого параметра применяется специальный софт. Одной из лучших программ такого плана, сочетающая удобство и функциональность, на текущий момент считается кроссплатформенная утилита iperf3. Она имеет клиент-серверную архитектуру и позволяет достаточно точно измерить скорость передачи данных между двумя узлами сети, широко используется в США, Европе, России, других странах и регионах.
Для загрузки канала программа генерирует TCP и UDP трафик, который пересылается от клиента серверу. В результате оператор узнает «исходящую» скорость. Скачать и использовать утилиту может любой пользователь Windows, поскольку разобраться в особенностях ее работы сравнительно легко. Важно лишь внимательно читать инструкцию и последовательно выполнять приведенные действия. Утилита iperf3 доступна также пользователям Linux.
Отличия версий iperf2 и iperf3
Существуют две независимые ветки развития программы iperf. Работы по развитию iperf2 были приостановлены в конце 2000-х годов, но возобновлены в 2014-м другими разработчиками. Последняя актуальная версия данной ветки – 2.0.8. После реанимации проекта iperf2 превратился в современный инструмент со своим набором функций. Сегодня он в первую очередь ориентирован на использование трафика UDP для оценки задержки, поддержку большого перечня платформ.
Разработка iperf3 ведется параллельным курсом, и сегодня большая часть пользователей применяет именно эту версию для оценки пропускной способности сети. Два варианта программы имеют между собой достаточно много отличий в плане архитектуры, настроек, функционала. К примеру, iperf3 – это однопоточный инструмент. Предыдущая же модификация – многопоточная.
Из-за особенностей реализации каждый инструмент рекомендован для решения отдельного набора задач. Утилиту iperf2 стоит использовать для работы с параллельными потоками, двунаправленных тестов. Версия iperf3 лучше подойдет для однопоточного высокоскоростного тестирования.
Установка iperf3
Чтобы пользоваться утилитой, сначала необходимо загрузить с сайта свежую версию программы. На приведенной странице представлены сборки для ОС семейства Windows от XP до Win10. Там же можно найти варианты утилиты и для других операционных систем.
Можно распаковать загруженный архив в любую папку, но лучше выбрать для этой цели системный каталог Windows. Тогда при запуске командной строки к работе с утилитой можно приступить сразу же. К примеру, открыв окно CMD, можно сразу будет написать команду iperf3.exe -c 192.168.13.10 или любую другую.
Существуют варианты утилиты в типичном оконном Windows-исполнении. Примером такой программы служит iperf3 cygwin с gui-интерфейсом. Работать с подобными приложениями неподготовленному пользователю проще. Однако они имеют ограниченный функционал и часто выдают ошибки.
Синтаксис и опции iperf
Версии программы для Windows используют те же команды, что и в iperf3 debian и других Linux-системах. К каждой опции будет приложено пояснение на русском языке, что позволит быстро понять, как пользоваться iperf. Как было сказано выше, iperf3 может быть запущена как:
Чтобы запустить программу в качестве сервера и использовать соответствующие опции с ключами используется следующая комбинация:
Сервер iperf3 запущен (с назначенным портом , на котором работает приложение. По умолчанию 5201).
Чтобы запустить клиент iperf3 windows , необходимо набрать в командной строке:
Как видно из примера, при запуске клиентской части необходимо указать адрес сервера iperf, где утилита запущена в соответствующем серверном режиме.
Перейдем к рассмотрению общих опций программы.
- -p, —port – указывается порт, к которому необходимо подключиться (серверный порт);
- -f, —format – определяем формат вывода данных. Популярные значения: k, m, g, t (Kbits, Mbits, KBytes, MBytes), но есть и другие варианты;
- -i, —interval – временной интервал между выводами результатов теста;
- -F, —file – применить данные, находящиеся в указанном файле, вместо генерирования случайных сведений;
- -V, —verbose – вывод всей доступной информации по тесту;
- -J, —json – вывод в формате JSON;
- —logfile – включить логирование данных;
- —forceflush – произвести очистку истории перед печатью на экране последующих тестовых результатов;
- -v, —version – вывод использующейся версии утилиты.
Ниже укажем в нашем руководстве опции, доступные серверной части.
- -D, —daemon – запуск сервера в фоне (опцию можно использовать и для клиента);
- -I, —pidfile – путь, который будет использован, чтобы записать PID-файл процесса;
- -1, —one-off – выполнить обработку одного клиентского подключения, после чего завершить работу и выйти.
При работе с клиентской частью применяется большее количество опций.
- —sctp – применять SCTP в качестве альтернативы TCP;
- -u, —udp – задействовать UDP вместо TCP;
- —connect-timeout – задержка для первого соединения с серверной частью (мс);
- -b, —bitrate – задать битрейт (при использовании UDP применяется по умолчанию 1 Мбит/с, для TCP показатель со старта не имеет ограничений);
- -t, —time – отрезок времени для одного тестового этапа в секундах (по умолчанию параметр равен 10 с);
- -R, —reverse – запуск обратного теста, когда пакеты данных направляются от серверной станции клиентской части;
- -P – параметр позволяет задать, сколько потоков необходимо использовать;
- -4, —version4 – поддерживать исключительно протокола IPv4;
- -6, —version6 – применять только IPv6.
Здесь приведен базовый перечень опций, хотя существуют и другие, которые можно вывести на экран с помощью соответствующей команды.
Пример использования
Рассмотрим пример использования утилиты. Если мы будем запускать программу как клиент, нам потребуется серверная часть, которой можно адресовать поток данных. Для теста можно использовать публичные сервера, список которых легко найти в интернете, либо запустить серверную часть iperf3 на хосте локальной сети.
Итак, мы хотим выполнить запуск утилиты и сохранить тестовые данные в log-файле. Для этого прописываем команду с параметрами:
iperf3 -c speedtest.hostkey.ru -p5202 —logfile c:\utils\iperflog.txt
В итоге выполнится 10-секундный тест, а результаты сохранятся в файле text.log. Как видно из приведенного примера, измерение скорости сети с помощью iperf не составляет большой проблемы. Для определения пропускной способности необходимо изучить колонку Bitrate. Средние значения указываются под чертой.
Либо просто запустить команду iperf3 с необходимыми ключами из командной строки:
Подводя итог, хочу сказать, что утилита iperf3 будет хорошим помощником в работе сетевого инженера при замере пропускной способности между узлами локальной или глобальной сети.
Надеюсь, данная статья была полезна для вас.