From InfoAnarchy
Jump to: navigation, search

See also: Algorithms | File sharing

Homepage: http://kademlia.scs.cs.nyu.edu (or, if the site is down, some information may be found on Petar Maymoukov's home page http://www.scs.cs.nyu.edu/~petar/ )

Kademlia is a defined framework for a peer-to-peer network. From their site:

KADEMLIA is a novel routing algorithm for peer-to-peer networks based on the XOR metric. The KADEMLIA project is a research effort to implement a full-featured peer-to-peer system based on the XOR metric routing. Topics of interest are efficient data storage and query; anonimity; network, content and user security and authentication. Currently, we are working on a Java implementation of KADEMLIA.

The Overnet network is based on the KADEMLIA concepts; sadly, the implementation details are not documented (although the protocol has been partly reverse-engineered by the mldonkey team) and its code is closed source. Recent versions of cdonkey implement Kademlia in a way that allows interoperation with Overnet; this provides some additional documentation of the reverse-engineered protocol, and GPL'd code that implements it in a language (C++) less exotic than mldonkey's oCaml. cdonkey's implementation is derived from code written by Barry Dunne for an early version of eMule; in turn, Barry's code was a translation to C++ of the reference implementation in Java of the Kademlia protocol by Petar Maymounkov, who created the Kademlia algorithm together with David Mazières at NYU.


Subsequently, eMule decided to abandon compatibility with Overnet and fork a different (and non-interoperable) implementation of Kademlia. All eMule's code is open-source and GPL'd, but there is almost no high-level documentation. Meanwhile, the aMule team has announced imminent support for eMule's flavour of Kademlia; the interesting part is that aMule relies upon the multi-platform wxWidgets rather than MS' MFC, which confine eMule and RevConnect (see below) to a Windows platform.

Further, BitSpirit, the Chinese BitTorrent client, as of the newest 3.x releases, supports it's own Kademlia network for finding other seeds especially when a tracker is down or temporarily unavailable. Here is a sample output from it's DHT support: DHT (based on Kademlia); Connected to 174 nodes (61 is valid), sent 84428 read 33106 Bytes

Finally, RevConnect (a mod of DC++, a client for the DirectConnect network) has used eMule's code to add Kademlia searching and publishing; however, the changes made to the protocol prevent interoperation with both eMule and Overnet.

So, at present the world of Kademlia overlay networks is balkanized into three separate islands: Overnet-compatible (Overnet, mldonkey and cdonkey); eMule-KAD (eMule 0.4x and, soon, aMule); and RevConnect.

Starting from version 2.5.28, mldonkey has initial support for eMule Kademlia implementation.

The KadC library (http://kadc.sourceforge.net/ ) provides primitives to add Kademlia-based publishing and searching functionality to applications capable to call a C API. At present it only accesses the Overnet network.

Kademlia is easy to misspell, such as KADMELIA and KADEMILIA.