ligato-a platform for development of cloud-native vnfs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u }...

28
Ligato A Platform for Development of Cloud-Native VNFs

Upload: others

Post on 30-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

LigatoA Platform for Development of Cloud-Native VNFs

Page 2: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

The way Applications are developed & deployed… has changed…..

Page 3: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Microservices & Containers have changed many things…

• Microservices allow you to split an application into many modular pieces, the network is how you stitch the pieces back together.

• The interconnection of the pieces results in a more complex application network which consumes lots of resources

• The performance of the cloud native network is crucial to the behavior of the overall application.

• Applications are being developed and deployed very differently today.

Pod

Pod

PodPod

Pod

Pod

Pod

It’s crucial we get ”Container Networking” right! Lets not get “Openstacked”

Page 4: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Microservices & Containers have changed many things…

• Microservices allow you to split an application into many modular pieces, the network is how you stitch the pieces back together.

• The interconnection of the pieces results in a more complex application network which consumes lots of resources

• The performance of the cloud native network is crucial to the behavior of the overall application.

• Applications are being developed and deployed very differently today.

Pod

Pod

PodPod

Pod

Pod

Pod

It’s crucial we get ”Container Networking” right! Lets not get “Openstacked”

Traffic

Traffic

Traffic

Pod

Agent

VPP

Pod

Agent

VPP

Pod

Agent

VPP

Pod

Agent

VPP

Pod

Agent

VPP

Pod

Agent

VPP

Pod

Agent

VPP

Data Plane Microservices

Page 5: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Solution #1Move Cloud Native Networking out of the Kernel to Userspace

Container Networking moving from Kernel to Userspace• Userspace enables rapid upgradability, highly available (doesn't

bring down node), no system call overhead, no dependency on linux kernel networking community for features, higher performance and scale

• FD.io (dataplane), DPDK (network), SPDK (Storage) are examples

• Cloud Native apps are all connected by the network – lots of network end points to be managed, userspace offers lower overhead and higher performance

• Meltdown/Spectre bugs add a new tax for kernel networking

Page 6: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Solution #1Kubernetes & Contiv-VPP

Contiv-VPP• Kubernetes assumes seamless connectivity between pods, wherever it decides to

place them. A networking plugin is needed to abstract the network • Contiv is a networking plugin for Kubernetes that:

• Allocates IP addresses to Pods (IPAM)• Programs the underlying infrastructure it uses (Linux TCP/IP stack, OVS, VPP, …) to connect the Pods to

other Pods in the cluster and/or to the external world.• Implements K8s network policies that define which pods can talk to each other. • Implements K8s services; a service exposes one or more (physical) service instances implemented as

K8s pods to the other pods in the cluster and/or to external clients as a virtual instance (e.g. as a virtual “service” IP address).

• Contiv is a user-space based, high-performance, high-density networking plugin for Kubernetes - leveraging FD.io/VPP as the industry’s highest performance data plane

Page 7: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Kubelet

CNI

tapv2/veth

Contiv-VPP vswitch

Agent

PodPodPod

VPP …

K8s MasterK8s Master

IPv4/IPv6/SRv6 Network

App

Kernel Host stack

Legacy AppsK8s State Reflector

Contiv-VPPEtcd

Kubelet

CNI

tapv2/veth

Contiv-VPP vswitch

Agent

PodPodPod

VPP

App

Kernel Host stack

High PerformanceApps

PodPodPod

Envoy Sidecar App

VPP TCPStack

PodPodPod

High PerformanceApps

Envoy SidecarApp

VPP TCPStack

memif

Legacy Apps

PodPodPod

VNF

memif

Cloud-Native VNFs

PodPodPod

VNF

Cloud-Native VNFs

K8s policy & state distribution

Contiv-VPP Architecture• Can deliver complete container networking solution entirely

from userspace

• Replace all eth/kernel interfaces with memif/userspaceinterfaces.

• Apps can add VCL library for Higher Performance (bypass Kernel host stack and use VPP TCP stack)

• Legacy apps can still use the kernel host stack in the same architecture

Page 8: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

BVI

Data Plane Network

Contiv-VPP RenderingVXLAN Overlay

Node 1

Node 2

Node 3

BD

BD

BDVXLAN Mesh Single VNI

BVI

App1Kernel App2

Cloud (Overlay)Network

BVI

App1Kernel App2

App1Kernel App2tap-v2

Page 9: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Creating BD with BVICreate BD

Create VXLAN Tunnel(one per rmt node)

Create BVI

Page 10: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

• NFV-specific policy APIs (e.g. QoS, placement considering network resources)• Networking:

• HTTP or NAT-based load balancing isn‘t suitable for NFV use-cases• No support for high-speed wiring of NFs:

• To the outside world• To application containers• Between NFV containers• Creation of Service Function Chains (mixed physical and virtual – virtual a mix of VM and container)

• Management/Control: • Containerised NFs not really in the data plane (except for the vSwitch)• No support for cloud-native, high-performance NFs

• Forwarding: • Kernel used for forwarding – not sufficiently performance orientated (except for Contiv-VPP!)

Solution #2Cloud-Native VNFs

What Container-Networking Lacks for NFV Use-Cases:

Page 11: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Kubelet

CNICRI

tapv2/veth

Contiv-VPP vswitch

Agent

PodPodPodPodPod

Pod

VPP

IPv4/IPv6/SRv6 Network

High PerformanceApps

Istio Sidecar App

VPP TCPStack

App

PodPodPod

VNF

Kernel Host stack

memif

Legacy Apps Cloud-Native VNFs

DefineTopology

• Kubernetes does not provide a way to stitch micro-services together today

• Ligato allows you to wire the data plane together into a service topology

• Network functions can now become part of the service topology

Contiv-VPP EtcdContiv-VPP Etcd

K8s MasterK8s Master

Contiv-VPPNetmaster

LigatoController

DefineServices

DefineTopology

Solution #2Cloud-Native VNFs

Page 12: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Host

VPP Vswitch

CNFVPP

10.1.0.127

CNF1

VPP

CNF2

VPP

… Server

Vswitch VPP

CNFVPP

CNFVPP

CNF3

VPP

NF1NF1 NF2NF2 NF3NF3

Overlay Tunnel

Logical Representation

Physical Representation

Ingress NetworkIngress Classifier

Egress NetworkEgress Classifier

TopologyTopologyPlacement

(K8s)Placement

(K8s) Rendering

IngressRouterIngressRouter

EgressRouterEgressRouter

Overlay Tunnel Overlay Tunnel

Ingress Classifier Egress Classifier

Service Function Chaining with Cloud-Native VNFs

Page 13: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

• In VM case have to copy via the kernel• With containers we use a shared memory interface (memif)

• Key is to chain between NFs on the same server• Containers are “cheap” so can have dedicated chain per tenant service

Accelerating NFV Using Containers

vSwitch

VNF1 VNF2

Virtual Machines

socket socket

socket

vSwitch

CNF1 CNF2

memif memif

memif

Containers

Page 14: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Intra-Server RenderingPoint to Point – 2 options based on policy

vSwitch

CNF1 CNF2

Direct East/West Memif

CNF1 CNF2

Memif via vSwitch

memif

memif

policy

Page 15: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Data Plane Network

VXLAN RenderingPoint to Point

vSwitch

CNF1

Node 1

vSwitch

CNF2

Node 2

memif

policy

memif

policyVXLAN Tunnel

Dedicated VNI

Page 16: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Creating VXLAN xConnectCreate memif

Create VXLAN Tunnel

Create xConnect

Page 17: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Data Plane Network 1

Data Plane Network 2

Physical Device

Physical Device

Physical Device

Physical Device…

Cloud tools & services

Cloud-Native VNF

Cloud-Native VNF

Cloud-Native VNF

Cloud-Native VNF

Cloud-Native VNF

Kubernetes

ContivLigatoCloud

Cloud-Native Application

Cloud-Native Application

Cloud-Native Application

Cloud-Native Application

Cloud (Overlay) Network

A VNF Cloud

Page 18: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Host

VPP vswitch

CN AppCN App

CN App

Host

VPP vswitch

CN-VNFCN-VNFCN-VNF

Host

VPP vswitch

CN AppCN App

CN AppHost

VPP vswitch

CN AppCN App

CN App

Host

VPP vswitch

CN-VNFCN-VNFCN-VNF

Host

VPP vswitch

CN-VNFCN-VNFCN-VNF Cloud

Network

KubernetesKubernetes

Cloud tools & services

Cloud-Native Control Plane

Cloud-Native Data PlaneVPP VPP

LIGATO Controller

CPECPE

CPE CPECPE

CPE CPE

A VNF Cloud: Data and Control Planes

Page 19: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Etcd

Ligato Agent

VPP

VPP-Agent

Etcd Prometheus Logging DB/ResyncHTTP gRPC Health REST

L2 L3 L4 ACL Interface IPSec Linux

Contiv-VPP

Service Policy Contiv-core Stats

GoVPP

KSRSFC Controller

Ligato and Kubernetes Control and Data Planes

Page 20: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Kubelet

CNI

tapv2/veth

Contiv-VPP vswitch

Agent

VPP …

K8s MasterK8s Master

IPv4/IPv6/SRv6 Network

Kernel Host stack

K8s State Reflector

Contiv-VPPEtcd

Kubelet

CNI

tapv2/veth

Contiv-VPP vswitch

Agent

VPP

Kernel Host stack

High PerformanceApps

PodPodPod

EnvoySidecar App

VPP TCPStack

PodPodPod

High PerformanceApps

Envoy SidecarApp

VPP TCPStack

memifmemifK8s state distribution

(policy, services, pods, nodes,

VNFs & K8s Networking

PodPodPod

VNF

Cloud-Native VNFs

PodPodPod

App

Legacy Apps

PodPodPod

App

Legacy Apps

PodPodPod

VNF

Cloud-Native VNFs

IPv4/IPv6/SRv6 Network

VXLAN, SRv6, GRE, MPLS, …

VXLAN, SRv6, GRE, MPLS, …

K8s VRFVNF VRFK8s VRF VNF VRF

Page 21: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

K8s MasterK8s Master

KSR

Contiv-VPPEtcd

ONS Demo

CNI

tapv2

Contiv-VPP vswitch

Hoststack

memif

Pod

App

Pod

App

VNF Pod

AgentAgentVPPVPP

memif

VPP

VNF Pod

AgentAgentVPPVPP

Kubelet

Agent

CNI

tapv2

Contiv-VPP vswitch

Hoststack

memif

Pod

App

Pod

App

VNF Pod

AgentAgentVPPVPP

memif

VPP

VNF Pod

AgentAgentVPPVPP

Kubelet

Agent

SFC

NodesPods

SFC CRD

NodesNamespaces

PodsServicesPolicies

State distribution:• K8s• L3-L4 Service Mesh

management

K8s Vxlan Overlay

VNF1 Overlay

VNF2 Overlay

x-connect x-connect

Page 22: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Kubelet

CNICRI

tapv2/veth

Contiv-VPP vswitch

Agent

PodPodPodPodPod

Pod

VPP

Contiv-VPP EtcdContiv-VPP Etcd

K8s MasterK8s Master

IPv4/IPv6/SRv6 Network

Putting it All Together…

High PerformanceService Mesh Apps

Envoy Sidecar App

VPP TCPStack

App

PodPod

Kernel Host stackmemif

Legacy Apps Cloud-Native VNFs

Contiv-VPPNetmaster

Kubelet

CNICRI

tapv2/veth

Contiv-VPP vswitch

Agent

PodPodPod PodPod

Pod

VPP

High PerformanceService Mesh Apps

Envoy SidecarApp

VPP TCPStack

App

PodPod

Kernel Host stackmemif

Legacy AppsCloud-Native VNFs

IstioIstio

LigatoController

VNF Pod

AgentAgentVPPVPP

VNF Pod

AgentAgentVPPVPP

Page 23: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Ligato on Github

Cisco Confidential

Page 24: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

CN-Infra

Core

PluginLifecycle

ManagementProbes

Status

Kafka

Etcd

Redis

Cassandra

Logrus

LogManager

DBRPC Messaging Logs Health

App Plugin

LifecycleSPI

App PluginApp Plugin

LifecycleSPI

API API API API API

Ligato CN-Infra: a CNF Development Platform www.github.com/ligato/cn-infra

CN-InfraPlugins

AppPlugins

Health Monitor(e.g. K8s)

Log Aggregator(e.g. Logstash)

KafkaKV Data Store(Etcd, Cassandra, Redis)

App clients

Cisco Confidential

Page 25: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

AppPlugins

LinuxVETH

L2L3ACLNet Net Interfaces

GoVpp

CN-Infra

Core

PluginLifecycle

Management

Probes

Status

Kafka

Etcd

Redis

Cassandra

Logrus

LogManager

DBRPC Messaging Logs Health

App Plugin

LifecycleSPI

App PluginAgent App/Extension Plugin

LifecycleSPI

API API

API API API

Ligato VPP Agent: a CNF Management Agentwww.github.com/ligato/vpp-agent

API

API

LifecycleSPI

CN-InfraPlugins

VPP-AgentPlugins

Health Monitor(e.g. K8s)

Log Aggregator(e.g. Logstash)

KafkaKV Data Store(Etcd, Cassandra, Redis)

App clients

VPP

Cisco Confidential

Page 26: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

LigatoController

LinuxVETH

L2L3ACLNet Net Interfaces

CN-Infra

Core

PluginLifecycle

Management

Probes

Status

Kafka

Etcd

Redis

Cassandra

Logrus

LogManager

DBRPC Messaging Logs Health

LifecycleSPI

Controller App

LifecycleSPI

API API

API API API

Ligato Controller: a CNF Deployment Platformwww.github.com/ligato/sfc-controller

API

API

LifecycleSPI

CN-InfraPlugins

VPP-AgentPlugins

Health Monitor(e.g. K8s)

Log Aggregator(e.g. Logstash)

KafkaKV Data Store(Etcd, Cassandra, Redis)

App clients

API

Cisco Confidential

Page 27: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Backup

Page 28: Ligato-A Platform for Development of Cloud-Native VNFs · v 0dvwhu.65 &rqwly 933 (wfg ke^ u } &1, wdsy &rqwly 933 yvzlwfk, } l phpli 3rg 3rg 91) 3rg p v 933 phpli 933 91) 3rg

Network Micro-Service Use Case:Service Function Chaining with Cloud-Native NFs

Network

ApplicationContainer

ApplicationContainer

Contiv Policy

Network

ApplicationContainer

ApplicationContainerCNF1 CNFn…

Network

ApplicationContainer

Policy

CNF2 CNFn…

Network Policy

CNF2 CNFn-1…

Network

ApplicationContainer

ApplicationContainer

Policy

CNF1 CNFn…

Same Server

Server Server

PolicyPolicy

PolicyPolicyPolicy

Policy