You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.3 KiB
2.3 KiB
proxy (тестовый инструмент)
1. Назначение
UDP прокси с симуляцией сетевых условий — вносит потери пакетов и задержки для тестирования поведения ETCP в нестабильной сети.
2. Как пользоваться
udp_proxy --listen [IP:]PORT --target IP:PORT [опции]
| Опция | Значение |
|---|---|
--listen [IP:]PORT |
Адрес прослушивания (IP опционально, по умолчанию 0.0.0.0) |
--target IP:PORT |
Куда пробрасывать трафик |
--loss-forward N |
Потери в прямом направлении, % (0–100, по умолчанию 0) |
--loss-back N |
Потери в обратном направлении, % |
--delay-forward A:B |
Задержка в прямом направлении, диапазон ms |
--delay-back A:B |
Задержка в обратном направлении, диапазон ms |
--help |
Справка |
Типовой сценарий: udp_proxy --listen 0.0.0.0:12345 --target 8.8.8.8:53 --loss-forward 5 --delay-forward 10:50 — вставка между клиентом и сервером, наблюдение реакции ETCP на потери/задержки.
3. Ключевые детали
- Использует
u_asyncкак событийный цикл (epoll/poll) - Per-client flow tracking: каждый уникальный клиент (IP:port) получает выделенный backend-сокет, поиск по хешу через линейный связный список (
udp_flow_t) - Раздельные настройки потерь и задержек для forward (клиент→сервер) и backward (сервер→клиент) направлений
- Задержка — случайная в заданном диапазоне (ms), потери — случайные с заданной вероятностью (
rand() % 100 < loss) - Сборка:
makeвtools/proxy/, линкуется сlibuasync.aиlibpthread - Скрипт
proxy.sh— быстрый запуск с преднастроенными адресами для локального тестирования