0% found this document useful (0 votes)
111 views8 pages

Userspace Networking: Beyond The Kernel Bypass With RDMA!

This document discusses using RDMA infrastructure for high performance userspace networking while still allowing integration with the kernel. It describes how RDMA can be extended to support Ethernet communication and used to send packets at over 20 million packets per second using a single CPU core. The document outlines setting up RDMA queues and sending packets, and goes into more advanced techniques like using Direct Verbs for direct access to DMA rings. It also discusses VPP's implementation of a native RDMA driver and calls for other technologies to enable this userspace networking approach.

Uploaded by

aashutosh1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
111 views8 pages

Userspace Networking: Beyond The Kernel Bypass With RDMA!

This document discusses using RDMA infrastructure for high performance userspace networking while still allowing integration with the kernel. It describes how RDMA can be extended to support Ethernet communication and used to send packets at over 20 million packets per second using a single CPU core. The document outlines setting up RDMA queues and sending packets, and goes into more advanced techniques like using Direct Verbs for direct access to DMA rings. It also discusses VPP's implementation of a native RDMA driver and calls for other technologies to enable this userspace networking approach.

Uploaded by

aashutosh1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Userspace networking: beyond

the kernel bypass with RDMA!


Using the RDMA infrastructure for performance while retaining kernel
integration

Benoît Ganne, bganne@cisco.com

30/01/2020 1
Why a native network driver?
• Why userspace networking? VPP IPv4 forwarding PDR, 1core, 2M routes
• Performance (avoid kernel overhead)
18
• Update network functions seamlessly (no reboot
required, containerization) 16 +23%
• Why your own network driver? 14
• Performance (metadata translation tax, feature 12
tax)

Mpps
• Ease-of-use (no reliance on hugepages, etc.) 10
8
• Why you should think twice?
• No integration with kernel (interface fully owned 6
by userspace) 4
• You care about rx/tx packets but device 2
initialization & setup is 95% of the work
• Hardware is hard (more on that later) 0
Native DPDK
Source: https://docs.fd.io/csit/master/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-skx-xxv710.html

30/01/2020 2
RDMA
• « Remote Direct Memory Access »
• Designed for message passing and HW RNIC
data transfer
• Has evolved to use Ethernet transport
(iWARP, RoCE)
Kernel RDMA uAPI
• Key properties

DMA
• Hardware offload
• Kernel bypass
libibverb
• Zero Copy data transfer
• High network bandwidth User

VPP
➔ Great for kernel networking!

30/01/2020 3
Extending RDMA for Ethernet Incoming packets are steered to Linux
netdev or userspace application based on
flows
• Not designed for efficient Ethernet
communication – but!
• Ethernet-capable HW (initially for HW RNIC
transport)
• High performance (200Gbps today)

DMA
• Kernel bypass with well established API RDMA
and native Linux kernel support Kernel
RDMA uAPI Netstack

DMA
• Why not extend it to support
userspace networking?
• Introduce new IBV_QPT_RAW_PACKET libibverb
queue pair type User
• Support for bifurcation with flow steering
• Keep your Linux netdev
• Support MACVLAN, IPVLAN model…
VPP

30/01/2020 4
Using RDMA for Ethernet
How to send 20 Mpps with 1 CPU
1. Get a handle to the device you want to
use
2. Initialize queues
• Queue Pair (QP) = Submission Queue (SQ) +
Completion Queue (CQ)
• Protection Domain (PD) = where the NIC is
allowed to read/write data (packets)
3. Send packets
• Put Work Queue Elements (WQE – kind of
IOV) in SQ
• Notify new packets to send
• Poll CQ for completion
Full example at https://github.com/bganne/rdma-pktgen

30/01/2020 5
Going deeper with Direct Verbs
• RDMA user API is ibverb
• Simple enough, mostly standard,
open-source
• Not full performance (metadata
translation tax, feature tax)
• Direct Verbs
• ibverb extension to access DMA
ring-buffers directly
• Hardware-dependent!
• Setup done through ibverb, then
get DMA rings addresses

30/01/2020 6
VPP native RDMA driver
• ibverb version
• Available since 19.04
• ~ 20 Mpps L2-xconnect per core
• Direct Verb
• Development underway
• Hardware is hard: while trying to debug my driver I almost bricked my NIC
• Next
• Add support for hardware offloads (checksum offload, TSO)

30/01/2020 7
A call to action
• We love this model
• No need to write code boilerplate to initialize the NIC: we can focus on what matters
(rx/tx packets)
• Seamless integration with Linux kernel
• Great performance
• But is has limitations
• Need RDMA-capable NIC: must support Hardware security model, etc.
• Only supported on Mellanox for now
• Could other technologies enable this approach?
• Disclaimer: a bit outside of my domain knowledge here…
• vfio-mdev?
• AF_XDP?

30/01/2020 8

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy