How does a DHT in a Bittorent client get "bootstrapped"?

31,810

Solution 1

When a BitTorrent client connects to DHT, there is an initial place that it goes to find peers. With the original BitTorrent client, there was a url to bitorrent.com that would help get things started. I tried looking up the reference but I couldn't find it. Once you've established connections with other clients, then you can do an announce on the DHT network to find peers for the torrent you're looking for.

Here's a link to the BitTorrent specs that discuss DHT.

A trackerless torrent dictionary does not have an "announce" key. Instead, a trackerless torrent has a "nodes" key. This key should be set to the K closest nodes in the torrent generating client's routing table. Alternatively, the key could be set to a known good node such as one operated by the person generating the torrent. Please do not automatically add "router.bittorrent.com" to torrent files or automatically add this node to clients routing tables.

Solution 2

The mainline DHT bootstrap nodes are router.utorrent.com and a CNAME to it, router.bittorrent.com. Port 6881.

Solution 3

the graph at the bottom of this DHT monitoring project site shows

  • dht.transmissionbt.com
  • router.utorrent.com
  • router.bittorrent.com

as bootstrapping peers

Solution 4

In BiTTorrent, you have three main options:

  • Torrent File: some torrent files can embed nodes for you to link into the DHT with (in fact, it's recommended when making a torrent file)
  • Hardcoding: Some torrent clients hard code a few bootstrap nodes (like the ones mentioned by stk). These are usually run by companies and organizations with long-running servers.
  • PEX / Peer Conversations: You can usually ask for DHT nodes from the people you are downloading other torrents from (if your clients understand eachothers language. ie some versions are incompatible).

Solution 5

Transmission uses a hardcoded bootstrap node for dht if there is no other way to get peers:

bootstrap_from_name( "dht.transmissionbt.com", 6881, bootstrap_af(session) );

I guess each torrent client uses their own bootstrap node.

Share:
31,810

Related videos on Youtube

puffpio
Author by

puffpio

wheeeee @puffpio

Updated on October 28, 2021

Comments

  • puffpio
    puffpio over 2 years

    If I have a torrent w/o any trackers in it, and I just started a bittorent client so I have no peers yet...how do I know who to first connect with in the DHT? It seems like I would have to know at least ONE node in the DHT to get started....

  • Matt Joiner
    Matt Joiner over 12 years
    Thanks! This might be the only place on the web where the full addrs are given in plain text.
  • gsk
    gsk almost 12 years
    You announce on the DHT network? I thought you did a get_peers() or even the abstract get() to find peers?
  • anthonyryan1
    anthonyryan1 almost 11 years
    If you look at the DNS those resolve to the same location with router.bittorent.com being a CNAME to router.utorrent.com. They are the same node.
  • Encombe
    Encombe over 9 years
    BitTorrent has published the source code so now you can run your own DHT bootstrap machine: github.com/bittorrent/bootstrap-dht
  • ctrl-alt-delor
    ctrl-alt-delor almost 5 years
    @stk that link is broken (first miss-configured ssl, then page missing).
  • stk
    stk almost 5 years
    @ctrl-alt-delor well, this answer is more than 7 years old, it happens... anyway, in cases like this, try digging it up at the Wayback Machine: web.archive.org/web/20120508202413/https://…
  • ctrl-alt-delor
    ctrl-alt-delor almost 5 years
    That is why links are bad. (links are also good, but in this case they can be bad), it can be good to add an image or a quote as well as a link.
  • stk
    stk almost 5 years
    Uhm, no. Links by themselves are bad. You have to put the relevant information in the answer itself, which I clearly did. Those bullets are the quote. The link is just a reference to the source.