freenode
Kernel & Low-Level

Kernel netdev sees v17 of in-kernel QUIC transport stack

Xin Long's 15-part series adds sockets, crypto, paths, and congestion control so Linux can run QUIC natively over UDP.

Xin Long has posted version 17 of a 15-patch series on the Linux netdev list that introduces core QUIC infrastructure in the kernel, aiming to make the UDP-based transport a first-class peer of TCP and SCTP for both user space and in-kernel clients.

QUIC (RFC 9000 and related specs) already underpins much of the modern web. Putting a full implementation in the kernel is meant to let subsystems such as SMB and NFS speak QUIC with little extra glue once a userspace handshake finishes through the existing net/handshake interfaces, then exchange data over ordinary in-kernel transport calls. Applications would open familiar stream sockets with IPPROTO_QUIC, using listen, accept, connect, sendmsg, recvmsg, and the usual option and name calls, plus ALPN-based demultiplexing so different processes can claim connections by protocol identifier.

The design deliberately avoids a simple UDP upper-layer protocol. Connection migration and multipath need multiple UDP endpoints per QUIC association, and a single UDP socket may serve many QUIC connections; the series therefore treats QUIC as its own transport over UDP tunnels, with IPPROTO_QUIC and SOL_QUIC constants, dual-stack address helpers, stream and connection-ID tables, path groups (including PLPMTUD), New Reno congestion control, packet-number spaces, and crypto helpers for key install, header and payload protection, retry tokens, and timers for loss, delayed ACK, path validation, PMTU probes, and pacing.

Handshake message processing stays in userspace; the kernel owns transport state, framing, and bulk data path, including room for sendfile-style zero-copy and later crypto offload. The work claims coverage of RFCs 9000, 9001, 9002, 9221, 9287, 9368, and 9369, and follows the in-kernel QUIC sockets API draft. Paolo Abeni has acked large parts of the series. If merged, the stack would give Linux a standard in-tree path for low-latency, migratable, multiplexed encrypted transport without forcing every consumer through a userspace QUIC library.