Search code examples
distributedp2pdhtkademliadecentralized-applications

How does the s/kademlia sibling list work?


i am studying p2p network recently. when i was reading the s/kademlia paper, i found that the sibling broadcast related content is not detailed enough.

here is my question:

  • how the sibling list works?
  • how can it solve highly unbalanced tree problem?

it would be grateful if anyone can help me out! thanks!

ref: s/kademlia paper


Solution

  • how the sibling list works?

    It seems like it replaces the refinement of the bucket splitting for unbalanced trees with a a list of the closest known nodes relative to the local node ID. Unlike the bucket splitting approach it uses a different parameter instead of the bucket size K.

    The details don't seem to be spelled out but it seems logical that one simply computes whether a node would be inserted in that list based on the currently furthest node in that list (assuming the maximum size based on the new parameter has been reached) and otherwise spilling it into the main routing table which is still based on buckets.

    how can it solve highly unbalanced tree problem?

    Pretty much the same way that kademlia does with the refined splitting approach (which many implementations fail to consider!), but in a way that's easier to reason about and can be parametrized separately.