iperf3: утилита для тестирования сети¶
iperf3 — это кроссплатформенная консольная утилита с открытым исходным кодом, предназначенная для измерения максимально достижимой пропускной способности сети (bandwidth) и оценки качества сетевого соединения между двумя узлами. Она является развитием популярной программы iperf и используется для активного тестирования каналов связи, настройки сетевого оборудования и диагностики производительности сетей на базе протоколов TCP и UDP. Программа работает по принципу «клиент-сервер», где один компьютер выступает в роли сервера, ожидающего подключения, а другой — в роли клиента, генерирующего трафик.
¶История и происхождение
Проект iperf был создан в конце 1990-х годов как инструмент для тестирования пропускной способности сетей. Первоначальная версия, известная как iperf 2.x, получила широкое распространение, однако её разработка велась нерегулярно, а кодовая база со временем устарела. В 2010 году группа разработчиков из Центра прикладных интернет-исследований (Center for Applied Internet Research, CAIR) при Университете Небраски начала работу над полностью переписанной версией — iperf3. Основной целью было создание более чистой, модульной и поддерживаемой кодовой базы, лишённой недостатков предыдущей версии, включая проблемы с многопоточностью и неточностью измерений. Первый стабильный релиз iperf3 состоялся в 2014 году. С тех пор проект активно развивается, регулярно выпускаются новые версии, добавляющие поддержку новых операционных систем и улучшающие точность измерений. iperf3 не является прямой заменой iperf 2.x, так как форматы вывода и некоторые параметры командной строки у них различаются, однако именно iperf3 стал стандартом де-факто для современных сетевых тестов.
¶Архитектура и принцип работы
iperf3 построен по архитектуре «клиент-сервер». Для проведения теста необходимо запустить серверную часть на одной машине и клиентскую — на другой. Сервер прослушивает определённый порт (по умолчанию 5201), а клиент устанавливает соединение и начинает передачу данных. По завершении теста обе стороны обмениваются статистической информацией, и клиент выводит итоговый отчёт.
Программа поддерживает два основных режима тестирования:
- TCP-режим: измеряет максимальную пропускную способность TCP-соединения. Клиент отправляет данные серверу, стараясь максимально загрузить канал. Результат показывает, сколько мегабайт или гигабайт в секунду может передать сеть при использовании протокола TCP.
- UDP-режим: измеряет пропускную способность и качество соединения при использовании UDP. В этом режиме клиент отправляет датаграммы с заданной скоростью (битрейтом), а сервер фиксирует количество потерянных пакетов (packet loss), джиттер (колебание задержки) и другие параметры. Этот режим критически важен для оценки качества каналов, предназначенных для передачи голоса (VoIP) или видео в реальном времени.
Для повышения точности измерений iperf3 поддерживает однопоточную модель передачи данных по умолчанию, но позволяет запускать несколько параллельных потоков с помощью параметра -P. Это позволяет имитировать нагрузку от множества одновременных соединений.
¶Основные возможности и параметры
Утилита обладает широким набором опций, управляющих параметрами теста. Ключевые возможности включают:
- Настройка длительности и объёма: тест может быть ограничен по времени (параметр
-t, по умолчанию 10 секунд) или по количеству переданных данных (параметр-n). - Регулировка полосы пропускания: в UDP-режиме можно задать целевую скорость передачи (параметр
-b), что позволяет проверить, справляется ли сеть с заданной нагрузкой. - Обратное направление теста: параметр
-Rзаставляет сервер отправлять данные клиенту, что позволяет проверить скорость в обратном направлении (download). - Двунаправленный тест: параметр
-dзапускает одновременную передачу данных в обе стороны. - Вывод JSON: параметр
-Jпозволяет получить результаты в машиночитаемом формате JSON, что удобно для автоматизации и интеграции со скриптами мониторинга. - Настройка TCP-параметров: возможность задавать размер окна TCP (
-w), использовать разные алгоритмы перегрузки и другие низкоуровневые параметры. - Логирование и интервалы: вывод промежуточных результатов через заданные интервалы времени (
-i).
¶Синтаксис и примеры использования
Для запуска сервера используется команда: `` iperf3 -s ` Эта команда запускает сервер на всех интерфейсах и порту 5201. Для запуска клиента, который будет отправлять данные на сервер, используется команда: ` iperf3 -c <адрес_сервера> ` Например, для теста скорости до сервера с IP-адресом 192.168.1.10 в течение 30 секунд с выводом результатов каждые 5 секунд, команда будет выглядеть так: ` iperf3 -c 192.168.1.10 -t 30 -i 5 ` Для проверки качества UDP-канала с целевой скоростью 100 Мбит/с: ` iperf3 -c 192.168.1.10 -u -b 100M ` Для теста скорости загрузки (когда сервер отправляет данные клиенту): ` iperf3 -c 192.168.1.10 -R ``
¶Интерпретация результатов
По завершении теста iperf3 выводит подробный отчёт. В TCP-режиме основным показателем является значение Transfer (объём переданных данных) и Bitrate (скорость передачи в битах в секунду). Отчёт также показывает количество переданных и повторно переданных (retransmitted) сегментов, что может указывать на проблемы с качеством канала или перегрузку сети.
В UDP-режиме отчёт включает:
Jitter— среднеквадратичное отклонение задержки между пакетами, важный показатель для приложений реального времени.Lost/Total Datagrams— количество потерянных и общее количество отправленных датаграмм, а также процент потерь.Bitrate— фактическая скорость передачи.
Высокий процент потерь и значительный джиттер в UDP-режиме свидетельствуют о том, что сеть не способна обеспечить требуемое качество обслуживания для чувствительных к задержкам приложений.
¶Применение
iperf3 является незаменимым инструментом для:
- Администраторов сетей: для проверки реальной пропускной способности каналов связи между офисами или дата-центрами, выявления узких мест и проверки корректности настройки оборудования (коммутаторов, маршрутизаторов, межсетевых экранов).
- Специалистов по облачным технологиям: для тестирования производительности сетевых подключений к виртуальным машинам и облачным сервисам.
- Инженеров связи: для приёмо-сдаточных испытаний новых линий связи и сертификации кабельных систем.
- Разработчиков: для оценки производительности сетевых приложений и библиотек.
- Домашних пользователей: для проверки реальной скорости соединения с интернет-провайдером (при наличии сервера на стороне провайдера или использовании публичных тестовых серверов в интернете).
Благодаря своей простоте, точности и кроссплатформенности (поддерживаются Windows, Linux, macOS, FreeBSD и другие ОС), iperf3 является стандартным инструментом для сетевой диагностики, включённым в репозитории большинства дистрибутивов Linux и доступным для установки на другие платформы.
¶Ограничения и особенности
iperf3 измеряет «сырую» пропускную способность канала, не учитывая накладные расходы протоколов более высокого уровня. Реальная скорость, которую увидит пользователь при скачивании файла по HTTP, будет ниже из-за служебной информации TCP/IP, а также ограничений серверов и приложений. Кроме того, для получения корректных результатов тест следует проводить в условиях, когда канал не загружен другими задачами. Также стоит учитывать, что iperf3 требует установки и серверной, и клиентской части, что делает его пригодным для тестирования только тех каналов, на обоих концах которых есть контроль.
¶Источники
- Официальная документация и man-страницы проекта iperf3 на GitHub.
- Статья «iperf3: The New Standard for Network Throughput Testing» в журнале Linux Journal.
- Документация по сетевым утилитам из дистрибутива Ubuntu Linux.