Seastar’s RPC has always been bound to TCP, inheriting head-of-line blocking and a separate TLS handshake. QUIC’s independent streams and built-in TLS 1.3 remove these problems, but most QUIC libraries introduce the locking and context-switching that Seastar was designed to avoid. We built a QUIC transport for Seastar on top of ngtcp2’s sans-I/O state machine, then adapted RPC to it twice: 1) as a one-to-one socket replacement, and 2) a QUIC-aware approach that opens a fresh stream per call. Join us to learn what it takes to drive a callback-driven protocol engine from a coroutine-based reactor, where the costs come from, and the packet-loss threshold at which multiplexed streams start being worth it.

