How to seed a trackerless torrent and initialise DHT ?

Ask for help and report issues not specific to either the Mac OS X or GTK+ versions of Transmission
Post Reply
RichardNeill
Posts: 3
Joined: Tue Mar 23, 2010 2:55 am

How to seed a trackerless torrent and initialise DHT ?

Post by RichardNeill »

If I create a new trackerless torrent, how do other clients (with the torrent file) know how to find the first seeder?

I'm using transmission-cli on Linux, and am currently testing between 2 machines on a private subnet.

What I ultimately want to do is set up a network of about 200 small servers, to use bit torrent as a form of mirroring. We're trying to distribute company news-flash/training videos etc across all locations in the country (most on ADSL), without killing our upload bandwidth in the center. I'd prefer to avoid running a tracker for simplicity. The idea is:

1. Start with the video on the primary web server.
2. Create a trackerless torrent on this machine: (with no announce URL, private-flag set if possible, but not required)

Code: Select all

     transmissioncli -n data_dir/filename example.torrent
3. On the primary server, start seeding:

Code: Select all

     transmissioncli -er -w data_dir/  example.torrent
4. scp (or rsync from cron) the .torrent file onto all of the other 200 peers.
5. On the peers, run:

Code: Select all

     transmissioncli -er -w data_dir/  example.torrent
6. Finally, automate some of this with transmission-daemon and some shell scripting

At the moment, I tried exactly that (up to step 5) between 2 machines on a local (192.168.0.*) subnet which is disconnected from the Internet. It doesn't work. I can understand why: the 2nd peer has no idea what is the IP address of the seed, (it's not in the .torrent file) and so presumably can't initialise the DHT. However, I don't know how to proceed from here...help?

Thanks very much - Richard
Longinus00
Posts: 137
Joined: Fri Aug 21, 2009 5:46 am

Re: How to seed a trackerless torrent and initialise DHT ?

Post by Longinus00 »

Why not just run a bittorrent tracker? If you want a lightweight tracker check out opentracker.

You should also use transmission-daemon instead of transmissioncli. This will greatly simplify administering the remote transmission clients.
RichardNeill
Posts: 3
Joined: Tue Mar 23, 2010 2:55 am

Re: How to seed a trackerless torrent and initialise DHT ?

Post by RichardNeill »

Thanks for your comments so far. I agree that transmission-daemon is the right way to go eventually; but I need to get the systems working first. And yes, I guess I could run a tracker (or use the opentracker one) but it seems like it shouldn't be necessary, and it adds to the complexity. Transmission says it can use trackerless torrents, so that's what I'd like to do :-)
Longinus00
Posts: 137
Joined: Fri Aug 21, 2009 5:46 am

Re: How to seed a trackerless torrent and initialise DHT ?

Post by Longinus00 »

RichardNeill wrote:Thanks for your comments so far. I agree that transmission-daemon is the right way to go eventually; but I need to get the systems working first. And yes, I guess I could run a tracker (or use the opentracker one) but it seems like it shouldn't be necessary, and it adds to the complexity. Transmission says it can use trackerless torrents, so that's what I'd like to do :-)
The reason you think running a tracker adds complexity is because you don't understand how trackerless torrents work. Torrents without trackers rely on DHT to find peers. I don't think this is appropriate for private company materials and that is why I suggest you run a private tracker. http://en.wikipedia.org/wiki/BitTorrent ... d_trackers
RichardNeill
Posts: 3
Joined: Tue Mar 23, 2010 2:55 am

Re: How to seed a trackerless torrent and initialise DHT ?

Post by RichardNeill »

Longinus00 wrote:The reason you think running a tracker adds complexity is because you don't understand how trackerless torrents work. Torrents without trackers rely on DHT to find peers. I don't think this is appropriate for private company materials and that is why I suggest you run a private tracker. http://en.wikipedia.orgwiki/BitTorrent_ ... d_trackers
I agree that I don't completely understand how a DHT is initialised, despite having read all the documentation I can find on the subject (including that Wikipedia article). In particular, *where* is the distribution of the DHT? How does a completely new node know how to join an existing DHT. It must bootstrap somehow.

The way it seems that it ought to work is that I have, say, 20 PCs under my own control and completely isolated from the public network. They are all capable of reaching each other by IP. All machines are identically configured running transmission. Then I create a new torrent on machine A, and copy that torrent to machines B,C...Z.

B,C,...Z now have the torrent, and it's trackerless, so all they have to do is connect to A and start swarming. But *how* do they do that? The .torrent file contains no information about the IP of A, and the various machines have the catch-22 situation: they can only join the DHT once they are already in it!

This suggests to me that there is some missing parameter in the transmission-cli documentation eg "--bootstrap IP_addr" to allow me to manually put all our nodes in touch with each other the first time.
Longinus00
Posts: 137
Joined: Fri Aug 21, 2009 5:46 am

Re: How to seed a trackerless torrent and initialise DHT ?

Post by Longinus00 »

RichardNeill wrote:
Longinus00 wrote:The reason you think running a tracker adds complexity is because you don't understand how trackerless torrents work. Torrents without trackers rely on DHT to find peers. I don't think this is appropriate for private company materials and that is why I suggest you run a private tracker. http://en.wikipedia.orgwiki/BitTorrent_ ... d_trackers
I agree that I don't completely understand how a DHT is initialised, despite having read all the documentation I can find on the subject (including that Wikipedia article). In particular, *where* is the distribution of the DHT? How does a completely new node know how to join an existing DHT. It must bootstrap somehow.

The way it seems that it ought to work is that I have, say, 20 PCs under my own control and completely isolated from the public network. They are all capable of reaching each other by IP. All machines are identically configured running transmission. Then I create a new torrent on machine A, and copy that torrent to machines B,C...Z.

B,C,...Z now have the torrent, and it's trackerless, so all they have to do is connect to A and start swarming. But *how* do they do that? The .torrent file contains no information about the IP of A, and the various machines have the catch-22 situation: they can only join the DHT once they are already in it!

This suggests to me that there is some missing parameter in the transmission-cli documentation eg "--bootstrap IP_addr" to allow me to manually put all our nodes in touch with each other the first time.
If you're going to go through the trouble of giving each client the ip of the 'server' so they can bootstrap off and download from it of it why not use a tracker in the first place? Considering that you want to share the torrented data with select clients instead of the internet at large it really doesn't make any sense to use DHT. What possible advantage could using DHT have over using a tracker?

With a tracker you can easily see which clients downloaded what and if they finished without having to login to each of them and figure it out manually. Automating the launch of cleanup or other scripts then becomes trivial instead of having to poll each client.

Regarding your dht question, I believe transmission defaults to bootstrapping off dht.transmissionbt.com:6881 if there's nothing in dht.dat. If you're still gung-ho about using dht (for no good reason imho) then try adding dht.bootstrap to your transmisison config directory with lines like this in it.

Code: Select all

node.address port
Post Reply