How does a DHT in a Bittorent client get "bootstrapped"?
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.
Related videos on Youtube
Comments
-
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 over 12 yearsThanks! This might be the only place on the web where the full addrs are given in plain text.
-
gsk almost 12 yearsYou
announce
on the DHT network? I thought you did aget_peers()
or even the abstractget()
to find peers? -
anthonyryan1 almost 11 yearsIf 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 over 9 yearsBitTorrent has published the source code so now you can run your own DHT bootstrap machine: github.com/bittorrent/bootstrap-dht
-
ctrl-alt-delor almost 5 years@stk that link is broken (first miss-configured ssl, then page missing).
-
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 almost 5 yearsThat 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 almost 5 yearsUhm, 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.