The Case for a Flexible Low-Level Backend for Software Data Planes
Sean Choi1, Xiang Long2, Muhammad Shahbaz3, Skip Booth4, Andy Keep4, John Marshall4, Changhoon Kim5
1 2 3 4 5
The Case for a Flexible Low-Level Backend for Software Data Planes - - PowerPoint PPT Presentation
The Case for a Flexible Low-Level Backend for Software Data Planes Sean Choi 1 , Xiang Long 2 , Muhammad Shahbaz 3 , Skip Booth 4 , Andy Keep 4 , John Marshall 4 , Changhoon Kim 5 1 3 4 2 5 Why software data planes? VM hypervisors VM
Sean Choi1, Xiang Long2, Muhammad Shahbaz3, Skip Booth4, Andy Keep4, John Marshall4, Changhoon Kim5
1 2 3 4 5
Virtual Ports Physical Port Software Switch
VM VM
Software Switch
[1] PISCES. ACM SIGCOMM 2016.
High-level, close to protocol Abstract forwarding model
dpdk-input ip6-input ip4-input llc-input ip6-lookup ip6-rewrite- transmit
dpdk-output
dpdk-input ip6-input ip4-input llc-input ip6-lookup ip6-rewrite- transmit
dpdk-output
dpdk-input ip6-input ip4-input llc-input ip6-lookup ip6-rewrite- transmit
dpdk-output
Packet Vector dpdk-input ip6-input ip4-input llc-input ip6-lookup ip6-rewrite- transmit
dpdk-output Standard VPP Nodes
Custom-input Node 1 Node 2 Node i Node j Node k Custom Plugin
[1] https://wiki.fd.io/view/VPP/What_is_VPP%3F
Front-end Compiler BMv2 Mid-end Compiler BMv2 Back-end Compiler JSON-VPP Compiler VPP Plugin Directory P4 Program VPP Plugin Cog Templates Reference P4 Compiler (P4C) JSON C Files
DPDK MoonGen
Sender/Receiver
MoonGen
Sender/Receiver
10Gx3 10Gx3
CPU: Intel Xeon E5-2640 v3 2.6GHz Memory: 32GB RDIMM, 2133 MT/s, Dual Rank NICs: Intel X710 DP/QP DA SFP+ Cards HDD: 1TB 7.2K RPM NLSAS 6Gbps
IPv4_match Match: ip.dstAddr Action: Set_nhop drop Parse Ethernet/ IPv4 Match: ip.dstAddr Action: Set_dmac drop Destination MAC Match: egress_port Action: Set_dmac drop Source MAC
7.86 7.05 1 2 3 4 5 6 7 8 9 64 Throughput (Mpps)
Packet Size (Bytes)
Single Node Multiple Node
64 byte packets, single 10G port
dpdk-input ip6-input ip4-input llc-input ip6-lookup ip6-rewrite- transmit
dpdk-output
7.86 9.25 9.51 9.51 9.58 10.01 10.21 7.05 8.38 8.50 8.80 8.89 9.02 9.20 2 4 6 8 10 12 Baseline Removing Redundant Tables Reducing Metadata Access Loop Unrolling Bypassing Redundant Nodes Reducing Pointer Dereferences Caching Logical HW Interface Throughput (Mpps) Single Node Multiple Node
64 byte packets, single 10G port
8.52 17.03 26.40 35.83 44.23 53.11 8.14 16.57 24.14 33.41 40.69 49.34 10 20 30 40 50 60 1 2 3 4 5 6 Throughput (Mpps)
Number of CPU cores
Single Node Multiple Node
64 byte packets across 3 x 10G ports
59.53 49.31 34.71 26.78 63.49 47.23 34.72 26.78 30.22 30.22 30.20 26.78 10 20 30 40 50 60 70 64 128 192 256 Throughput (Mpps)
Packet Size (Bytes)
PVPP PISCES (with Microflow) PISCES (without Microflow)