VIM emulator
Vim-emu: A NFV multi-PoP emulation platform
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
was previously developed as part of the EU H2020 project SONATA and is now developed as part of OSM's DevOps MDG.
Scope
The following figure shows the scope of the emulator solution and its mapping to a simplified ETSI NFV reference architecture in which it replaces the network function virtualisation infrastructure (NFVI) and the virtualised infrastructure manager (VIM). The design of vim-emu is based on a tool called Containernet which extends the well-known Mininet emulation framework and allows us to use standard Docker containers as VNFs within the emulated network. It also allows adding and removing containers from the emulated network at runtime which is not possible in Mininet. This concept allows us to use the emulator like a cloud infrastructure in which we can start and stop compute resources (in the form of Docker containers) at any point in time.
Architecture
Installation
Option 1: Bare-metal installation
- Requires: Ubuntu 16.04 LTS
sudo apt-get install ansible git aptitude
Step 1: Containernet installation
cd
git clone https://github.com/containernet/containernet.git
cd ~/containernet/ansible
sudo ansible-playbook -i "localhost," -c local install.yml
Step 2: vim-emu installation
cd
git clone https://osm.etsi.org/gerrit/osm/vim-emu.git
cd ~/vim-emu/ansible
sudo ansible-playbook -i "localhost," -c local install.yml
Option 2: Nested Docker Deployment
This 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.git
cd ~/vim-emu
- Build the container:
docker build -t vim-emu-img .
- 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/bash