9

Kademlia の論文では、セクション 2.4 の最後の段落で、非常に不均衡なツリーを適切に処理するには...

Kademlia ノードは、ノード自体の ID が存在しないバケットを分割する必要がある場合でも、少なくとも k ノードのサイズのサブツリーにすべての有効な連絡先を保持します。

ただし、論文の前のセクションでは、k-bucket に既に k 個の要素がある場合、その k-bucket にさらに追加するには、最も古いノードを削除する (最初に ping を実行して、生きているかどうかを確認する) か、キャッシュする必要があると述べているようです。その k-bucket でスロットが使用可能になるまで追加します。

この論文は、この 2 点で矛盾しているように思われます。

k-bucket を分割する必要がある条件とその理由は何ですか? 「すべての有効な連絡先」をルーティング テーブルに保持することは、ルーティング テーブルが非常に急速に大きくなるため、実用的ではないようです。この例では、001 で始まる多くのノードと 000 で始まる 1 つのノードを持つツリーについて説明しています。160 ビットのアドレス空間では、000 のルーティング テーブルに 2^157 ノードを格納する可能性があるのではないでしょうか??

引用されたブロックの文言も非常に紛らわしいです...

「サブツリーで」 -- ルーティング テーブルのどのサブツリーで?

「少なくともkノードのサイズ」-サブツリーのサイズを決定するためにどのメトリックを使用していますか? この場合のノードは、kademlia ノードまたは k-buckets などを指しますか?

4

1 に答える 1