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 1c53ef597d Register lifecycle regressions and cancel timers owned by synthetic fixtures 23 hours ago
db_a topo: invite вынесен в topo_group_invite, conn_mgr упрощён до 3-фазного open; member_sync: полный пересчёт merkle-дерева при старте 2 months ago
db_b topo: invite вынесен в topo_group_invite, conn_mgr упрощён до 3-фазного open; member_sync: полный пересчёт merkle-дерева при старте 2 months ago
doc Record validated STUN fallback, sanitizer checks and IPv6 follow-up 23 hours ago
lib Add signed FEC stream core and source buffering 1 day ago
net_emulator uasync: pass socket name to all add_socket call sites 3 weeks ago
src Test incoming ETCP expiry, reconnect, sleep and graceful close 23 hours ago
tests Register lifecycle regressions and cancel timers owned by synthetic fixtures 23 hours ago
tinycrypt stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
tools Expose ETCP and STUN profile provenance in monitor protocol 23 hours ago
.gitignore Ignore local hardware directory 1 day ago
AGENTS.md Document Reed-Solomon module and update streaming design 2 days ago
ARCHITECTURE.md auto_socket: TCP links support, chat_sync retry on socket change, link dedup by is_tcp 2 months ago
BUILD_OPENWRT.md stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
INSTALL.autotools stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
LICENSE Add GPLv3 licensing and bundle third-party notices 1 week ago
LICENSING Add GPLv3 licensing and bundle third-party notices 1 week ago
Makefile.am Document signed profile source and reproducible isolated STUN bench 23 hours ago
PLAN_etcp_router_reset_id.md Fix ETCP session recovery and router lifecycle; confirm chat invites before publishing 2 weeks ago
THIRD_PARTY_NOTICES Add GPLv3 licensing and bundle third-party notices 1 week ago
USER_MANUAL.md stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
_desc.md stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
bg.png Improve Android onboarding, member UI and PTT permissions 2 weeks ago
build.bat Create VibeChat installer from Windows BAT entry points 1 day ago
build.sh Integrate installer generation into Windows build scripts 1 day ago
build_bsd_full.sh Share incremental builds on FreeBSD and select portable hardening flags 2 days ago
build_direct.sh Protect REALITY STCP traffic with authenticated TLS-like records 5 days ago
build_full.bat Create VibeChat installer from Windows BAT entry points 1 day ago
build_linux_full.sh build_linux_full.sh: автоустановка зависимостей и корректная обработка ошибок 1 month ago
build_openwrt.sh stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
check.bat tests: run short checks before slow and load scenarios 2 days ago
check.sh Merge remote-tracking branch 'origin/master' 2 days ago
check_cc.bat Extend compiler diagnostics with standalone and CMake Opus checks 1 week ago
check_cc.sh Refresh compiler runtime DLLs before Windows ChatGUI builds 1 week ago
close_bug.txt stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
compile_commands.json stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
configure.ac Share incremental builds on FreeBSD and select portable hardening flags 2 days ago
cross-build-win.sh Fix HTTP proxy framing, keep-alive and stream lifecycle 1 week ago
malloc_test stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
malloc_test.c stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
opencode.json opencode: подключить aiterm-mcp (интерактивный терминал для отладки) 1 month ago
readme.md Add GPLv3 licensing and bundle third-party notices 1 week ago
route.txt stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
utun.conf.sample connection: логировать только connect/reconnect/disconnect; фиксы конфига чатгуи 1 month ago
utun.exe.manifest stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
utun.md stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
utun_start.sh stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
utun_stop.sh stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 months ago
utun_stop1.sh stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test 2 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.

Лицензия

uTun распространяется под GNU GPL версии 3 (GPL-3.0-only) с исключением для подключения Wintun. Полный текст GPL — в LICENSE, условия проекта и исключение — в LICENSING. Сторонние библиотеки сохраняют свои лицензии; тексты и уведомления собраны в THIRD_PARTY_NOTICES. При распространении бинарников включайте эти три файла и предоставляйте соответствующие исходники по условиям GPLv3.