Using TCP Segmentation Offload (TSO) and Large Receive Offload (LRO) on physical and virtual machine NICs improves the performance of ESX/ESXi hosts by reducing CPU overhead for TCP/IP network operations.
VMware vSphere ESXi 6.5.x
VMware vSphere ESXi 6.7.x
VMware vSphere ESXi 7.x
VMware vSphere ESXi 8.x
Net.UseHwTSO
parameter for IPv4 to 1 to enable TSO, or to 0 to disable TSO./Net/UseHwTSO
advanced parameter to 1 to enable TSO, or to 0 to disable TSO: $ esxcli system settings advanced set -o /Net/UseHwTSO -i 1
$ esxcli system settings advanced set -o /Net/UseHwTSO -i 0
$
esxcli system settings advanced list -o /Net/UseHwTSO
Int Value
property is equal to 1.$
ethtool -K ethY tso on
ethY
is the sequence number of the NIC in the virtual machine.Net.Vmxnet2HwLRO
and Net.Vmxnet3HwLRO
parameters to 1 to enable hardware LRO, or to 0 to disable hardware LRO./Net/Vmxnet2HwLRO
and /Net/Vmxnet3HwLRO
parameters to 1 to enable LRO, or to 0 to disable LRO:
$
esxcli system settings advanced set -o /Net/Vmxnet3HwLRO -i 1
Reboot the ESXi host for changes to take effect.
/Net/Vmxnet2HwLRO
or /Net/Vmxnet3HwLRO
parameters:
$
esxcli system settings advanced list -o /Net/Vmxnet2HwLRO$
esxcli system settings advanced list -o /Net/Vmxnet3HwLRO
Int Value
property is equal to 1.Net.Vmxnet2SwLRO
and Net.Vmxnet3SwLRO
parameters to 1 to enable LRO, or to 0 to disable LRO./Net/Vmxnet2SwLRO
and /Net/Vmxnet3SwLRO
parameters to 1 to enable LRO, or to 0 to disable LRO.Net.TcpipDefLROEnabled
to 1 to enable LRO or to 0 to disable it./Net/TcipDefLROEnabled
to 1 to enable LRO or to 0 to disable it:$
esxcli system settings advanced set -o /Net/TcpipDefLROEnabled -i 0
ethtool -K ethY lro on
ethtool -K ethY lro off
Where Y in ethY
represents the sequence number of the NIC in the virtual machine.
/etc/rc.local
file in a text editor and add these two lines to the file for VMXNET or VMXNET3 driver:rmmod vmxnet
modprobe vmxnet disable_lro=1
rmmod vmxnet3
modprobe vmxnet3 disable_lro=1
Tx TSO Status | TCP Packet Segmentation Location |
Enabled | Transmitting physical NIC |
Disabled | Guest operating system |
Rx LRO Status | TCP Packet Aggregation Location |
Enabled | Receiving physical NIC if it supports LRO Receiving virtual machine NIC backend if the physical NIC does not support LRO |
Disabled | TCP packets are not aggregation |
Tx TSO Status | TCP Segmentation Location |
Enabled | Transmitting virtual machine NIC sends TSO size packets |
Disabled | Guest operating system |
Rx LRO Status | TCP Packet Aggregation Location |
Enabled | Receiving virtual machine NIC |
Disabled | TCP packets are not aggregated |
LRO on Windows is called Receive Segment Coalescing (RSC). It was introduced in Windows 8 / Windows Server 2012. LRO/RSC is supported for the Windows with VMXNET3 driver was supported from version vSphere 6.0 and Virtual Machine hardware version 11.