Network performance with VMXNET3 on Windows Server 2008 R2

Recently we ran into issues when using the VMXNET3 driver and Windows Server 2008 R2, according to VMWare you may experience issues similar to:

•Poor performance
•Packet loss
•Network latency
•Slow data transfer

The issue may be caused by Windows TCP Stack offloading the usage of the network interface to the CPU.

To resolve this issue, disable the TCP Checksum Offload feature, as well enable  RSS on the VMXNET3 driver.
Open the command prompt as administrator and run these commands:

netsh int tcp set global chimney=Disabled
netsh int tcp set global autotuninglevel=Disabled
netsh int tcp set global congestionprovider=None
netsh int tcp set global ecncapability=Disabled
netsh int ip set global taskoffload=disabled
netsh int tcp set global timestamps=Disabled

To validate type:

netsh int tcp show global

Next we will need to turn on RSS feature on the VMXNET3 driver. To do this open the network connections and adapter settings. Open Control Panel > Network and Internet > Network Connections. Right click on your adapter and select properties.


Click on the Advanced tab and scroll down to find the RSS setting, you will see by default it is set to disabled. Set the drop down to enabled and click ok to save the settings.



If you find there is no change just reset to default.

To reset to default type:

netsh int tcp set global chimney=Enabled
netsh int tcp set global autotuninglevel=normal
netsh int tcp set global congestionprovider=ctcp
netsh int tcp set global ecncapability=Enabled
netsh int ip set global taskoffload=Enabled
netsh int tcp set global timestamps=Enabled

How to determine whether TCP Chimney Offload is working
When TCP Chimney Offload is enabled in the operating system and in the network adapter, the TCP/IP stack tries to offload suitable TCP connections to the network adapter. To find out which of the currently established TCP connections on the system are offloaded, follow these steps:

Use administrative credentials to open a command prompt.
Type the following command, and then press ENTER:

netstat –t

You receive output that resembles the following:

Active Connections
Proto  Local Address          Foreign Address        State           Offload State
TCP        computer_name:52614    ESTABLISHED     InHost
TCP    computer_name:52613    ESTABLISHED     Offloaded

In this output, the second connection is offloaded.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>