DHT traffic concerns

[email protected] Tue, 26 Aug 2008 12:28:54 +0000 (UTC)
Newsgroups gmane.network.gnutella.devel
Organization Home, Grenoble, France
Message-ID <[email protected]>
Quoting Arne Babenhauserheide <[email protected]> from ml.gnutella.dev-forum:
:2,27 kiB/s hurt! 
:
:I'm sorry to talk as simple user again, instead of with technical terms, but: 
:The DHT is intended to fix specific searches. To consume more bandwidth than 
:Gnutella kills that idea. 
:Just think about a leaf node in Gnutella which works with often less than 1 
:kiB/s bandwidth but which suddenly suffers more than 2 kiB/s outgoing traffic! 

Well, 2.27 KiB/s was "idle" traffic.  If you want to actively lookup for
things in the DHT, you can have up to 10 KiB/s of traffic in and out for
short periods of time.

My current experiments with gtk-gnutella (running as an ultranode) shows
that I need to reserve about 20 KiB/s out to avoid clogging traffic.

This is a lot of bandwidth, but I have been able to locate sources for
downloads that were in my queue for a long time.  And sourceless magnets
have been shown to work nicely thanks to DHT seeding.

If you run a leaf node behind a modem, then you will not be able to
participate to the DHT structure actively.  You may be able to perform
DHT queries, one at a time, but to do that you need to accept a small price
to maintain a minimal routing table, so that you know enough of the structure
to begin an actual search.

I have not implemented any of the DHT modes LimeWire support, but the
"active" mode, which means full participation.  The "passive" mode will
come next.  LW defines "passive" and "passive leaf", but I may end up
implementing only a "passive" mode, with leaves having a less deep routing
table than the ultrapeer.  For instance, a "passive" UP can have a routing
table going to the depth of 5, flat, whereas a "passive leaf" could be limited
to a depth of 4.  That means 2^5 and 2^4 buckets of 20 nodes at most.

There is actually no need for a "passive" mode to know its closest neighbours
since it will do no storing and no replication.  Passive nodes can do only
lookups and publishing, and for that you do not need a big routing table,
just know entry points "close enough" in the structure to initiate your
lookups.

Raphael

P.S: The DHT is currently suffering from a wrong publishing and replication
algorithm from LimeWire nodes.  I've identified problems and offered design
solutions for that.  Gtk-gnutella will implement them, but since there are
only a few hundred of GTKG out there, the quality of the DHT will depend
vastly on how quickly LimeWire will be able to fix the bugs AND deploy the
new servents out there.