1 of 18

Reproducing Network Research

2 of 18

General Advice

  • It can be frustrating! Don’t get discouraged
  • Different versions may have different compatibility
  • Make sure to understand the work you are trying to reproduce
  • Go through READMEs before running/installing code
  • Think before you type

3 of 18

Reproduction Example

Jellyfish: Networking Data Centers Randomly (NSDI ‘12)

Starter code at: https://github.com/brucespang/jellyfish-reproduction

  • Includes code for the project (system / algorithm)
  • Includes setup instructions
  • Does NOT include tests/graphing scripts

4 of 18

Goal of Jellyfish

  • Increase throughput / utilization of the network
  • Incremental expansion
    • Accounts for hosts to be dynamically removed/added to the networks
  • Allows for scalability while maintaining flexibility

5 of 18

Datacenter Topology

6 of 18

Jellyfish Topology

7 of 18

Creating a VM

8 of 18

Creating a VM

9 of 18

VM Configuration

  • Ubuntu (14 / 16 /18 / 20)
  • Choose VM Type based on CPU / Memory desired
  • Setup private/public keys for SSH access
  • Setup xforwarding / test out scp commands for file upload/download

10 of 18

Figure 9

11 of 18

Figure 9

ECMP: Equal Cost Muti-Path Routing

12 of 18

Implementation

  • Setup Jellyfish Topology with 686 servers (hosts)
  • Implement ECMP / k-Shortest Paths
    • Use existing libraries! (networkx in Python does this)
  • Count the number of paths each link is a part of
  • Graph / Visualize the data

13 of 18

Original Result

New Result

14 of 18

Table 1

15 of 18

Table 1

16 of 18

Implementation

  • Setup Jellyfish / Fat-Tree topology with Mininet
    • Fat-tree is too large for mininet, use Jellyfish with smaller # of hosts
  • Configure the routing in testbed
    • simple POX controller
  • Setup throughput / utilization tests
    • iperf
  • Graph / Visualize the data

17 of 18

Original Result

New Result

Congestion Control

ECMP

8-shortest paths

TCP 1 Flow

88.3 %

89%

TCP 8 Flow

96%

98.1%

18 of 18

Conclusion

  • Don’t worry if your graphs aren’t identical to those found in the paper
  • Break down the tasks that need to be done
  • Don’t shy away from reading “extra” code if needed
    • Help understand how the different components fit together
    • Helpful when encountering problems with not very detailed error messages
  • Stay positive! Roadblocks are nonlinear in the time needed to solve them