CSCI 339
Distributed Systems
Home | Calendar | Assignments | CS@Williams
Assignment 4: P2P Computing
Status update (2 pages) due: Friday, May 2, 2008, in class
Presentation due: Wednesday, May 7, 2008, in class
Project due: Saturday, May 10, 2008, 11:59pm (update!)
Extended paper (in lieu of final exam) due: Sunday, May 18, 2008, 2:00pm
(Note: Officially you have until 8:30pm on May 18th to submit your final exam/paper.
If you need until 8:30pm, that's fine, but please let me know in advance.
I am leaving town on Sunday night, and I am picking up the envelopes at
2:30pm before I leave. If you plan to submit after 2:30pm, I'll have to
make arrangements to have someone else pick them up.)
The previous three assignments have given you experience with single-tier client/server systems, multi-tier client/server systems, and cluster-based systems. The purpose of your fourth and final project is to give you experience with P2P computing in the wide-area.
This project should be done in teams of two (or three with prior approval).
Part 0: PlanetLab Slice Setup
Each group has been given access to a PlanetLab slice (williams_group[1-8]). All PlanetLab machines are accessible via SSH using the key that you uploaded to the PLC website during class. Remember that these machines should not be used for reliable storage. Make sure you make copies of any files that you need on the department web servers.
You are welcome to use any resource that you wish to simplify PlanetLab experimentation. In particular, you may with to use Plush, SWORD, Nebula, or CoMon. See the lecture nodes for Friday's class (3/25) for more information on how to configure Plush. Nebula has been setup on sysnet15-19 in the back room of TCL 312. Feel free to use these machines to run experiments.
Part 1: P2P Application Development
The project guidelines for this assignment are much more open-ended than your previous three projects. I want you to be creative! I recommend that you start small and make many assumptions, and then relax assumptions and use more machines as time permits. Your goal should be to utilize 20 PlanetLab machines. Of course, you are welcome to use more if you wish. Running on PlanetLab can be frustrating. Start early and ask lots of questions. I want you to have fun with this assignment!
If you are struggling to come up with creative project ideas, I suggest that you try to build a simple P2P file transfer application. To do this, choose one node as the source of your file transfer. Then build a tree among the file recipients, passing the file, or pieces of the file, down the tree. There are many optional optimizations that you can make here. For example, nodes at the same level of the tree could also exchange data among themselves. The figure below shows this design.
It is important to decide what metric you are optimizing for when you build your application. Are you trying to minimize transfer time or minimize aggregate bandwidth? Make sure you discuss these decisions in your writeup.
Part 2: Writeup + Presentation
Plan to present 3-5 slides (5-7 minutes) to the class describing your project's design. We will use
May 9th as an overflow day in case we do not finish all presentations on the 7th.
To submit your code and writuep, email a gzipped tarball to jeannie@cs.williams.edu.
Please include the following files in your tarball.
1) Your writeup (preferably PDF), including at least 1 graph. This writeup should be 5-6 pages in length.
Please include a description and evaluation of any tools that you used (Plush, Nebula, etc). My goal is
to make Plush/Nebula as user friendly as possible, so your feedback is extremely important to me. Include your
general thoughts/reflections again, too. I found those to be very helpful.
2) All the files for your source code only. Please do not include
any executables.
3) Your Makefile (or compile instructions) and any other information that I need to run your code.
Part 3: Extended Writeup (due May 18th)
To submit your assignment, pick up your self scheduled final, check the box on the front page,
and insert your final paper in the envelope. If you have made significant code changes,
email a gzipped tarball to jeannie@cs.williams.edu.
Your extended writeup should include an intro, architecture summary (and figure), evaluation
(3-4 graphs with analysis), related work,
future work (possible extensions), and conclusions. It should be 8-10 pages in length, and should be written
in LaTeX using a two column format. If you need help with formatting, let me know. You may use
this style file to assist with formatting.
Resources