Programming Assignment 2

PA2 is a warm up for the final project (PA3). In the final project, you’ll have the chance to either explore an original project or reproduce a networking paper that has not been reproduced before by CS 244. PA2 is designed to give you an initial familiarity with the research process and act as a lead up to PA3.

For this assignment, you will try to reproduce the key result of the networking topology paper Jellyfish. You will implement the experiment in a way that is both convincing and easily replicated by others. In addition to your reproduction, you will write a report describing and critiquing the paper. Mimicking our expectations for the final project, this project is deliberately underspecified. We’re not providing starter code, so it’s up to you to build the initial infrastructure to set up the experiment. If you get stuck, feel free to come to OH to brainstorm.

Deliverables: We would like you reproduce the results of Figure 9 and Table 1 in the paper. Your final deliverable will be a 2-3 page blog post describing the paper, the result, and your reproduction. We expect your report to (generally) include answers to the following:

  1. What problem was Jellyfish trying to solve? What was the state of the field at the time that the paper was published?

  2. A short summary of the original paper’s methods and results (focusing especially on Figure 9 and Table 1).

  3. Detail your approach to reproducing the figure. If you chose a platform or tool, explain why you made that choice. Highlight the advantages of your approach, as well as any drawbacks. Were there any challenges that you hit, or assumptions that you needed to make?

  4. What result did you get? Did it match the original paper?

  5. Did you extend the experiment in any way? (for example, another figure from the paper, an extension the figures we required you to replicate, or a novel experiment entirely.)

  6. Explicit, step-by-step instructions on how to install and run your experiment. Ideally, another researcher should be able to install and configure with a single command, run the experiment with a single command, and generate clear output graphics.

Notes: We would like you to use Mininet, at the very least for replicating Table I. You may need to scale down the number of servers: experiment with what is feasible.

Your source code should be posted on either github or bitbucket, while the report should be submitted through Gradescope. We will also ask you to add your reports to the Reproducing Network Research blog (more details on this soon). This project is due Friday, May 4 2018, 5pm.