Commit Graph
36 Commits
Author SHA1 Message Date
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: полная архитектура с диаграммами состояний и потоков
2026-06-02 18:02:37 +03:00
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
2026-06-01 17:50:16 +03:00
Evgeny 6c79939db3 congestion: заменить AIMD на BBR v3 (per-link), добавить юнит-тесты BBR
- Новые файлы: src/etcp_bbr.h/c — полный порт BBR v3 из BBR/bbr_v3.c (референс сохранён)
- struct ETCP_LINK: удалены AIMD-поля (rtt_history, rtt_swm, stat_win, stats_timer, inflight_phase...), добавлены bbr*, delivered_bytes, bbr_pacing_rate
- struct INFLIGHT_PACKET: +3 поля для rate_sample (delivered_at_send, inflight_at_send, is_app_limited)
- etcp_ack_recv: вызов bbr_main() с rate_sample, обновление inflight_lim_bytes и pacing
- etcp_request_pkt: заполнение BBR rate_sample полей при отправке
- Шейпер: bandwidth обновляется из bbr_pacing_rate
- Конфиг: inflight_min/max заменены на bbr_max_cwnd
- Дамп: BBR поля (mode, cycle, pacing, min_rtt_us, bw_hi/lo, inflight_hi/lo)
- Time injection: bbr->now_tb для детерминированных тестов
- tests/test_etcp_bbr.c: 8 юнит-тестов (init, startup, full_bw/drain, loss, cwnd cap, loss cut, fast_path, probe_rtt)
- Отключены test_etcp_congestion и test_etcp_reinit_inflight (старый congestion control)
- 40/40 тестов пройдено
2026-06-01 12:58:31 +03:00
Evgeny 697aee0351 Socket info: show config and netif IP in log, monitor shows interface IP 2026-04-24 01:23:52 +03:00
Evgeny 0c748501c8 GUI: Add NAT address to socket display in etcpmon 2026-04-23 22:02:42 +03:00
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
2026-04-22 20:52:30 +03:00
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
2026-04-22 16:04:11 +03:00
Evgeny 3c0b5f501a Fix: use allocated_count from mem.c for busy memory calculation
busy = u_get_allocated_count() - memory_pool_get_total_free_blocks()
2026-04-21 17:41:45 +03:00
Evgeny cee9a04348 GUI: add active timeouts and busy memory blocks counters
- Add timeout_heap_get_size() to get active timer count
- Add global counters in memory_pool: g_total_free and g_total_allocated
- Simplify busy memory calculation to single formula:
  busy = memory_pool_get_total_allocated() - memory_pool_get_total_free_blocks()
- Add new IDC_EDIT_ACTIVE_TIMEOUTS and IDC_EDIT_BUSY_MEMORY to GUI
2026-04-21 17:22:58 +03:00
Evgeny 0a44320245 1 2026-04-14 22:28:25 +03:00
Evgeny ad35bbab15 add sockets to gui 2026-04-14 21:50:32 +03:00
Evgeny 62a059abdb add sockets to gui 2026-04-14 21:17:46 +03:00
jeka 04d3a0e52e add inflight to gui 2026-04-09 12:51:55 +03:00
Evgeny fd815150f6 Control: harden socket against malformed data and buffer overflows
- immediate close on bad size/type/payload
- recv_len guard to prevent overflow
- unknown commands now close without response
2026-04-02 20:27:08 +03:00
Evgeny d733bcbf4d 1 2026-03-31 16:24:50 +03:00
Evgeny 2d9fbd9911 1 2026-03-30 22:50:54 +03:00
jeka 26cfa3209a add per-link inflight 2026-03-22 20:08:16 +03:00
jeka ca1e522a38 1 2026-03-19 22:24:16 +03:00
jeka 4c3681c045 control socket disconnect fix 2026-03-17 15:37:51 +03:00
jeka 92a797ab66 monitor to new protocol 2026-03-14 05:46:20 +03:00
jeka 8880db0ca2 1 2026-03-08 16:52:24 +03:00
jeka d77e725cbe 1 2026-03-08 00:47:02 +03:00
jeka 220d23daf7 1 2026-03-07 22:44:19 +03:00
jeka 0e9a91729c 1 2026-03-07 20:47:15 +03:00
jeka b1c8ba7e90 add metrics to monitor 2026-03-07 19:01:14 +03:00
Evgeny fbd1128bf1 etcpmon: add queue metrics, error counters, timer flags and peer_node_id
- Added queue bytes/packets for all 6 ETCP queues
- Added error counters: reinit_count, reset_count, pkt_format_errors
- Added timer active flags for connection and link timers
- Added peer_node_id to identify connection in metrics
2026-03-07 17:27:02 +03:00
jeka 15c7968c8c mem 2026-03-06 01:36:57 +03:00
jeka 46c95b3fd8 +bping +gui rtt 2026-03-04 23:14:32 +03:00
jeka 9d0223d3fa refactor 2026-02-28 15:15:34 +03:00
Evgeny 8502451ec7 compile fixes 2026-02-21 21:30:39 +03:00
jeka 1947810cb0 gr restore v2 2026-02-21 21:24:09 +03:00
jeka b8ea33160d восстановление морды (частичное) 2026-02-21 21:04:11 +03:00
Evgeny 6ffec2f1e7 Fix: INVALID_SOCKET usage in POSIX code and remove missing test
- control_server.c: Use -1 instead of INVALID_SOCKET on lines 241 and 511
- Makefile.am: Remove test_control_server reference (source file missing)
2026-02-21 18:09:47 +03:00
jeka cd169b106a gui + small fixes 2026-02-21 17:55:20 +03:00
jeka d10bddd1f7 Build: incremental build support, Windows uasync fixes, TUN cross-platform refactoring
- build.sh: added --full flag for full rebuild (autoreconf + configure + make)
- build_direct.sh: incremental compilation (skips unchanged files)
- build_full.bat: new Windows batch for full rebuild
- configure.ac: fixed Windows detection using AC_COMPILE_IFELSE
- lib/u_async.c/h: Windows wakeup socket support, uasync_post for thread-safe callbacks
- src/tun_if.c/h: cross-platform TUN refactoring, Windows read thread support
- src/tun_windows.c: Windows TUN implementation improvements
- src/control_server.c: removed premature return statement
- src/routing.c: include ordering fix
- src/utun.c: windows compat includes
- Deleted obsolete net_emulator/Makefile and tinycrypt/Makefile
2026-02-20 21:20:50 +03:00
jeka 734851329f Control: Add monitoring server with ETCP protocol support
- Implement control_server.c/h for monitoring and management
- Add Windows-compatible uasync_poll using select() instead of WSAPoll
- Fix Wintun adapter creation to open existing adapters first
- Add debug category for control server operations
- Update build files to include control server in compilation
- Add test_control_server to test suite
2026-02-19 01:24:42 +03:00