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 39d6f19d97 fix: chat_msg media_dir path — strip filename from g_cc.db_path 2 months ago
.opencode
…
doc
…
lib unify compressor: remove C++ duplicate audiocompressor, use lib/audio_compressor.c in chatgui 2 months ago
net_emulator
…
src fix: chat_msg media_dir path — strip filename from g_cc.db_path 2 months ago
tests move audio_compressor from libutun_lite/ to lib/ — shared library 2 months ago
tinycrypt
…
tools fix: chat_msg media_dir path — strip filename from g_cc.db_path 2 months ago
.gitignore android: fix QR join flow + cleanup log levels + remove log artifacts 2 months ago
111.txt chatgui: channel sorting by name or last message time with preview 2 months ago
AGENTS.md android: fix key regeneration, Clear DB, uasync eventfd, udp log from config 2 months ago
ARCHITECTURE.md Добавлен group_id в etcp_router и topo_group, удалён msg_transport 2 months ago
BUILD_OPENWRT.md invite: add proto field (UDP/TCP/BOTH) to invite link binary format 2 months ago
INSTALL.autotools
…
Makefile.am feat: integrate Opus codec into lib/libopus + voice messages in chatgui 2 months ago
USER_MANUAL.md
…
_desc.md
…
build.bat
…
build.sh
…
build_bsd_full.sh
…
build_direct.sh refactor: move transport (etcp/stcp/normalizer) to transport_layer/, routing (bgp/pings/topo*) to routing_layer/ 2 months ago
build_full.bat
…
build_linux_full.sh
…
build_openwrt.sh invite: add proto field (UDP/TCP/BOTH) to invite link binary format 2 months ago
check.bat
…
compile_commands.json
…
configure.ac feat: integrate Opus codec into lib/libopus + voice messages in chatgui 2 months ago
cross-build-win.sh Добавлен group_id в etcp_router и topo_group, удалён msg_transport 2 months ago
malloc_test refactor: move transport (etcp/stcp/normalizer) to transport_layer/, routing (bgp/pings/topo*) to routing_layer/ 2 months ago
malloc_test.c refactor: move transport (etcp/stcp/normalizer) to transport_layer/, routing (bgp/pings/topo*) to routing_layer/ 2 months ago
opencode.json invite: add proto field (UDP/TCP/BOTH) to invite link binary format 2 months ago
readme.md
…
route.txt
…
task.txt chatgui: fix RTT display 10x overstatement (DB stores 0.1ms, displayed as ms); remove unused rtt_avg_100 2 months ago
utun.conf.sample
…
utun.exe.manifest
…
utun.md
…
utun.sh invite: add proto field (UDP/TCP/BOTH) to invite link binary format 2 months ago
utun_start.sh
…
utun_stop.sh
…
utun_stop1.sh
…

readme.md

UTUN

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

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

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

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

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

Механизмы:

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