Files
utun2/tools/etcpmon
evgeny 38c9f229bc stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test
- 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
2026-08-07 00:48:27 +03:00
..

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 (рекомендуется):

cd tools\etcpmon
build.bat

Это автоматически запустит MSYS2 UCRT64 shell и выполнит сборку.

Требования:

  • Установленный MSYS2 (обычно в C:\msys64)
  • Или переменная окружения MSYS2_ROOT с путем к MSYS2

Альтернативные способы:

# Через MSYS2 напрямую
cd tools/etcpmon
bash build.sh

# Через Makefile (если установлен make для Windows)
make -f Makefile.mingw

Очистка:

clean.bat

Сервер (utun)

Control server интегрирован в utun. Сборка стандартная:

./configure
make

Настройка

Конфигурация uTun

Добавьте в utun.conf:

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
  • 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.