Re: Rule matching question [iptables code structure]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 06, 2003 at 02:56:45PM +0200, hewa0000@xxxxxxxxxxxxx wrote:
>  
> When we add a rule to iptables that filter on
> MAC-address (or IP address and port for that
> matter). Does iptables ONLY check for the
> MAC-address option (alas in that case we filter on
> MAC-address)?.

> Based on a the report "Performance analysis of the
> Linux firewall on a host" by James Harris and
> Americo J. Melara. It is stated that for each check
> if the MAC-address in the rule match the given
> MAC-address, the Iptables-algorithm ALWAYS checks
> all possibilities (MAC-address, IP, Port, Protocol,
> Interface..). 
> Does anyone know this to be the truth?

It doesn't check all possibilities.  However, there is the ip_tables
core that matches ip src/dest, incoming/outgoing interface, l4protocol.
Please see linux/net/ipv4/netfilter/ip_tables.c:ip_packet_match() for
more information.

After this ip_tables core check was made, any extensions are checked,
and ipt_mac.c is one such extension.

> We are currently working on a big project where we
> use big lists of rules that are based on MAC and
> IP-addresses. And we are trying to understand why
> these lists of rules crave so much computation power
> to execute.

You are linearly iterating over long lists.  This raises computational
complexity.  Try building a tree-like structure made of lots of chains
with little number of rules in every chain.  This reduces the average
number of rules to be iterated per packet.  

That is a general rule of thumb when designing any iptables ruleset.

> If Iptables always run a check for every possible
> way to match our packet with a single rule
> (ip,mac,protocol,interface...) it consumes alot more
> (actually we belive it to be around 6 times as much
> according to the nature of the algorithm) as necessary. 
> 
> Optimally the algorithm would ONLY check for a
> MAC-Address match if that is what we are filtering
> on. We truly hope this also is the case. But please,
> someone who knows this :-) :

there is not much of an 'algorithm' involved.

> Sincerly,
> Open Access Networks Project MidSweden University.
> oan@xxxxxxxxx

-- 
- Harald Welte <laforge@xxxxxxxxxxxxx>             http://www.netfilter.org/
============================================================================
  "Fragmentation is like classful addressing -- an interesting early
   architectural error that shows how much experimentation was going
   on while IP was being designed."                    -- Paul Vixie

Attachment: pgp00428.pgp
Description: PGP signature


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux