Skip to content

milanlenco/cnf-nsm-1

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Seamless integration of CNFs with NSM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 88.6%
  • Shell 5.4%
  • Dockerfile 4.4%
  • Makefile 1.6%