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

Poor download/upload performance

Hi! New user here. 

I've recently installed UTM 9 Home (latest version) on my small box (Atom D2550, 4GB, 32GB SSD, Dual 1GB Broadcom BCM 57788 NICs). I had pfSense installed before, but decided to try Sophos. 

Anyway, after installation I noticed that my speed decreased quite a bit. My ISP is Comcast and I'm paying for a 50/10 line, but during speed tests with direct connection to a PC or through pfSense (same hardware) I was getting more like 120/12. 

With the Sophos installed now I'm getting 45/8.5, and this is with just Firewall protection. If I enable Web protection and IPS the speed is about 43/7.5. What the heck?

I ran top command in the terminal to check CPU load. When IPS is enabled I see that Snort uses 99% of one of the cores (being single-threaded I know that's the limiting factor for me with IPS on). However, without IPS during speed tests (firewall only) the CPU idle stays at about 90%, so the limiting factor doesn't seem to be any of the processes nor the CPU. 

I connected my modem directly to my PC and I was again getting the 120/12 speeds. I connected back to Sophos box and again slow speeds. I went as far as duplicating my PC's MAC address on the external NIC. Still the same slower speed. 

The interesting thing is that during the speedtest (speedtest.net) my download speed (with FW only) stays right at 45mbps, doesn't go above, just a straight line on the graph. As if something is "throttling" the speed. I checked my QoS and no throttling there (I had it there for VoIP QoS, but disabled it). 

I'm out of ideas here. Either something in the Sophos software stack is limiting the speed or something is up with my NICs (but I had pfSense installed on the same exact hardware and was getting the 110/12 speeds, and that's with snort ON, maxing out 1 core).

Any help would be appreciated!

Thanks a lot!


This thread was automatically locked due to age.
  • Besides of that I wonder why you should get double bandwidth as you pay for, my first guess based on your described behaviour would be, that you activated QoS incl. the "download equalizer" function on some interfaces - most likely the WAN Interface ?

    [8-)]
  • Besides of that I wonder why you should get double bandwidth as you pay for, my first guess based on your described behaviour would be, that you activated QoS incl. the "download equalizer" function on some interfaces - most likely the WAN Interface ?

    [8-)]


    Yes! That was it: download equalizer. I guess I broke one of the golden rules: if you don't know what a setting does (no matter how positive it sounds) don't touch it. [:)]

    I still can't get into 90 - 110 mbps range, but at least my speeds are now in the 80s. I've reduced snort ruleset and at 85 mbps snort maxes out about 80% of one of the cores. Still feels like something is limiting the max speed (doesn't look like a CPU issue). Considering that I was pulling 100+ via pfSense on this box (with almost all snort rules turned on). 

    I ran the test during the peak hours (maybe it was limiting), will try at night.

    What do those settings do anyway (download equalizer and upload optimizer)?

    Thanks for the support!
  • I shortly explained the used QoS techniques here

    However Googling for SFQ, RED wil help finding explanations for the used techniques.

    But in general QoS will limit the maximal bandwidth to the set values in the according QoS Interface - so set it correct, as too low values will limit your speeds (as happened to you), and too high values will makes those automated features useless and calculate things wrong.

    However - I've noted over the past years, that the Download Equalizer will start dropping packets of most consuming streams around 90% on downstream and around 80% on upstream, which would correspond with your behaviour, if you set your downstream to 50MBit...which will prevent a single stream to saturate your up-, and downlinks (and therefor deliver wrong / too low results in speedtests, as they usually use single connections). But overall seen those features helps you keeping your users happy by slowing down most demanding clients / connections and sharing available bandwidth more fair across the users.

    Two further things that may prevent your full 100MBit + speeds are:

    a) In the advanced section of the IPS the file related checks feature is activated
    b) Your cablemodem / Router and UTM negotiated 100FDX instead 1GBit Link. Manually setting the WAN Interface to 1GBit in the Interface hardware tab of the interfaces solves this (have seen this sometimes with cisco cablemodems and some glass transceivers/mediaconverters in the past)

    Tuning of the IPS as using the timestamps (not using rule older than 12months) and the tweaking section in the advanced part also may help speeding up things slightly.

    Give it a try ;o)
  • Thanks again!

    I didn't have the file related checks in IPS activated, but I did manually force the link to 1 gbps and that did it. Just ran the test on testmy.net and got 105/10 (the max download was 115 during the process). That's with snort enabled, and ruleset of  200ms. I've excluded the test server from the "Web filtering" and also followed the directions to download the signature DB into memory. Any reasons why that is?

    How can I verify that the signature DB did download into memory and the local copy is being used?

    Thanks!

  • ...
    Just an additional question when I run the speed test (speedtest.net) from my mac via Wifi I get very quick ping times ( 200ms. 
    ...
    Thanks!


    I wouldn't give too much on those http ping times - this heaviliy depends on which test site is choosen in the background and how your ISP priorizes / handles traffic to this destination (same issue with speedtest.net), and how heavy this site is under load. With a local testsite hosted by my ISP tested with speedtest.net I get in the middle of the night ping times of 9ms, over the day and any random choosen site (usually not the nearest) i sometimes also get times >200ms. This figure is complete nonsense in my eyes and may be useful maybe under controlled lab enviroments to do perftests, but not via Internet [;)]

    My simple philosophy: If websurfing feels smooth, everything is ok.
  • Hi, one more thing to check...

    Make sure your LAN(s) are in the "local networks" box in the IPS settings.

    Barry
  • Hi, one more thing to check...

    Make sure your LAN(s) are in the "local networks" box in the IPS settings.

    Barry


    Thanks Barry. Yes, that's how I had it set up. 

    The only thing I'm trying to figure out right now is how to check if Web Filter is using my local DB in memory or still queries the external DB. When I launch a site for the first time there is a noticeable delay initially, and then it loads quickly. 

    Thanks.
  • In 9.2 there are three categorization methods.

    CFFS - cloud lookup on every request
    CFF local db - local database
    SXL - efficient cloud lookup with local cache

    local db is not officially supported.  SXL is recommended and the way things will be going in the future.

    By default CFFS is enabled.

    If you have turned on the Endpoint Protection feature (even if you are not using Endpoints) then you are using SXL.  You can also turn it on in the command line.
    cc set http use_sxl_urid 1

    local db can only be turned on in the command line.
    cc get http sc_local_db disk
    cc get http sc_local_db none
  • In 9.2 there are three categorization methods.

    CFFS - cloud lookup on every request
    CFF local db - local database
    SXL - efficient cloud lookup with local cache

    local db is not officially supported.  SXL is recommended and the way things will be going in the future.

    By default CFFS is enabled.

    If you have turned on the Endpoint Protection feature (even if you are not using Endpoints) then you are using SXL.  You can also turn it on in the command line.
    cc set http use_sxl_urid 1

    local db can only be turned on in the command line.
    cc get http sc_local_db disk
    cc get http sc_local_db none


    I generally like the SXL approach, as it offers the benefits of both worlds, as up2date live lookups, and over the CFFS lookups also caching of the lookups, which comes after a while near to local db speeds.

    However - also SXL seems to requires some free memory. While it usually gave with appliances starting with 2GB memory upwards good results, it gave a completely opposite result with some of my old home UTM´s (old UTM120 Appliances with C3 and C7 CPU´s (yes...they still run quiet nice with 9.2 [:D])) with only 1GB of memory. I run all my 1GB appliances with CFFS, all other with SXL.
  • In 9.2 there are three categorization methods.

    CFFS - cloud lookup on every request
    CFF local db - local database
    SXL - efficient cloud lookup with local cache

    local db is not officially supported.  SXL is recommended and the way things will be going in the future.

    By default CFFS is enabled.

    If you have turned on the Endpoint Protection feature (even if you are not using Endpoints) then you are using SXL.  You can also turn it on in the command line.
    cc set http use_sxl_urid 1

    local db can only be turned on in the command line.
    cc get http sc_local_db disk
    cc get http sc_local_db none


    I need some help here - since several version ago 
    I set the following local cache to Disk ( I only have 2GB RAM and the recent 9.2 used 80% so I set to Disk since I have a SSD)

    cc set http sc_local_db disk
    /var/mdw/scripts/httpproxy restart

    It has been working fine as in Definitely Better than without local cache.

    I saw this post and realized this 9.2 has more options as stated above.

    But I do not know what is the exact syntax to type.

    If I do the following - it would be Back to "Original Settings"?
    cc set http sc_local_db none
    /var/mdw/scripts/httpproxy restart

    How can I check if I am using the "CFFS - cloud lookup on every request" OR  "SXL - efficient cloud lookup with local cache"

    SOPHOS need to make it easier to see on the Web Interface what are the options and what are we using.

    This SXL if it is so sophisticated, why is the CFFS by Default and we need to switch to SXL manually?

    I have to admit I am confused with these CFFS Enabled by Default, Local DB not supported, SXL is the way to go and if you enable End Point Protection, then it is SXL or else it is CFFS ??