Increasing QUIC and UDP throughput
Blog post from Tailscale
In an effort to enhance network performance, recent changes have been implemented to significantly improve UDP throughput on Linux, specifically benefiting the Tailscale network layer. Building on previous work that increased TCP throughput over wireguard-go, these updates leverage UDP segmentation offloads, enabling a 4x increase in UDP throughput on bare metal Linux and surpassing the in-kernel WireGuard implementation for now. This improvement is crucial as UDP usage rises with the adoption of HTTP/3 and the QUIC protocol, both of which require efficient real-time data transmission. The updates include enabling transport layer offloads and introducing tx-udp-segmentation, which allows "monster" UDP datagrams to pass through the stack, thus optimizing performance for UDP-based applications. Furthermore, considerations around CPU core states (C-States) have been addressed, demonstrating how the management of these states can impact throughput, particularly in forwarding scenarios. These enhancements are available in Tailscale v1.54 and are supported by ongoing reviews and illustrations from collaborators.