Vmware e TSO

Oggi ho finalmente scoperto che il responsabile di un fastidioso problema che avevo con vmware server è imputabile al TCP segmentation offload (TSO).

In particolare succede che con il TSO abilitato il sistema di bridging di vmware di fatto blocca i pacchetti che hanno bisogno di essere frammentati inviati tra host e guest. In effetti non capita quasi mai di dover aprire connessioni tra host e guest ma la cosa mi sembrava strana soprattutto perché vedevo passare tra le due macchine senza problemi pacchetti icmp e i pacchetti SYN di apertura della connessione. Avevo ipotizzato un problema legato alla frammentazione ma anche con pacchetti ping molto grossi non avevo problemi.

Il TSO spiega tutto soprattutto perché la frammentazione offload di default é abilitata solo per il TCP.

sudo ethtool -K eth0 tso off

E il problema è risolto.

(immagino che non mi debba aspettare un aumento di carico significativo sulla cpu…)