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.
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
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
- and much more!