Design for the DHT (by Christian Grothoff):
===========================================

The DHT code consists of 3 parts.  First, there is the DHT module, a
dynamically loaded plugin that provides DHT services to two different
sets of clients.  The DHT module provides the routing facilities and
registers two sets of handlers.  The first set of handlers are P2P
handlers which are used to exchange DHT messages with other peers. The
code for this implementation (module/service.c) also provides the DHT
service API to the rest of the GNUnet core.  The DHT service API is
defined in gnunet_dht_service.h.

On top of the DHT service API sits the DHT-CS API (module/cs.c).  It
provides DHT services to GNUnet clients.  In order to make access to
the CS-API more convenient, there exists the GNUnet-DHT client
library.  Its functions are defined in gnunet_dht_lib.h.  The library
code is defined in dht/tools together with a demo-tool
(gnunet-dht-query).

Low-level details:
- routing tables are similar to kademlia (in terms of replacement 
  policy and ID space structure; the bucket size depends on the number
  of tables that the peer participates in)
