Kademlia

How can we download torrents even when the tracker is down ?

Every torrent client uses a DHT (Distributed Hash Table) algorithm Kademlia invented by Petar Maymounkov & David Mazières.

 

Lets Begin :-)

  • Every torrent client has a DHT node with it. (Mostly enabled by default)
  • The node is assigned a 160 bit id.
  • Every torrent also has an "infohash" - 160 bits.

The nodes are arranged as the leaves in a giant binary tree. The id corresponds to the nodes position.

If we only had 3 bit ids the below would be the entire network.

Distance between nodes

  • XOR is used to measure the distance between to id's or nodes.

Why XOR ?

  • Has a lot of interesting properties.[1]
  • d(x,y) = d(y,x), unidirectional, d(x,x) =0 etc
  • Unidirectional - there is only one point with a given distance from a given point.

Protocol

  • Originally 3 RPC's - Find Node, Find Value, Store Value.

Find Node

  • Ping list of known nodes that are closest to the node we want to find.
  • We then recursively ping those nodes in the same way till we find our node.
  • Closeness is measured using the "distance" defined by the XOR.

Find Value

  • Similar to find node.
  • But in this case we get the list of IP's instead who have our torrent.
  • We search for the infohash - 1E69917FBAA2C767BCA463A96B5572785C6D8A12 - (Pride & Prejudice)

Routing Table - List of nodes with us.

  • Stored in K-buckets
  • Gives preference to older active nodes.

References

Made with Slides.com