Hyper-V External network switch kills my host's network performance

The VMQ trick was useful to me a few months ago, before the March 2018 Windows update had been applied at work. After that update and perhaps some other smaller updates, I started having intermittent network performance problems again while I had a VM actively running.

Experimentally, I tried something other than the normal network bridge: I enabled Internet Connection Sharing on my NIC, sharing to an internal virtual network switch ("vEthernet (nat) 2"). So far so good - no noticeable impact on the host and the VM now has full speed Internet access as well.

enter image description here


For those having trouble with Mr. Raspberry's answer:

The network adapter name recognized by the *-VMNetworkAdapter commands are different than what is displayed in Windows. You must first list the available network adapters with Get-VMNetworkAdapter -ManagementOS and Get-VMNetworkAdapter * to get the adapter names that the command will recognize.

The fix for me was to modify the adapter within the VM, rather than on the management OS (i.e. without the -ManagementOS option).


Try to disable VMQ

To disable VMQ on a virtual switch, use the Set-VMNetworkAdapter PowerShell cmdlet as follows:

Set-VMNetworkAdapter –ManagementOS -Name <VirtualNetworkAdapterName> -VmqWeight 0

To disable VMQ on a physical network adapter, uncheck the appropriate box in the Advanced tab of the network adapter's properties page.

To change the MAC address of a virtual switch, either modify it in Hyper-V Manager or by using one of the following Set-VMNetworkAdapter PowerShell cmdlets:

  • Using a static MAC address:

    Set-VMNetworkAdapter –ManagementOS -Name <VirtualNetworkAdapterName> -StaticMacAddress <MacAddress>

  • Using a dynamic MAC address:

    Set-VMNetworkAdapter –ManagementOS -Name <VirtualNetworkAdapterName> -DynamicMacAddress

Source: http://www.dell.com/support/article/us/en/19/sln132131/windows-server--slow-network-performance-on-hyper-v-virtual-machines-with-virtual-machine-queue--vmq--enabled?lang=en


For me before i do anything else, after creating the switch in Hyper-V manager restart the machine resets everything. Now I see same speed both ends.


It's not exactly a proper solution, but rather an ugly hack which kind of works around the issue:

Guest OS is likely isn't affected by this issue, so having it act as a router (i.e. set up forwarding and NAT in the guest OS) will solve the problem - and introduce a bunch of new ones since your host machine is behind a NAT now.

I'm pretty sure it's a bug that was introduced in the Fall Creators Update for Win10 (release 1709), since the exact same setup was working fine for me before I've updated. So the other option would be waiting for a patch from Microsoft that will restore things to their rightful order.