14

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.

  • 1
    After 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 Nov 16 '18 at 13:12

12 Answers 12

10

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

  • This whole issue is super annoying, but alas this does work. Thanks. – Mike Feb 27 at 6:43
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

  • 1
    Unfortunately 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. Nov 8 '17 at 8:42
  • 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 May 21 '18 at 10:41
  • @MarisB. did you run Powershell as an administrator? – Aubrey Robertson Jan 3 at 19:05
  • @AubreyRobertson - yes, As Administrator – Maris B. Jan 4 at 15:19
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)

1

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 list the available network adapters with "Get-VMNetworkAdapter -ManagementOS" and "Get-VMNetworkAdapter *" to get the adapter names 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).

0

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.

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.

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.

  • 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č Nov 1 '18 at 0:19
  • @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 Nov 17 '18 at 1:04
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.

0

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.

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!

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

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 !

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.