Kademlia DHTのk-bucketについて
Kademliaの論文を読んでいて、k-bucket
の説明に関してよく分からない箇所がありました。
2.2 の Node state では、
For each 0≤i<160, every node keeps a list of < IP address, UDP port, NodeID > triples for nodes of distance between 2i and 2i+1 from itself. We call these lists k-buckets.
各ノードに160個のk-bucketがあり、ノードとのIDの距離によってルーティング情報が各k-bucketに割り当てられていると読めます。
しかし、後の2.4 Routing table のセクションでは、
Initially, a node u’s routing tree has a single node — one k-bucket covering entire ID space. When u learns of a new contact, it attempts to insert the contact in the appropriate k-bucket. If that bucket is not full, the new contact is simply inserted. Otherwise, if the k-bucket’s range includes u’s own node ID, then the bucket is split into two new buckets, the old contents divided between the two, and the insertion attempt repeated.
初期状態では各ノードに1つのk-bucketしかなく、距離ではなくIDそのものを基準として割り当てを行うことになっています。
このように、k-bucketに関する説明が2箇所で異なっている理由が読み取れず混乱しているのですが、この2つのk-bucketはDHT上で別の役割をしているということなのでしょうか。それとも単なるテーブルの実装方法の違いということなのでしょうか。