- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll - stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close - utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP), add deferred drain in both Phase J and L - stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39, exchange ed25519_pubkey in both handshake directions - etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb - chat_sync.c: fix lk->conn NULL dereference for TCP links - test_stcp.c: update stcp_server_create/stcp_client_connect callsites - tools/chat_tcp_test: change transport udp→tcp
138 lines
3.9 KiB
Markdown
138 lines
3.9 KiB
Markdown
# ETCP Monitor
|
||
|
||
Windows GUI утилита для мониторинга ETCP подключений uTun в реальном времени.
|
||
|
||
## Описание
|
||
|
||
ETCP Monitor - это Windows GUI приложение, которое подключается к работающему экземпляру uTun и отображает статистику ETCP подключений в реальном времени с периодом обновления 100мс.
|
||
|
||
## Архитектура
|
||
|
||
### Протокол управления (бинарный)
|
||
|
||
Формат сообщения: `[2 байта: размер] [1 байт: тип] [payload...]`
|
||
|
||
**Команды клиента:**
|
||
- `0x01` - запрос списка подключений
|
||
- `0x02` - выбор подключения по `peer_node_id`
|
||
- `0x03` - запрос метрик выбранного подключения
|
||
- `0x04` - отключение
|
||
|
||
**Ответы сервера:**
|
||
- `0x81` - список подключений
|
||
- `0x82` - метрики ETCP + линки + TUN
|
||
- `0xFF` - ошибка
|
||
|
||
### Файлы
|
||
|
||
**Общие (протокол):**
|
||
- `etcpmon_protocol.h` - определения структур и констант протокола
|
||
|
||
**Сервер (utun):**
|
||
- `src/control_server.h` - интерфейс control server
|
||
- `src/control_server.c` - реализация TCP сервера
|
||
|
||
**Клиент (Windows GUI):**
|
||
- `etcpmon_client.h/c` - сетевая часть (Winsock)
|
||
- `etcpmon_gui.h/c` - GUI (WinAPI)
|
||
- `etcpmon_main.c` - точка входа
|
||
|
||
## Сборка
|
||
|
||
### Клиент (Windows) - Рекомендуемый способ
|
||
|
||
**Используя MSYS2 UCRT64 (рекомендуется):**
|
||
|
||
```cmd
|
||
cd tools\etcpmon
|
||
build.bat
|
||
```
|
||
|
||
Это автоматически запустит MSYS2 UCRT64 shell и выполнит сборку.
|
||
|
||
Требования:
|
||
- Установленный MSYS2 (обычно в `C:\msys64`)
|
||
- Или переменная окружения `MSYS2_ROOT` с путем к MSYS2
|
||
|
||
**Альтернативные способы:**
|
||
|
||
```bash
|
||
# Через MSYS2 напрямую
|
||
cd tools/etcpmon
|
||
bash build.sh
|
||
|
||
# Через Makefile (если установлен make для Windows)
|
||
make -f Makefile.mingw
|
||
```
|
||
|
||
**Очистка:**
|
||
```cmd
|
||
clean.bat
|
||
```
|
||
|
||
### Сервер (utun)
|
||
|
||
Control server интегрирован в utun. Сборка стандартная:
|
||
|
||
```bash
|
||
./configure
|
||
make
|
||
```
|
||
|
||
## Настройка
|
||
|
||
### Конфигурация uTun
|
||
|
||
Добавьте в `utun.conf`:
|
||
|
||
```ini
|
||
control_ip=127.0.0.1
|
||
control_port=9090
|
||
```
|
||
|
||
### Использование
|
||
|
||
1. Запустите uTun с настроенным control socket
|
||
2. Запустите etcpmon.exe
|
||
3. Введите IP и порт control сервера
|
||
4. Нажмите "Connect"
|
||
5. Выберите подключение из списка для просмотра метрик
|
||
|
||
## Отображаемые метрики
|
||
|
||
### ETCP Connection:
|
||
- RTT Last/Avg10/Avg100 (микросекунды)
|
||
- Jitter (микросекунды)
|
||
- Bytes Sent (всего)
|
||
- Retransmissions (число)
|
||
- ACK received (число)
|
||
- Unacked bytes (текущие)
|
||
- Links count (число линков)
|
||
|
||
### TUN Interface:
|
||
- Bytes Read/Written
|
||
- Packets Read/Written
|
||
- Read/Write Errors
|
||
|
||
### Links:
|
||
- Status (UP/DOWN)
|
||
- Encrypt/Decrypt Errors
|
||
- Send/Receive Errors
|
||
- Total Encrypted/Decrypted Bytes
|
||
- Bandwidth (Kbps)
|
||
- NAT Changes Count
|
||
|
||
## Период обновления
|
||
|
||
100 мс (10 обновлений в секунду)
|
||
|
||
## Безопасность
|
||
|
||
- Поддержка нескольких одновременных клиентов
|
||
- Отдельный TCP сокет (не путать с ETCP UDP)
|
||
- Рекомендуется использовать localhost (127.0.0.1) для локального мониторинга
|
||
|
||
## Лицензия
|
||
|
||
См. основной LICENSE файл проекта uTun.
|