Introduction
NEmu (Network Emulator for Mobile Universes) is a distributed virtual network environment which fully runs without any administrative rights. It manages fleet of QEMU VMs in order to build a dynamic virtual topology. It provides self-script (launcher and interpreter) and a python API to create and manage heterogeneous, dynamic, distributed, collaborative and mobile virtual networks.
Example
Let us consider the following network:
The configuration of this network in NEmu would be:
InitNemu() # Creates a new session
VSwitch('switch', niface=3) # New switch with 3 ports
VSlirp('slirp') # New external connection (Internet)
VHost('a', hds=[VFs('debian.img')], nics=[VNic()]) # New host with 1 NIC
VHost('b', hds=[VFs('windows.img')], nics=[VNic()]) # New host with 1 NIC
VHost('c', hds=[VFs('freebsd.img')], nics=[VNic(), VNic()]) # New host with 2 NICs
Link('a', 'switch:0') # Connects a to switch interface 0
Link('b', 'switch:1') # Connects b to switch interface 1
Link('c:0', 'switch:2') # Connects c to switch interface 2
Link('c:1', 'slirp') # Connects c to the real world
StartNemu() # Starts the virtual network
For Who
NEmu is designed for anybody who wants to run native applications on a customized network without having access to a physical wide distributed infrastructure. NEmu can be useful for many purposes:
- Network application developer
- Cloud application developer (IaaS, PaaS or SaaS)
- Network course in school or university
- User wanting to test applications without impacting their real system
- Live network presentation
- Community volatile network testbed
- Pen-testing environment
- Containers as VM
- and much more!