evgeny 5276c1288c android: real utun instance + SQLite channels + reactive logs + QR join
- instance_lite.h/c: full uTun stack from INI config text
  (keygen, uasync, UTUN_INSTANCE, SQLite, chat_core/sync, BGP, etcp_router)
- jni_bridge: nativeStart/Stop, nativeJoinChannel → chat_sync_connect_from_invite,
  nativeSubscribeLogs, C logs → logcat + Kotlin LogManager
- Kotlin: direct read-only SQLite queries (channels, messages),
  ViewModel with live event callbacks, reactive LogScreen (tail -f),
  CameraX QR scanner with proper lifecycle, JoinChannelDialog
- HeadlessService: generates INI config from Kotlin settings → C instance
2026-07-28 00:01:57 +03:00
1
2026-07-01 13:02:32 +03:00
2026-07-06 21:52:46 +03:00
1
2026-03-08 18:52:53 +03:00
2026-07-06 21:52:46 +03:00

UTUN

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

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

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

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

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

Механизмы:

  1. Пробитие nat.
  2. автообновление списка узлов и их адресов для подключения
  3. шифрование трафика и маскировка handshake. handshake просиходит без сигнатур по которым можно опреедлить тип сервиса, весь трафик выглядлит как случайный набор байт случайного размера
  4. многоканальные подключения, агрегирование каналов, исключение мёртвых каналов подключиться к узлу можно через несколько линков. UTUN будет объединять пропускную способность каналов, наблюдая за состоянием каналов, не допуская перегрузки и обеспечивая быстрые переповторы через другие каналы при потерях или большой задержке.
  5. динамическая маршрутизация. Узлы могут назначать себе IP адреса и при подключении к сети анонсировать свои адреса/подсети. это максимально упрощает добавление нового узла в сеть.
  6. автоматический роутинг между узлами: узлы маршрутизируют трафик между собой. используя статические подключения, прописанные в конфиге.
  7. прямые подключения и поиск лучших подключений узлы могут подключаться друг к другу напрямую, либо если оба узла за строгим NAT - выбирать оптимального посредника. Узлы определяют свой тип подключения и NAT. Например у ростелеком - EIM NAT который можно использовать и для входящих подклюений. Можно использовать IPv6.
S
Description
No description provided
Readme GPL-3.0
161 MiB
0 Stars 1 Watchers 0 Forks
Languages
C 83.5%
C++ 12%
Kotlin 3.2%
Python 0.4%
Shell 0.3%
Other 0.4%