CS6460 - Peer-to-Peer Systems

Emin Gun Sirer

Project 2

The goal of the second project is to build a structured distributed hash table.

You may build any of Pastry, Chord, Tapestry, Viceroy, or Kademlia. The interface should be three simple programs "put ", "get ", "show". Put and get should be self-explanatory. Show should dump all the nodes in your system and show their IDs.

You may want to write additional scripts "startnode" and "killnode" that can help bring up additional hosts into your system.

You will run into the problem of how to find a bootstrap node. For this, you can use the closestnode.com service, which runs the Meridian system to anycast the join message to the closest node. You will need to link in with the Meridian library or run the Meridian executable in parallel to hook into this infrastructure.

You are expected to run your system on PlanetLab. The grading will be done via a demo. A key ingredient of the grading is the testing scripts you developed along with your system. Many structured DHTs have some corner cases, and you should write scripts that exercise them.