This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Speed testing on a GB internet connection: To VM or not to VM

I am lucky enough to live in an area where i was recently able to upgrade my home internet connection to gigabit fiber.  To date I have been running Sophos UTM as a VM on a Dell R710 I picked up on ebay running ESXi.   Unfortunately that machine was topping out at about 120 Mbits/Second using SpeedTest.net as a benchmark.  For reference, my Dell R710 has dual x5660 2.8 GHz Hexacore CPUs.  I decided since I was paying for the high speed service, I should probably be able to actually use it, so I started looking into a system that I could run UTM and get close to the speed of my internet connection.

The system I picked out is as follows:

Motherboard: GIGABYTE GA-Z170N-WIFI
Processor:  Intel Core i7-6700 8M Skylake Quad-Core 3.4 GHz
Memory:  16GB (2 x 8GB) DDR4 SDRAM 2666  (PC4 21300) 
HardDrive: 128 GB M2 SSD
NIC: Intel PRO/1000 Pt Dual Port PCIe Server Adapter (Intel 82571EB Chip)

Even though the motherboard has 2 Intel NICs on it already, I decided I would use the Server adapter because I had it laying around and there have been reports of issues with the Intel l219 based port.  Sure enough neither ESXi nor Sophos UTM would recognize that port out of the box.

I was really hesitant to dedicate the whole system to running UTM though given the great success I have had with ESXi.  There are only 5 of us using the connection, so a quad core hyperthreading CPU was way overkill.  The only question I had was how much performance I would loose due to the virtualization.  I decided to test it out on 3 configurations.

Config 1: UTM running as a VM under ESXi with 2 virtual NICs each connected to a VM switch attached to its own 82571 port
Config 2: UTM running as a VM under ESXi with both 82571 one ports passed directly through to the VM using DirectPath IO
Config 3: UTM running all by itself on the machine without ESXi

VM Software: ESXi version 6.0 VM version 8 VMs.  Each VM was given 6 processors and 8 GB of RAM on 50 GB partitions

I set UTM 9.401-11 up the same on all 3 configurations with:

Intrusion Prevention Engine enabled
Command & Control/Botnet Detection Engine enabled
Web Protection Virus Scanning enabled checking for criminal, nudity, drugs, extremists and nudity.
To test the connection speed I connected a laptop up to UTM and checked its connection speed using speedtest.net.  Speedtest.net gets kind of creaky at gigabit speeds.  To make sure I was testing my setups limiations and not their servers, I hooked my laptop up to the fiber connection immediately before starting the 3 tests and immediately after completing the 3 tests.  I did 5 speed test for each configurations and averaged the results
These are my results (note upload and download speeds are in mbits/sec and ping times are in ms):

Download
Raw Config 1 Config 2 Config 3 Raw
894 423 419 422 907
846 423 419 421 762
884 423 421 422 821
868 424 422 422 835
916 423 421 423 808
Average 881.6 423.2 420.4 422 826.6
Upload
Raw Config 1 Config 2 Config 3 Raw
820 460 501 493 762
800 464 498 494 813
884 461 499 496 838
697 468 496 499 826
819 467 498 498 643
Average 804 464 498.4 496 776.4
Ping
Raw Config 1 Config 2 Config 3 Raw
4 5 3 4 2
2 3 5 4 4
2 3 4 4 4
4 5 4 3 3
2 3 4 4 2
Average 2.8 3.8 4 3.8 3

 

As you can see,  all 3 configurations performed very similarly.  The only real difference was upload speed was hindered a bit by using virtual NICs instead of passthrough NICS.  

I have decided to run ESXi on the server and limit UTM to 3 or maybe 4 processors and 6 to 8 GB of ram and give the rest to my PLEX VM



This thread was automatically locked due to age.
  • Wow - lots of work and very detailed results.  I run a pretty big ESXi shop over the last 5-6 years and also have an ESXi box at home running UTM 9.  It's a pretty new installation with a Gigabit fiber that's less than 2 months old.  I'm sure you've heard it - but turning off IPS will shoot your connection right up to the low to mid 900mbs for upload and download.  It's just how the UTM threads are built.  It really doesn't matter the resources you throw at it - it won't get faster.  To get IPS to run at gigabit speeds, you need more money for home gear than is smart.

    I've got some packet issues with my ISP right now which requires PPPoE for my gigabit fiber.  But everytime I enable IPS - I see a speed drop big enough that I'm willing to run w/o it enabled.  My host is Core i5 3.9Ghz, 32GB RAM, SSD boot and various internal drives as well as iSCSI to my Synology DS 1815+.  I have the default specs provided to the UTM and from what I read - doesn't matter if I had a Dell box like yours or something double in size, the overall network speeds are held back by the IPS scanning engine and will cut your gigabit speeds in half.

    Nice work on the testing.

  • it has been a while since i have used vmware but here is something you can do:

    create a pool of resources equal to 4 cpu worth of ghz and 8 gigs of ram.  Then create a vm with two vcpus and assign 100% of that pool of ghz to that vm.  Try your tests again.

    Owner:  Emmanuel Technology Consulting

    http://etc-md.com

    Former Sophos SG(Astaro) advocate/researcher/Silver Partner

    PfSense w/Suricata, ntopng, 

    Other addons to follow

  • Two vCPUs will never use more resources than 2 cores worth of GHz, regardless of how you configure it.  If you have 8 cores of 2ghz of power and assign all 8 cores to a resource pool, then assign a VM 2vCPUs, that VM will never see more than 4ghz of processing power.  If that is wrong, please point me to the document from VMWare that states it can.

  • it used to be you could pool ghz(v3) i guess they took that away to work more like hyper-v.  I ahd setup multiple vm's using that philosophy.

    you can get to near gigabit with the firewall only with 3.4 ghz..as you add things the performande is going to go down.  The only way tog et close is to drastically increase the number of simultaneous users(50 or more) AND the number of vcpus(4+) depending on your user counts.

    Owner:  Emmanuel Technology Consulting

    http://etc-md.com

    Former Sophos SG(Astaro) advocate/researcher/Silver Partner

    PfSense w/Suricata, ntopng, 

    Other addons to follow

  • it looks like i am going to have to setup vmware on a spare server of mine and re-test my theories when it comes to vmware.  I prefer hyper-v myself.

    Owner:  Emmanuel Technology Consulting

    http://etc-md.com

    Former Sophos SG(Astaro) advocate/researcher/Silver Partner

    PfSense w/Suricata, ntopng, 

    Other addons to follow

  • aha found it.  it is claled a resource pool:

    https://communities.vmware.com/thread/405968?start=0&tstart=0

    so it will work exactly as i have talked about...i didn't think vmware would take that away..:)

    Owner:  Emmanuel Technology Consulting

    http://etc-md.com

    Former Sophos SG(Astaro) advocate/researcher/Silver Partner

    PfSense w/Suricata, ntopng, 

    Other addons to follow

  • Owner:  Emmanuel Technology Consulting

    http://etc-md.com

    Former Sophos SG(Astaro) advocate/researcher/Silver Partner

    PfSense w/Suricata, ntopng, 

    Other addons to follow

  • Resource pools only compartmentalize resources for scheduling purposes.  There is no way to force multiple CPUs to work as a single thread.  It simply isn't possible.  You could not make a 1 vcpu box consume 16ghz of processing power with cpu resource pools.  Test it out, you will see.  It will spread that one cores worth of gigahertz between different physical cores, but the guest/vCPU will never see more than a cores worth of performance.

  • The handling of the data from a single transfer is clearly a single thread.  When the transfer is happening, The CPU utilization only spikes to show a single core going all out no matter which config I use.  Neither ESXi nor any other OS out there has the ability to split code from a single thread onto multiple cores. The person who figures this out would be very rich indeed as CPUs have essentially been frequency bound for many years now. 

  • first of all there is a known bug with Linux and the 82571 chipsets.  Vmware runs off a Linux kernel.  This chipset is deprecated by intel and no further fixes are coming.  I would use either broadcom or intel i-211 series nics.  The 219's are too new for right now.  Search for your chipset number I posted about this bug a while back..:)  either way with only 5 of you yes you are waaaay overkill and i bet you are getting hit by the clock throttling issues in modern chips i have talked about before(search for my dissertations on that).  Go into your bios of the host and turn off all power management.  In essence lock the cpu at max frequency.  In modern chips this has little to no impact on power usage.  I would then put your UTM vm down to 2 cpu cores.  You can go 4 if you want to use http proxy.  With 4 cores you will get two instances of snort each capable of about 250-450 mbps per thread.  If you are successful in locking the clock to max then you can go six cores which with IPS on should allow you to get very very close to 1 gigabit..but only if you have 3 or more simultaneous users.  Search for my dissertations on snort as well..:)

    Owner:  Emmanuel Technology Consulting

    http://etc-md.com

    Former Sophos SG(Astaro) advocate/researcher/Silver Partner

    PfSense w/Suricata, ntopng, 

    Other addons to follow