Join us on IRC: #infoanarchy on irc.oftc.net — channel blog

Bring back infoAnarchy, the first site to report on the coming age of abundance. Revive infoanarchy.org blog & wiki - donate BTC to 1J66guL99svkrDzEerVhammM938niMUC5G

Kademlia

From iA wiki

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.

Image:Kadtab.jpg

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.