Skip to content

rfprado/mini_internet_project

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An Open Platform to Teach How the Internet Practically Works

Welcome in the official repository of the mini-Internet project.

The mini-Internet project

A mini-Internet is a virtual network mimicking the real Internet. Among others, there are routers, switches and hosts that are located in different ASes. A mini-Internet runs in a single server and is tailored to teach how the Internet practically works. Each components of the network is running in its own dedicated linux container, that are remotely accessible by the students with simple ssh connections.

The mini-Internet project is the flagship piece of our Communication Networks course at ETH Zurich since 2016. The concept is rather simple: we let each student group operate their own AS. Their goal? Enabling Internet-wide connectivity.

We find this class-wide project to be invaluable in teaching our students how the Internet infrastructure practically works. Among others, our students have a much deeper understanding of Internet operations alongside their pitfalls. Besides students tend to love the project: clearly the fact that all of them need to cooperate for the entire Internet to work is empowering

In 2020_assignment_eth, we further describe how we used the mini-Internet at ETH in the 2020 iteration of our Communication Networks lecture. While the mini-Internet project works well for our introductory class, observe that it can be adapted for various teaching objectives.

Build your mini-Internet

With this platform, you can easily build your own mini-Internet, tailored for your teaching objectives. The documentation as well as the source code of the platform can be found in the platform directory. In a nutshell, after defining your topology in configuration files, you can build your mini-Internet with a bash script and use it for your networking class.

If you use the platform, please cite our SIGCOMM CCR'20 paper. Here is the bibtex:

@article{10.1145/3402413.3402420,
author = {Holterbach, Thomas and B\"{u}, Tobias and Rellstab, Tino and Vanbever, Laurent},
title = {An Open Platform to Teach How the Internet Practically Works},
year = {2020},
issue_date = {April 2020},
publisher = {Association for Computing Machinery},
url = {https://doi.org/10.1145/3402413.3402420},
journal = {SIGCOMM Comput. Commun. Rev.},
}

News

08/07/20: Added the docker image to use for the hosts in the config files
29/06/20: Added support for MPLS and Multicast
15/04/20: Fixed a security issue with the docker containers. Now students' containers only run with limited capabilities.
18/03/20: Several fixes (e.g., prevent containers to crash because too many processes are running) and improvements (e.g., configure different internal topologies)

Useful links

  • We presented the mini-Internet at NANOG 78 in February 2020. The talk is available on youtube.

  • We wrote a blogpost on the APNIC website about the mini-Internet.

  • We presented the mini-Internet at the AIMS-KISMET workshop. Our slides are available online.

Contacts

Thomas Holterbach [email protected]
Tobias Bühler [email protected]
Tino Rellstab [email protected]
Laurent Vanbever [email protected]
NSG Group website

Disclaimer

This platform has been tailored to teach how the Internet works in our Communication Networks lecture at ETH Zurich. Although this platform may be useful for other kind of purposes (research, experiments, etc), it has not been designed for them.

If you want to use this platform for your networking class, we recommend that you spent some time understanding the code and how we build the mini-Internet, and we recommend you to try it first before using it with actual students. We assume no responsibility or liability for any problem you may encounter while using the platform.

About

The official repository of the mini-Internet exercise.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 68.3%
  • Perl 18.8%
  • Python 9.8%
  • Dockerfile 2.9%
  • CSS 0.2%