November 16, 2020

852 words 4 mins read

medianetlab/katana-slice_manager

medianetlab/katana-slice_manager

5G Network E2E Slice Manager

repo name medianetlab/katana-slice_manager
repo link https://github.com/medianetlab/katana-slice_manager
homepage
language JavaScript
size (curr.) 4718 kB
stars (curr.) 25
created 2019-07-24
license Apache License 2.0

Katana Slice Manager

Katana Logo


Stargazers Forks Commit Activity

Watchers Contributors Issues

Build Status


Network slicing is a 5G cutting edge technology, that enables the creation of multiple virtual networks on top of a physical architecture, allowing operators to provide portions of their networks that fit with the requirementsby different vertical industries. A network slice can be described as the sum of various sub-slices of different network domains, such as the WAN, the Core Cloud and the Edge Cloud.

Katana Slice Manager is a central software component responsible for controlling all the devices comprising the network, providing an interface for creating, modifying, monitoring and deleting slices. Through the NBI, Katana interacts with a coordination layer or directly with the network operator. It receives the Network Slice Template (NEST) for creating network slices and provides the API for managing and monitoring them. Through the South Bound Interface (SBI), it talks to the components of the Management and Orchestration Layer (MANO), namely the NFV Orchestrator (NFVO), the Virtual Infrastructure Manager (VIM), the Element Management System (EMS) and the WAN Infrastructure Management (WIM), in order to manage the functions in the network and perform CRUD operations on End-to-End network slices.

Katana Slice Manager is based on a highly modular architecture, built as a mesh of microservices, each of which is running on a docker container. The key advantages of this architectural approach are that it offers simplicity in building and maintaining applications, flexibility and scalability, while the containerized approach makes the applications independent of the underlying system.

Features

  • Start, Stop, Inspect End-to-End Network Slices
  • OpenAPIs supported by Swagger-io tool
  • Modular architecture for supporting different infrastructure technologies
  • Lightweight web UI
  • Integrated CLI tool
  • Prometheus and Grafana Monitoring modules
  • Slice Deployment and Configuration measurements
  • CI/CD procedures

Quick Start

Requirements

  • docker version >= 18.09.6
  • docker-compose version >= 1.17.1

Deploy

Deploy katana Slice Manager service. By default the deployment will pull the latest tag from the Docker hub registry. You can define a specific image tag by passing the -r option:

./start.sh [-p | --publish] [-g | --graphical-ui] [-r | --release <RELEASE_NUMBER>] [-u | --user <DOCKER_USER_ID>] [-m | --monitoring] [-h | --help]
  • -p | –publish: Expose Kafka end Swagger-ui using katana public IP
  • -g | –graphical-ui: Start katana Slice Manager service and the web UI module
  • -r | –release <RELEASE_NUMBER>: Specify the release version to be deployed (default is latest)
  • -u | –user <DOCKER_USER_ID>: Specify docker user
  • -m | –monitoring: Start Katana Slice Manager Slice Monitoring module
  • -h | –help: Print help message and quit

Logs

Get the logs of katana-mngr and katana-nbi modules:

katana logs [-l | --limit N]
  • -l | –limit: Show limited number of lines from the end of the logs (default “all”)

Stop

Stop Katana Slice Manager:

./stop.sh [-c | --clear] [-h | --help]
  • -c | –clear: Remove the container volumes
  • -h | –help: Print help message and quit

Uninstall

Remove katana docker images and commands

sudo ./uninstall.sh

Monitoring

To start Prometheus and Grafana Monitoring modules add the -m | --monitoring flag to ./start.sh binary. Prometheus is running at port 9090 and Grafana at port 3000. A new dashboard will be created on Grafana for every new slice that is created.

By default Grafana credentials are admin:admin. To change it, create the katana-grafana/.env file with the following environmental variables:

GF_SECURITY_ADMIN_USER=USER
GF_SECURITY_ADMIN_PASSWORD=PASSWORD

Build local docker images

Buid local docker images (instead of pulling them from the public registry):

sudo ./build.sh [-r | --release <RELEASE_NUMBER>] [-u | --user] [--dev]
  • -r | –release <RELEASE_NUMBER>: Specify the release version to be deployed (default is test)
  • -u | –user: Define the docker registry that will be used for image tagging purposes
  • –dev: Install the development environment

Development Environment

To create a development environment for katana on a Linux host, run:

./build.sh --dev

This will create hard links of the shared_utils directory of both katana-mngr and katana-nbi on the root directory ./dev_shared_utils. So any changes done on the existing files ./shared_utils directory will be reflected to katana-mngr/katana/shared_utils and katana-nbi/katana/shared_utils directories. To add new files that are created in the dev_shared_utils directory, run the command:

for dest in katana-{mngr,nbi}/katana/shared_utils/; do cp -al dev_shared_utils/{PATH_TO_NEW_FILE} $dest; done

It will also create a dev folder, where the example_config_files will be copied for a more direct access to testing configuration files

You can also check the Wiki “For Developers” page for more details.

CI/CD

Current implementation supports two pipelines, using the respective Jenkinsfile:

  • Multibranch Pipeline using the file Jenkinsfile:

    • Builds the docker images if there was a change on the code
    • Runns the Integration test
    • If the changes are occuring on the master branch, the built images will be packaged and uploaded to docker hub
    • Sends notification on Slack
  • Pipeline for tagging using the file jenkins/tag/Jenkinsfile. For every new tag:

    • Builds the docker images using as tag the git push tag
    • Runns the Integration test
    • The built images will be packaged and uploaded to docker hub
    • Sends notification on Slack

The two Jenkins jobs can be created using a seed DSL job and the script jenkins/Jenkins_Seed_DSL_Jobs/jobs

Documentation

comments powered by Disqus