Overlay Weaver

An Overlay Construction Toolkit

Overlay Weaver is an overlay construction toolkit, which supports overlay algorithm designers in addition to application developers.

For application developers, the toolkit provides a common API for higher-level services such as distributed hash table (DHT) and multicast. Applications relying on the common API depend no specific transport protocol, database implementation and routing algorithm.

The toolkit provides multiple routing algorithms, Chord, Kademlia, Koorde, Pastry, Tapestry and FRT-Chord. These algorithms could be implemented only in hundreds lines of code because of routing layer decomposition. Routing layer under the higher-level services has been decomposed into multiple components, routing driver, routing algorithm and messaging service. The decomposition also facilitates implementation of a new algorithm. A newly implemented algorithm can be tested, evaluated and compared on emulator, which can host hundreds of thousands of virtual nodes. It enables large-scale emulation and fair comparison between algorithms.

Keywords: Overlay Networks, Peer-to-Peer (P2P), Distributed Hash Table (DHT), Large-scale Emulation


November 25, 2015
Version 0.10.5 released.
  • Bugs were fixed.
  • Libraries (Jetty, Berkeley DB Java Edition and Apache Commons CLI) were updated.
August 14, 2013
Source code repository was migrated from SourceForge.net to GitHub.
October 29, 2012
Version 0.10.4 released.
  • Java 7 can build and run Overlay Weaver.
  • Emulator works on multiple computers again (but few documents provided).
  • A node does not appear on other nodes' routing tables while it is joining in an overlay (except Kademlia).
  • Jetty was updated from 7.3.1 to 8.1.7.
  • Berkeley DB Java Edition was updated from 4.1.10 to 5.0.58.
March 31, 2009
Demonstration videos provided on the "Screenshots, Video and Demo" page.
  • "Overlay Visualizer"
  • "DNS Emulation with over 500 nodes on PlanetLab"
January 6, 2008
DHT Access Tools 0.6 released.
  • Put command accepts multiple key-value pairs.
[More ...]