Please visit the CNF Conformance deck for updated information about this program
© 2020 Cloud Native Computing Foundation
1
CNF Testbed
Dan Kohn
Executive Director, CNCF
Arpit Joshipura
General Manager, LF Networking
© 2020 Cloud Native Computing Foundation
2
TODAY THE LINUX FOUNDATION IS MUCH MORE THAN LINUX
We are helping global privacy and security through a program to encrypt the entire internet.
Security
Networking
We are creating ecosystems around networking to improve agility in the evolving software-defined datacenter.
Cloud
We are creating a portability layer for the cloud, driving de facto standards and developing the orchestration layer for all clouds.
Automotive
We are creating the platform for infotainment in the auto industry that can be expanded into instrument clusters and telematics systems.
Blockchain
We are creating a permanent, secure distributed ledger that makes it easier to create cost-efficient, decentralized business networks.
We are regularly adding projects; for the most up-to-date listing of all projects visit tlfprojects.org
Web
We are providing the application development framework for next generation web, mobile, serverless, and IoT applications.
© 2020 Cloud Native Computing Foundation
3
Cloud Native Computing Foundation
Incubating
Service Mesh
Storage
Service Discovery
Graduated
Package Management
Distributed Tracing API
Messaging
Distributed Tracing
Software Update Spec
Security
Networking API
Orchestration
Network Proxy
Monitoring
Registry
Key/Value Store
Policy
Container Runtime
Container Runtime
Logging
Remote Procedure Call
Key/Value
Store
Storage
Serverless
Container Security
© 2020 Cloud Native Computing Foundation
4
Platinum
Carrier
Members
Projects
Vision LFN software & projects provide platforms and building blocks for Network Infrastructure & Services across Service Providers, Cloud Providers, Enterprises, Vendors, System Integrators that enable rapid interoperability, deployment & adoption
Platinum
Vendor
Members
© 2020 Cloud Native Computing Foundation
5
Evolving from VNFs to CNFs
VNFs
ONAP Orchestrator
OpenStack or VMware
Bare Metal
Azure or Rackspace
Past
VNFs
OpenStack
Bare Metal
Kubernetes
Present
CNFs
ONAP�Orchestrator
Any Cloud
Bare Metal
Any Cloud
Future
VNFs
CNFs
ONAP�Orche-�strator
Kubernetes
KubeVirt/Virtlet
OSS/�BSS
© 2020 Cloud Native Computing Foundation
6
CNF Testbed
VNFs
CNFs
BARE-METAL�SERVER
BARE-METAL�SERVER
IDENTICAL HARDWARE
IDENTICAL NETWORKING CODE
OPENSTACK
VIRTUAL MACHINE
VM
#include
#include
KUBERNETES
CONTAINER
© 2020 Cloud Native Computing Foundation
7
Multiple Service Function Chains: Test Cases
OpenStack Node - Snake
Userspace-to-Kernel Dataplane (vSwitch)
VNF
VNF
VNF
VNF
VNF
VNF
vhost-user connections
vhost-user connections
vhost-user connections
Kubernetes Node - Pipeline
Userspace-to-Userspace Dataplane (vSwitch)
CNF
CNF
CNF
CNF
CNF
CNF
memif connections
memif connections
memif connections
Kubernetes Node - Snake
Userspace-to-Userspace Dataplane (vSwitch)
CNF
CNF
CNF
CNF
CNF
CNF
memif connections
memif connections
memif connections
© 2020 Cloud Native Computing Foundation
8
Summary of Results: Snake and Pipeline Case
Throughput of Service Chains
Millions of packets per second in 3 chain, 2 NF configuration
(bigger is better)
© 2020 Cloud Native Computing Foundation
9
Testbed stats comparison
| OpenStack | Kubernetes |
Infra deploy time | ~65 minutes | 16 minutes* |
NF deploy time | 3 minutes, 39 seconds | < 30 seconds |
Idle state RAM | 17.8% | 5.7% |
Idle state CPU | 7.2% | 0.1% |
Runtime NF RAM | 17.9% | 10.7% |
Runtime NF CPU | 28.8% | 39.1% |
Snake case PPS | 3.97 million PPS | 4.93 million PPS |
Snake case latency | ~2.1 milliseconds | ~2.1 milliseconds |
Pipeline case PPS | N/A | 7.04 million PPS |
* Will go down when we eliminate a currently-required reboot
© 2020 Cloud Native Computing Foundation
10
How Can You Engage?
© 2020 Cloud Native Computing Foundation
11
Telecom User Group (TUG)
© 2020 Cloud Native Computing Foundation
12
KubeCon + CloudNativeCon
© 2020 Cloud Native Computing Foundation
13
KubeCon + CloudNativeCon Attendance
© 2020 Cloud Native Computing Foundation
14
Appendix
© 2020 Cloud Native Computing Foundation
15
Combating FUD Around MicroVMs
© 2020 Cloud Native Computing Foundation
16
Network Labs (pets) vs. Repeatable Testbed (cattle)
© 2020 Cloud Native Computing Foundation
17
The Importance of a Repeatable Testbed
© 2020 Cloud Native Computing Foundation
18
Three Major Benefits
© 2020 Cloud Native Computing Foundation
19
Server Specifications: compute/worker nodes
Packet’s M2.xlarge (currently available)
Packet’s N2.xlarge (available March 2019)
© 2020 Cloud Native Computing Foundation
20
Why This Was a Challenging Project: OpenStack
© 2020 Cloud Native Computing Foundation
21
Why This Was a Challenging Project: Kubernetes
© 2020 Cloud Native Computing Foundation
22
The challenge of transitioning VNFs to CNFs
© 2020 Cloud Native Computing Foundation
23
Areas for More Discussion
© 2020 Cloud Native Computing Foundation
24
A Service Function Chain: Snake Case
OpenStack Node
Kubernetes Node
Userspace-to-Kernel Dataplane (vSwitch)
Userspace-to-Userspace Dataplane (vSwitch)
VNF
VNF
VNF
CNF
CNF
CNF
CNF
VNF
memif connections
vhost-user connections
© 2020 Cloud Native Computing Foundation
25
A Service Function Chain: Pipeline Case
OpenStack Node
Kubernetes Node
Userspace-to-Kernel Dataplane (vSwitch)
Userspace-to-Userspace Dataplane (vSwitch)
VNF
VNF
VNF
CNF
CNF
CNF
CNF
VNF
memif connections
vhost-user connections
© 2020 Cloud Native Computing Foundation
26
Multiple Service Function Chains: Snake Case
OpenStack Node
Kubernetes Node
Userspace-to-Kernel Dataplane (vSwitch)
Userspace-to-Userspace Dataplane (vSwitch)
VNF
VNF
VNF
VNF
VNF
VNF
CNF
CNF
CNF
CNF
CNF
CNF
vhost-user connections
vhost-user connections
vhost-user connections
memif connections
memif connections
memif connections
© 2020 Cloud Native Computing Foundation
27
Multiple Service Function Chains: Pipeline Case
OpenStack Node
Kubernetes Node
Userspace-to-Kernel Dataplane (vSwitch)
Userspace-to-Userspace Dataplane (vSwitch)
VNF
VNF
VNF
VNF
VNF
VNF
CNF
CNF
CNF
CNF
CNF
CNF
vhost-user connections
vhost-user connections
vhost-user connections
memif connections
memif connections
memif connections
© 2020 Cloud Native Computing Foundation
28
Network Architecture Evolution
© 2020 Cloud Native Computing Foundation
29
Network Architecture 1.0
© 2020 Cloud Native Computing Foundation
30
Network Architecture Evolution
© 2020 Cloud Native Computing Foundation
31
Network Architecture 2.0
© 2020 Cloud Native Computing Foundation
32
Network Architecture Evolution
© 2020 Cloud Native Computing Foundation
33
Network Architecture 3.0
(hardware is the same as 2.0)
© 2020 Cloud Native Computing Foundation
34
Evolving from VNFs to CNFs (Past)
Past
VNFs
ONAP Orchestrator
OpenStack or VMware
Bare Metal
Azure or Rackspace
© 2020 Cloud Native Computing Foundation
35
Evolving from VNFs to CNFs (Present)
Present
VNFs
OpenStack
Bare Metal
Kubernetes
CNFs
ONAP�Orchestrator
Any Cloud
© 2020 Cloud Native Computing Foundation
36
Evolving from VNFs to CNFs (Future)
Future
Bare Metal
Any Cloud
VNFs
CNFs
ONAP�Orchestrator
Kubernetes
KubeVirt/Virtlet
OSS/�BSS
© 2020 Cloud Native Computing Foundation
37
Technical Appendix
© 2020 Cloud Native Computing Foundation
38
CNF Testbed Deployment stages
Common steps | |
Clone https://github.com/cncf/cnf-testbed and install any pre-requites listed in the README | |
Create configuration with Packet API, number of nodes, etc (k8s example) | |
OpenStack | Kubernetes |
Terraform starts Ansible which pre-configures the Packet machines (using the openstack infrastructure playbook) including installing network drivers, optimizing grub and rebooting the compute nodes. | Cloud-init bootstraps the Kubernetes cluster on the Packet nodes. � (Note: next release will use kubeadm for bootstrapping k8s) |
Ansible then runs the openstack install playbook, which configures the Packet switch and VLANs and then deploys OpenStack using Chef to the Packet nodes | The k8s vpp vswitch installer script runs the Ansible k8s vpp vswitch playbook which configures the Packet switch and VLANs |
Ansible then installs & configures VPP as a vSwitch using the Openstack vpp-networking plugin to all compute nodes in the cluster | Ansible then optimizes the system configuration, installs & configures the VPP vSwitch and reboots the worker nodes |
© 2020 Cloud Native Computing Foundation
39
CNF vs. VNF Performance Comparison
The comparison test bed includes multi-node HA clusters for Kubernetes and OpenStack running chained dataplane CNF and VNFs for performance comparison testing. All software is open source. The entire test bed and comparison results can be recreated by following step-by-step documentation on the CLI with a Packet.net account.
Each test bed will consist of 6 physical machines for each platform - OpenStack and Kubernetes.
Provisioning and deployment of K8s and OpenStack clusters includes use of Terraform, Ansible, and Kitchen/Chef. Network functions primarily use VPP and performance testing is done with NFVbench with TRex as the traffic generator.
© 2020 Cloud Native Computing Foundation
40
OpenStack Cluster + Traffic generator
Controller 1
Controller 2
Compute 1
Compute 2
Compute 3
Provider Switch
Traffic
generator
Packet layer 2 network
© 2020 Cloud Native Computing Foundation
41
Kubernetes Cluster + Traffic generator
Master 1
Master 2
Worker 1
Worker 2
Worker 3
Provider Switch
Traffic
generator
Packet layer 2 network
© 2020 Cloud Native Computing Foundation
42
Vhost-user vs memif�Stay in memory & stay in user space!
K8s Node (Physical Host)
Container Runtime
QEMU Layer
virtio
VNF
CNF
User Space
vNIC1
Kernel Space
vNIC2
Kernel Space
User Space
Kernel Space
User Space
vhost-user
P NIC1
P NIC2
P NIC1
P NIC2
VPP vSwitch
DPDK
memif1
memif2
VPP vSwitch
DPDK
OpenStack node
K8s node
© 2020 Cloud Native Computing Foundation
43
CNF Testbed Software components
Kernel 4.4.0-134
DPDK
memif
VPP vSwitch
QEMU/KVM
VPP Neutron Agent
VPP IP Router
Kernel 4.4.0-134
DPDK
memif
VPP vSwitch
K8s v1.12.2
VPP IP Router
VPP IP Router
Ubuntu 18.04 LTS
Ubuntu 18.04 LTS
VPP IP Router
VPP IP Router
VPP IP Router
vhost-user
Kernel 4.4.0-134
Docker
Ubuntu 18.04 LTS
Kernel 4.4.0-134
K8s v1.12.2
Kernel 4.4.0-134
OS “rocky” services�Neutron, API
etcd
OpenStack compute
OpenStack controller
Kubernetes worker
Kubernetes master
Traffic generator
Packet API
© 2020 Cloud Native Computing Foundation
44
What about inter-node connectivity?
Node #1
Dataplane (vswitch)
Node #2
Dataplane (vswitch)
Node #3
Dataplane (vswitch)
Node #N
Dataplane (vswitch)
© 2020 Cloud Native Computing Foundation
45
vCPE Use Case
More details on ONAP wiki
© 2020 Cloud Native Computing Foundation
46
Project links
© 2020 Cloud Native Computing Foundation
47