Why OCP networking performances on VMs are suboptimal and how to improve them by 5x
summary
OCP-on-OpenStack throughput suffers because GSO/GRO don’t survive double UDP encapsulation, forcing kernel segmentation and per-packet forwarding across virtio, vhost and OVS. A proof-of-concept adds virtio TSO over UDP (metadata locating inner headers), uses GSO partial to let drivers split without touching inner payload, and supplies a Geneve option metadata so GRO can reassemble on receive. Measured gains: about 4.7× intra-node and ~75% inter-node; patches upstreaming and PoC code exist.
AI-written summary · about
chapters (14)
- 0:00OCP networking on VMs
- 3:57OCP over OpenStack complexity
- 7:34OCP underperforms in VMs
- 10:02Double encapsulation packets
- 11:04GSO support for virtio UDP tunnels
- 12:48GSO partial offload
- 17:32GRO for receive-side double encapsulation
- 21:31GSO packet flow optimizations
- 22:16Benchmarking results and gains
- 24:49Upstream kernel work status
- 25:32Key takeaways on GSO and GRO
- 27:26Q&A: Small UDP packets and QUIC
- 31:24Q&A: Alternative aggregation methods
- 34:00Q&A: NAPI and listification
related talks
20mCan OVS-DPDK be further optimised?
38mVSOCK: From Convenience to Performant VirtIO Communication
32mExtending Network Quality of Service support in OpenStack
18mOpen vSwitch with AF_XDP as a userspace datapath
26mRun your Kubernetes cluster on OpenStack in Production
17mRearchitecting the TCP Stack for I/O-Offloaded Content Delivery
14mPerf Characteristics of Userspace & Kernel-Space Datapaths in Container Networking
13mRosenBridge: A Framework for Enabling Express I/O Paths Across the Virtualization...
