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


  • However we DO indeed plan to offer a local download/copy of the categorization database, currently this is roadmapped (and reflected in the feature portal at feature.astaro.com) for 8.200.  It will take a fair amount of RAM, which is still being worked on, probably in the realm of 400-800 megabytes depending on the final implementation, which puts it outside of the lower end appliances reach. However for larger boxes or software installations, especially with the new V8 kernel supporting 64-bits and gargantuan amounts of installed memory, it will provide an alternative.


    I know I am still a newbie here at Astaro, but I have been Architecting Enterprise IT solutions for the past 20 years.  I would believe the solution is quite simple and would work for all ASG models, even those with only 1GB RAM.  It would seem that the best solution would be to make the handling of the the Cat DB configureable by the ASG admin with the following options (in no particular order);

    * have an enable/disable Cat DB download feature (like all the other ASG options)
    * if enabled, download the entire Cat DB to local DB on disk (as has been suggested)
    * refresh the Cat DB on a periodic basis (whatever is needed) (may want to consider only refreshing updates and not the entire DB at each period)
    * option to load the entire DB into RAM (for performance & for those with at least 2GB) or 'on demand' (to conserve memory & for those with only 1GB)
    * refresh entries in memory when the local Cat DB is updated

    The 'on demand' feature would be to keep the Cat entries for the Top XX sites in memory.  I'm not an expert on internet usage, but it would seem to me that there are three tiers for site visits by users; 1) the frequent ones that are visited on a regular basis 2) the infrequent ones that are only visited occasionally 3) all others sites.  Therefore why not keep the first tier in memory all the time so users do not perceive any slowdown in internet access for those frequently accessed sites.

    That's my .02 cents, thanx for listening.
  • I know I am still a newbie here at Astaro, but I have been Architecting Enterprise IT solutions for the past 20 years.  I would believe the solution is quite simple and would work for all ASG models, even those with only 1GB RAM.  It would seem that the best solution would be to make the handling of the the Cat DB configureable by the ASG admin with the following options (in no particular order);

    * have an enable/disable Cat DB download feature (like all the other ASG options)
    * if enabled, download the entire Cat DB to local DB on disk (as has been suggested)
    * refresh the Cat DB on a periodic basis (whatever is needed) (may want to consider only refreshing updates and not the entire DB at each period)
    * option to load the entire DB into RAM (for performance & for those with at least 2GB) or 'on demand' (to conserve memory & for those with only 1GB)
    * refresh entries in memory when the local Cat DB is updated

    The 'on demand' feature would be to keep the Cat entries for the Top XX sites in memory.  I'm not an expert on internet usage, but it would seem to me that there are three tiers for site visits by users; 1) the frequent ones that are visited on a regular basis 2) the infrequent ones that are only visited occasionally 3) all others sites.  Therefore why not keep the first tier in memory all the time so users do not perceive any slowdown in internet access for those frequently accessed sites.

    That's my .02 cents, thanx for listening.


    something like this would work leveraging the postgres database they already have.  you could just load the index into ram(unless it's too big0 then an incremental approach like the above would work for the index.  Then you really reduce the ram footprint..[[:)]]  you could also make it for machines with 2 gigs or more then you can start caching not only the index but the most heavily used portions of the database for even faster performance.  The wildcard is we don't know the stats of the blocklists in terms of size so that might throw a whole wrench into things..[[:)]]

    Owner:  Emmanuel Technology Consulting

    http://etc-md.com

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

    PfSense w/Suricata, ntopng, 

    Other addons to follow

Reply
  • I know I am still a newbie here at Astaro, but I have been Architecting Enterprise IT solutions for the past 20 years.  I would believe the solution is quite simple and would work for all ASG models, even those with only 1GB RAM.  It would seem that the best solution would be to make the handling of the the Cat DB configureable by the ASG admin with the following options (in no particular order);

    * have an enable/disable Cat DB download feature (like all the other ASG options)
    * if enabled, download the entire Cat DB to local DB on disk (as has been suggested)
    * refresh the Cat DB on a periodic basis (whatever is needed) (may want to consider only refreshing updates and not the entire DB at each period)
    * option to load the entire DB into RAM (for performance & for those with at least 2GB) or 'on demand' (to conserve memory & for those with only 1GB)
    * refresh entries in memory when the local Cat DB is updated

    The 'on demand' feature would be to keep the Cat entries for the Top XX sites in memory.  I'm not an expert on internet usage, but it would seem to me that there are three tiers for site visits by users; 1) the frequent ones that are visited on a regular basis 2) the infrequent ones that are only visited occasionally 3) all others sites.  Therefore why not keep the first tier in memory all the time so users do not perceive any slowdown in internet access for those frequently accessed sites.

    That's my .02 cents, thanx for listening.


    something like this would work leveraging the postgres database they already have.  you could just load the index into ram(unless it's too big0 then an incremental approach like the above would work for the index.  Then you really reduce the ram footprint..[[:)]]  you could also make it for machines with 2 gigs or more then you can start caching not only the index but the most heavily used portions of the database for even faster performance.  The wildcard is we don't know the stats of the blocklists in terms of size so that might throw a whole wrench into things..[[:)]]

    Owner:  Emmanuel Technology Consulting

    http://etc-md.com

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

    PfSense w/Suricata, ntopng, 

    Other addons to follow

Children
No Data