...
Large Receive Offload (LRO) functionality is enabled by default on VMXNET2 (Enhanced) and VMXNET3 devices. In some scenarios, Linux TCP/IP stack has a low performance when handling LRO-generated packets. As a result, having Large Receive Offload enabled for these devices in a virtual machine running a Linux guest operating system can cause poor TCP performance.
Disabling LRO in the Guest Operating System On virtual machines using VMXNET3 virtual network devices and running a guest OS with Linux kernel 2.6.24 or later, use the ethtool command to disable Large Receive Offload. To disable Large Receive Offload using the ethtool command: Run the ethtool command to disable LRO for each VMXNET3 virtual network interface: # ethtool -K ethX lro off For example: # ethtool -K eth0 lro off Note: The configuration change made with the ethtool command does not persist across reboots. To make the change persistent across reboots, add the ethtool command to a startup script such as rc.local. For virtual machines running an earlier version of the Linux kernel or using VMXNET2 devices, disable Large Receive Offload by setting the module load time parameter for the vmxnet or vmxnet3 Linux driver to include disable_lro=1.To set the module load time parameter:Note: These steps may not work for RedHat Enterprise Linux/CentOS 5.x virtual machines when updating the /etc/modprobe.conf file. Using a text editor, open the /etc/modules or /etc/modules.conf file used by the Linux distribution.Locate the alias entry for the VMXNET or VMXNET3 driver: alias eth0 vmxnet or alias eth0 vmxnet3 Append an options entry to disable LRO on a new line under the alias. For example: alias eth0 vmxnet options vmxnet disable_lro=1 or alias eth0 vmxnet3 options vmxnet3 disable_lro=1 Save the configuration file.Reboot the Linux virtual machine to apply the changes. To disable LRO on these versions on Linux: In a text editor, open the /etc/rc.local file and add the following two lines to the file for the VMXNET or VMXNET3 driver: rmmod vmxnet modprobe vmxnet disable_lro=1 or rmmod vmxnet3 modprobe vmxnet3 disable_lro=1 Save the configuration file.Run both commands from the command line or reboot the virtual machine to apply the changes. Disabling LRO on the Host LRO can be disabled on ESXi/ESX hosts using this procedure: Log in to the ESXi host or vCenter Server by using the vSphere Client.Navigate to the host in the inventory tree, and on the Configuration tab click Advanced Settings under Software.Select Net and scroll down until you reach parameters starting with Vmxnet.Set the following LRO parameters from 1 to 0: Net.VmxnetSwLROSL Net.Vmxnet3SwLRO Net.Vmxnet3HwLRO Net.Vmxnet2SwLRO Net.Vmxnet2HwLRO Reboot the ESXi/ESX host to apply the changes. Additional Information Using promiscuous mode in the Linux virtual machine leads to resolving the performance issue too because activating this mode leads to disabling LRO. For more information, see Linux virtual machines using VMXNET3 driver experience network throughput degradation when connected to Traffic Shaping enabled Distributed vSwitch (2030927). For translated versions of this article, see: 日本語: Fusion でのユニティに関する問題をトラブルシューティングする (2090302)简体中文: 在启用 LRO 的 Linux 虚拟机中,可能会出现 TCP 性能较差的情况 (2097560)