
SDN Digest - Six Open Source Emulators
Last time we made a selection of open source SDN controllers . Today, open emulators of SDN networks are next in turn. Everyone who is interested is invited to cat. / The Flickr / of Dennis van Zuijlekom / CC

The tool allows you to raise a software-controlled network on one machine (virtual or physical). Just enter the command: $ sudo mn. According to the developers, Mininet is well suited for deploying test environments.
For example, Stanford teachers (where they developed Mininet) use the utility during practical classes at the university. It helps students develop networking skills. Some of the tasks and demos can be found in the repository on GitHub.
Mininet is also suitable for testing custom SDN topologies. A virtual network is deployed with all switches, controllers and hosts, and then its performance is checked using Python scripts. Then the settings are transferred from Mininet to the real network.
Of the shortcomings of the solutionexperts highlight the lack of support for Windows. In addition, Mininet is not suitable for working with large-scale networks, since the emulator runs on the same machine - there may not be enough hardware resources.
Mininet is licensed under the BSD Open Source and is actively developing. Everyone can make a contribution - on how to do this, there is information on the official website of the project and in the repository .
Simulator for discrete-event network modeling . Initially, the tool was conceived as an educational utility, but today it is used to test SDN environments. Guides on working with ns-3 are on the site with project documentation .
Among the advantages of the utility are the support for sockets and the Pcap library for working with other tools (like Wireshark), as well as a responsive community.
The disadvantages include relatively poor visualization. NetAnim is responsible for displaying the topology . In addition, ns-3 does not support all SDN controllers.
This SDN emulator is built on the basis of two previous tools - Mininet and ns-3. It combines the strengths of each of them. To make solutions work together, OpenNet uses a Python binding library.
Thus, Mininet in OpenNet is responsible for emulating OpenFlow switches, providing CLIs and virtualization. As for ns-3, it emulates those models that are not in Mininet. The operation guide can be found on GitHub . There are additional links to related materials.

/ PxHere / PD
This is a fork of Mininet for working with application containers. Docker containers act as hosts on emulated networks. The solution was created to allow developers to experiment with cloud, peripheral, fog computing and NFV. The system has already been used by the authors of SONATA NFV to create an orchestration system in virtualized 5G networks. Containernet made the core emulation platform NFV.
You can install Containernet using a guide on GitHub .
A lightweight library that helps you quickly prototype SDN networks. An API tool written in Go allows you to emulate any network topology. The library itself "weighs" a little, due to which it is installed and runs faster than analogues. Tinynet can also be integrated with Docker containers.
The tool is not suitable for emulating large-scale networks due to limited functionality. But come in handy when working on small personal projects or rapid prototyping.
Sample implementations and commands for installing Tinynet are available in the GitHub repository .
This tool makes it possible to use Mininet on several physical machines and work with large-scale SDN networks. Each of the machines - Workers - launches Mininet and emulates its part of the overall network. Switches and hosts communicate with each other using GRE tunnels. To manage the components of such a network, MaxiNet provides an API.
MaxiNet helps you quickly scale networks and optimize resource allocation. MaxiNet also has monitoring features, an integrated CLI, and the ability to integrate with Docker. However, the tool does not know how to emulate the operation of one switch for several machines.
The source code for the project is on GitHub . Installation guide and quick start guide can be found on the official project page.

Mininet
The tool allows you to raise a software-controlled network on one machine (virtual or physical). Just enter the command: $ sudo mn. According to the developers, Mininet is well suited for deploying test environments.
For example, Stanford teachers (where they developed Mininet) use the utility during practical classes at the university. It helps students develop networking skills. Some of the tasks and demos can be found in the repository on GitHub.
Mininet is also suitable for testing custom SDN topologies. A virtual network is deployed with all switches, controllers and hosts, and then its performance is checked using Python scripts. Then the settings are transferred from Mininet to the real network.
Of the shortcomings of the solutionexperts highlight the lack of support for Windows. In addition, Mininet is not suitable for working with large-scale networks, since the emulator runs on the same machine - there may not be enough hardware resources.
Mininet is licensed under the BSD Open Source and is actively developing. Everyone can make a contribution - on how to do this, there is information on the official website of the project and in the repository .
ns-3
Simulator for discrete-event network modeling . Initially, the tool was conceived as an educational utility, but today it is used to test SDN environments. Guides on working with ns-3 are on the site with project documentation .
Among the advantages of the utility are the support for sockets and the Pcap library for working with other tools (like Wireshark), as well as a responsive community.
The disadvantages include relatively poor visualization. NetAnim is responsible for displaying the topology . In addition, ns-3 does not support all SDN controllers.
Read on the topic in our corporate blog:
Opennet
This SDN emulator is built on the basis of two previous tools - Mininet and ns-3. It combines the strengths of each of them. To make solutions work together, OpenNet uses a Python binding library.
Thus, Mininet in OpenNet is responsible for emulating OpenFlow switches, providing CLIs and virtualization. As for ns-3, it emulates those models that are not in Mininet. The operation guide can be found on GitHub . There are additional links to related materials.

/ PxHere / PD
Containerernet
This is a fork of Mininet for working with application containers. Docker containers act as hosts on emulated networks. The solution was created to allow developers to experiment with cloud, peripheral, fog computing and NFV. The system has already been used by the authors of SONATA NFV to create an orchestration system in virtualized 5G networks. Containernet made the core emulation platform NFV.
You can install Containernet using a guide on GitHub .
Tinynet
A lightweight library that helps you quickly prototype SDN networks. An API tool written in Go allows you to emulate any network topology. The library itself "weighs" a little, due to which it is installed and runs faster than analogues. Tinynet can also be integrated with Docker containers.
The tool is not suitable for emulating large-scale networks due to limited functionality. But come in handy when working on small personal projects or rapid prototyping.
Sample implementations and commands for installing Tinynet are available in the GitHub repository .
Maxinet
This tool makes it possible to use Mininet on several physical machines and work with large-scale SDN networks. Each of the machines - Workers - launches Mininet and emulates its part of the overall network. Switches and hosts communicate with each other using GRE tunnels. To manage the components of such a network, MaxiNet provides an API.
MaxiNet helps you quickly scale networks and optimize resource allocation. MaxiNet also has monitoring features, an integrated CLI, and the ability to integrate with Docker. However, the tool does not know how to emulate the operation of one switch for several machines.
The source code for the project is on GitHub . Installation guide and quick start guide can be found on the official project page.
Read on the topic in our corporate blog: