Измерение пропускной способности вашей wi-fi и ethernet сети с помощью iperf
Содержание:
- iperf3: измеряем скорость сети
- Основные отличия Iperf2 и Iperf3
- Как установить Iperf в CentOS 7
- Автозапуск сервера (создание сервиса в systemd)
- Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
- Как пользоваться iperf
- Версии iperf: iperf2 и iperf3
- Как iperf3 работает в pfSense
- Как установить Iperf в CentOS 7
- Copyright
- Клиентские запросы и проверка сервера
- Установка iperf3 в CentOS 7 и 8
- Установка iperf на CentOS 8
- How to use iperf
- Синтаксис и опции
- Виды и версии Iperf
iperf3: измеряем скорость сети
Самый простой способ измерить скорость сети — это скопировать файлы и засечь время. И способ самый правильный в том смысле, что именно для этого сеть в основном и сделана. Но есть недостаток. Если скорость мала (а она почти всегда могла бы быть и повыше) совершенно непонятно где узкое место — железо или софт, диски или провода и т.п. Для тестирования собственно сетевой части есть несколько известных кросс-платформенных (то есть для множества операционных систем — хоть для Windows, хоть для iOS или Android) утилит. Одна из них iperf3 доступна чуть ли ни под любую платформу и, в частности, есть в nas4free из коробки. Про неё и пост. NB версия 3 (iperf3) не совместима ни по ключам ни по трафику с более ранними — iperf и iperf2 Чтобы измерить скорость сети, без влияния дисковой подсистемы, производительности процессора и пр., между любыми двумя компьютерами и/или мобильными устройствами нужно на одном запустить iperf3 в режиме сервера А на другом — в режиме клиента, указав IP сервера Есть и другие параметры, но этих в локальной сети обычно достаточно. NB обычно тест следует повторить, поменяв сервер и клиент местами. Далеко не факт, что цифры примерно совпадут. Давайте запустим, но сначала нам придётся сделать подготовительную работу ведь на Windows iperf3 из коробки нет. 1. На NAS узнаём используемую версию 2. Теперь запустим её в режиме сервера — пусть ждёт. Можно и попозже запустить — главное, раньше вызова клиента на другой машине. 3. Теперь нужно найти такую же версию для Windows. Настоящий сварщик админ, конечно, скомпилирует из исходников на официальном сайте. Но мы погуглим iperf3 windows и найдём путь попроще. Первым вариантом Гугл даёт французский сайт. Там на выбор раздают версии под множество операционных систем. Свежая на момент написания версия 3.1.3, но я тестил и разницы с 3.1.4 не обнаружил. 4. Грузим под ваш вариант Windows (64 или 32 бит, есть и под Win10). Это zip архив с двумя файлами — утилитой и библиотекой. Помещаем папку куда-то на жёсткий диск (например — в корень диска С). Папку для краткости я переименовал в C:iperf3 5. И идём в командную строку Windows если нажать ENTER и сервер на другом конце запущен (п 2) — начнётся тестирование На примере выше имеем 455Мбит/c Теперь можно оценивать. Сказать по-правде, 455Мбит/c — цифра для гигабитной сети — позорная. Меньше половины возможной. Причём когда будут качаться файлы — скорость будет ещё ниже за счёт вклада дисковой системы с обеих сторон и возможных потерь на сетевые протоколы более высокого уровня. Если скорость не устраивает — нужно искать в чём дело. Я для начала записал на флешку Live образ nas4free и загрузил с неё свой настольный компьютер. Результат — 798-812 Мбит/c в зависимости от второстепенных параметров тестирования. Тоже не супер. Но с учётом древнего железа (настольный комп у меня на Core первого поколения), встроенных реалтековских карт и пр. — сойдёт. А вот мой Windows7 просится в настройку Обычно такие шалости творят антивирусы. В моём случае вклад вносит ещё и VirtualBox. Но всё это тема для отдельного разговора.
July 2021 | ||||||
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
View All Archives
Categories
View my Categories page Powered by LiveJournal.com Поделись знанием: Материал из Википедии — свободной энциклопедии Перейти к: навигация, поиск
Тип |
тестирование пропускной способности сети |
---|---|
Разработчик |
Jeff Boote, Jon Dugan |
Написана на |
C, C++ |
Операционная система |
Кроссплатформенная |
Последняя версия |
2.0.5 (9 июля 2010) |
Лицензия |
BSD подобная |
Сайт |
[iperf.sourceforge.net/ ourceforge.net] |
К:Википедия:Статьи без изображений (тип: не указан)
Тип |
тестирование пропускной способности сети |
---|---|
Разработчик |
ESnet / Lawrence Berkeley National Laboratory |
Написана на |
C |
Операционная система |
Кроссплатформенная |
Последняя версия |
3.1.1 (19 ноября 2015) |
Состояние |
актуальный |
Лицензия |
three-clause BSD |
Сайт |
[software.es.net/iperf e.es.net/iperf] |
К:Википедия:Статьи без изображений (тип: не указан)
Iperf — кроссплатформенная консольная клиент-серверная программа — генератор TCP и UDP трафика для тестирования пропускной способности сети.
Iperf3 — кроссплатформенная консольная клиент-серверная программа — генератор TCP, UDP и SCTP трафика для тестирования пропускной способности сети. Написана с нуля и не совместима с предыдущей реализацией, хотя и содержит часть кода предыдущей реализации.
Основные отличия Iperf2 и Iperf3
Каждый из этих инструментов имеет несколько разные функции и немного другую архитектуру, поэтому не стоит ожидать, что какой-то один инструмент будет иметь все необходимое. Лучше быть знакомым с несколькими инструментами и использовать правильный инструмент для вашего конкретного случая использования. Одно ключевое отличие заключается в том, является ли инструмент однопоточным или многопоточным. Если вы хотите протестировать производительность параллельного потока, вы должны использовать многопоточный инструмент, такой как iperf2, хотя в iperf3 так же можно сделать костыль.
Обратите внимание, что все три из этих инструментов находятся в активной разработке, и список уникальных функций для данного инструмента, вероятно, со временем изменится. Исходя из моего опыта, я рекомендуем следующее:
- Используйте iperf2 для параллельных потоков, двунаправленных тестов или тестов на базе MS Windows.
- Используйте nuttcp или iperf3 для высокоскоростного тестирования UDP
Как установить Iperf в CentOS 7
Хочу отметить, что в CentOS 7 и CentOS 8, придется делать слегка иначе. Производить инсталляцию я буду в последней версии CentOS 7, которую поставил ранее.
Начнем с установки Iperf2, для этого выполните команду:
У вас должна выскочить ошибка
Давайте посмотрим список репозиториев, делается это командой:
Как видим, список будет вот такой:
Как видите в файле yum.repos.d прописаны подключенные репозитории, и тут не хватает репозитория epel-release.
Давайте установим epel-release, для этого выполните:
Пробуем теперь посмотреть список репозиториев в файле yum.repos.d и видим, что epel появился.
Произведем установку Iperf
Все успешно выполнено. Конечно вам никто не запрещает подключить репозиторий от седьмой версии CentOS в восьмую, но они могут конфликтовать в будущем по зависимостям. Поэтому, если у вас CentOS 8, то я рекомендую сделать вот так.
Автозапуск сервера (создание сервиса в systemd)
По умолчанию, программу нужно запускать вручную. Если мы хотим, чтобы сервер запускался автоматически и работал как служба systemd, выполняем инструкцию ниже.
Создаем юнит в systemd со следующим содержимым:
vi /etc/systemd/system/iperfd.service
Description=iPerf Service
After=network.target
Type=forking
PIDFile=/run/iperf3.pid
ExecStart=-/bin/iperf3 -s -D -I /run/iperf3.pid
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
WantedBy=multi-user.target
* где
- Description — описание юнита;
- After указывает на юнит, после которого может загружаться наш сервис;
- Type — тип службы;
- PIDFile — путь к pid файлу, в котором хранится номер процесса;
- ExecStart — команда, которую нужно выполнить при старте сервиса (в данном примере запускается iPerf в режиме сервера как демон и создает pid-файл);
- ExecReload — команда для перезапуска службы;
- Restart=always — опция, позволяющая автоматически перезапускать сервис, если он перестанет работать;
- опция WantedBy=multi-user.target позволяет установить для автозапуска службу в обычном многопользовательском режиме.
Перезапускаем systemd:
systemctl daemon-reload
Разрешаем созданный сервис:
systemctl enable iperfd
Запускаем его:
systemctl start iperfd
Проверяем:
systemctl status iperfd
Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
На Raspberry устанавливаем утилиту iperf.
На пк скачиваем jperf – графическая java-надстройка для Iperf, распаковываем.
Надстройка кроссплатформенна, работает как под Windows так и под nix системами. Jperf строит график пропускной способности канала в режиме реального времени. Установка не требуется, в ОС должна быть установлена java-машина. Для nix предварительно нужно установить саму утилиту Iperf.
Запускаем на сервере Умного Дома (Raqspberry):
где –s запуск в режиме сервера, -t 3600 на время 3600 секунд или 1 час
На компьютере под Windows запускаем *.bat файл jperf.bat
Вводим адрес сервера, оставляем порт по умолчанию, выставляем время тестирования нажимаем иконку запуска.
На сервере получаем информацию в текстовом виде, на клиенте в графическом
Вот несколько скринов вариантов итогов тестирования:
Отображение на сервере:
Выход из утилиты, как обычно CTRL+C
UPD: Нашел программу для Android -Magic iPerf, моё мнение довольно удобно, можно не тягать с собой ноутбук а протестировать сеть, например для установки Wi-Fi камеры и т.д. Принцип действия такой же как и для ПК, на стороне сервера устанавливается серверная, запуск программы в режиме клиента.
Может кому и пригодится.
Скрин с телефона:
Обсуждение (3)
Смотрите так же:
31.12.2020 Возможность создания канала управления через телефонные сети для системы домашней автоматизации.
06.07.2020 Чтение файлов из образа img Операционной системы. Возможность записи образа на меньшую по размеру SD карту памяти
19.06.2020 Raspberry Pi: немного о резервном копировании и актуальной копии системы
07.05.2020 Установка VoIP сервера FreeSWITCH с частичной интеграцией в систему MajorDoMo
28.04.2020 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
07.10.2019 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
11.09.2019 Создание голосового оповещения MajorDoMo
21.08.2019 Установка USB аудиокарты и настройка звука в Raspberry Pi
04.04.2019 Сертификация в Z-Wave
11.03.2019 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
23.12.2018 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
20.10.2018 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
14.08.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
08.07.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
29.06.2018 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
21.06.2018 Удаленное наблюдение за близкими, но к сожалению, больными людьми.
Как пользоваться iperf
Для примеров я буду использовать сервер с адресом 192.168.0.101. Адрес клиента не имеет значения. Сначала необходимо запустить серверную часть программы. Для этого выполните:
Вы можете сразу указать в каких единицах измерения хотите видеть результаты. Для этого используется опция -f. Доступны такие варианты:
- k – килобиты;
- m – мегабиты;
- g – гигабиты;
- K – килобайты;
- M – мегабайты;
- G – гигабайты;
- T – терабайты.
Аналогично для сервера можно задать порт с помощью опции -p. По умолчанию он работает на порту 5201:
В любом случае, если на сервере установлен брандмауэр, то вам надо разрешить в нём подключение к порту 5201 или тому, который вы выбрали. Например, для ufw команда будет выглядеть так:
sudo ufw allow 5201
sudo firewall-cmd –permanent –add-port=5201/tcp sudo firewall-cmd –permanent –add-port=5201/udp sudo firewall-cmd –reload
И если вы хотите запустить программу в фоновом режиме, можете использовать опцию -D и перенаправить вывод в лог файл:
iperf3 -s -D –logfile /var/log/ipref.log
Убедится, что сервер запущен можно с помощью команды ss:
ss -tulpn | grep 5201
Обратите внимание на IP адрес, на котором слушает сервер, звездочка означает IPv4 соединения, а – IPv6. Поэтому, возможно вам придется вручную указать откуда надо ждать подключений:
iperf3 -s -4 -D –logfile /var/log/ipref.log
iperf3 -s -4 -D –logfile /var/log/ipref.log
Теперь к серверу можно подключаться. Для этого используйте опцию -c. Если вы меняли порт сервера, то здесь его надо указать с помощью опции -p:
iperf3 -c 192.168.0.101 -f K
В данном примере тест выполняется 10 секунд. Чтобы понять какая сейчас у вас пропускная способность сети следует смотреть на колонку Bitrate
Обращайте внимание на строки под чертой, они отображают среднее значение. В данном примере было передано 113 мебабайт со скоростью 11534 килобайт в секунду. По умолчанию утилита выводит промежуточный результат каждую секунду, вы можете изменить это поведение с помощью опции -i
Например, 5 секунд:
По умолчанию утилита выводит промежуточный результат каждую секунду, вы можете изменить это поведение с помощью опции -i. Например, 5 секунд:
iperf3 -c 192.168.0.101 -f M -i 5
А общую продолжительность теста можно задать с помощью опции -t. Например, 30 секунд:
iperf3 -c 192.168.0.101 -f M -i 5 -t 30
По умолчанию клиент отправляет данные серверу. Вы можете использовать опцию -R, чтобы сервер отправлял данные клиенту:
iperf3 -c 192.168.0.101 -f K -R
Если вы хотите видеть вывод сервера на клиенте, достаточно использовать опцию –get-server-output:
iperf3 -c 192.168.0.101 -f K –get-server-output
С помощью опции -P можно указать количество параллельных потоков тестирования, например, два:
iperf3 -c 192.168.0.101 -f K -P 2
Чтобы использовать UDP пакеты вместо TCP используйте опцию -u:
iperf3 -c 192.168.0.101 -f K -u
Если вы хотите узнать скорость работы вашего сетевого провайдера и у вас нет сервера в сети, можете использовать один из публичных iperf серверов. Полный список таких серверов можно найти здесь. Например:
iperf3 -c iperf.volia.net
Версии iperf: iperf2 и iperf3
Утилита Iperf является кроссплатформенной и не требует установки, достаточно скопировать и запустить ее на двух устройствах, пропускную способность сети между которыми нужно оценить. Iperf работает в режиме клиент-сервер. На первом компьютере утилита Iperf запускается в режиме сервера (ожидает трафик от клиента). На втором компьютере Iperf запускается в режиме клиента, начинает генерировать TCP/UDP трафик и выполнять измерение максимальной скорости передачи данных.
На текущий момент есть две независимые ветки iperf, развивающиеся параллельно: iperf2 и iperf3. По большому счету эти две версии iperf совместимы между собой, но используют разные порты по умолчанию. В iperf1/2 это 5001, в iperf3 – 5201.
Остальные отличия не настолько существенны, чтобы специально использовать определенную версию (даже опции запуска у них совпадают). В этой статье мы будем использовать iperf3.
Как iperf3 работает в pfSense
В » Диагностика »Мы можем запускать как клиент iperf3, так и сервер. Если мы запустим клиент, на нашем компьютере нам придется настроить сервер iperf3, и наоборот, если мы настроим сервер iperf3 в pfSense, на нашем компьютере нам придется настроить iperf3 в режиме клиента для выполнения всех тестов производительности. .
Оба инструмента, как клиент, так и сервер, доступны из меню «Диагностика», но позже из любого из них мы можем получить доступ к клиенту и серверу.
Клиент
В меню графического интерфейса пользователя у нас будут основные параметры конфигурации, которые есть у клиента iperf3:
- IP-адрес сервера
- TCP или UDP-порт сервера
- Протокол TCP или UDP
- Формат вывода, бит / сек или байт / сек.
И другие параметры, связанные с буферами, которые мы можем оставить пустыми, чтобы они принимали значения по умолчанию. После того, как мы ввели все данные для уже запущенного сервера iperf3, нажмите «Запустить клиент iperf», и будет запущен тест производительности.
Здесь нам нужно только войти, когда наша команда действует как сервер iperf3, и мы хотим проверить скорость загрузки. Обычно в проводной сети мы находимся в полнодуплексной среде, поэтому скорость загрузки и выгрузки должна быть одинаковой, если только нет сети с большим количеством загрузок или выгрузок, которые тогда могут иметь отличия.
сервер
В меню графического пользовательского интерфейса у нас будут основные параметры конфигурации, которые есть у сервера iperf3:
- TCP или UDP-порт сервера
- Формат вывода, бит / сек или байт / сек
Очень важной деталью является то, что сервер iperf3 определит, отправляем ли мы трафик TCP или UDP, и будет действовать соответствующим образом, по умолчанию порт 5201 используется, как обычно в iperf3. Другие параметры, доступные в разделе сервера, — это «Интервал», который будет указывать полосу пропускания, джиттер и потери в реальном времени
Advertisement
После того, как мы настроили эти три параметра, мы нажимаем «Запустить iperf Server» и можем запускать тесты производительности с нашего клиентского ПК.
Важной деталью является то, что если сервер или клиент iperf3 активирован, он будет отображаться в главном меню в статусе различных служб. Желательно не оставлять iperf3 включенным, если мы не собираемся проводить тесты производительности, как это есть прямо сейчас:. В клиенте iperf3, который мы запускаем на ПК, будь то с Windows or Linux операционной системы, мы должны поставить следующую команду:
В клиенте iperf3, который мы запускаем на ПК, будь то с Windows or Linux операционной системы, мы должны поставить следующую команду:
- -c 192.168.1.1: работает в режиме клиента с указанным IP.
- -P 50: мы отправляем всего 50 TCP-соединений
- -p 5000: мы используем порт 5000, по умолчанию 5201
- -fg: показываем скорость в Гбит / с
- -t 5: запускаем тест на 5 секунд.
В зависимости от параметров, которые мы хотим настроить, мы будем изменять значения аргументов. Мы надеемся, что с помощью этого небольшого руководства вы узнаете, как максимально эффективно использовать iperf3 в pfSense, и проверить скорость в локальной сети и при обмене данными между vlan.
Как установить Iperf в CentOS 7
Хочу отметить, что в CentOS 7 и CentOS 8, придется делать слегка иначе. Производить инсталляцию я буду в последней версии CentOS 7, которую поставил ранее.
Начнем с установки Iperf2, для этого выполните команду:
У вас должна выскочить ошибка
Давайте посмотрим список репозиториев, делается это командой:
Как видим, список будет вот такой:
Напоминаю, что утилита Iperf является дополнительным пакетом, который не входит в основные репозитории, это прекрасно описано в Вики http://fedoraproject.org/wiki/EPEL. Дополнительные пакеты для Enterprise Linux (EPEL) – это одобренный сообществом репозиторий, который указан в вики CentOS в разделе “Доступные репозитории для Linux”, в котором отмечается, что хотя репозитории сообщества не связаны с проектом CentOS, эти репозитории часто рекомендованы сообществом. Выполните команду:
Как видите в файле yum.repos.d прописаны подключенные репозитории, и тут не хватает репозитория epel-release.
Давайте установим epel-release, для этого выполните:
Пробуем теперь посмотреть список репозиториев в файле yum.repos.d и видим, что epel появился.
Произведем установку Iperf
Все успешно выполнено. Конечно вам никто не запрещает подключить репозиторий от седьмой версии CentOS в восьмую, но они могут конфликтовать в будущем по зависимостям. Поэтому, если у вас CentOS 8, то я рекомендую сделать вот так.
Copyright
iperf, Copyright (c) 2014-2019, The Regents of the University of
California, through Lawrence Berkeley National Laboratory (subject
to receipt of any required approvals from the U.S. Dept. of
Energy). All rights reserved.
If you have questions about your rights to use or distribute this
software, please contact Berkeley Lab’s Technology Transfer
Department at TTD@lbl.gov.
NOTICE. This software is owned by the U.S. Department of Energy.
As such, the U.S. Government has been granted for itself and others
acting on its behalf a paid-up, nonexclusive, irrevocable,
worldwide license in the Software to reproduce, prepare derivative
works, and perform publicly and display publicly. Beginning five
(5) years after the date permission to assert copyright is obtained
from the U.S. Department of Energy, and subject to any subsequent
five (5) year renewals, the U.S. Government is granted for itself
and others acting on its behalf a paid-up, nonexclusive,
irrevocable, worldwide license in the Software to reproduce,
prepare derivative works, distribute copies to the public, perform
publicly and display publicly, and to permit others to do so.
This code is distributed under a BSD style license, see the LICENSE
file for complete information.
Клиентские запросы и проверка сервера
Напомню, что клиент может быть установлен на любую систему. Также, как в первом случае, выполняем установку клиента на другой компьютер в сети.
После можно сразу выполнить команду:
iperf3 -c 192.168.0.15
* где 192.168.0.15 — iPerf сервер.
На клиенте мы увидим что-то подобное:
- 192.168.0.20 — адрес клиента
- 192.168.0.15 — адрес сервера
- ID — идентификатор запросов, нужен для ориентирования, если к серверу идет несколько обращений.
- Interval — промежуток времени в секундах, на протяжении которого выполнялась передача данных.
- Transfer — сколько было передано данных за интервал времени.
- Bandwidth — средняя скорость передачи данных за интервал времени.
- Retr — количество повторно отправленных TCP-сегментов.
- Cwnd — одновременно переданных данных.
Установка iperf3 в CentOS 7 и 8
В CentOS 8 с установкой Iperf3 еще проще, так как это пакет является уже частью стандартных репозиториев, чтобы его поставить просто введите:
Если мы имеем дело с CentOS 7 и ниже, то нужно добавлять репозиторий epel-release
Открытие портов Iperf на CentOS
После того. как вы произвели инсталляцию пакета, вам необходимо открыть порты, которые будет слушать ваша служба при подключении к ней. Напоминаю, что порты по умолчанию у iperf и iperf3, это 5201. Для решения этой задачи мы выполним две команды:
firewall-cmd –permanent –add-port=5201/udp
Проверим слушает ли сервер входящие подключения по порту 5210, для этого выполните:
Установка iperf на CentOS 8
Ранее, я так же установил CentOS 8 в тестовой среде. Хочу отметить, что если вы попытаетесь добавить репозиторий epel-release командой:
То он успешно установится, но когда вы попытаетесь сделать поиск iperf по нему, то обнаружите, что восьмая ветка не содержит данной утилиты.
Как я и писал выше не желательно устанавливать epel 7 и 8 версии репозитория, я лично в такой ситуации просто выхожу подобным образом. Я открываю сайт https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/ и ищу нужный мне пакет, копирую на нужный мне прямую ссылку.
Далее я устанавливаю в CentOS 8 пакет wget, для этого выполняем:
Далее скачиваем пакет, ссылку на который мы заранее выяснили.
Далее производим установку iperf2 в системе, через выполнение команды:
Так же для CentOS 8 рекомендуется включить репозиторий PowerTools, поскольку пакеты EPEL могут зависеть от пакетов из него
How to use iperf
Once we have iperf, we need to learn how to use it. As we mentioned above, we need to run both server and client. The server will keep listening, accepting client connections. Thus, this is the first thing we need to do. Running the server is as simple as writing in the prompt ( stands for server). The first time you do that, on Windows, it will ask you network permission. Of course, flag the permissions and click Allow access.
Enable network access for iperf.
Once you enable the access, a simple message will appear on the prompt, telling you that the server is ready to accept connections. By default, iperf3 listens on port 5201.
The iperf server ready to accept connections.
Now, we will leave the server be. This server will accept all our connections. However, we will be able to tweak the tests and even pilot the server from the iperf client. That’s where the real deal is.
A simple speed test with iperf
Now, how to use iperf3 to run a simple speed test? You can simply use the command, of course replacing “<server IP>” with the IP of your server. However, we want to have a better test. Thus, we want to give TCP all the time it needs to expand the window size: better to run a test for some more seconds. We can do that with the option, followed by the number of seconds. This will tell iperf3 how long to run the test. Generally, one to two minutes are enough (just to show, we will use 5 seconds). Since our server is running on the same PC, the target IP will be localhost at , but that’s just the case of this demonstration.
If we want to know how to use iperf, we need to know how analyze the output. The standard output is a table with four columns. Furthermore, the last two rows of the table (after the dash line) represent the totals.
- ID is the ID of the iperf operation
- Interval is the time span the row refers to
- Transfer is the amount of data exchanged between client and server. In the end, speed test is about transferring files and measuring how long it took.
- Bandwidth is the measured bandwidth
Why don’t we have a single total/summary row? Because we want to see the different performances between sending and receiving. In fact, on the far right of the summary rows, you will see sender and receiver bandwidth. In our case, the sender is the client so it means the upload speed. Instead, receiver means download speed. The two might not be always the same, in case of asymmetric bandwidth.
Other cool options
So far so good. In fact, you know how to use iperf by simply using the commands above. However, you may want to use some options to tweak the measurement at your liking. If you want to know all options, use . Here, we will see the most useful ones.
- creates N parallel connections, useful to push links to their limit
- runs in reverse mode: the server will send and the client will receive
- indicate a limit bandwidth (for example 10k, 5mb, 1gb). The test won’t go much beyond this value, even if the link has higher capacity.
- generates the output in JSON once the operation finishes, useful if you want to use iperf in scripts.
Try to experiment combining all the options you’d like together. You will achieve enterprise-grade professional bandwidth testing.
Синтаксис и опции
Применительно к синтаксису ПО iperf следует понимать, что клиентская и серверная части существуют независимо друг от друга. И значит, запускаются различными командами. Вот как нужно действовать применительно к каждой ситуации:
- для сервера – $ iperf3 -s опции;
- для клиента – $ iperf3 -c адрес_сервера опции;
Когда разобрались с запуском, можно переходить к командам, опциям программы. Их перечень обширен, но и здесь не так сложно вникнуть, если захотеть. Начнем с общих.
Ввод «-p» определяет порт для подключения. «-f» означает формат данных для отображения на дисплее. Доступны килобиты, мегабиты, килобайты, мегабайты в секунду. Остальные команды перечислены ниже:
- «-i» означает интервал в демонстрации данных теста iperf;
- «-F» задает использование информации из файла (а не генерации случайных показателей);
- «-l» позволяет определить размер буфера (изначально установлено 8 килобайт);
- «-m» отсылает к сегменту, его величине;
- «-o» выводит результаты для записи в файл;
- «-p» устанавливает порт привязки (5201 в пресете);
- «-u» задает UDP сетевой протокол;
- «-w» управляет размером окна;
- «-B» привязывает к интерфейсу, хосту;
- «-J» запускает переход к JSON-формату.
Это были базовые команды. Далее перейдем к серверным.
Опции для сервера
Данные действия предназначены для управления приложением ipref на серверном компьютере. Вот что приготовили разработчики:
- «-s» задает работу в режиме сервера;
- «-D» активирует фоновый запуск;
- «-I» устанавливает путь сохранения PID-файла;
- «-1» назначает однократное клиентское подключение с последующим выходом.
Не так много, как бы хотелось. Для режима «клиент» выбор побогаче.
Опции для клиента
Как уже известно, приложение iperf может работать в 2 базовых режимах. Вот что доступно для ПК клиента:
- «—sctp» включает замену сетевого протокола TCP на SCTP;
- «-u» переключает на протокол UDP;
- «—connect-timeout» позволяет задать время начального подключения к серверу (измеряется в миллисекундах);
- «-b» означает скорость, битрейт. В режиме TCP ничем не ограничен, для UDP протокола задан от 1 мегабита в секунду;
- «-t» устанавливает время на прогонку теста. Измеряется в секундах. Изначально параметр задан в 10 секунд;
- «-R» запускает реверс. То есть измерение производится не от клиента к серверному ПК, а в обратном направлении;
- «-P» определяет число действующих потоков;
- «-w» регулирует размеры окна TCP.
Кроме того, доступно принудительное переключение на настройки протокола IPv4 (ввести «-4»), IPv6 («-6»).
Виды и версии Iperf
Сама утилита работает по умолчанию в режиме командной строки, но у нее так же есть надстройка на Java, для графического интерфейса. Так же есть две независимых ветки у данного инструмента по тестированию сети. Первая ветка, это Iperf2, вторая Iperf3.
Какова история iperf3 и в чем разница между iperf2 и iperf3?
iperf2 был заброшен в конце 2000-х годов на версии 2.0.5, несмотря на некоторые известные ошибки и проблемы. Потратив некоторое время на решение проблем с iperf2, ESnet к 2010 году решила, что нужен новый, более простой инструмент, и приступила к разработке iperf3. Цель состояла в том, чтобы сделать инструмент как можно более простым, чтобы другие могли внести свой вклад в код. По этой причине было решено сделать инструмент однопоточным и не беспокоиться о обратной совместимости с iperf2.Многие запросы функций для iperf3 поступили из проекта perfSONAR ( http://www.perfsonar.net).
Затем в 2014 году Боб (Роберт) МакМахон из компании Broadcom возобновил разработку iperf2. Он исправил многие проблемы с iperf2 и добавил ряд новых функций, похожих на iperf3. iperf2.0.8, выпущенный в 2015 году, сделал iperf2 полезным инструментом. Текущее развитие iperf2 сосредоточено на использовании UDP для тестирования задержки, а также на широкой поддержке платформ.
На момент написания статьи (2019), iperf2 и iperf3 активно (хотя и независимо) разрабатываются. Я рекомендуем ознакомиться с обоими инструментами и использовать те функции, которые лучше всего соответствуют вашим потребностям.