Zero Copy Receive using io_uring
summary
Proposes a kernel-side zero copy RX path that delivers payload DMA straight into registered user memory while headers stay in kernel via header splitting, uses io_uring as the user API and adds per-hardware rxq/refill rings plus a zero copy page pool shim so SKBs keep the normal networking stack. Tests on Broadcom NICs at 25 Gbps show a clear drop in total system memory bandwidth. V2 RFC adds VF support, multisocket and copy-fallback; Broadcom driver patches remain out-of-tree.
AI-written summary · about
chapters (10)
- 0:00Introduction and motivation
- 1:03Problem with kernel networking stack
- 3:37Limitations of kernel bypass solutions
- 7:08io_uring primer
- 9:44Zero copy design overview
- 13:21io_uring integration for zero copy
- 17:41Early performance results
- 19:57Current project status
- 22:47Future work and next steps
- 25:20Q&A session
related talks
01h 21mTutorial: Developing High-performance Networking Applications
50mThe case for zero-copy in containers: Accelerating...
20mMemory Recycling for Network Interfaces
18mDisentangling the Dual Role of NIC Receive Rings
14mUnderstanding RDMA Microarchitecture Resources for Performance Isolation
43mLessons Learnt from Reusing QDMA NIC to Base Band PMD
14mShRing: Networking with Shared Receive Rings
16mOneSidedMW: Managing Disaggregated Memory Efficiently, Flexibly, and Securely with RNIC
