Low receive throughput when receive checksum offload is disabled and Receive Side Coalescing is enabled on Windows VM
search cancel

Low receive throughput when receive checksum offload is disabled and Receive Side Coalescing is enabled on Windows VM

book

Article ID: 329062

calendar_today

Updated On:

Products

VMware

Issue/Introduction

This is an adapter configuration issue at the OS level. This issue occurs if you have incorrect driver settings for receive checksum offload and RSC.

Note: RSC works as expected only when all of the receive checksum offloads  mentioned in the Symptoms section are Rx Enabled or  Rx & Tx Enabled.

Symptoms:
  • You notice low network receive throughput when receive checksum offload is disabled and Receive Side Coalescing (RSC) is enabled on Windows virtual machine.
  • The receive performance could be for example 2,400 times slower than usual, depending on environment.
  • It occurs when all of following conditions are met.
    • Guest operating system is Windows 2012 / Win 8 or later
    • Virtual machine hardware version is 11 or later
    • Virtual NIC driver is vmxnet3
    • RSC is enabled on the vmxnet3 driver on the guest operating system
    • Some or all of following receive checksum offloads have value Disabled or only Tx Enabled on the vmxnet3 driver on the guest operating system:
      • IPv4 Checksum Offload
      • TCP Checksum Offload (IPv4)
      • TCP Checksum Offload (IPv6)
      •  UDP Checksum Offload (IPv4)
      • UDP Checksum Offload (IPv6)


Cause

Poor file transfer speeds when RSC is enabled on the VMs

Resolution

This is a known issue affecting VMware ESXi 6.0, ESXi 6.5 and ESXi 6.7.

Windows VMwareTools 10.3.10 and later has a vmxnet3 driver with a feature for a restriction not to allow receive checksum offload to be disabled and RSC to be enabled.

Workaround:
To work around this issue, use one of these options: 
  • Disable RSC, if any of receive checksum offloads is disabled.
  • Manually enable receive checksum offloads using the following commands in Windows PowerShell:
Set-NetAdapterAdvancedProperty -DisplayName "IPv4 Checksum Offload" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "IPv4 TSO Offload" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "Large Send offload v2 (ipv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "Large Send offload v2 (ipv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "TCP checksum offload (ipv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "TCP checksum offload (ipv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "UDP checksum offload (ipv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "UDP checksum offload (ipv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "Offload ip options" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "Offload tcp options" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -DisplayName "Offload tagged traffic" -DisplayValue "Enabled"


Additional Information

https://osqa-ask.wireshark.org/questions/50123/win-2012-r2-vm-network-much-faster-after-wireshark-was-started