Вопрос или проблема
Я хотел бы протестировать подключение UDP с помощью iperf3
, но не знаю, как запустить его в режиме UDP-сервера.
iperf3 -s
открывает только TCP-сокет:
root@srv ~# lsof -i -P | grep iperf3
iperf3 21030 root 3u IPv4 15606995 0t0 TCP *:5201 (LISTEN)
Синтаксис немного отличается для iperf3
. Пример UDP-теста с 1 Mbps:
На стороне сервера:
iperf3 --server
На стороне клиента:
iperf3 --udp --client <IP-адрес сервера> --bitrate 1M
То, что я нахожу действительно интересным, это то, что серверная сторона не начинает прослушивать UDP-порт, пока не получит первый входящий UDP-пакет. Это странно неинтуитивно.
Вы можете открыть UDP-сокет на порту 5003, используя приведенную ниже команду.
iperf3 -s -p 5003
iperf3 -s -p порт
он также открывает UDP-сокет.
Ответ или решение
Для тестирования UDP соединения с помощью iperf3 важно понимать алгоритм работы и соответствующие команды, которые обеспечивают корректное функционирование этой утилиты. Iperf3 — это инструмент, который поддерживает как TCP, так и UDP соединения, и часто используется для измерения пропускной способности сети.
Теория
Основное назначение iperf3: этот инструмент используется для измерения производительности сетевого соединения, и он поддерживает два режима: клиент и сервер. При тестировании сети с использованием протокола UDP следует учитывать, что UDP в отличие от TCP не гарантирует доставку данных, что в свою очередь может сказаться на измерениях пропускной способности.
Основные аспекты работы с UDP в iperf3:
- Iperf3 изначально запускается в режиме TCP на порту 5201, поскольку TCP-соединения являются более распространенными для тестирования сетевой связи.
- Для UDP требуется указание режима UDP на клиентской стороне, что инициирует передачу UDP пакетов.
- Серверная часть iperf3 будет ожидать первого UDP пакета для открытия соответствующего сокета.
Пример
Запуск серверной части iperf3:
Для запуска iperf3 в режиме сервера используется команда:
iperf3 -s
По умолчанию, эта команда открывает TCP-соединение и начинает прослушивание на порте 5201. Однако, для UDP это поведение изменяется, как только сервер начинает получать UDP-пакеты от клиента.
Клиентская сторона:
Для тестирования UDP соединения необходимо инициировать отправку UDP пакетов с клиентской стороны:
iperf3 --udp --client <адрес_сервера> --bitrate 1M
Эта команда отправляет UDP пакеты на указанный адрес сервера с битрейтом 1 Мбит/с.
Применение
Практический совет по запуску UDP сервера:
- Для запуска сервера на нестандартном порте (например, на порту 5003), используйте команду:
iperf3 -s -p 5003
Эта команда также откроет слушающий UDP сокет на данном порту и будет готова к приему UDP пакетов.
-
После запуска сервера, необходимо убедиться, что брандмауэр и другие сетевые настройки позволяют входящие UDP соединения на выбранный порт (в нашем примере на порт 5003).
-
Убедитесь, что на уровне сети нет ограничений или фильтрации UDP пакетов, так как это может повлиять на результаты теста.
Заключение
Использование iperf3 для тестирования UDP соединений требует понимания, что серверная часть не открывает сразу UDP порт, а:
- Ожидает прихода первого пакета, чтобы начать работу.
- Обеспечивает простоту в использовании, даже при комплексной структуре сети.
Таким образом, корректная настройка iperf3 позволяет значительно повысить эффективность тестирования производительности сети в UDP режиме, обеспечивая надежные и адекватные результата измерений. Не забывайте об оценке сетевой инфраструктуры перед тестами для достижения наибольшей точности и надежности собранных данных.