DHT (Kademlia)
Статус: не используется — feature
"kad"подключена в Cargo.toml, но ни одна Behaviour-структура не включает Kademlia.
Что такое DHT (Kademlia)
Distributed Hash Table (DHT) — распределённая хеш-таблица, позволяющая пирам находить друг друга и обмениваться данными без центрального сервера.
Kademlia — конкретная реализация DHT, используемая в libp2p:
- XOR-метрика — расстояние между узлами определяется как
XOR(peer_id_a, peer_id_b), что формирует дерево маршрутизации - O(log N) поиск — для нахождения любого пира в сети из N узлов требуется не более
log₂(N)hop-ов - k-buckets — каждый узел хранит таблицу известных пиров, разделённую на бакеты по расстоянию
- Самоорганизация — таблица маршрутизации обновляется автоматически при взаимодействии с пирами
Текущее состояние в Kontinuum
Cargo.toml
Feature "kad" включена в зависимости libp2p (backend/Cargo.toml:37), но код Kademlia нигде не инстанцируется:
# backend/Cargo.toml:26-38
libp2p = { version = "0.56", features = [
"tokio",
"mdns",
"noise",
"yamux",
"tcp",
"identify",
"request-response",
"json",
"serde",
"macros",
"kad", # ← подключена, но не используется
] }Behaviour-структуры
Все четыре Behaviour в проекте содержат только mdns + request_response, без Kademlia:
| Структура | Файл | Состав |
|---|---|---|
mdns::tokio::Behaviour | p2p/network.rs:37 | голый mDNS |
SharingBehaviour | sharing/libp2p_sharing.rs:17-21 | mdns + request_response |
PairingBehaviour | pairing/libp2p_pairing.rs:52-56 | mdns + request_response |
DiscoveryBehaviour | pairing/libp2p_pairing.rs:396-400 | mdns + request_response |
Ограничения текущего подхода
mDNS работает только в пределах одного широковещательного домена (LAN). Это означает:
- Пиры обнаруживают друг друга только в одной Wi-Fi/Ethernet сети
- Нет связи между устройствами в разных сетях (дом ↔ офис, мобильный в LTE ↔ desktop)
- NAT traversal невозможен без внешнего координатора
Forward-work по включению DHT/Kademlia (обнаружение вне LAN, NAT traversal через relay+dcutr, P2P file-sync без S3, sharing между пользователями, план внедрения и трейдоффы) вынесен в GitLab-issue #47.
Ссылки
- P2P Protocol (internals) — текущий транспортный стек и протоколы
- libp2p Kademlia — документация Rust-крейта
- libp2p DCUtR — Direct Connection Upgrade through Relay
- libp2p Relay — Circuit Relay v2
- Kademlia paper — оригинальная статья Maymounkov & Mazieres, 2002