При тестировании сетевых приложений на мобильных устройствах и в полевых условиях важно уметь не только «померить скорость», но и воспроизвести реальные характеристики канала: задержку, джиттер, потери, ограничение пропускной способности и особенности маршрутизации. В этом помогают инструменты, доступные в 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
Пример последовательности:
- Очистить qdisc:
tc qdisc del dev <IFACE> root
- Запустить baseline iPerf3 (например, TCP):
iperf3 -c <SERVER_IP> -t 20 -i 2
- Применить задержку/джиттер и потери:
tc qdisc add dev <IFACE> root handle 1: netem delay 80ms 20ms loss 2%
- Повторить iPerf3 теми же параметрами:
iperf3 -c <SERVER_IP> -t 20 -i 2 | tee iperf3_tcp_tc_test.log
- Очистить настройки:
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 — эмулировать задержку, джиттер, потери и ограничения канала. Такой подход особенно полезен для настройки и проверки приложений в условиях, близких к мобильным и полевым.
Если вам нужна помощь с настройкой лабораторной схемы, подготовкой воспроизводимых сценариев тестирования или подбором методики замеров под ваш продукт, специалисты РыбинскЛАБ помогут организовать стенд и провести оценку качества сети и приложений.