Giter VIP home page Giter VIP logo

son-emu's Introduction

Build Status

son-emu

This is the repository of SONATA's emulation platform.

This emulation platform was created to support network service developers to locally prototype and test complete network service chains 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 network service developer's machine.

Cite this work

If you use son-emu for your research and/or other publications, please cite the following paper to reference our work:

  • M. Peuster, H. Karl and S. van Rossem, "MeDICINE: Rapid prototyping of production-ready network services in multi-PoP environments," 2016 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Palo Alto, CA, USA, 2016, pp. 148-153. doi: 10.1109/NFV-SDN.2016.7919490

A short demo that showcases son-emu together with its dummy gatekeeper is available here.

Development

To install the emulator package in development mode, do:

  • python setup.py develop

Folder Structure

  • ansible Install scripts
  • misc Example packages and VNFs
  • src
    • emuvim Emulator components
      • api API endpoint implementations
        • rest REST API for son-emu-cli
        • sonata Dummy gatekeeper API
        • openstack OpenStack-like APIs for MANO integration
      • cli Command line client to control the emulator
      • dashboard A web-based dashboard to display the emulator's state
      • dcemulator Emulator core
        • resourcemodel Resource limitation models
      • examples Example topology scripts
      • test Test scripts
  • utils Helper scripts for SONATA's CI/CD setup

Run Unit Tests

  • cd ~/son-emu
  • sudo py.test -v src/emuvim/test/unittests (To force using Python2: python2 -m pytest -v src/emuvim/test/unittests)

Building

Son-emu is entirely written in Python and does not require a special build process. Please check the Installation section for more details about the installation of son-emu.

Dependencies

Son-emu requires the latest version of Containernet to be installed on the system.

Despite of this son-emu has the following dependencies:

Contributing

Contributing to the son-emu is really easy. You must:

  1. Clone this repository;
  2. Work on your proposed changes, preferably through submiting issues;
  3. Submit a Pull Request;
  4. Follow/answer related issues (see Feedback-Chanel, below).

Installation

There are two ways to install and use son-emu. The simple one is to use Vagrant to create a VirtualBox-based VM on your machine that contains the pre-installed and configured emulator. The more complicated installation requires a freshly installed Ubuntu 16.04 LTS and is done by a ansible playbook.

Vagrant Installation

  • Request VirtualBox and Vagrant to be installed on the system.
  • git clone https://github.com/sonata-nfv/son-emu.git
  • cd ~/son-emu
  • vagrant up
  • vagrant ssh to enter the new VM in which the emulator is installed.

Follow the MOTD in the VM to run the example topology and the dummy-gatekeeper. The dummy-gatekeeper's default port 5000 is forwarded to the host machine and can be accessed from it by using, e.g., curl http://127.0.0.1:5000/packages.

Ansible Installation

  • Requires: Ubuntu 16.04 LTS
  • sudo apt-get install ansible git aptitude
  • sudo vim /etc/ansible/hosts
  • Add: localhost ansible_connection=local

1. Containernet

  • cd
  • git clone https://github.com/containernet/containernet.git
  • cd ~/containernet/ansible
  • sudo ansible-playbook install.yml
  • Wait (and have a coffee) ...

2. Emulator

  • cd
  • git clone https://github.com/sonata-nfv/son-emu.git
  • cd ~/son-emu/ansible
  • sudo ansible-playbook install.yml

Usage

Examples

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 son-emu-cli.

  • First terminal (start the emulation platform):
  • sudo python src/emuvim/examples/simple_topology.py
  • Second terminal:
  • son-emu-cli compute start -d datacenter1 -n vnf1
  • son-emu-cli compute start -d datacenter1 -n vnf2
  • son-emu-cli compute list
  • First terminal:
  • containernet> vnf1 ifconfig
  • containernet> vnf1 ping -c 2 vnf2

Further Documentation

License

Son-emu is published under Apache 2.0 license. Please see the LICENSE file for more details.

Useful Links


Lead Developers

The following lead developers are responsible for this repository and have admin rights. They can, for example, merge pull requests.

Contributors

Feedback-Chanel

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.