Giter Club home page Giter Club logo

mini_internet_project's Introduction

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.

mini_internet_project's People

Contributors

ktrel avatar buehlert avatar rsanger avatar huettern avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.