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

17

7

I have Windows 10 fully updated. I do the following:

  1. Testing internet speed - 70 Mbps up / 70 Mpbs down
  2. Hyper-V Manager
  3. Virtual Switch Manager
  4. Create Virtual Switch - External
  5. Testing internet speed - 50 Mpbs up / 0.1 Mbps down
  6. Remove virtual switch
  7. Testing internet speed - 70 Mbps up / 70 Mpbs down

I have not created any virtual machines yet. The host network performance is degraded. The host has "Realtek PCIe GBE Family Controller".

The only fix I found in internet is for Broadcom cards -- to disable "Large Send Offload" in Adapters properties, but unfortunately this does not help.

Maris B.

Posted 2017-11-07T09:58:37.403

Reputation: 586

1After updating to Windows 10 1809, I've had exactly the same problem (also with a "Realtek PCIe GBE Family Controller"), except that down speed was fine and up speed got reduced to less than 1 Mbps. Updating the device driver through "Device Manager" fixed the issue. – Heinzi – 2018-11-16T13:12:19.517

Answers

11

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

sfuqua

Posted 2017-11-07T09:58:37.403

Reputation: 211

This whole issue is super annoying, but alas this does work. Thanks. – Mike – 2019-02-27T06:43:27.813

2

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

Mr. Raspberry

Posted 2017-11-07T09:58:37.403

Reputation: 385

2Unfortunately command Set-VMNetworkAdapter does not work for me. I tried to use network adapter name from Control panel, from Hyper-V, also tried to rename, with double quotes, also w/o. But I always get the same error: Set-VMNetworkAdapter : No network adapter was found with the given criteria. (PowerShell run as admin also does not help) – Maris B. – 2017-11-08T08:42:28.837

I think this worked for me after a restart. I am running minikube on hyper-v and my host machines uses wifi. When after creating the virtual switch to share the host network, my internet was basically 1/10 of the expected. Applied the Powershell command and did not work. Restarted and it worked. – VRPF – 2018-05-21T10:41:20.340

@MarisB. did you run Powershell as an administrator? – Aubrey Robertson – 2019-01-03T19:05:24.760

@AubreyRobertson - yes, As Administrator – Maris B. – 2019-01-04T15:19:29.707

2

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).

Dorian

Posted 2017-11-07T09:58:37.403

Reputation: 21

1

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.

Rumkex

Posted 2017-11-07T09:58:37.403

Reputation: 11

1

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.

Rare Solutions

Posted 2017-11-07T09:58:37.403

Reputation: 11

Strangely this worked for me too. First I created the external switch and used my host for awhile, noticed the slow-down. Deleted it and created an internal switch and turned Internet sharing on. This worked except then the VM was behind a NAT and I needed it not to be. Deleted the internal switch, turned off Internet sharing again, created a new external switch and immediately rebooted the host. Then everything was fine! – David Ching – 2020-01-20T23:19:16.400

1

For me, I did some of the above, so it may have helped, but I also disabled "allow management operating system to share this network adapter" in Hyper-V Virtual Switch Manager for the adapter I was using (I am using the internet wireless for Hyper-V and the external for the Host)

Anthony Horne

Posted 2017-11-07T09:58:37.403

Reputation: 121

That worked for me too and I ended up here searching for "allow management operating system " string to understand why it slows down network access... Still a mystery although I know how to fix this now. – Ashwin Prabhu – 2019-08-10T15:00:29.950

https://www.altaro.com/hyper-v/the-hyper-v-virtual-switch-explained-part-1/ Explains the overheads of sharing network adapter – Ashwin Prabhu – 2019-08-10T15:04:29.420

0

Updating my network adapter drivers, specifically my Dell wireless driver, fixed the slow Internet speed problem for me (so far).

I had the same problem with Windows 10 v 1709 running on a Dell M6800 notebook computer connected to my local router using WiFi. I had just installed Windows 10 a couple of months ago, so I thought my drivers were all up to date.

After creating an external virtual switch, my Internet speeds slowed to about 10% of the normal speed.

I tried using static IPV4 DNS settings in the network adapters and that did not solve the slow speed.

Finally, in Device Manager, I updated my network adapter drivers and that fixed my problem.

Hope this helps.

RichH

Posted 2017-11-07T09:58:37.403

Reputation: 1

0

I've been struggling with this issue for a while now myself. Same scenario, same dilemma. Not much help online either, had to experiment around (even had a couple bluescreens) until I found a solution.

With the Fall Creators Update, Microsoft broadsided everybody by forcing us all to use their new "Default Switch". The problem comes from the fact that said switch monopolizes one of your NICs by creating a NAT over the "Internet Connection Sharing" service. If you only had one NIC then you're out of luck connecting an external virtual switch. While it will let you do so, it results in the download speeds you're seeing. Internally something funky is going on with the NAT, but as for what I don't know.

The following does work though to get the intended end result:

  1. Create an internal switch
  2. Assign the assoc. virtual ethernet adapter for the switch with a static IP not in your DHCP range ( ex: 192.168.1.1 ) and a subnet mask.
  3. Select both your NIC and the adapter from step #2 and add them to a bridge

The end result will be that your VMs are on your external network and receiving IP addresses from DHCP, while your host shouldn't be impaired in any fashion as far as I can tell.

If you want to add more "pseudo-external" switches just do steps #1 and #2 and add them to the existing bridge.

iceflow19

Posted 2017-11-07T09:58:37.403

Reputation: 101

I've tried this approach, but it seems I end up with the same problem after the latest update (Win 10 Pro 64 update 1809). A couple of days ago, any external network, or a bridged internal network, causes the same slowdown. – Klemen Slavič – 2018-11-01T00:19:47.463

@KlemenSlavič I haven't upgraded to 1809 yet but in general I heard its steaming pile of bugs. So I wouldn't doubt that it may break this. Thanks for the heads up. – iceflow19 – 2018-11-17T01:04:58.400

0

https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network provides a good step-by-step on setting up NAT for internal Hyper-V networks.

TLDR, for example:

PS C:\> New-VMSwitch -SwitchName "SwitchName" -SwitchType Internal

PS C:\> Get-NetAdapter

Name                  InterfaceDescription               ifIndex Status       MacAddress           LinkSpeed
----                  --------------------               ------- ------       ----------           ---------
"SwitchName"          Hyper-V Virtual Ethernet Adapter        40 Up           00-15-5D-00-6A-01      10 Gbps
Wi-Fi                 Marvell AVASTAR Wireless-AC Net...      18 Up           98-5F-D3-34-0C-D3     300 Mbps
Bluetooth Network ... Bluetooth Device (Personal Area...      21 Disconnected 98-5F-D3-34-0C-D4       3 Mbps

PS C:\> New-NetIPAddress -IPAddress 192.168.99.1 -PrefixLength 24 -InterfaceIndex 40
PS C:\> New-NetNat -Name HyperVNat -InternalIPInterfaceAddressPrefix 192.168.99.0/24

Machines on the internal network will not get DHCP assigned addresses, so you'll need to configure those yourself. I used Google DNS (8.8.8.8/8.8.4.4) for as the DNS servers for the internal machines.

Marc Durdin

Posted 2017-11-07T09:58:37.403

Reputation: 101

0

Same issue for me and it seems to be coming back after updates.

I am a VMWare user and and I was "forced" to work with Hyper-V. The first noticeable thing missing when creating a virtual switch is the lack of an option for NAT. So I ended up using "External" in order to connect my VMs to the physical network. My first problem was not the internet speed and internet connection erratic behavior. It was the fact that I was exposing my VMs to the external network! Then the slow/erratic connection issue arose on top of that!

So I used the PS commands found here to create a NAT adapter and this work like a charm!

ManuD

Posted 2017-11-07T09:58:37.403

Reputation: 1

0

If you are loosing internet when you create the virtual adapter what you need to do is go the the network connections (windows+r type ncpa.cpl) click properties look for Internet protocol version 4 IPv4 click properties again then set up it up it will look something like

IP address: 192.168.1.55 subnet mask: 255.255.255.0 default gateway: 192.168.1.1

prefered DNS 1.1.1.1

Although based on what I read maybe you just need to make DNS 1.1.1.1 and thats it

TheRealMC

Posted 2017-11-07T09:58:37.403

Reputation: 1

0

I confirm having this issue on windows 10 1903. What worked for me was the internal switch workaround . Connecting to External Switch with physical card share would kill my host internet and obvious the vm won't get any.

Therefore here are the steps:

1)In hyper-v -> Virtual Switch Manager, create a new Internal Switch and on connection type , select Internal Network

2)From host control panel , go to Network and Internet\Network Connections -> right click on your host network card -> properties . Then move to Sharing tab and check mark "Allow other network users ..." then select the Internal Network switch that was created in the previous step

3)Go to your virtual machine settings and select the internal network adapter

Enjoy your internet on your vm . Microsoft get your techs in order and fix this issue.

Cheers !

Radu C Popescu

Posted 2017-11-07T09:58:37.403

Reputation: 36