DHT implementation
DHT implementation
I've just hacked together a patch to add DHT support to transmission. Here's a screenshot:
http://www.pps.jussieu.fr/~jch/software ... on-dht.png
Build instructions and a pointer to the sources are on
http://www.pps.jussieu.fr/~jch/software ... dht.README
I'll be grateful for help with the transmission side of things (I'll take care of the DHT side).
--Juliusz
http://www.pps.jussieu.fr/~jch/software ... on-dht.png
Build instructions and a pointer to the sources are on
http://www.pps.jussieu.fr/~jch/software ... dht.README
I'll be grateful for help with the transmission side of things (I'll take care of the DHT side).
--Juliusz
Re: DHT implementation
A new version of the DHT code is available. Again, please see
http://www.pps.jussieu.fr/~jch/software ... dht.README
--Juliusz
http://www.pps.jussieu.fr/~jch/software ... dht.README
--Juliusz
Re: DHT implementation
youre a legend, cant wait to see this in an official release!
Re: DHT implementation
Just to let you know that my code has been merged into what will become transmission 1.70. So unless something goes catastrophically wrong, 1.70 should have DHT support.
Re: DHT implementation
That's a big one for the team jch! KUDOS!!!
Re: DHT implementation
That's very good news. This will please a lot of people. Nice work!
Re: DHT implementation
DHT is working fine on 8450. I have tested it on two different DHT only torrents (tracker is dead and gone).
Nice work.
Nice work.
Re: DHT implementation
Thanks for the kind words, to all of you. Here's some comments and news.
One user has reported an unexplained crash in the DHT code. It only happened in the morning, after a whole night of seeding.
What I've implemented is a pretty nice citizen of the DHT: it plays by all the rules, and tries not to hammer the DHT too hard. In particular, if any of you are worried about the FUD about DHT and private trackers: I am quite positive that my code will not get you banned, as we obey the ``private'' flag, and don't use DHT peers in private torrents. (The downside of being nice is that we're slow: my code takes between 1 and 3 minutes to perform a trackerless announce, which is somewhat slower than some more aggressive implementations. Of course, you can have as many simultaneous announces as you have torrents.)
What is missing is the user-interface code: there's no easy way to disable the DHT, which may be useful for people behind broken routers, and there's also no easy way to monitor the DHT.
We're working on all of that, and I'm fairly confident we'll have a complete implementation within a couple of weeks.
--Juliusz
One user has reported an unexplained crash in the DHT code. It only happened in the morning, after a whole night of seeding.
What I've implemented is a pretty nice citizen of the DHT: it plays by all the rules, and tries not to hammer the DHT too hard. In particular, if any of you are worried about the FUD about DHT and private trackers: I am quite positive that my code will not get you banned, as we obey the ``private'' flag, and don't use DHT peers in private torrents. (The downside of being nice is that we're slow: my code takes between 1 and 3 minutes to perform a trackerless announce, which is somewhat slower than some more aggressive implementations. Of course, you can have as many simultaneous announces as you have torrents.)
What is missing is the user-interface code: there's no easy way to disable the DHT, which may be useful for people behind broken routers, and there's also no easy way to monitor the DHT.
We're working on all of that, and I'm fairly confident we'll have a complete implementation within a couple of weeks.
--Juliusz
Re: DHT implementation
Enabling / disabling DHT is supported in the gtk, qt, and transmission-remote clients now.
I'm really not sure what DHT monitoring is needed / possible other than the per-torrent node count and the TR_DHT_{STOPPED,BROKEN,POOR,FIREWALLED,GOOD} status...
I'm really not sure what DHT monitoring is needed / possible other than the per-torrent node count and the TR_DHT_{STOPPED,BROKEN,POOR,FIREWALLED,GOOD} status...
Re: DHT implementation
I was using the latest svn build this morning. I had to revert back to an earlier build because Transmission was maxing out one of my cpu's.
Back to 1.60 and is good again.
Back to 1.60 and is good again.
Re: DHT implementation
Did you try disabling DHT to see if the problem lies in that code?Exp wrote:I was using the latest svn build this morning. I had to revert back to an earlier build because Transmission was maxing out one of my cpu's.
Back to 1.60 and is good again.
Re: DHT implementation
Yes I did and it did not fix the cpu problem.Yada wrote:Did you try disabling DHT to see if the problem lies in that code?Exp wrote:I was using the latest svn build this morning. I had to revert back to an earlier build because Transmission was maxing out one of my cpu's.
Back to 1.60 and is good again.
I just updated to svn 1.61+ (8478) and the problem with my cpu appears to be fixed.
UPDATE : Transmission has been stable for 3 hours.
Jordan wrote this : "(trunk) dht seems to be crashing in bcmp() on the mac, so I suspect the homegrown implementation of memmem() is buggy... test this out by replacing memmem()'s implementation"
Re: DHT implementation
Information in the trackers details window on whether a DHT announce is in progress for this particular torrent right now, and the time since the last announce. A button to allow manually triggerring a DHT announce for this particular torrent.Jordan wrote:I'm really not sure what DHT monitoring is needed / possible other than the per-torrent node count and the TR_DHT_{STOPPED,BROKEN,POOR,FIREWALLED,GOOD} status...
We also need to check whether the libtransmission code or any GUI code assumes that the number of tracker URLs in a .torrent is at least 1 -- with the DHT, torrents with 0 such URLs have become perfectly legitimate.
The possibility in the torrent creation code to add a ``nodes'' field. It should default to empty, at least until we set up a ``router.transmissionbt.com''
--Juliusz
Re: DHT implementation
Nice works guys. Thanks to Jordan and JCH!
Re: DHT implementation
I have a few questions about the DHT? (most of them aimed at the Mac version of T)
1. how do I know if I have successfully 'connected' to the DHT?
2. Does each torrent have its own DHT, or is there just one DHT for all torrents?
3. Do DHT peers show up as coming from the DHT in the 'peers' tab of the inspector?
I have been downloading a couple of public torrents with a nightly, and I haven't been connecting to any DHT peers. I suppose this could either mean a) T doesn't specify DHT peers, b) i just coincidentally haven't connected to any, c) i am having problems connecting to the DHT itself.
The problem is I don't know which of these 3 options it is...
1. how do I know if I have successfully 'connected' to the DHT?
2. Does each torrent have its own DHT, or is there just one DHT for all torrents?
3. Do DHT peers show up as coming from the DHT in the 'peers' tab of the inspector?
I have been downloading a couple of public torrents with a nightly, and I haven't been connecting to any DHT peers. I suppose this could either mean a) T doesn't specify DHT peers, b) i just coincidentally haven't connected to any, c) i am having problems connecting to the DHT itself.
The problem is I don't know which of these 3 options it is...