cnf-nsm

module
v0.0.0-...-d5eb696 Latest Latest
Warning

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

Go to latest
Published: Nov 9, 2021 License: Apache-2.0

README

This repository is archived. No worries, we're still here.

 █████  ██████   ██████ ██   ██ ██ ██    ██ ███████ ██████ 
██   ██ ██   ██ ██      ██   ██ ██ ██    ██ ██      ██   ██
███████ ██████  ██      ███████ ██ ██    ██ █████   ██   ██
██   ██ ██   ██ ██      ██   ██ ██  ██  ██  ██      ██   ██
██   ██ ██   ██  ██████ ██   ██ ██   ████   ███████ ██████                        








Seamless integration of CNFs with NSM

NSM Intro

Recently, Network Service Mesh (NSM) has been drawing lot's of attention in the area of network function virtualization (NFV). Inspired by Istio, Network Service Mesh maps the concept of a Service Mesh to L2/L3 payloads. It runs on top of (any) CNI and builds additional connections between Kubernetes Pods in the run-time based on Network Service definition deployed via CRD. Unlike Contiv-VPP, for example, NSM is mostly controlled from within applications through provided SDK. This approach has its pros and cons. On one hand it gives programmers more control over the interactions between their applications and NSM, on the other hand it requires deeper understanding of the framework to get things right. Another difference is that NSM intentionally offers only the minimalistic point-to-point connections between pods (or clients and endpoints in their terminology) and everything that can be implemented via CNFs is left out of the framework. Even things as basic as connecting service chain with external physical interfaces of attaching multiple services to a common L2/L3 network is not supported and instead left to the users (programmers) of NSM to implement.

Integration of NSM with Ligato

In Pantheon we see the potential of NSM and decided to tackle the main drawbacks of the framework. For example, we have developed a new plugin for ligato-based control-plane agents that allows seamless integration of CNFs with NSM. Instead of having to use the low-level and imperative NSM SDK, the users (not necessary SW developers) can use the standard northbound (NB) protobuf API to define the connections between their applications and other network services in a declarative form. The plugin then uses NSM SDK behind the scenes to open the connections and creates corresponding interfaces that the CNF is then ready to use. The CNF components therefore do not have to care about how the interfaces were created, whether it was by Contiv, via NSM SDK, or in some other way, and can simply use logical interface names for referencing. This approach allows to decouple the implementation of the network function provided by a CNF from the service networking/chaining that surrounds it.

The plugin for ligato-NSM integration is shipped both separately, ready for import into existing ligato-based agents, and also as a part of our NSM-Agent-VPP and NSM-Agent-Linux. The former extends the vanilla ligato VPP-Agent with the NSM support while the latter also adds NSM support but omits all the VPP-related plugins when only Linux networking needs to be managed.

Furthermore, since most of the common network features are already provided by ligato VPP-Agent, it is often unnecessary to do any additional programming work whatsoever to develop a new CNF. With ligato framework and tools developed at Pantheon, achieving a desired network function is often a matter of defining network configuration in a declarative way inside one or more YAML files deployed as Kubernetes CRD instances. For examples of ligato-based CNF deployments with NSM networking, please refer to our repository with CNF examples.

Finally, included in the repository is also a controller for K8s CRD defined to allow deploying network configuration for ligato-based CNFs like any other Kubernetes resource defined inside YAML-formatted files. Usage examples can also be found in the repository with CNF examples.

Directories

Path Synopsis
cmd
plugins
crdplugin/pkg/client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
crdplugin/pkg/client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
crdplugin/pkg/client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
crdplugin/pkg/client/clientset/versioned/typed/pantheontech/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
crdplugin/pkg/client/clientset/versioned/typed/pantheontech/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
nsmplugin/descriptor
* Copyright (c) 2020 PANTHEON.tech s.r.o.
* Copyright (c) 2020 PANTHEON.tech s.r.o.
proto
nsm

Jump to

Keyboard shortcuts

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