Skip to content

Repository files navigation

Project 6: Final Project

This is an open-ended project where you can conduct your own design and implementation. We list some possible directions below. Please check with us about your project ideas to make sure they’re in scope. Think big!

Direction 1:

We have built a data center network in the past projects. Now you can think about adding a new feature to it. Interesting projects may become course projects for future semesters. In general, you can look for project ideas by revisiting the key ideas discussed in lectures and pick one idea to implement. Here are a few example topics.

Add new features to your FatTree topology

In project 1, we implemented a static FatTree. You can think about how to support more practical features in the topology such as:

  • Expansion: How do you move links when we add a new rack
  • Failure recovery: how do you detect failure and identify alternative routing? Can you try out the striping idea we talked in class and compare the performance of different striping solutions?

Implement spanning tree protocol and learning switches in Mininet

Think of an L2 switch (e.g. the LAN ports of your home WiFi router) and a network of L2 switches. Our devices are plugged into such a network and they simply work since the switches implement L2 learning and spanning tree protocol.

Beyond L2 learning and spanning tree, you can also extend this project to run a DHCP, a DNS server, and a network gateway in one of the "management" hosts in the network such that the newly plugged in devices can access the Internet beyond able to reach other hosts/devices in the network.

Port link-state or distance vector protocols to FatTree setting in Mininet

Our link-state and distance vector implementation in project 2 is a standalone program. Can you try porting it to the Mininet setting so that we can run it in the data center networks we construct?

Run BGP in Mininet

You can construct a small Internet topology (e.g., with two or three ASes where each AS has a few routers). You can then implement BGP protocol in this topology. Quagga would be a useful starting point.

Run DCTCP in Mininet and compare its performance with TCP

Add P4 debugging tools

Build an innovative and useful tool that can help P4 developers visualize, identify or better understand their program's behavior and more conveniently debug it.

Add more testing cases

Many of our course projects can be improved with better automatic testing cases. Propose new testing workloads and scripts that would automatically catch problems in students' codes.

Direction 2:

One can learn a lot from past failures. Cloud providers usually summarize the failure incidents they incur and the root cause analysis online. Here are the list of postmotems posted by Amazon and Microsoft.

Pick any network outage postmotem and reproduce the similar/simplified problems in your mininet testbed based on the postmortem.

Direction 3:

Another option is to read papers in networking and try to reproduce some results (see the Stanford course blog for examples). You can consult Minlan if you need suggestions on papers of specific topics you are interested in from the lectures (e.g., congestion control, traffic engineering, network management, Ethernet, IP).

Direction 4: Software load balancing (with a maximum of 90% of the score)

You are highly encouraged to take exploratory directions in 1 and 3. However, if you prefer projects with detailed instructions, you can also try out the Software load balancing project. Note that if you choose this project, you will only get 90% of the total score of this final project (Unless you get extra credits).

Submission requirements

In addition to the code, write up your project in a file that you add to your repository. Your writeup should answer these questions:

  • What was your goal?
  • What’s your design?
  • What code did you write (what files and functions)?
  • What challenges did you encounter?
  • How can we test your work?
  • Provide evaluation results or performance analysis of your work
  • The writeup need not be very long; 300 words can do it if you use the words well.

Grading

The total grades is 100:

  • Code (correctness & significance; need to demonstrate to us with a short demo ~5-10min): 80
  • Write-up: 20

*Direction 4 has different grading criteria; please refer to the corresponding README. If you choose direction 4, your final grade will be multiplied by 0.9.

Featured past projects:

  • Spring 2020: P4 Network Visualizer by Daniel Rodrigues

  • Spring 2021: Spanning tree protocol by Noel Chou

Survey

Please fill up the survey when you finish your project: Survey link.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages