GSO and GRO

Generic Segmentation Offload (GSO) and Generic Receive Offload (GRO) are network stack features that can improve the efficiency of transmitting and receiving packets. GSO/GRO are enabled by default in s2n-quic on operating systems that have good support for these features (namely Linux variants). s2n-quic will also automatically disable these features if the operating system emits a socket error indicating they are not supported.

Some operating systems may silently fail when using GSO/GRO, leading to performance degradation. In these cases, s2n-quic will not automatically disable GSO/GRO. You can manually disable GSO/GRO on the IO provider to evaluate if that has a positive impact on performance:

#![allow(unused)]
fn main() {
let io = s2n_quic::provider::io::Default::builder()
    .with_gso(false)? // disable GSO
    .with_gro(false)? // disable GRO
    .build()?;

let mut server = Server::builder()
    .with_io(io)?
    .start()?;
}