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

HTTP Proxy and CFFS (Categorization Servers) slowdown

I spent some time today to experiment with the Astaro Proxy server, looking for why the feeling of web browsing snappiness is gone when using astaro. As many pointed out it has to do with Astaro Categorization servers (CFFS).

I setup a SafeSquid Proxy, with URL filtering (just like astaro), and according to my test, Browsing with safesquid it twice faster than with Astaro, for example a page would take 3 sec to load took between 6 and 10 seconds to load with astaro. A 2 sec page took 4 sec with astaro. This is with a single user.

The wrose is this was with all security feature of the proxy turned OFF, (AV, URL filter etc)

I`ve also set my safesquid as a parent proxy for astaro to see what it does.  Basically even if you turn off all Astaro proxy feature, it still make 1 connection to its CFFS server for each request that the proxy process.

Over a few minutes, Astaro make 7316 request to its CFFSXX.astaro.com server!!

Now, what happen if you block thoses. I blocked the cffs server in the squid proxy, and things only gets wrose.. Page are even slower to load when using the Astaro proxy because all its connection to cffs server time out.. (See log below)

Finally, my ping to my closest cffs is not bad, so imagine how bad this gets for user with very high ping to the best of the cffs server list.

My ping is currently reported at 85 in the proxy log, and about 40 when using ping.

So basically, I believe there is a great area for improvement there. 

1) Why does Astaro still look for categoriezation even if all Feature of the proxy are turned off (including all URL filter), even if a host is white listed ???????????? This makes no sense to me
2) Why are the categorization not cached for some time? Currently it seem that 1Request = 1CFFS Request
3) Local replication would definatly be lightning fast, but probably have issues assosiated with.


This is what happen when you block all cffs(even if URL filtering if OFF), and start using the proxy:

2010:09:20-20:15:21 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="0xf1850878" function="sc_categorize_url" file="scr_scanner.c" line="941" message="no categorization received for url: www.nationalpost.com/.../btn-next.gif"
2010:09:20-20:15:21 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_decrypt" file="scr_scanner.c" line="438" message="EVP_DecryptFinal failed"
2010:09:20-20:15:21 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_server_cmd" file="scr_scanner.c" line="631" message="cffs04.astaro.com: decrypt failed"
2010:09:20-20:15:21 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="0xd735ae00" function="sc_categorize_url" file="scr_scanner.c" line="941" message="no categorization received for url: www.nationalpost.com/.../comments-logo.gif"
2010:09:20-20:15:22 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_decrypt" file="scr_scanner.c" line="438" message="EVP_DecryptFinal failed"
2010:09:20-20:15:22 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_server_cmd" file="scr_scanner.c" line="631" message="cffs03.astaro.com: decrypt failed"
2010:09:20-20:15:22 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_decrypt" file="scr_scanner.c" line="438" message="EVP_DecryptFinal failed"
2010:09:20-20:15:22 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_server_cmd" file="scr_scanner.c" line="631" message="cffs07.astaro.com: decrypt failed"
2010:09:20-20:15:22 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_decrypt" file="scr_scanner.c" line="438" message="EVP_DecryptFinal failed"
2010:09:20-20:15:22 plasmashield httpproxy[651]: id="0003" severity="info" sys="SecureWeb" sub="http" request="(nil)" function="sc_server_cmd" file="scr_scanner.c" line="631" message="cffs06.astaro.com: decrypt failed"
 


So it does look for categorization even if it's not necessary.

Thoses who care about this, should speak: http://feature.astaro.com/forums/17359-astaro-security-gateway-feature-requests/suggestions/178336-websecurity-local-content-filter-database?ref=title


This thread was automatically locked due to age.
Parents
  • Thanks, John, it's good to have another OF around here!  I like your ideas about avoiding the necessity to upgrade RAM; none of my 120/220 customers would appreciate being forced to upgrade.  I don't understand why this couldn't be just another PostgreSQL database.

    X-cimo, that's a great observation, and a simple way to speed things up in the next release instead of waiting for a major version change.  I wonder if that might not tax the Astaro servers though as they would have a lot more connections open simultaneously.

    Back to my suggestion... According to AngeloC, there already is a period where the information is cached, so a simple solution would be:

    URL cached? Block if indicated
    Request URL
    Request categorization of URL if not cached
    Drop or deliver response to URL request


    I don't know how "deep" into the URL TrustedSource goes; maybe the engine considers the entire URL, so every request the Proxy receives must be checked, as there are no duplicate requests.

    Also, Astaro could "smarten" the stardard HTTP cacheing; if an item is in the cache, use it without consulting TrustedSource (or just ignore the response).  If a "block" results from a request to TrustedSource, remove the item from the HTTP cache.

    Anyway, I think we're coming up with "low-cost" suggestions here that could make a substantial difference in responsiveness.

    Cheers - Bob
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA
Reply
  • Thanks, John, it's good to have another OF around here!  I like your ideas about avoiding the necessity to upgrade RAM; none of my 120/220 customers would appreciate being forced to upgrade.  I don't understand why this couldn't be just another PostgreSQL database.

    X-cimo, that's a great observation, and a simple way to speed things up in the next release instead of waiting for a major version change.  I wonder if that might not tax the Astaro servers though as they would have a lot more connections open simultaneously.

    Back to my suggestion... According to AngeloC, there already is a period where the information is cached, so a simple solution would be:

    URL cached? Block if indicated
    Request URL
    Request categorization of URL if not cached
    Drop or deliver response to URL request


    I don't know how "deep" into the URL TrustedSource goes; maybe the engine considers the entire URL, so every request the Proxy receives must be checked, as there are no duplicate requests.

    Also, Astaro could "smarten" the stardard HTTP cacheing; if an item is in the cache, use it without consulting TrustedSource (or just ignore the response).  If a "block" results from a request to TrustedSource, remove the item from the HTTP cache.

    Anyway, I think we're coming up with "low-cost" suggestions here that could make a substantial difference in responsiveness.

    Cheers - Bob
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA
Children
  • Hi

    I read the above technical details several times and to the best of my understanding,

    The Slowness is because first it query the CFF Servers, then it Fetch the actual Contents.

    But I still do not understand, why the query to CFF Servers is that slow as in due to the location of the servers thus network latency or the servers are simply overloaded thus the slow response?

    As noted in my other post, I did the traceroutes to all the servers and the results look resonable at about 300 - 400 ms.

    Currently, I switched off the URL Filtering and depend on OpenDNS and to the best of my knowledge, OpenDNS Servers are in US and I am in Singapore and it is simply much better, but of course ideally I would want to use the Astaro ones since it is part of the features.

    As for Local Cache, so far with all features turned on, Double AV, IPS Rules on for all, I used about 1GB out of 2GB, so yeah we can easily afford to load the database into the RAM.