Search code examples
protocolsbittorrentdht

How does 'distributed tracker' concept work in Bittorrent DHT?


I have read Kademila spec and DHT BEP for Bittorent but still can't understand how DHT makes trackerless torrents reliable. My understanding of routing procedure is:

  • Node (say A) picks node with id closest to infohash of torrent from its routing table (say B) and sends find_peers query to it
  • If B doesn't have information about peers it sends addresses of nodes with id closer to infohash
  • Node A makes iterative routing until it reaches node (say X) that responds with seeding peers addresses
  • When node A starts download process node A announces it to node X

But what happens when node X vanishes from swarm? Is there any failover? How tracking information are distributed across nodes in swarm?


Solution

  • First of all, the DHT is a global overlay shared between all bittorrent clients, it's not specific to individual swarms.

    Second, straight from the paper, section 2.3:

    To store a (key,value) pair, a participant locates the k closest nodes to the key and sends them storE RPCs. Additionally, each node re-publishes (key,value) pairs as necessary to keep them alive, as described later in Section 2.5 . This ensures persistence (as we show in our proof sketch) of the (key,value) pair with very high probability.