freenode
Kernel & Low-Level

Linux kernel series adds native QUIC sockets and transport core

Xin Long's v18 net-next work brings RFC 9000 into the kernel for user space and in-kernel clients such as NFS and SMB.

Xin Long has submitted version 18 of a large net-next series that introduces native QUIC support in the Linux networking stack. The work aims to give both ordinary applications and kernel subsystems a multiplexed, encrypted UDP transport with standard socket calls rather than forcing every consumer to run QUIC entirely in user space.

QUIC (RFC 9000 and related RFCs) already carries much of the public web through HTTP/3. Long's design keeps the TLS handshake in user space via the existing net/handshake interfaces, then moves packet protection, streams, connection IDs, path management, loss detection, and congestion control into the kernel once keys are installed. Kernel services such as SMB and NFS can therefore exchange data over QUIC after the handshake with little extra plumbing. User-space programs get listen, accept, connect, sendmsg, recvmsg, and the usual sockopt and name calls on a new IPPROTO_QUIC socket type, plus ALPN-based dispatch so different processes can claim connections by application protocol.

The series deliberately avoids implementing QUIC as a UDP upper-layer protocol. Connection migration can require more than one UDP endpoint at a time, and a single shared UDP socket may serve many QUIC connections; an IPPROTO_QUIC socket layered over an internal UDP tunnel is intended to preserve TCP-like semantics and scale more cleanly. Early congestion control is New Reno, with hooks for RTT measurement, ECN, and later algorithms. Path code covers migration between simultaneous paths and basic packetization-layer PMTU discovery. Crypto helpers install Initial through 1-RTT keys, perform header and payload protection, and handle retry tokens and stateless reset material. Timers unify loss detection, delayed ACK, path validation, PMTU probes, and pacing.

Protocol coverage listed for the effort includes the base transport, TLS mapping, loss and congestion control, unreliable datagrams, QUIC bit greasing, compatible version negotiation, and QUIC version 2. UAPI headers expose control messages, socket options, and events aligned with the IETF draft for in-kernel QUIC sockets; an internal header lets kernel callers set options without the removed kernel_getsockopt path. Paolo Abeni has acked substantial portions of the scaffolding. If the series lands, Linux would gain a first-class path to the same transport browsers and CDNs already treat as mainstream, structured from the start for zero-copy sendfile and future crypto offload.