去中心化的對等網路沒有索引可供查詢誰持有某個檔案。對整個網路進行 flooding 代價過高;而中央 tracker 又違背了初衷。

2002 年提出的 Kademlia 將距離定義為 160 位元 ID 的位元 XOR。由於 XOR 是其自身的反運算且具對稱性,節點的路由表會依其他 ID 有多少前導位元不同來分桶,每個桶大約保留一個聯絡點。

為了尋找某個對等節點,節點會向已知最接近目標的節點查詢,而每次回覆都會帶來一個更接近的節點,因此搜尋距離每輪減半——大約 log n 跳。此系統具自我修復能力,因為對等節點在回應時會學習並透過 gossip 傳播資訊。

把 XOR 稱為距離;每個對等節點都與某個節點相近

XOR 距離具對稱性,且節點在每個位元層級都與某個聯絡點相近。

路由表保持極小,而觸及範圍卻是全球性的,因此沒有節點認識所有人。

每一跳都使距離減半,形成 O(log n) 的搜尋且無需目錄。

查詢與插入會讓節點認識對等節點,因此網路能自我修復。

在沒有目錄的網路中,選擇一種度量,並讓每個節點在每個距離桶中保留一個聯絡點。如此一來,每個節點都能透過已知最近的鄰居觸及任何其他節點,無需全域清單。

Kademlia 成為 BitTorrent 的 DHT、Ethereum 以及許多檔案分享網路的查詢協定。它是在大型對等系統中無需協調者進行路由的標準答案。

追溯依據

參考來源

  1. Kademlia: A peer-to-peer information system based on the XOR metric IPTPS 2002, Springer · pdos.csail.mit.edu
  2. Kademlia Wikipedia · en.wikipedia.org