You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Evgeny 98bfb9dcd2 chatgui: per-event sound settings with DB persistence 2 months ago
.opencode add framed read for raw fd (2-byte len prefix), TCP_NODELAY, fix test half-close ordering 5 months ago
doc db_sync v2: positional sync per-peer (synced_pos), datahash instead of chain_hash, no cascade on PUSH, single cascade after SEND_DATA batch, startup chain verification. PRAGMA synchronous=NORMAL + wal_autocheckpoint=10000 for performance. 3 months ago
lib chatgui: add sound playback via miniaudio (MP3 notification sounds) 2 months ago
net_emulator Add name parameter to uasync_set_timeout for timer identification in dumps 5 months ago
src refactor: demote high-frequency debug logs (raw_recv/dispatch→TRACE, normalizer→DEBUG), NTP drift→WARN 2 months ago
tests topo_group: disable in chatgui; fix NAT detection for matching addresses 2 months ago
tinycrypt Build: incremental build support, Windows uasync fixes, TUN cross-platform refactoring 7 months ago
tools chatgui: per-event sound settings with DB persistence 2 months ago
.gitignore add cross-build-win.sh for Windows cross-compilation; gitignore build-win/ build artifacts only 3 months ago
AGENTS.md fix: INIT reset logic — reset only on session change or got_initial_pkt, always sync session_id 2 months ago
ARCHITECTURE.md Убраны TCP_TIMESTAMPS и TCP_KEEPALIVE из lwip_tcp_opts.h (не используются, конфликтовали с ws2ipdef.h на Windows) 3 months ago
INSTALL.autotools
…
Makefile.am build: out-of-tree VPATH build, tests run once with colored timing 5 months ago
USER_MANUAL.md Убраны TCP_TIMESTAMPS и TCP_KEEPALIVE из lwip_tcp_opts.h (не используются, конфликтовали с ws2ipdef.h на Windows) 3 months ago
_desc.md Убраны TCP_TIMESTAMPS и TCP_KEEPALIVE из lwip_tcp_opts.h (не используются, конфликтовали с ws2ipdef.h на Windows) 3 months ago
build.bat gui update db and connection 3 months ago
build.sh fix: wall-clock timestamps + merkle_sync timeout + build script 3 months ago
build_bsd_full.sh 1 3 months ago
build_direct.sh refactor: переименование route_node/route_bgp в topo_node/topo_bgp 3 months ago
build_full.bat gui update db and connection 3 months ago
build_linux_full.sh 1 7 months ago
check.bat Add check.bat - Windows test runner script 8 months ago
compile_commands.json refactor: переименование route_node/route_bgp в topo_node/topo_bgp 3 months ago
configure.ac security: hardening flags + control_server fixes (F-001, F-002) 3 months ago
cross-build-win.sh refactor: переименование route_node/route_bgp в topo_node/topo_bgp 3 months ago
readme.md etcp_connect + BGP_READY callbacks + router reconnect test 3 months ago
route.txt metrics: RTT/loss histograms + Ed25519 signing + peer exchange via INIT handshake + file logging to stats/<peer>.dat 3 months ago
utun.conf.sample tun_enabled config + socks/http stress test (50 reqs, 2 workers) 3 months ago
utun.exe.manifest Build: Fix Windows build with OpenSSL support 8 months ago
utun.md crypto: migrate ECDH(secp256r1) to X25519, drop TinyCrypt 4 months ago
utun_start.sh Backup before fixing test_routing_mesh segfault 8 months ago
utun_stop.sh Backup before fixing test_routing_mesh segfault 8 months ago
utun_stop1.sh Backup before fixing test_routing_mesh segfault 8 months ago

readme.md

UTUN

Идея: объединить узлы в единую локальную сеть. Чтобы узлы сами находили оптимальные линки между собой, пробивали NAT где это можно, где нельзя - выбирали посредника с хорошей связью; чтобы подсто было добавлять новые узлы и адреса узлов сразу виделись во всей сети.

Похож на libp2p но трафик превращает в случайную последовательность кторую сложно классифицировать

Потенциальные варианты использования:

  • локальная сеть. хочу объединить офис, сотрудников (включая их работчие подсети), телефоны, офисы, сервер доступа итд в одно адресное пространство.
  • чат с файлообменником. узлы сети - это мемберы группы и одновременно сети.
  • CDN. узлы - потребители контента - это мемберы сети, которые распространяют трафик.

То есть задача utun - обеспечить связность группы узлов и адаптацию работы всей сети к подключению-отключении отдельных узлов.

Механизмы:

  1. Пробитие nat.
  2. автообновление списка узлов и их адресов для подключения
  3. шифрование трафика и маскировка handshake. handshake просиходит без сигнатур по которым можно опреедлить тип сервиса, весь трафик выглядлит как случайный набор байт случайного размера
  4. многоканальные подключения, агрегирование каналов, исключение мёртвых каналов подключиться к узлу можно через несколько линков. UTUN будет объединять пропускную способность каналов, наблюдая за состоянием каналов, не допуская перегрузки и обеспечивая быстрые переповторы через другие каналы при потерях или большой задержке.
  5. динамическая маршрутизация. Узлы могут назначать себе IP адреса и при подключении к сети анонсировать свои адреса/подсети. это максимально упрощает добавление нового узла в сеть.
  6. автоматический роутинг между узлами: узлы маршрутизируют трафик между собой. используя статические подключения, прописанные в конфиге.
  7. прямые подключения и поиск лучших подключений узлы могут подключаться друг к другу напрямую, либо если оба узла за строгим NAT - выбирать оптимального посредника. Узлы определяют свой тип подключения и NAT. Например у ростелеком - EIM NAT который можно использовать и для входящих подклюений. Можно использовать IPv6.