evgeny f84622966e Add BLE ETCP links and GATT invitations for desktop and Android
Attach packet drivers to initially empty ETCP connections. Share BLE neighbor
tracking and group fallback between desktop and Android in cgathui_common.

Deliver join links through a dedicated Write/Indicate characteristic with
independent fragmentation queues, application acknowledgements, deduplication
and bounded retries. Merge LAN/BLE discovery and add a separate Bluetooth
invitation reception setting to both clients.

Validation: 230 core tests, BLE transport/BlueZ/UI tests, ASAN/UBSAN,
Linux GUI and Android builds, and Windows backend cross-compilation.
Physical Android/Linux invitation exchange passed with either GATT initiator.
The Android-initiated run also verified all 32 ETCP packets of 1500 bytes;
the desktop-initiated load run reached 7/32 within its 45-second time limit.
2026-10-29 16:41:04 +01:00

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.

S
Description
No description provided
Readme GPL-3.0
167 MiB
0 Stars 1 Watchers 0 Forks
Languages
C 80.5%
C++ 12.8%
Kotlin 5.5%
Python 0.4%
CMake 0.2%
Other 0.4%