Skip to content

sonata-nfv/son-mano-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

  • instantiate a service,
  • scale out/in a service instance,
  • migrate (part of) a service instance,
  • and terminate a service instance.

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:

  • A RabbitMQ message broker, used by the MANO components to communicate
  • The Catalogue and a Repository, which are used by the MANO Framework to store and fetch descriptors and records
  • A Mongo DB, for the Catalogue and Repository to use
  • The Emulator, which uses local resources to emulate computing and networking resources
  • The Emulator Wrapper, to attach the emulator to the MANO Framework

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:

  • Ansible > 2.4
  • Docker > 17.12.0-ce
  • Python3 Docker package > 3.4.1 (pip3 install docker)

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