sfc-controller

command module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2017 License: Apache-2.0 Imports: 12 Imported by: 0

README

SFC Controller

Build Status Coverage Status Go Report Card GoDoc GitHub license

Please note that the content of this repository is currently WORK IN PROGRESS.

The SFC Controller is a Golang implementation of an orchestration module for providing data-plane connectivity for cloud native containers. The containers may be Ligato VPP-agent enabled containers which in turn use VPP based cloud-native Virtual Network Functions (VNFs) or the containers may be application containers communicating via veth interfaces. The VPP Agent is built on top of the CN-Infra platform for developing cloud-native Virtual Network Functions (VNFs).

The SFC Controller supports a wide variety of topologies. The controller can effect connectivity for containers on-host, inter-host and host to external router.

Architecture

The SFC Controller system architecture is shown in the following figure:

SFC System

The architecture has the following components:

  • SFC Controller: can be deployed in its own container and is responsible for managing the data plane connectivity for a set of hosts, external routers and, of course, the containers. A model of the hosts, external routers, and chains or sets of containers is given to the SFC controller either through a yaml config file or via REST api calls.
  • etcd: the communication of the configuration is done via ETCD. Each VPP agent enabled container in the system is responsible for reading its branch of the ETCD tree. For non-VPP containers, the VSwitch VPP will perform the programming of the veth interfaces. All of the configuration in the ETCD tree for data-plane connectivity is written to by the SFC controller.
  • VSwitch VPP container: there is one of these per host. This is a special container that the SFC Controller uses to wire the containers together, and to wire the containers to external routers and other SFC Controller controlled hosts.
  • VPP agent containers: these containers are VPP enabled and have a Ligato VPP-agent which controls the VPP in the container. VNF's are developed as extensions to VPP.
  • non-VPP containers: these are application containers which communicate with other containers or externally via veth interfaces. The VSwitch VPP creates the veth interfaces.

SFC Topologies

The SFC Controller supports the following topologies:

SFC Topolgies

Plugins

The SFC controller is written with a plugin architecture so that functionality can be extended.

The set of plugins in the SFC Controller is as follows:

  • l2_driver - l2 bridge, vxlan tunnel plugin (wire inter-host, and host-external router)
  • CN-Infra core - lifecycle management of plugins (loading, initialization, unloading)

Tools

The SFC Controller repository also contains tools for building and troubleshooting of VNFs based on the VPP Agent:

  • sfcdump - a CLI tool that shows a raw dump of a set of sfc-controller datastrcutures and VPP agents

Quickstart

For a quick start with the sfc-controller, you can use pre-built Docker images with the Agent and VPP on Dockerhub.

  1. Start ETCD and Kafka on your host (e.g. in Docker as described here). Note: The SFC Controller in the pre-built Docker image will not start if it can't connect to both Etcd and Kafka. Note: also start the VSwitch VPP. See the Quickstart VSwitch VPP

  2. Run VPP + VPP Agent in a Docker image:

docker pull ligato/sfc-controller
docker run -it --name sfc-contoller --rm ligato/sfc-controller
  1. Dump the the SFC Controller ETCD tree using sfcdump:
docker exec -it sfc-controller sfcdump

Documentation

GoDoc can be browsed online.

Next Steps

Read the README for the Development Docker Image for more details.

Deployment:

K8s integration

Contribution:

If you are interested in contributing, please see the contribution guidelines.

Documentation

Overview

Main file for the SFC controller. It loads all the plugins.

Directories

Path Synopsis
cmd
sfcdump
sfc is a command-line tool for monitoring and configuring VPP Agents.
sfc is a command-line tool for monitoring and configuring VPP Agents.
sfcdump/sfcdump
Package sfcdump is a command-line tool for dumping the ETCD keys for each VPP label.
Package sfcdump is a command-line tool for dumping the ETCD keys for each VPP label.
controller
cnpdriver
The IPV6 L3 CNP implemetation ...
The IPV6 L3 CNP implemetation ...
core
Package core: The reconcile process "resyncs" the configuration stored in the database, and the provided config yaml file (if there is one).
Package core: The reconcile process "resyncs" the configuration stored in the database, and the provided config yaml file (if there is one).
extentitydriver
This external entity driver is used to configure external routers.
This external entity driver is used to configure external routers.
extentitydriver/iosxecfg
Package iosxecfg provides a configuration interface to the IOS XE Router using the high-level protobuf API.
Package iosxecfg provides a configuration interface to the IOS XE Router using the high-level protobuf API.
extentitydriver/iosxecfg/model/iosxe
Package iosxe is a generated protocol buffer package.
Package iosxe is a generated protocol buffer package.
model/controller
Package controller is a generated protocol buffer package.
Package controller is a generated protocol buffer package.
utils/vty
Package vty provides the ability to execute remote commands (e.g.
Package vty provides the ability to execute remote commands (e.g.
utils/vty/ssh
Package ssh provides the API for connecting to a SSH node.
Package ssh provides the API for connecting to a SSH node.
plugins
vnfdriver
Package vnfdriver is a SFC plugin that controls generic VPP-based VNF functionality.
Package vnfdriver is a SFC plugin that controls generic VPP-based VNF functionality.
vnfdriver/model/vnf
Package vnf is a generated protocol buffer package.
Package vnf is a generated protocol buffer package.
Package tests contains SRC Controller automated tests.
Package tests contains SRC Controller automated tests.
go
Package go contains automated tests written in Golang.
Package go contains automated tests written in Golang.
go/itest
Package itest contains automated tests that integrate multiple plugins and mocks external systems (ETCD...)
Package itest contains automated tests that integrate multiple plugins and mocks external systems (ETCD...)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL