evgeny
61132a3e84
Align socket monitoring with compact address profiles
1 week ago
evgeny
76d2e58f19
Expose ETCP and STUN profile provenance in monitor protocol
1 week ago
evgeny
ff69552a61
Measure owned endpoint mapping and inbound reachability separately
1 week ago
evgeny
577d1bd72f
Handle delayed TCP delivery in etcpmon regression checks
2 weeks ago
evgeny
d62916edf0
Validate etcpmon response strings and close failed streams
2 weeks ago
evgeny
45efaf095d
Add Windows regression coverage for etcpmon refresh lifecycle
2 weeks ago
evgeny
24906283fe
Refresh etcpmon connections and preserve selection by peer ID
2 weeks ago
evgeny
9465ed4939
Fix etcpmon response caches and pending request lifecycle
2 weeks ago
evgeny
229a508022
etcpmon: add Makefile to git (was ignored by *.gitignore Makefile pattern)
2 months ago
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
2 months ago
evgeny
d773f1724a
refactor: STCP connections as ETCP links (is_tcp)
...
- Add is_tcp, tcp_link, tcp_reconnect_* fields to ETCP_LINK
- Remove transport_link from ETCP_CONN, add tcp_link_count
- stcp_link: replace embedded etcp_conn with pointer; add etcp_link backpointer
- stcp_link: link_rx_cb routes ETCP data to etcp_conn_input
- stcp_link: call on_close_cb in close
- New TCP functions: etcp_link_enter_ready_tcp, etcp_tcp_link_start_connect,
etcp_tcp_link_start_reconnect, tcp_link_close_cb, etcp_tcp_send
- etcp_link_new: handle NULL conn for TCP links; skip enter_init for TCP
- etcp_link_close: close stcp_link for TCP
- etcp_encrypt_send: redirect TCP to etcp_tcp_send (skips AES-CCM)
- tcp_server_on_link: create ETCP_LINK(is_tcp=1) + enter_ready_tcp
- etcp_connect: TCP addrs -> etcp_tcp_link_start_connect
- Remove ctx->tcp_link/tcp_ready
- test_stcp_traffic: find stcp_link via links->is_tcp instead of transport_link
- 66/68 tests pass; 2 STCP tests expected to fail (integration not complete)
2 months ago
Evgeny
11ab897fe5
chatgui: fix RTT display 10x overstatement (DB stores 0.1ms, displayed as ms); remove unused rtt_avg_100
3 months ago
Evgeny
0381f4df89
Убраны TCP_TIMESTAMPS и TCP_KEEPALIVE из lwip_tcp_opts.h (не используются, конфликтовали с ws2ipdef.h на Windows)
3 months ago
Evgeny
3c3d9a65d9
refactor: переименование route_node/route_bgp в topo_node/topo_bgp
...
Файлы: route_node.* route_node_lmdb.* route_bgp.* -> topo_node.* topo_node_lmdb.* topo_bgp.*
Структуры:
- ROUTE_BGP -> TOPO_BGP, ROUTE_BGP_CONN_ITEM -> TOPO_BGP_CONN_ITEM
- NODEINFO -> TOPO_NODE, NODEINFO_Q -> TOPO_NODEQ, NODEINFO_PATH -> TOPO_NODEPATH
- NODEINFO_ROUTES -> TOPO_NODESUBNETS, NODE_CONNECTIVITY -> TOPO_CONNECTIVITY
- wire: NODEINFO_MSG -> TOPOMSG_NODE, NODEINFO_IPV4_* -> TOPOMSG_*4 и т.д.
- memory: NI_IPV4_* -> TOPO_*4, NI_IPV6_* -> TOPO_*6
- ROUTE_SUBCMD_* -> TOPO_SUBCMD_*, ETCP_ID_ROUTE_ENTRY -> ETCP_ID_TOPO_ENTRY
Функции:
- route_bgp_* -> topo_bgp_*
- nodeinfo_* -> topo_node_*
- route_node_* -> topo_node_*
- route_node_lmdb_* -> topo_node_lmdb_*
Смысл: отделение механизма формирования топологии узлов от IP-роутинга.
3 months ago
Evgeny
4914348557
etcp_router: транзитные очереди per (src,dst) с backpressure + унификация etcp_send
...
- TRANSIT_QUEUE: отдельная очередь на каждую пару src+dst узлов
- ll_queue с хеш-индексом для быстрого поиска transit-очередей
- backpressure через waiter на send_input_q (threshold=0, один пакет за вызов, round-robin)
- Очередь создаётся при первом пакете который не получается отправить напрямую, удаляется при опустошении
- Унифицирован etcp_send: единый путь queue_data_put(send_input_q) для UDP (normalizer->input) и STCP (tx_queue)
- Убран STCP-ветвления из router_forward_transit/drain_cb
- Исправлено перекрытие ll.data и tq->q в TRANSIT_QUEUE (добавлены явные поля src_node_id/dst_node_id)
- Фикс лика dgram в tx_queue_cb/client_tx_queue_cb (добавлен queue_dgram_free)
- transit_queues живут внутри ETCP_CONN, инициализируются лениво, очищаются в etcp_connection_close (до pn_deinit) и stcp_link_close
4 months ago
jeka
4f168c93f6
1
4 months ago
Evgeny
754c08e9c2
etcpmon: widen sockets list by ~100px (15 chars), shift action section
4 months ago
Evgeny
71ccccc2d5
etcpmon: widen sockets list +15px, shift action section right
4 months ago
Evgeny
4862c30261
add CFG_SERVER_TYPE_LOCAL (type=local) and UNKNOWN semantics: PRIVATE/LOCAL hidden from nodeinfo, PRIVATE blocks incoming INIT, LOCAL accepts; UNKNOWN treated as PUBLIC; self-detection of PUBLIC IP on incoming INIT; filter LOCAL from NAT checks and connectivity
4 months ago
Evgeny
389ef00da6
refactor: split socket meta 'type' into config_type and nat_type — separate config (PUBLIC/NAT/PRIVATE) from detected NAT (EIM/STRICT/DIRECT) across NODEINFO, conn_mgr, route_bgp, route_node, etcpmon; win32 compat fixes (memmem, SHUT_WR, tun test_mode, tcp_proxy guards)
4 months ago
Evgeny
0edd21e335
etcpmon: lift Router to y=1181 (tight to Queues), shrink window to 1400
4 months ago
Evgeny
e0c38676e7
etcpmon: compress Queues h 300->280, lift Router y 1260->1240
4 months ago
Evgeny
fefd2bcc52
etcpmon: fix layout — restore Debug Levels y=485, lift Links to y=710, compress Queues h=300 y=900
4 months ago
Evgeny
7329fa65f1
etcp_router: add congestion counters, fix tx_seq rollback on etcp_send failure, add router metrics to etcpmon GUI
...
- etcp_router.h: add 9 per-conn counters (pkts_sent/err/rcvd, ack_sent/recv/stale, dup/oob/sign_fail)
- etcp_router.c: increment counters at 13 event points; fix tx_seq rollback on etcp_send failure (was causing phantom inflight=256 deadlock); add DEBUG_ERROR on all 5 ignored etcp_send returns; fix router_ack_do_send to update timestamps only on success
- etcpmon_protocol.h: add etcpmon_router_metrics (14 aggregated fields)
- control_server.c: iterate router_conns to fill aggregated router metrics
- etcpmon_gui: new 'Router Congestion' block with queue depths and all counters, Debug Levels shifted down, window 1300->1440
- test_etcp_router_unit: fix test_ack_timer for correct no-BGP-route behavior
4 months ago
Evgeny
c893285d71
action popup: use SW_RESTORE + SetForegroundWindow to bring hidden window to front
4 months ago
Evgeny
75028f278a
action popup: re-show window on every action result if it was hidden
4 months ago
Evgeny
7fc1b5419f
action popup: use ClearType Consolas 10pt font instead of ANSI_FIXED_FONT
4 months ago
Evgeny
dee9889423
action popup: convert \n -> \r\n for Windows EDIT control line breaks
4 months ago
Evgeny
35871891db
action nodes: send BGP node dump as text response to GUI, display in popup
...
- route_node_format_all(): format all BGP nodes to snprintf buffer
- control_server: 'nodes' action sends ETCPMON_RSP_ACTION_RESULT (0x89) with text
- etcpmon_protocol.h: new response type + struct, increase MAX_MSG_SIZE to 32K
- etcpmon_client: on_action_result callback, send_action via send_request with seq_id
- etcpmon_gui: ETCPMonActionResult popup window class with EDIT multiline,
on_action_result creates popup (same size as main) or appends text + scrolls
4 months ago
Evgeny
d8c8c1c5b0
control_server: node subscription protocol with output queue, push notifications on routing changes
4 months ago
Evgeny
3419ff3a85
debug: single source of truth for category names, GUI dynamic labels
...
- debug_get_category_name(): replace switch/case with table lookup in g_debug_categories[]
- etcpmon_gui: remove hardcoded cat_names[], create labels/radios dynamically from server CSV
4 months ago
Evgeny
6b2b0f1360
etcp: per-link acked bytes/packets counters + BBR debug logging
...
- Add acked_bytes/acked_packets to struct ETCP_LINK (init, reset, increment per ACK)
- Add DEBUG_CATEGORY_BBR (23) for BBR-specific debug output
- Add BBR input/output DEBUG_DEBUG around bbr_main call in etcp_ack_recv
- Add "bbr" category name to debug_config and etcpmon GUI
4 months ago
Evgeny
dd1b9f2680
etcp: dedup ack_q — не добавлять дубликаты ACK для одного seq
4 months ago
Evgeny
3a2b427287
etcpmon: widen debug level labels by 30% and shift radio buttons right
5 months ago
Evgeny
43baeb2306
etcpmon: fix autoradio button groups and add missing ETCPROUTE category
5 months ago
Evgeny
226a5744b5
etcpmon: Debug Levels block moved to right column, global radio labels removed, columns narrowed
5 months ago
Evgeny
1f4fe37fe5
proxy: rename + simplify + backpressure
...
- tcp_proxy/remote_proxy → tcp_proxy_client/tcp_proxy_server
- Все proxy файлы перенесены в src/proxy/
- Конфиг: [tcp_proxy]→[tcp_proxy_client], [remote_proxy]→[tcp_proxy_server]
- Убран subcmd CONNECTED (0x02) — клиент шлёт DATA сразу после CONNECT
- Backpressure: etcp_router_waiter_register/cancel через ll_queue threshold waiter
- Клиент: recv_cb send fail → tx_buf+waiter, не tcp_recved() (окно lwIP=0)
- Сервер: read_cb send fail → pause_buf+waiter, пауза read_id
- CLOSE/ERROR отправляется только после drain всех очередей
- Fail: conn не найден/closed → send ERROR вместо CLOSE/silent drop
- PROTOCOL.md: полная архитектура с диаграммами состояний и потоков
5 months ago
Evgeny
f43631a532
etcpmon: исправить синтаксис — orphaned код перенесён внутрь функции etcpmon_client_add_to_history
5 months ago
Evgeny
4f0baa37db
bbr: исправить передачу потерь в BBR + пол для cwnd на уровне BBR_CWND_MIN_TARGET*mss
...
- etcp.c: rs->lost из link->bbr_loss_since_ack (был хардкод 0), вызов bbr_note_loss при ретрансмите
- etcp_connections.h: поле bbr_loss_since_ack для per-link учёта потерь в байтах
- etcp_bbr.c: везде где BBR_CWND_MIN_TARGET — умножить на mss (юнит-мизматч пакеты/байты)
- bbr_quantization_budget, bbr_set_cwnd, bbr_bound_cwnd_for_inflight_model, bbr_probe_rtt_cwnd
- bbr_init_lower_bounds: инициализация inflight_hi из cwnd (был ~0U навсегда)
- control_server.c + etcpmon: экспорт BBR-метрик (bw_hi/lo, inflight_hi/lo, режим, потери)
- tests/bbr_integration: интеграционный тест BBR (15с, 50ms/5%loss/1Mbit) с таблицей метрик
- устранён death spiral BBR при высоких потерях: cwnd теперь не падает ниже 4*mss
5 months ago
Evgeny
bbebc74bdb
fix etcpmon keyboard: move Tab/Enter/Esc from WndProc to message loop pre-translate
6 months ago
Evgeny
973c00e544
add etcpmon keyboard navigation: Tab between Server/Port, Enter=Connect, Esc=Disconnect
6 months ago
Evgeny
fb76b4252f
fix etcpmon: stray brace in nat_type_to_string, add pipefail to build scripts
6 months ago
Evgeny
9c509d4c86
add connectivity probing + NAT type rename OPEN->EIM, RESTRICTED->STRICT
...
- Rename NAT types: OPEN->EIM, RESTRICTED->STRICT across all code
- Add flat addr list {type,ip,port,socket_id} to NODEINFO (NODEINFO_IPV4_ADDR)
- Add NODEINFO_IPV4_SOCKET_META for per-socket metadata
- Add NODE_CONNECTIVITY with per-type probe status and min_rtt
- New module: route_connectivity.c/h (probing engine with socket fallback)
- STRICT verified addresses excluded from NODEINFO broadcast
- Trigger probing on new/updated BGP node, cancel on remove/withdraw
- Update NAT type names in etcpmon GUI
6 months ago
Evgeny
bd749c1484
GUI: Widen sockets list 1.5x, shrink action field, move Send below
6 months ago
Evgeny
0c748501c8
GUI: Add NAT address to socket display in etcpmon
6 months ago
Evgeny
57dba26e7c
GUI: поле действия и кнопка Send для отправки команд в utun
...
- Добавлен ETCPMON_CMD_ACTION в протокол (32 байта текст)
- В GUI добавлено поле ввода и кнопка Send правее блока Sockets
- Добавлен etcpmon_client_send_action для отправки команд
- Обработка action 'nat' в control_server: запускает NAT check для всех линков
- Сделана route_bgp_start_link_nat_check не-static
- Добавлена route_bgp_request_nat_check_all
- Исправлен баг route_ping.c (request_id -> nonce)
- Исправлена линковка tests/Makefile.am
6 months ago
Evgeny
2e3eb0976a
Add RX/TX dup counters to ETCP monitor GUI
...
- Add IDC_EDIT_ETCP_RX_DUP and IDC_EDIT_ETCP_TX_DUP controls
- Insert RX Dup / TX Dup fields after Retrans in ETCP Metrics group
- Update tooltips, metrics display and clear functions
6 months ago
Evgeny
385aa066b2
Add duplicate packet counter to ACK frames
...
- Add rx_dup_count (local) and tx_dup_count (remote via ACK) to ETCP_CONN
- Extend ACK section format: add 16-bit rx_dup_count after last_delivered_id
- Reconstruct 32-bit tx_dup_count from received 16-bit diff
- Update etcpmon protocol and control_server to expose counters
- Update packet dumper for new ACK format
6 months ago
Evgeny
16a2aa959d
etcpmon: translate tooltips to English
6 months ago
Evgeny
6127409c04
etcpmon: add tooltips for all metrics fields with variable names and descriptions
6 months ago