Overview
Distrinet is a distributed network emulator that provides a way to distribute Mininet over multiple hosts. It can deploy experiments on Linux clusters (e.g., Grid’5000), as well as on the Amazon EC2 cloud platform.
Distrinet uses the same API as Mininet, meaning that it is fully compatible with Mininet programs.
Get started now View it on GitHub
Table of contents
Main purpose
Despite it is built using lightweight virtual environment techniques, Mininet cannot properly handle resource-intensive experiments because it runs on a single computer (Mininet’s limitations). As such, when heavy load is requested, it is not possible to achieve satisfactory performance. Distrinet supports resource-intensive experiments by distributing experiments over multiple machines.
Architecture
Distrinet provides an infrastructure provisioning mechanism that automatically installs and configures LXD and SSH on each machine to be used during the experiment by means of Ansible.
Distrinet can be used in a large variety of experimental infrastructures (e.g., a single computer, a pool of Linux machines, the Grid’5000 testbed, the Amazon EC2 cloud platform).
Linux clusters
Distrinet is composed of three elements, a client node executing the experiment script, a master node managing the experimental infrastructure, and worker nodes running the actual experiment.
To run an experiment, Distrinet first decides which machines of the infrastructure will be used. Once the subset of machines is determined, one of the machines is used to be the Ansible master. Ansible is installed on this master node via SSH from the client machine. Ansible is used to install, deploy, and configure LXD on all the nodes used for the experiment by means of idempotent Ansible playbooks. The machines form an LXD cluster where the host used as Ansible master is the bootstrap LXD node.
Once the LXD cluster is properly deployed, the container images that will be used for the experiment are imported in the cluster. Images are automatically retrieved from the client machine images directory.
Links are modeled as virtual networks and the interfaces of the containers involved are connected through VXLAN tunnels. VXLAN is an encapsulation technique to virtualize L2 networks that provides isolation and efficient broadcast when it is deployed in multicast mode
Amazon EC2
If the experimental infrastructure is Amazon EC2, Mininet Cloud Edition instantiates first a Virtual Private Cloud (VPC) in which the virtual instances running the experiment will be deployed. A NAT gateway is automatically created to provide Internet access to the emulated nodes. Access to the emulated nodes from the experimenter machine is ensured by a master node acting as an SSH relay. The deployment on Amazon EC2 only requires an active Amazon AWS account.
Distrinet determines the number of machines to use for an experiment and how to deploy the emulated network on these machines by first solving an optimization problem. When no optimization is provided, the placement is decided by the LXC scheduler.
In the Distrinet demo below, we run a compute-intensive experiment composed of Map-Reduce and video streaming workload on the 4-Fat-Tree topology deployed on a cluster of 12 Linux machines.
Other demos
Publications
- G. Di Lena, A. Tomassilli, D. Saucez, F. Giroire, T. Turletti, and C. Lac: Mininet on steroids: exploiting the cloud for Mininet performance. 2019 IEEE 8th International Conference on Cloud Networking (CloudNet)
- G. Di Lena, A. Tomassilli, D. Saucez, F. Giroire, T. Turletti, and C. Lac: Distrinet: a Mininet Implementation for the Cloud. 2020 ACM Computer Communication Review (CCR)
Contributing
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. Read more about becoming a contributor in our GitHub repo.
Acknowledgments
Inspiration from Maxinet and Containernet projects