Welcome in the official repository of 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 component 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
-
We use the platform in our introductory course to Communication Networks. In the communication_networks_course directory, we detail the mini-Internet project and show what we ask our students to do. We also show the configuration files that we used so that you can run the same project in your computer network classes.
-
We use the platform in our Advanced Topics in Communication Networks course so that students can have hands on experience on more advanced concepts and protocols such as MPLS, LDP, BGP Free Core, BGP VPN, VRF and Multicast. In the advanced_networks_course directory, we detail the different mini-Internet-based exercises that we give to our students.
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}hler, 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.},
}
20/05/21: Added our assignment for 2021! You can find it here. This year, we added support for IPv6 and asked our students to configure 6in4 tunnels.
3/12/20: Added the BGP VPN MPLS and Multicast exercises of our Advanced Topic in Computer Networks course.
29/09/20: Changed the Dockerfile for the router image. Now FRR is compiled from the source with a particular version of the libyang library so that VRF are supported.
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).
-
We presented the mini-Internet at NANOG 78 in February 2020. The talk is available on youtube.
-
We presented the mini-Internet at SIGCOMM'20 in the "Best of CRR" session. The virtual 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.
Thomas Holterbach [email protected]
Tobias Bühler [email protected]
Tino Rellstab [email protected]
Laurent Vanbever [email protected]
NSG Group website
We are grateful to everyone who contributed to improve the platform.
We thank our ETH colleagues Rudiger Birkner for all his work on the platform as a teaching assistant as well as Roland Meier for the connectivity matrix.
We are thankful to the following ETH students who helped us developping the platform during their studies:
- Martin Vahlensieck (2021) who implemented the BGP policy analyzer and the auto-completion in the ssh container)
- Denis Mikhaylov (2020) and Sandro Lutz (2021) who implemented the RPKI part (their code is available in the
rpki-dev
branch, we plan to merge it in themaster
branch in Spring 2022)
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.