sonata-nfv / son-mano-framework

SONATA's Service Platform MANO Framework
http://www.sonata-nfv.eu
Apache License 2.0
20 stars 13 forks source link
mano-framework nfv nfv-framework sdn sonata

Build Status Join the chat at https://gitter.im/sonata-nfv/5gtango-sp

son-mano-framework

The MANO Framework is at the core of SONATA's (powered by 5GTANGO) service platform. It manages and orchestrates the available compute and networking resources to satisfy the requests it receives. As of now, the supported requests are (API description can be found in the [wiki]())

It is possible for network service and VNF developers to customise the workflows associated to the supported requests. Through a mechanism of specific managers, the behaviour of the MANO Framework can be altered on a per service/vnf basis. More information on this can be found in the wiki.

The MANO Framework functionaity is build from a set of loosely coupled components (micro-services) which use a message broker to communicate. The main orchestration functionalities are currently implemented in the service lifecycle management plugin (SLM). The SLM uses the function lifecycle management plugin (FLM) to perform orchestration tasks on the level of the VNF and the specific manager registry (SMR) for customised events that are embedded in service specific managers (SSMs) and function specific managers (FSMs). The Placement Plugin performs all calculations related to optimising the resources usage.

Some useful links:

Development

Each MANO Framework component is written in Python, and can be packaged as a Docker container. To build the respective Docker containers, use

docker build -f plugins/son-mano-service-lifecycle-management/Dockerfile .
docker build -f plugins/son-mano-function-lifecycle-management/Dockerfile .
docker build -f plugins/son-mano-placement/Dockerfile .
docker build -f plugins/son-mano-specific-registry/Dockerfile .

or pull them from

docker pull tsoenen/sonmano-slm
docker pull tsoenen/sonmano-flm
docker pull tsoenen/sonmano-smr
docker pull tsoenen/sonmano-plm

Installation and usage

The MANO Framework was developed in the scope of the SONATA's (powered by 5GTANGO) Service Platform. To install the entire platform, follow directions listed in tng-devops.

It is possible to use a standalone version of the MANO Framework, without the other 5GTANGO components. /install contains an ansible-playbook that deploys a standalone version of the MANO Framework locally, together with its dependencies:

To deploy the standalone MANO Framework, run

git clone https://github.com/sonata-nfv/son-mano-framework.git
cd son-mano-framework
ansible-playbook install/mano.yml -e "docker_network_name=tango"

Dependencies for this installation are:

When installing for the first time, run the following command to download the container images

./install/pull_containers.sh

At this point, you are running the MANO Framework locally, orchestrating on locally emulated resources. It is possible to orchestrate resources that are being managed by other virtual infrastructure managers (e.g. OpenStack, Kubernetes, etc.) if you replace the Emulator Wrapper with a dedicated wrapper for your VIM. Instructions on how to create such a wrapper can be found here.

To start using the standalone MANO Framework, you can use the sonmano Python3 library which consumes the MANO Framework API. You can install this library with

cd client
python3 setup.py install

Documentation for this library can be found here.

Contributing

To contribute, go through these steps:

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

License

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

Lead Developers

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

Feedback-Channel