Fosstodon
NETDEV VIDEOS
Session
Kernel shared memory socket transport
Speakers
David Wei
Label
Moonshot
Session Type
Talk
Description
The fastest way to do IPC is to use shared memory allowing for zero copy on both the sender AND the receiver. The kernel does not provide primitives that allow for zero copy on both sides; features such as splice, sendfile and vmsplice only avoid copying on the sender side.
This has typically been a problem the kernel left to userspace to handle, with libraries such as boost::interprocess that build on top of shared memory. However it requires both the sender and the receiver to use the same library to do shared memory IPC. This makes it hard for foundational libraries such as HTTP clients and servers to integrate zero copy IPC, instead needing the final service using the HTTP client to make their own modifications to the client, using the same shared memory IPC library as the HTTP server.
This proposal is about adding kernel support for fast, same host shared memory IPC, built on top of AF_UNIX SOCK_SEQPACKET and io_uring with UDP-like message based semantics. io_uring is chosen to take advantage of features such as registered buffers to pre-pin the shared memory once and flexibility in extending uAPI instead of existing socket based APIs. The goal is that once this is upstream, then any userspace library can add support knowing that it will work with any other sender/receiver process that use the same kernel feature.
There is a working prototype ready for RFC which will be sent to the list prior to the conference. The goal is to seek community feedback on the uAPI and implementation design choices.
Recent News
Bronze Sponsor, Common Net
[Tue, 16, Jun. 2026]
Bronze Sponsor, secunet
[Fri, 12, Jun. 2026]
Bronze Sponsor, Red Hat
[Fri, 12, Jun. 2026]
Bronze Sponsor, Mpiric
[Tue, 09, Jun. 2026]
Bronze Sponsor, Viasat
[Mon, 08, Jun. 2026]
Important Dates
| Closing of CFS | June 1st |
| Notification by | June 10th |
| Conference dates | July 13th-16th |