Update: This method is still applicable for latest Windows 2019/2016 Server Hyper-V servers if the physical network cards on the host do not support VMQ feature. By default, once you install Windows 2012 R2 or Windows 2016 Hyper-V role on the server, the VMQ feature will be enabled on the physical server. If the physical NIC does not support (it is a hardware feature) VMQ, then it is going to slow down the network inside the virtual machines. Microsoft says that there are particular NICs and manufacturers got affected by this feature, and possible Windows driver update could fix it, but if nothing works for you, better follow this guide and disable VMQ feature to fix very slow network performance inside Windows 2012 R2/2016/2019 Hyper-V guest virtual machines.
I got the chance to install and configure Windows 2012 R2 Hyper-V on 3 node cluster with Dell R620 servers. Installation went smoothly and most of the configuration done based on Windows 2012 R2 Hyper-V best practice checklist from Microsoft blog. During the initial testing and performance analyzing time, I have noticed very slow network inside virtual machine guest OS. Below method helped me to solve the issue and bring back the network speed to normal in Windows 2012 R2 Hyper-V server.
The Dell R620 came with 4 numbers of Gigabit network adapters. I have used Windows 2012 R2 software based teaming to team two physical NICs. Then created an external virtual switch in Hyper-V manager with the teamed network adapter. The network performance in the host server through the teamed network was excellent, but it was very slow inside the guest VMs.
Though there are several solutions and suggestions available on the Internet to fix this, the VMQ technique worked for me. After disabling VMQ on physical NICs on the host server, the network performance inside virtual machines started performing well. VMQ is one of the great features to efficiently use network traffic if the host server’s NIC supports VMQ feature.
If the server hardware (NIC) doesn’t support VMQ feature, better disable it before deploying virtual machines in production; otherwise, you will be facing slow network in guest VMs in Windows 2012 R2/2016 Hyper-V.
How to Disable VMQ on Hyper-V
1) Open properties of the physical network card on the server, select Configure.
2) On Advanced tab, select Virtual Machine Queues (VMQ) and disable it as shown below.
It is recommended to restart the host server after making these changes, and I’m sure the network performance of virtual machines on Windows 2012 R2/2016 Hyper-V will be back to normal speed.
You can refer the specification sheet of the network card to verify the VMQ support for Hyper-V. If it is officially supported, probably you will not face this slowness issue, instead, the NIC, VMQ, and Hyper-V will manage the network traffic very well.