We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Сетевые тесты и нагрузочное моделирование: использование iPerf3, ss и tc в Termux для эмуляции реальных условий сети

При тестировании сетевых приложений на мобильных устройствах и в полевых условиях важно уметь не только «померить скорость», но и воспроизвести реальные характеристики канала: задержку, джиттер, потери, ограничение пропускной способности и особенности маршрутизации. В этом помогают инструменты, доступные в Termux: iPerf3 для измерения пропускной способности, ss для диагностики активных соединений и состояний сокетов, а также tc (traffic control) для имитации сетевых условий на уровне ОС.

В статье покажем типовые сценарии и безопасные подходы к нагрузочному моделированию в пределах локальной тестовой среды.

Безопасность и легальность тестов

При проведении сетевых тестов:

  • выполняйте измерения только на системах, которыми вы управляете, или где есть явное разрешение;
  • не используйте тесты для воздействия на чужие сети/сервисы;
  • моделирование с tc применяйте локально на вашем устройстве или в изолированной лабораторной среде;
  • если требуется изоляция/локальная сегментация, VPN используйте исключительно для создания локальной сети в тестовых целях (не для обхода ограничений).

Подготовка Termux: окружение и базовые пакеты

Начните с обновления репозиториев и установки сетевых инструментов. В зависимости от архитектуры и версии Termux iPerf3 и iproute2 (включая tc) могут иметь разные способы установки.

pkg update
pkg upgrade
pkg install iperf3 iproute2 procps-ng

Проверка версий:

iperf3 --version
ss --version
tc -V

Если iPerf3 не устанавливается напрямую, можно найти его через доступные пакеты Termux или собрать из исходников. Для стабильной лабораторной методики лучше использовать штатные пакеты, когда они доступны.

iPerf3 в Termux: измерение пропускной способности и потерь

iPerf3 — инструмент для оценки пропускной способности и стабильности соединения между двумя хостами. Для корректных измерений рекомендуется:

  • использовать одинаковые условия сети (одинаковая точка доступа/Wi‑Fi, один и тот же канал);
  • разделять тесты на «короткие» (быстрый sanity-check) и «длинные» (устойчивость);
  • фиксировать параметры: TCP/UDP, длительность, размер окна/пакетов.

Сценарий 1: TCP throughput (сервер + клиент)

На устройстве-сервере:

iperf3 -s

На устройстве-клиенте (укажите IP сервера в вашей локальной сети):

iperf3 -c <SERVER_IP> -t 20

Типовые доп. параметры:

  • -t — длительность теста;
  • -P — количество параллельных потоков (полезно для оценки поведения при многопоточности);
  • -w — размер окна TCP;
  • -i — интервал отчётов.

Пример с параллельными потоками и отчётами:

iperf3 -c <SERVER_IP> -t 20 -P 4 -i 2

Сценарий 2: UDP (оценка потерь/джиттера)

UDP удобен для моделирования сценариев реального времени (VoIP/стриминг), когда важны потери и задержка.

На сервере:

iperf3 -s -u

На клиенте:

iperf3 -c <SERVER_IP> -u -b 20M -t 20 -i 2

Где:

  • -u — UDP;
  • -b — целевая скорость передачи (например, 20M);
  • iPerf3 выведет проценты потерь и статистику джиттера/задержки.

Сценарий 3: Дисциплина тестов и повторяемость

Для «нагрузочного моделирования» недостаточно одного запуска. Практический подход:

  • провести baseline-тест (без tc);
  • зафиксировать параметры и несколько раз повторить;
  • включить заданные сетевые ограничения;
  • снова повторить серию iPerf3 и сравнить метрики.

Сохраняйте результаты в лог:

iperf3 -c <SERVER_IP> -t 20 -i 2 | tee iperf3_tcp_20s.log

ss в Termux: диагностика соединений и состояния сокетов

Инструмент ss полезен, когда нужно понять, что происходит «под капотом»: какие соединения активны, есть ли ретрансляции на уровне соединений, как быстро меняется состояние TCP и какие порты задействованы.

Базовый список сокетов TCP:

ss -t

Сокеты с состояниями и расширенной информацией (часто помогает при анализе):

ss -t -i

Фильтрация по порту iPerf3 (типично 5201):

ss -t -i 'sport = :5201' or 'dport = :5201'

Повторяйте мониторинг во время iPerf3 (особенно при тестах с ограничениями и потерями), чтобы увидеть, как меняется поведение соединения.

Нагрузочное моделирование tc: имитация задержки, потерь и пропускной способности

tc из набора iproute2 позволяет применять qdisc-дисциплины на интерфейсе и управлять параметрами потока: задержкой, вариативностью задержки, потерями, ограничением пропускной способности и очередями. Это помогает приблизить «реальные условия» (например, мобильную сеть) к вашей лабораторной среде.

Важно: tc требует прав. На практике чаще всего используются root-доступ или терминальные среды, где у вас есть необходимые привилегии. Если прав недостаточно — вы сможете анализировать (ss, iPerf3), но не сможете применять правила tc.

Определение сетевого интерфейса

Сначала посмотрите, какой интерфейс участвует в трафике:

ip addr
ip route

Обычно это wlan0 для Wi‑Fi или rmnet* для мобильного канала (зависит от устройства/ядра/настроек).

Очистка правил tc (возврат к исходному состоянию)

Перед экспериментами полезно уметь откатывать изменения:

tc qdisc del dev <IFACE> root

Если qdisc не существует, команда может вернуть ошибку — это нормально при первом запуске.

Пример 1: Имитация задержки и джиттера (netem)

Базовая схема: добавляем qdisc netem на интерфейс и задаём задержку и вариативность.

Например, задержка 80ms и джиттер 20ms:

tc qdisc add dev <IFACE> root handle 1: netem delay 80ms 20ms

Для более реалистичной модели можно добавить нормальное распределение задержки, но для начала достаточно delay с вариативностью.

Пример 2: Имитация потерь

Например, 2% потерь пакетов:

tc qdisc add dev <IFACE> root handle 1: netem delay 80ms 20ms loss 2%

Пример 3: Ограничение пропускной способности (трафик-контроль)

Задача: ограничить исходящую пропускную способность, чтобы имитировать «узкое место» канала. Для этого обычно используют tbf (token bucket filter) или комбинации qdisc.

Пример с tbf: полоса 10Mbit/s, burst 32KB:

tc qdisc add dev <IFACE> root handle 1: tbf rate 10Mbit burst 32kb latency 400ms

На практике полезно комбинировать ограничения: сначала классифицировать очереди/подключать netem к нужному классу, но это уже более продвинутая настройка. Для лабораторного сравнения «baseline vs ограничение» часто достаточно последовательного применения: сначала задаёте задержку/потери, затем запускаете iPerf3, а при необходимости заменяете qdisc.

Сценарий теста: baseline → tc → iPerf3

Пример последовательности:

  1. Очистить qdisc:
tc qdisc del dev <IFACE> root
  1. Запустить baseline iPerf3 (например, TCP):
iperf3 -c <SERVER_IP> -t 20 -i 2
  1. Применить задержку/джиттер и потери:
tc qdisc add dev <IFACE> root handle 1: netem delay 80ms 20ms loss 2%
  1. Повторить iPerf3 теми же параметрами:
iperf3 -c <SERVER_IP> -t 20 -i 2 | tee iperf3_tcp_tc_test.log
  1. Очистить настройки:
tc qdisc del dev <IFACE> root

Дальше сопоставляйте результаты: падение throughput, изменение времени завершения, рост потерь/джиттера (для UDP) и возможные изменения поведения TCP-сокетов (для TCP) — это как раз то, что дополняет ss.

Использование ss совместно с tc для интерпретации результатов

Во время теста смотрите, как изменяются сокеты и параметры соединений.

Например, отслеживайте TCP-соединения на порт 5201:

watch -n 1 'ss -t -i sport = :5201'

Если watch недоступен, используйте периодические запуски или установите procps-ng, как показано в подготовке. Обращайте внимание на рост времени в статусах и на общую динамику соединения (в лабораторных целях — достаточно качественных сравнений до/после).

Типовые ошибки и как их избегать

  • Сравнение «разных» условий: меняются точки доступа, фоновые загрузки, заряд/энергосбережение — результаты становятся несопоставимыми.
  • Неправильный интерфейс: правила tc применяются к не тому интерфейсу, поэтому iPerf3 не «видит» ограничения.
  • Нет прав на tc: команды возвращают ошибку — в этом случае используйте только iPerf3/ss или обеспечьте корректные привилегии в рамках вашей среды.
  • Слишком жёсткие параметры с первого раза: начните с мягких значений delay/loss, затем повышайте интенсивность.

Заключение

Termux позволяет проводить реалистичные сетевые тесты и нагрузочное моделирование без сложной инфраструктуры: iPerf3 помогает количественно оценить пропускную способность и устойчивость, ss — проанализировать поведение сокетов в процессе тестов, а tc — эмулировать задержку, джиттер, потери и ограничения канала. Такой подход особенно полезен для настройки и проверки приложений в условиях, близких к мобильным и полевым.

Если вам нужна помощь с настройкой лабораторной схемы, подготовкой воспроизводимых сценариев тестирования или подбором методики замеров под ваш продукт, специалисты РыбинскЛАБ помогут организовать стенд и провести оценку качества сети и приложений.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект