This is a fork of the Overlay Weaver project.
Overlay Weaver is a toolkit for developing and testing routing algorithms for overlay networks such as distributed hash tables.
The purpose of this fork is to explore and evaluate routing algorithms that support distributed similiarity search. Our main focus is currently on the Chord-based algorithm described in the paper Hamming DHT: Taming the Similarity Search by Villaca, et. al.
The implementation lives in HammingChord.java
,
although several changes have been made to various other classes / interfaces to support the
getSimilar
command, which should work with any routing algorithm.
Java 8 or later is required to build the project.
Most of the testing and evaluation code is written in clojure, with dependencies managed by leiningen.
lein run
will start a DHT "shell" that accepts commands on standard input, and can connect to
an overlay network running either locally or remotely.
See shell.clj
for command line options.
Much of the clojure code is designed to be used at a REPL, so it's recommended that you set up a clojure editor with REPL integration. Cursive is an excellent (non-free) choice, as it offers very flexible debugging and editing tools for Java as well as clojure.