Description
Entangled is a distributed hash table (DHT) based on Kademlia, as well as a peer-to-peer tuple space implementation. This can be used as a base for creating peer-to-peer (P2P) network applications that require synchronization and event handling (such as distributed resource provisioning systems) as well as applications that do not (such as file sharing applications).
Entangled extends basic Kademlia by adding a "DELETE" RPC, allowing (key, value) pairs to be deleted from the DHT. It also adds some useful higher-level features onto the base DHT:
- Keyword-aware operations: allows keyword-based operations (publish, search, remove)
- Distributed Tuple Space: a fully distributed, peer-to-peer tuple space implementation
Entangled is written in Python, and makes use of the Twisted framework. It is released under the LGPLv3+.
Installation
Download the latest Entangled release from the Entangled downloads page (earlier releases are also downloadable from this page).
Alternatively, if you use Python eggs and easy_intall, the latest version can be installed by simplying doing:
easy_install entangled
Finally, if you would like to checkout an up-to-date copy directly from the subversion repository, do:
svn co https://entangled.svn.sourceforge.net/svnroot/entangled
You can also browse the subversion repository.
Entangled requires Twisted Core and Python 2.5 in order to function.
Demonstration
To quickly show how the DHT and tuple space work, Entangled provides a basic graphical user interface. To use it, run the create_network.py
and gui.py
scripts in the examples
subdirectory of your copy. For a freshly-checked out subversion copy, this would be:
$ cd examples $ ln -s ../entangled $ python create_network.py 15
and, in another terminal:
$ cd examples $ python gui.py 5000 127.0.0.1 4000
There is also a simple filesharing demonstration available. Note that these demonstration GUI scripts require PyGTK and Cairo.
The following are a few screenshots of the example programs in action: