Files
utun2/tools/proxy/proxy_doc.md
T

30 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` — быстрый запуск с преднастроенными адресами для локального тестирования