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 and the 5GTANGO project, funded by the European Commission under grant number 671517 and 761493 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:
- M. Peuster, H. Karl, and S. v. Rossem: MeDICINE: Rapid Prototyping of Production-Ready Network Services in Multi-PoP Environments. IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Palo Alto, CA, USA, pp. 148-153. doi: 10.1109/NFV-SDN.2016.7919490. (2016)
Bibtex:
@inproceedings{peuster2016medicine, author={M. Peuster and H. Karl and S. van Rossem}, booktitle={2016 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN)}, title={MeDICINE: Rapid prototyping of production-ready network services in multi-PoP environments}, year={2016}, volume={}, number={}, pages={148-153}, doi={10.1109/NFV-SDN.2016.7919490}, month={Nov} }There are multiple ways to install and use the emulation platform. The easiest way is the automated installation using the OSM installer. The bare-metal installation requires a freshly installed Ubuntu 18.04 LTS and is done by an Ansible playbook. Another option is to use a nested Docker environment to run the emulator inside a Docker container.
This installation option applies if you want to use vim-emu in combination with OSM.
./install_osm.sh --vimemuThis command will install OSM as well as the emulator (as a Docker container) on a local machine. It is recommended to use a machine with Ubuntu 18.04 LTS. More details about this installation option can be found in the OSM wiki.
sudo apt-get install ansible git aptitudecd git clone https://github.com/containernet/containernet.git cd ~/containernet/ansible sudo ansible-playbook -i "localhost," -c local install.yml cd .. sudo make developcd git clone https://osm.etsi.org/gerrit/osm/vim-emu.git cd ~/vim-emu/ansible sudo ansible-playbook -i "localhost," -c local install.yml cd .. sudo python3 setup.py developThis option requires a Docker installation on the host machine on which the emulator should be deployed.
Build:
git clone https://osm.etsi.org/gerrit/osm/vim-emu.git cd ~/vim-emu # build the container: docker build -t vim-emu-img .Run:
# run the (interactive) container: docker run --name vim-emu -it --rm --privileged --pid='host' -v /var/run/docker.sock:/var/run/docker.sock vim-emu-img /bin/bashThis 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.
First terminal:
# start the emulation platform with a single NFV data center sudo python3 examples/default_single_dc_topology.pySecond terminal (use docker exec vim-emu <command> for nested Docker deployment):
# start two simple VNFs vim-emu compute start -d dc1 -n vnf1 vim-emu compute start -d dc1 -n vnf2 vim-emu compute listFirst terminal:
# check the connectivity between the two VNFs # press <ENTER> <ENTER> containernet> vnf1 ifconfig containernet> vnf1 ping -c2 vnf2A more advanced example that includes OSM can be found in the official vim-emu documentation in the OSM wiki.
- Official vim-emu repository mirror on GitHub
- Official vim-emu documentation in the OSM wiki
- Full vim-emu documentation on GitHub
- Mininet
- Containernet
- Maxinet
Please check this OSM wiki page to learn how to contribute to a OSM module.
sudo pytest -v- Manuel Peuster (lead developer)
- Hadi Razzaghi Kouchaksaraei
- Wouter Tavernier
- Geoffroy Chollon
- Eduard Maas
- Malte Splietker
- Johannes Kampmeyer
- Stefan Schneider
- Erik Schilling
- Rafael Schellenberg
The emulation platform is published under Apache 2.0 license. Please see the LICENSE file for more details.
Manuel Peuster
- Mail: <manuel (at) peuster (dot) de>
- Twitter: @ManuelPeuster
- GitHub: @mpeuster
- Website: https://peuster.de