GSO / TSO
Generic Segmentation Offload + TCP Segmentation Offload — funzionalità di Linux e delle NIC in cui un grande buffer di invio (64 KB) viene suddiviso in pacchetti da MTU il più tardi possibile lungo il percorso (NIC = TSO, kernel = GSO). Un enorme risparmio di CPU a partire da 10GbE.
Senza TSO: il kernel costruisce pacchetti da 1500 byte ciascuno, 7 frame per ogni invio da 10 KB, con un overhead di syscall moltiplicato per 7. Con TSO: il kernel invia un buffer da 64 KB più un offset e la NIC lo segmenta in hardware. In Linux: ethtool -K eth0 tso on gso on. Speculari: LRO/GRO (Large/Generic Receive Offload) raggruppano i piccoli frame in ingresso in blocchi grandi. Un'ottimizzazione moderna del percorso critico. Classico caso di debug: NIC virtuale (virtio) con GSO disattivato → il throughput crolla. Consigliato attivo per impostazione predefinita; spento solo in casi limite (firewall che ispeziona ogni pacchetto con DPI).