The Caddelia document in the last paragraph of section 2.4 says that to properly handle highly unbalanced trees ...
Kademlia nodes contain all valid contacts in a subtree of at least k nodes in size, even if this requires separating buckets in which the node does not belong to the ID.
However, in the previous section of the document, it seems to indicate that if the k-bucket already has k elements, then for any additional additions to this k-bucket, you need to delete the most turned node (first checking it to see if it is alive) or otherwise cache add until the slot is available in this k-forging.
This article seems to contradict these two points.
Under what conditions is it necessary to split a k-bucket and why? It seems impractical to keep βall valid contactsβ in the routing table, since the routing table will be very fast very fast. This example is about a tree with many nodes starting at 001 and with one node starting at 000. will a node starting at 000 have to continuously split its k-bucket into 001 to store all valid nodes starting from 001? In a 160-bit address space, would it potentially store 2 ^ 157 nodes in a 000 routing table?
The wording in the quoted block is also very confusing ...
"in a subtree" - in which subtree of the routing table?
"atleast k nodes size" - what metric do we use to determine the size of the subtree? In this case, the nodes refer to kademlia or k-buckets, or something else?
source share