[c-nsp] NPE G1, CEF and ACLs and high CPU

Kristian Larsson kristian at spritelink.net
Tue Sep 9 16:10:06 EDT 2008


On Tue, Sep 09, 2008 at 04:04:46AM -0400, Alex Balashov wrote:
> Just to be clear, in case it isn't, I was not referring to how the ACLs are 
> organised from the user perspective, presentation-wise, but rather I was 
> surprised that they are not all put into an optimised data structure on the 
> back side by IOS by default so that matching can happen with somewhere 
> between O(1) and O(n) performance.
> 
> Thank you all for the enlightenment on compiled/turbo ACLs.
> 
> It makes me wonder whether the reason why routers are generally considered 
> a poorer solution for extensive ACL duty than PIXs or ASAs. Does the PIX 
> use compiled ACLs by default?  Or perhaps there is some sort of extremely 
> helpful ACIC-driven optimisation that they provide?

Cisco IOS (without the firewall feature set)
doesn't really support stateful firewalls, but is 
rather a fixed set of filters applied to packets.
PIX / ASA does stateful packet inspection and some
other mumbo jumbo that security people like to
have. I think that would be the #1 reason of why
one would choose a PIX over an IOS device.

I have no clue whether they're actually faster or
not at filtering packets.

  -K


>>> Are you _sure_ that order is important in these ACLs?  I ask because I
>>> honestly don't know, so don't get me wrong.
>> yes it is.. i have seen software based platforms knock 10-20% cpu off by 
>> reworking very poorly laid out ACL's in a "top down" fashion.
>>> It just seems rather unlikely.  Organising data like that into
>>> structures where matching and access can happen at more or less an O(1)
>>> formal computational complexity is a basic skill that is taught at the
>>> beginning of any undergraduate curriculum in computer science.
>>> Students
>>> are taught to understand that large amounts of random (non-sorted) data
>>> cannot be stored in a linear structure, and that even linear structures
>>> with comparatively few elements (such as an access list) can be very
>>> slow if the lookup is repeated with very great frequency.
>> aren't we doing some kind of eval on our current lists before applying a 
>> new one? like i'm thinking
>> 1) fire up the ACL leave it running for a while, look at the number of 
>> hits per ACL entry, and rework the ACL such that the maximum number of 
>> hits is at the top.
>> 2) shortcut ACL's as bill mentioned
>> eg, consider the following ACL
>> 5 deny udp host
>> 10 deny udp host
>> 20 deny udp host
>> 25 permit ip any
>> presume that 60% of your traffic is TCP. all of this traffic is having to 
>> drop through 3 denies before it gets permitted. you could save a 
>> significant amount of processing by simply putting
>> 1 permit tcp
>> 5 deny udp host
>> 10 deny udp host
>> 20 deny udp host
>> 25 permit ip any
>> sure, you are doubling up in what is permitted because the TCP would have 
>> hit the permit ip any at the bottom anyway, but you are saving a 
>> considerable amount of processing by having 60% of your traffic match the 
>> first ACL entry. sure, oversimplified, but if you can't permit tcp 
>> outright, consider a permit established before you start denying other tcp 
>> bits and pieces, because more often than not the majority of traffic being 
>> forwarded is established.
>> so in regards to having IOS reorganise the ACL for you that would have to 
>> make the assumption that the IOS has the capability to work out what is 
>> the ACL entries that are getting the most matches, in order to reorganise 
>> them, it isnt going to be able to predict this for you.
> 
> 
> -- 
> Alex Balashov
> Evariste Systems
> Web    : http://www.evaristesys.com/
> Tel    : (+1) (678) 954-0670
> Direct : (+1) (678) 954-0671
> Mobile : (+1) (706) 338-8599
> _______________________________________________
> cisco-nsp mailing list  cisco-nsp at puck.nether.net
> https://puck.nether.net/mailman/listinfo/cisco-nsp
> archive at http://puck.nether.net/pipermail/cisco-nsp/

-- 
Kristian Larsson                                        KLL-RIPE
Network Engineer / Internet Core        Tele2 / SWIPnet [AS1257]
+46 704 910401			              kll at spritelink.net


More information about the cisco-nsp mailing list