A network emulator for rapid prototyping of Software Defined Networks (SDN) on a single machine.
Mininet is a network emulator that creates virtual networks of hosts, links, and switches on a single Linux machine. It is designed for rapid prototyping, testing, and demonstration of Software Defined Networks (SDN) and OpenFlow-based controllers, enabling developers to emulate complex network topologies without physical hardware.
Network researchers, SDN developers, and educators who need to prototype, test, or demonstrate Software Defined Networks and OpenFlow applications in a lightweight, reproducible environment.
Mininet provides a realistic, scalable emulation environment that closely mirrors hardware behavior, allowing seamless transfer of OpenFlow controllers from emulation to production with minimal changes. Its Python API and command-line tools make it highly flexible for custom network designs.
Emulator for rapid prototyping of Software Defined Networks
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Linux kernel features like network namespaces and virtual ethernet pairs to emulate hosts and switches, closely mirroring hardware behavior for seamless OpenFlow controller transfer to production.
Provides a Python API for programmatically creating custom network topologies, as shown in the examples directory, enabling scalable and repeatable network designs without hardware.
Includes command-line launcher `mn` with parametrized topologies and diagnostic CLI, allowing quick setup and testing of networks like the sample two-host, one-switch topology.
Backed by an active mailing list and comprehensive documentation on mininet.org, including FAQs and walkthroughs, which aids in troubleshooting and learning.
Relies on Linux kernel features like namespaces and cgroups, making it incompatible with Windows or macOS without virtual machines, limiting accessibility for non-Linux users.
Supports both Python 2 and 3, but installation can lead to version conflicts, and users must manually manage which Python version `mn` uses, as noted in the README.
Being a process-based emulator on a single machine, it may not scale well to very large networks or accurately emulate high-performance hardware scenarios, affecting resource-intensive testing.
As a community-supported project, formal support and timely updates might be less reliable compared to commercially backed alternatives, potentially impacting long-term maintenance and bug fixes.