Empowering Container-Based NFV Infrastructure with VPP

The presentation will show a reference design of containerized VNFs with VPP integration on Arm-based NFV infrastructure. Kubernetes is used as VIM to deploy Docker cluster for OPNFV platform. DPDK is used to accelerate containerized VNFs, meanwhile, the VPP vhost-user interfaces are used to create an L2 bridge and VxLAN overlay to connect between containers, which can be on the same host or different hosts. The design ensures high throughput performance for VNFs, as well as provides high scalability. The whole deployment process for container networking with VPP on Arm platform would be demoed. This presentation will be useful for an audience who want to understand the progress of NFV on Arm and who have the plan to deploy their containerized NFV solutions on Arm architecture.

1. Empowering container-based NFVi with VPP on Arm architecture • Trevor Tao Trevor.Tao@arm.com • Song Zhu Song.Zhu@arm.com • 25/06/2018 © 2018 Arm Limited

2.Agenda • Background • FD.io/VPP Enablement on Arm Platform • FD.io/VPP integrated with Container Networking Solution • Vhost-user CNI • Contiv/VPP netplugin • Future Plan and Use Cases 2 © 2018 Arm Limited

3.Background © 2018 Arm Limited

4.Background • Trends: Container-based platforms for OPNFV • Containerized OpenStack or Kubernetes as VIM • OPNFV Euphrates release delivered Kubernetes integration • OPNFV projects: Container4NFV, Auto, Clover… • Containerized VNFs with Data Plane Acceleration (SRIOV) • Acceleration for inter-container communication with VPP 4 © 2018 Arm Limited

5. Container-based NFV Architecture ONAP Container-based NFVi on Arm servers Micro Micro Micro Micro C-VNFM VNFM Service Service Service Service • Kubernetes as VIM • Flannel/SRIOV/vhost Kubernetes Kubernetes Kubernetes user CNI plugins Node Pod Pod Node Pod Pod Master integrated API SERVER OpenStack • SRIOV CNI: enable VF CNI CNI SCHEDULER passthrough CONTROLLER MANAGER CNI • Vhost-user CNI: enable DPDK/ vhost DPDK/ vhost VPP-based container SRIOV Flannel SRIOV Flannel Flannel networking user user Arm servers Ref: Container4NFV Architecture 5 © 2018 Arm Limited

6.FD.io/VPP Enablement on Arm Platform © 2018 Arm Limited

7. FD.io/VPP (Vector Packet Processing) • User Space software platform providing switch/router Netconf/Yang REST ... functionalities Management Agent • Aiming to run on commodity CPUs Packet Processing: VPP • Cisco developed it from 2002 and open sourced it in FD.io (Linux Foundation) on Feb 2016 • Leverage DPDK, XDP, netmap… as fast I/O • Batch packet processing - more efficient iCache utilization • Packet processing graph: modular, flexible, and extensible • Fast, scalable and deterministic • 14+ Mpps per core, tested to 1TB • Scalable FIB: supporting millions of entries • 0 packet drops, ~15µs latency Network I/O 7 © 2018 Arm Limited

8.A Simple Use Case for Performance Tuning • L2xc – forward all packets received VPP on Port0 to Port1 and vice versa l2xc / ip4 • IPv4 – route packets across IPv4 subnets DPDK Arm serves with Cortex A72 Processors Traffic Generator 8 © 2018 Arm Limited

9.Performance Benchmarking and Tuning 64B packet – single flow – single core Observations Further Directions • Most hotspots are memory accesses • RFC2544 testing • Software-defined data placement • Multicore scaling consumes processing cycles • PMU data • Unintentionally ordering memory • Cache stashing accesses can slow the system down • Compiler and C library versions • Compiler may fuse loops which alters • Other platforms memory access pattern from original program order 9 © 2018 Arm Limited

10.The path to on Arm Workload Scale Performance Analysis Software Upstream Hotspot & Bottleneck Libraries CSIT Identification OS Toolchain Hardware Processors FD.io Lab Tuning & Optimization I/O Accelerators 10 © 2018 Arm Limited

11.FD.io/VPP as Container Networking Solution © 2018 Arm Limited

12.Why Use VPP for Container Networking • Container networking requirements for NFV • High performance on packet processing • High scalability • High flexibility • What VPP provides • High performance • Abundant interfaces: ssvm, virtio/vhost, af_packet, tap, memif… • Abundant features for control and management 12 © 2018 Arm Limited

13.VPP for Container Networking with AF_Packet interface Kubernetes AF_Packet CNI? Container A VPP Container B Overlays(VXLAN) ACL/Policy User Space send() Layer 3(IPv4,6) recv() Pros: Layer 2(ether) Support Linux kernel FIFO FIFO stack which is required dpdk by most applications af_packet af_packet with performance higher than Flannel TCP TCP Cons: Performance is lower IP IP than vhost-user/memif FIFO FIFO (routing) Kernel (routing) interface Space device device device device 13 © 2018 Arm Limited

14.VPP for Container Networking with Virtio-Vhost Interface Host1 Host2 CONTAINER CONTAINER CONTAINER DPDK DPDK DPDK DPDK APP DPDK APP DPDK APP ETHDEV ETHDEV ETHDEV virtio-user virtio-user virtio-user vhost-user vhost-user vhost-user adapter adapter adapter virtio virtio virtio Data Path 1 Data Path 2 vhost vhost vhost VPP-DPDK VPP-DPDK VxLAN Overlay 14 © 2018 Arm Limited

15.Vhost-user CNI for Kubernetes K8S POD Containerized VNF DPDK APP /vhost-user-net-plugin/container- • Vhost-user server socket(interface) is eth0 id/container-id--net1 created in VPP veth virtio-user0 • After adding the vhost user CNI path, veth Docker0 unix the virtio-user interface is used as a socket Vhost-User virtual device of DPDK file Flannel Bridge CNI flanneld vhost-user0 eth0 VPP 15 © 2018 Arm Limited

16.Contiv/VPP Integration on Arm Platform Orchestration Engine(ONAP) Kubernetes Master KSR etcd Arm64 Server Arm64 Server Kubelet Kubelet CNI CNI Agent Agent DPDK APP CNI Agent Agent DPDK APP VNF VPP Agent CNI VNF VNF Ethdev VNF VNF VPP Agent VNF Ethdev Virtio/Vhost- Virtio/Vhost- AF_PACKET MEMIF MEMIF AF_PACKET MEMIF MEMIF user user VPP vSwitch Contiv/VPP Plugins VPP vSwitch Contiv/VPP Plugins (Ref: VPP, VNF Agent and Contiv integration) 16 © 2018 Arm Limited

17.What We Have Done • Enabled VPP release on Arm64 servers • VPP 17.10 running on Arm servers • VPP 18.04 released with AArch64 packaging for Ubuntu • Integrated VPP with Kubernetes for inter-container communication with virtio/vhost-user interfaces on Arm servers • Enhanced vhost-user CNI for Kubernetes with VPP • Enabling project Ligato and Contiv/VPP on Arm platforms • Enabling VPP-based use cases for OPNFV Container4NFV project 17 © 2018 Arm Limited

18.Use Cases and Future Plan © 2018 Arm Limited

19. ONAP/Kubernetes Nginx as CDN Use Case CONTAINER CONTAINER CONTAINER VNF Nginx FlowCache TCP stack Content Delivery Client Service Data Flow In Flannel/Calico VPP-DPDK VPP-DPDK VxLAN Overlay 19 © 2018 Arm Limited

20.Next Steps • Continue performance tuning on Arm servers • Performance benchmarking with NFVbench/VSperf on Arm servers • VPP integration (CI/CD enablement) in OPNFV Gambia release (Nov 2018) • Enable and integrate other VPP based CNI solutions (memif, …) • Enable more VPP-based use cases (microservices and SFC) for NFVi • Integrate VPP-based NFV solutions with orchestration software (ONAP) 20 © 2018 Arm Limited

21. Thank You Danke Merci 谢谢 ありがとう Gracias Kiitos 감사합니다 धन्यवाद ‫תודה‬ 21 © 2018 Arm Limited