3 ms·
The performance of modern network cards heavily leans on 2 so called stateless offloads: TCP/transmit segmentation offload and large receive offload (also call
by bcrl 6y ago
The performance of modern network cards heavily leans on 2 so called stateless offloads: TCP/transmit segmentation offload and large receive offload (also call gso and gro). On transmit the kernel sends TCP packets in large chunks (~64KB) to the nic and the nic then puts them on the wire in MTU sized chunks as specified by the host. One receive, the nic tries to merge multiple small packets together into a single large packet. Both of these optimizations have the effect of reducing the number of packets per second the kernel and application have to handle, driving up throughput as a result. Naturally, this introduces a new class of subtle network behaviour that many folks aren't aware. This also results in tcpdump no longer showing what packets are being sent / received on the wire, making debugging tonnes of fun for the whole family!