This emulation platform was created to support network service developers to locally prototype and test their network services in realistic end-to-end multi-PoP scenarios. It allows the execution of real network functions, packaged as Docker containers, in emulated network topologies running locally on the developer's machine. The emulation platform also offers OpenStack-like APIs for each emulated PoP so that it can integrate with MANO solutions, like OSM. The core of the emulation platform is based on Containernet.
The emulation platform vim-emu is developed as part of OSM's DevOps MDG.
This software was originally developed by the SONATA project, funded by the European Commission under grant number 671517 through the Horizon 2020 and 5G-PPP programs.
If you use the emulation platform for your research and/or other publications, please cite the following paper to reference our work:
There are three ways to install and use the emulation platform. The bare-metal installation requires a freshly installed Ubuntu 16.04 LTS and is done by an ansible playbook. The second option is to use a nested Docker environment to run the emulator inside a Docker container. The third option is to use Vagrant to create a VirtualBox-based VM on your machine that contains the pre-installed and configured emulator.
sudo apt-get install ansible git aptitudecdgit clone https://github.com/containernet/containernet.gitcd ~/containernet/ansiblesudo ansible-playbook -i "localhost," -c local install.ymlcdgit clone https://osm.etsi.org/gerrit/osm/vim-emu.gitcd ~/vim-emu/ansiblesudo ansible-playbook -i "localhost," -c local install.ymlThis option requires a Docker installation on the host machine on which the emulator should be deployed.
git clone https://osm.etsi.org/gerrit/osm/vim-emu.gitcd ~/vim-emudocker build -t vim-emu-img .docker run --name vim-emu -it --rm --privileged --pid='host' -v /var/run/docker.sock:/var/run/docker.sock vim-emu-img /bin/bashgit clone https://osm.etsi.org/gerrit/osm/vim-emu.gitcd ~/vim-emuvagrant upvagrant ssh to enter the new VM in which the emulator is installed.This simple example shows how to start the emulator with a simple topology (terminal 1) and how to start (terminal 2) some empty VNF containers in the emulated datacenters (PoPs) by using the vim-emu CLI.
sudo python examples/default_single_dc_topology.pydocker exec vim-emu <command> for nested Docker deployment):vim-emu compute start -d dc1 -n vnf1vim-emu compute start -d dc1 -n vnf2vim-emu compute listcontainernet> vnf1 ifconfigcontainernet> vnf1 ping -c 2 vnf2Please check this OSM wiki page to learn how to contribute to a OSM module.
To run the unit tests do:
cd ~/vim-emusudo py.test -v src/emuvim/test/unittests (To force Python2: python2 -m pytest -v src/emuvim/test/unittests)The emulation platform is published under Apache 2.0 license. Please see the LICENSE file for more details.
Manuel Peuster (Paderborn University) manuel@peuster.de