项目作者: ligato

项目描述 :
服务功能链(SFC)控制器,用于拼接虚拟和物理网络
高级语言: Go
项目地址: git://github.com/ligato/sfc-controller.git
创建时间: 2017-10-04T08:27:39Z
项目社区:https://github.com/ligato/sfc-controller

开源协议:Apache License 2.0

下载


SFC Controller

Build Status
Coverage Status
Go Report Card
GoDoc
GitHub license


DEPRECATION NOTICE :warning:
This repository is deprecated and will be archived in the near future.

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

The controller is responsible for supporting connectivity between hosts, between
hosts and external routers, and between vnfs. The traffic can be l2, or l3.
The inter vnf traffic can be intra-host, or inter-host.

See here for the current set of supported topologies.
See the ContivVPP for a description of its policies.

Quickstart

Note: For ARM64 please go here..

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 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 Etcd
    .

  2. Run the controller in a Docker image:

    1. docker pull ligato/sfc-controller
    2. docker run -it --name sfc-contoller --rm ligato/sfc-controller

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.