High Speed Solutions in VPP to Accelerate Container Networking: - Howto and Deep Dive Tan,Jianfeng Xu,qian.

Slides:



Advertisements
Similar presentations
Multi-granular, multi-purpose and multi-Gb/s monitoring on off-the-shelf systems TELE9752 Group 3.
Advertisements

Keith Wiles DPACC vNF Overview and Proposed methods Keith Wiles – v0.5.
Accelerating the Path to the Guest
VIA and Its Extension To TCP/IP Network Yingping Lu Based on Paper “Queue Pair IP, …” by Philip Buonadonna.
Contiki A Lightweight and Flexible Operating System for Tiny Networked Sensors Presented by: Jeremy Schiff.
G Robert Grimm New York University Disco.
Embedded Real-time Systems The Linux kernel. The Operating System Kernel Resident in memory, privileged mode System calls offer general purpose services.
OPERATING SYSTEMS Introduction
Embedded Transport Acceleration Intel Xeon Processor as a Packet Processing Engine Abhishek Mitra Professor: Dr. Bhuyan.
Software Routers: NetMap Hakim Weatherspoon Assistant Professor, Dept of Computer Science CS 5413: High Performance Systems and Networking October 8, 2014.
Router Architectures An overview of router architectures.
Hosting Virtual Networks on Commodity Hardware VINI Summer Camp.
Livio Soares, Michael Stumm University of Toronto
© 2010 IBM Corporation Plugging the Hypervisor Abstraction Leaks Caused by Virtual Networking Alex Landau, David Hadas, Muli Ben-Yehuda IBM Research –
Srihari Makineni & Ravi Iyer Communications Technology Lab
Optimised Memory Transfer & Flow Control for High Speed Networks - Codito Technologies Pvt. Ltd. - D Y Patil College of Engineering.
Queues, Pipes and Sockets. QUEUE A structure with a series of data elements with the first element waiting for an operation Used when an element is not.
High Performance Network Virtualization with SR-IOV By Yaozu Dong et al. Published in HPCA 2010.
Intel Research & Development ETA: Experience with an IA processor as a Packet Processing Engine HP Labs Computer Systems Colloquium August 2003 Greg Regnier.
Processes, Threads, and Process States. Programs and Processes  Program: an executable file (before/after compilation)  Process: an instance of a program.
Full and Para Virtualization
CSE 466 – Fall Introduction - 1 User / Kernel Space Physical Memory mem mapped I/O kernel code user pages user code GPLR virtual kernel C
Introduction Contain two or more CPU share common memory and peripherals. Provide greater system throughput. Multiple processor executing simultaneous.
1 © 2004, Cisco Systems, Inc. All rights reserved. CCNA 2 v3.1 Module 2 Introduction to Routers.
An open source user space fast path TCP/IP stack and more…
Embedded Real-Time Systems
T HE M ULTIKERNEL : A NEW OS ARCHITECTURE FOR SCALABLE MULTICORE SYSTEMS Presented by Mohammed Mustafa Distributed Systems CIS*6000 School of Computer.
Introduction to Operating Systems Concepts
Shaopeng, Ho Architect of Chinac Group
Introduction to Azure App Service Environment
ODP-VPP Integration updates
New Approach to OVS Datapath Performance
NFV Compute Acceleration APIs and Evaluation
BESS: A Virtual Switch Tailored for NFV
GPUNFV: a GPU-Accelerated NFV System
Kernel Design & Implementation
Dockerize OpenEdge Srinivasa Rao Nalla.
OpenMosix, Open SSI, and LinuxPMI
Towards a single virtualized data path for VPP
Diskpool and cloud storage benchmarks used in IT-DSS
Andy Wang COP 5611 Advanced Operating Systems
DPDK API and Virtual Infrastructure
The Multikernel: A New OS Architecture for Scalable Multicore Systems
CASE STUDY 1: Linux and Android
Reference Router on NetFPGA 1G
Virtio ring and virtio-net
Get the best out of VPP and inter-VM communications.
Challenges Implementing Complex Systems with FPGA Components
memif - shared memory packet interface for container networking
Woojoong Kim Dept. of CSE, POSTECH
Virtio Keith Wiles July 11, 2016.
Multiple Processor Systems
vDPA for Vhost Acceleration
DPDK Accelerated Load Balancer
Open vSwitch HW offload over DPDK
Virtio/Vhost Status Quo and Near-term Plan
Integrating DPDK/SPDK with storage application
Process Description and Control
Accelerate Vhost with vDPA
Fast Packet Processing In Linux with AF_XDP
OVS DPDK Community Update
Andy Wang COP 5611 Advanced Operating Systems
Top #1 in China Top #3 in the world
Operating Systems Lecture 1.
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
A Scalable Approach to Virtual Switching
HP ALM Introduction.
VIRTIO 1.1 FOR HARDWARE Rev2.0
Reference Router on NetFPGA 1G
WDF Custom Driver Design Pattern
Presentation transcript:

High Speed Solutions in VPP to Accelerate Container Networking: - Howto and Deep Dive Tan,Jianfeng Xu,qian

Network Platforms Group 2 Agenda Motivations Solutions introduction – what and howto SSVM, Vhost/virtio, Netmap pipes Solutions comparison Performance Features… Summary and next step

Network Platforms Group 3 Motivations  Challenges in container networking – High performance packet processing – Linearly scalability – Flexibility  Discussions in VPP community Discussions  VPP thread model – Now, multi threads share the nodes graph – How to run 3 rd party plugins securely? – Spread nodes into containers dpdk-input ethernet-input ip6-input ip4-input arp-input mpls-ethernet- input Packet Vector Pkt-1Pkt-2Pkt-n … Plugin Node Container Cross container IPC. Container

Network Platforms Group 4 What’s SSVM  SSVM: Structured Shared Virtual memory – Specified for VPP project – Shared memory based queue Element pool Shared memory Container1 (master) Container2 (slave) Only one process can get the lock

Network Platforms Group 5 SSVM Ring Layout and Memory access (1) elt_idx_0 elt_idx_1 … elt_idx_a elt_idx_c … elt_idx_n … elt_idx_b … head (tx side r, rx side w) tail (tx side r, rx side w) cursize (race) type … total_len len next_idx data pad ssvm_elt_0 ssvm_elt_1 … ssvm_elt_i … ssvm_elt_m Metadata (16 B) ( B) Queue elts pool elt Queue metadata This lock can be avoided!

Network Platforms Group 6 SSVM Ring Layout and Memory access (2)  Tx – SpinLock elt pool to get one elt – Fill metadata of elt – Copy data from clib_buf -> elt – SpinLock Tx queue to set idx  Rx – SpinLock Rx queue to get idx – Copy data from elt -> clib_buf – Fill metadata of clib_buf – SpinLock elt pool to return elt Batching

Network Platforms Group 7 What’s Vhost/virtio-user  As a DPDK virtual device  Talk to backend by embedded adapter w/o device emulation  Share PMD with virtio (PCI)  Single consistent vhost PMD on the backend  Frontend shares mem with backend

Network Platforms Group 8 Vhost/Virtio Ring Layout and Memory Access  Prepare at virtio side – Prepare desc table entry – update avail ring  Tx at vhost side – Get avail ring idx and entry – Locate buf in desc table – Copy data: vlib_buf (of vhost) -> vlib_buf (of virtio) – Update used ring entry and idx  Rx at virtio side – Get used ring idx and entry Batching

Network Platforms Group 9 What’s Netmap pipes  A framework for high speed packet I/O – Netmap – Netmap/VALE (switch) – Netmap pipes (p2p communication)

Network Platforms Group 10 Netmap Ring Layout and Memory access  Tx – Get some slots (tail -> head) – Copy data: vlib_buf -> netmap_buf – Update head, cur – Syscall: tx_sync  Rx – Get some slots to consume – Copy data: from netmap_buf -> vlib_buf – Syscall: rx_sync – Update head, cur SWAP

Network Platforms Group 11 An inaccurate summary

Network Platforms Group 12 Performance: Test Setup 1. Create Docker images and run containers: $ docker pull fedora $ (For netmap, insert netmap kernel module) $ docker run –v /dev/netmap:/dev/netmap … -v /dev/uio0:/dev/uio0 --privileged --cap-add SYS_ADMIN $ docker run –v /dev/shm/ssvmtest1:/dev/shm/ssvmtest1 … $ docker run –v /unix_sock_dir:/unix_sock_dir … 2. Start VPP instance in each container $ vpp unix {…} ssvm_eth {…} dpdk {…} cpu {…} & $ vpp unix {…} dpdk {… --extra “--vdev=eth_vhost0,path=…”} cpu {…} & $ vpp unix {…} dpdk {… --extra “--vdev=virtio_user0,path=…”} cpu {…} & 3. Create devices $ vppctl create netmap name vale00:vpp0 hw-addr 02:FE:3F:34:15:9B pipe master 4. Start the devices and send the traffic $ set int state xxx up $ set int ip address xxx [ip_addr] $ set interface l2 xconnect xxx yyy Patches not upstreamed yet !!!

Network Platforms Group 13 Performance  No difference after pkt size >= 256  For small pkts, there is room for improvement in ssvm and virtio Ssvm is not stable.

Network Platforms Group 14 Features OffloadingCoupling Compatibility (w/ container) Notification/Lock ssvmN/AHigh coupled with VPPVPP app Polling mode; spinlock Vhost/virtio TSO, checksum Decoupled with VPP with Standard spec DPDK app Polling mode; lockless Netmap pipes N/ADecoupled with VPP Pcap app Netmap app Syscall w/ POSIX poll; Lockless

Network Platforms Group 15 Summary and next step Summary  A survey on running VPP in containers  Analysis on ssvm, virtio_user and netmap pipes Next step  Continue virtio evolution for containers  Support notification of virtio_user  Virtio 1.1, virtio 1.1, virtio 1.1 Bring best I/O engine for VPP