Quoting Alex <[email protected]> from ml.softs.gtk-gnutella.devel:
:Could you please explain what DHT is with respect to gtkg? I'm only
:familiar with the acronym from BitTorrent where it refers to the
:distributed hash tracker for decentralised trackers (IIRC).

Sure.

DHT stands for Distributed Hash Table.

In Gnutella, the DHT is used to store alt-locs (keyed by SHA-1) and
push-proxies (keyed by the GUID of the firewalled servent).  This allows
one to resolve source-less magnets.

As of today, there are only two vendors supporting the DHT: LimeWire and
gtk-gnutella.

The current implementation in GTKG is not complete though, in that GTKG
can only join the DHT and query it, but it does not publish information
yet.  Another limitation of the current implementation is that you need
to fully join the DHT structure to query it, whereas LimeWire has a degraded
implementation for nodes with too little bandwidth.

Due to LimeWire's poor choice of timeout constants, there is a fairly high
bandwidth price to pay to use the DHT.

The forthcoming 0.96.6 release of GTKG will not enable the DHT by default,
due to the fact that the implementation is still incomplete.  However,
all the features that have been implemented are fully functional:

* THe DHT implementation is following the LimeWire specifications regarding
  message structure, table architecture and protocols (Kademlia is the
  underlying DHT architecture and design).

* The DHT auto-bootstraps on the network, thanks to the relatively dense
  LimeWire network..

* The DHT is capable of storing data locally, if you are not firewalled,
  and naturally providing this data back to the nodes who ask for it.

* The DHT code can look for ALOC (alt-locs), to find other sources
  sharing a given file, and PROX (push-proxies) to be able to locate
  current push-proxies for a firewalled servent, considerably raising the
  chance that you can download from a firewalled (LimeWire) servent.

By default data stored in your node is kept in memory, but by setting
the property "dht_storage_in_memory" to FALSE, data will be kept on disk.
The reason this is not done by default is that the current implementation
is not handling disk-full conditions and GTKG is likely to crash if the disk
where ~/.gtk-gnutella lies becomes full.

Raphael

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
gtk-gnutella-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to