Throughput Hyper-V



  • I am getting fairly low throughput on Hyper-V. It seems like the network somehow gets limited to 100Mbit, since I only get 100Mbit through.

    Neither the webgui or the console gives any information on the media type of the Hyper-V adapters.

    I am not using the legacy adapter in Hyper-V.



  • please give us more information.

    Which Hardware do you use?
    Is it a internal or external Network? (External - which NIC?)

    Do you use traffic shapper?



  • I am running Hyper-V 2012R2. You can only connect VMs to virtual switches there. The switches all run 10Gbit. The physical network cards also connected to the virtual switch run 1Gbit which I can see on the physical switches.

    The HyperV 2012R2 server has 3 virtual switches (red, orange, green). The pfsense is only connected to red and orange. Each switch is connected to a physical network card.

    If I skip the psSense 2.2 and connect my CentOS7 (also running under HyperV 2012r2) I get 240Mbit throughput which is more or less my internet speed. Through pfsense my CentOS7 only gets 100Mbit.

    I am using 3 Intel network card in the server, 2 intel I350 and 1 intel PRO/1000 GT.

    2.2-BETA  (amd64)
    built on Wed Oct 15 23:23:52 CDT 2014

    FreeBSD 10.1-RC2

    Tell me what more information you need.



  • I get over 200Mbps both upload and download. Running Windows 2012 R2 Hyper-V on a Dell PowerEdge 1950 III with both built in NICs for LAN, and a Realtek 1Gbps PCIe for WAN. I got roughly the same running Windows 2008 R2.

    I normally run a semi current snapshot of 2.2 which gets updated normally the 1st and the 15th of the month.



  • 200 out of what?

    I tried today to set up a Windows 7 machine as firewall and that one pumped 230Mbit out of 250Mbit on the same hardware to a CentOS7 guest.



  • pfSense 2.2 -> Debian

    [  5] local 10.X.X.X port 5001 connected with 10.X.X.X port 39806
    [  5]  0.0-10.0 sec  1.06 GBytes   910 Mbits/sec
    [  4] local 10.X.X.X port 5001 connected with 10.X.X.X port 39807
    [  4]  0.0-10.0 sec  1010 MBytes   846 Mbits/sec
    

    Hyper-V 2012 R2 / External Intel NIC
    AMD Cpu


    Please test your throughput internally (localhost)

    [  3] local 127.0.0.1 port 17290 connected with 127.0.0.1 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.0 sec  7.88 GBytes  6.77 Gbits/sec
    

    Do you use the traffic shaper?



  • Can't say that I am a FreeBSD guru. Which commands did you use to get those results. I used ifconfig which didn't say anything about connection speed.



  • that's iperf (available as pfsense package)
        one host act as server (iperf -h)
        one host act as client (iperf -c SERVERIP)

    if you want to test it over WAN, you need a FW rule



  • I will test it on Wednesday, sadly no time for this until that.



  • @falumas:

    200 out of what?

    I tried today to set up a Windows 7 machine as firewall and that one pumped 230Mbit out of 250Mbit on the same hardware to a CentOS7 guest.

    oops, sorry. actual link speed is 1Gbps, and WAN from/to either end is 250Mbps. the ~200Mbps was for the VPN link between. Within the LAN it varies between 300-800Mbps, depending on which devices I test with.



  • CentOS7 to CentOS7 both under Hyper-V 2012R2

    –----------------------------------------------------------
    [  3] local 192.168.1.xxx port 55167 connected with 192.168.1.xxx port 5001
    [ ID] Interval      Transfer    Bandwidth
    [  3]  0.0-10.0 sec  718 MBytes  602 Mbits/sec

    pfSense to CentOS7 both under Hyper-V 2012R2

    –----------------------------------------------------------
    [  9] local 192.168.1.xxx port 49626 connected with 192.168.1.xxx port 5001
    [ ID] Interval      Transfer    Bandwidth
    [  9]  0.0-10.0 sec  174 MBytes  146 Mbits/sec

    pfSense version
    2.2-BETA  (amd64)
    built on Sat Oct 25 21:39:21 CDT 2014

    FreeBSD 10.1-RC3



  • what kind of virtual nics are you using? the legacy ones are crappy



  • I am using the once simply called Network Adapter (and not the ones called legacy adapters) for all my VMs.



  • @falumas:

    pfSense to CentOS7 both under Hyper-V 2012R2

    [  9]  0.0-10.0 sec  174 MBytes  146 Mbits/sec

    That's really weak, any special configuration with the hyper-v network adapters?
    (SR-IOV / Vlan / Enabled Bandwidth management / NIC Teaming / Disabled virtual machine queue / Disabled IPsec task offloading)  ;D

    Did you specify the MTU value manually, within pfSense?



  • My computer doesn't support VT-D so no SR-IOV.

    I have tried both with and without VMQ and without gives me a 20Mbit lower value.

    No NIC-teaming, IPsec task offloading is disabled.

    MTU is untouched in pfSense.



  • ok than I am out, sorry I have no idea what's the issue here. (but I don't think, that's a issue with pfSense)



  • Found this in the log of the Hyper-V server. I am using a fully updated Hyper-V 2012R2 core.

    2.2-BETA  (amd64)
    built on Tue Oct 28 06:49:37 CDT 2014

    FreeBSD 10.1-RC3

    Networking driver in PfSense2.2 loaded but has a different version from the server. Server version 5.0  Client version 3.2 (Virtual machine ID C4EC369E-xxxx-xxxx-8A85-9DBFB85BFB0B). The device will work, but this is an unsupported configuration. This means that technical support will not be provided until this problem is resolved. To fix this problem, upgrade the integration services. To upgrade, connect to the virtual machine and select Insert Integration Services Setup Disk from the Action menu.

    Do I need to install integration services in pfSense 2.2 or are they included?



  • This is another thing I found in the logs which most likely didn't cause my problem, but it seems like the Hyper-V components need a boost.

    A storage device in 'pfsense2.2' loaded but has a different version from the server.  Server version 6.0  Client version 2.0 (Virtual machine ID 6D28DD84-xxxx-xxxxx-B799-AECCE8AF44E6). The device will work, but this is an unsupported configuration. This means that technical support will not be provided until this problem is resolved. To fix this problem, upgrade the integration services. To upgrade, connect to the virtual machine and select Insert Integration Services Setup Disk from the Action menu.



  • @falumas:

    This is another thing I found in the logs which most likely didn't cause my problem, but it seems like the Hyper-V components need a boost.

    A storage device in 'pfsense2.2' loaded but has a different version from the server.  Server version 6.0  Client version 2.0 (Virtual machine ID 6D28DD84-xxxx-xxxxx-B799-AECCE8AF44E6). The device will work, but this is an unsupported configuration. This means that technical support will not be provided until this problem is resolved. To fix this problem, upgrade the integration services. To upgrade, connect to the virtual machine and select Insert Integration Services Setup Disk from the Action menu.

    That message can be ignored: http://support.microsoft.com/kb/2737297 (its not only valid for Windows but also for *inux, *BSD)



  • I do not have that message for any Win7, Win8, Win10 or CentOS7 guest.



  • @falumas:

    I do not have that message for any Win7, Win8, Win10 or CentOS7 guest.

    Thats because for Win you are able to install the latest integration components directly from the Hyper-V host (which I assumed you did).
    Try to run CentOS5 or 6 and you will get the same error/info message, because the Hyper-V server compares the Hyper-V Integration components version of the VM with that one, which is delivered directly with Hyper-V.



  • I am running CentOS6.5 as well but with the latest integration components installed.

    This works fine for CentOS6.5
    http://www.microsoft.com/en-us/download/details.aspx?id=41554



  • If any pfSense developer reads this thread here are instructions for the integration services for freeBSD.

    https://wiki.freebsd.org/HyperV



  • I installed the FreeBSD 10.1RC3 yesterday and it is the same networkdriver included in that one.

    Installing packageges in the RC3 is a nightmare, so I hope there are som FreeBSD gurus in the pfSense team that can install the Hyper-V package.



  • there is little chance that integration services will improve your throughput.



  • No sadly not. I just got it installed on my FreeBSD10.1RC4

    A storage device in 'FreeBSD10.1RC4' loaded but has a different version from the server.  Server version 6.0  Client version 2.0 (Virtual machine ID E9446715-BC5D-4107-AE2E-D0D0C84F8415). The device will work, but this is an unsupported configuration. This means that technical support will not be provided until this problem is resolved. To fix this problem, upgrade the integration services. To upgrade, connect to the virtual machine and select Insert Integration Services Setup Disk from the Action menu.

    and still the same.

    Seems that we have to wait until FreeBSD11 untill full Hyper-V support is there. But what we have now is still a hugh step forward for the pfSense Hyper-V support.

    /Karl



  • It seems to be that the problem is biggest on low Power machines.

    I have two hyper-v test machines one with a Atom S1260 (Dual Core + HT) and a Celeron J1900 (Quad core).

    On the Atom I still get a throughput around 150Mbit, but today I tested on the Celeron and there I got around 500mbit.

    /Karl



  • I did a fresh install of pfsense

    2.2-BETA  (amd64)
    built on Wed Nov 05 21:26:57 CST 2014

    FreeBSD 10.1-RC4-p1

    This gave me slightly higher througput, I now have 260Mbit.



  • @Kofl:

    @falumas:

    This is another thing I found in the logs which most likely didn't cause my problem, but it seems like the Hyper-V components need a boost.

    A storage device in 'pfsense2.2' loaded but has a different version from the server.  Server version 6.0  Client version 2.0 (Virtual machine ID 6D28DD84-xxxx-xxxxx-B799-AECCE8AF44E6). The device will work, but this is an unsupported configuration. This means that technical support will not be provided until this problem is resolved. To fix this problem, upgrade the integration services. To upgrade, connect to the virtual machine and select Insert Integration Services Setup Disk from the Action menu.

    That message can be ignored: http://support.microsoft.com/kb/2737297 (its not only valid for Windows but also for *inux, *BSD)

    Are you shure about this? The MS kb article talks about the client having a higher version of the intergration services than the server.
    In the logs it's posted the other way around, so that would indicate there is room for inprovement !!