[LARTC] Re: Policing based on port numbers
Andy Furniss
lists at andyfurniss.entadsl.com
Thu Apr 12 02:57:26 CEST 2007
Christian Benvenuti wrote:
>> I've never managed to find a way to use the word tcp in a filter without
>> getting an illegal match - I know it's in the help.
>
> The reason it does not work is that the keywords that refer to the L4
> protocols (such as tcp) are supposed to be used when:
> 1) the u32 filter is inserted into a u32 hash table
> AND
> 2) you jump to the above hash table from a u32 filter configured with
> the "offset" option.
>
> (unfortunately the U32 classifier is not well documented)
Ahh thanks I'll have to try some hashing tests. Last time I tried I
found that going above 512 buckets didn't work so I gave up and still
haven't looked into turning things up (I assume that's possible)
>
>> If you want to match tcp use the ip protocol match
>>
>> tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match
>> ip dport 0xXYZ 0xFFFF match ip protocol 0x06 0xff police .....
>
> You should invert the order of the two "match" conditions: first you make
> sure it is TCP, and then you test the destination port number.
>
Hmm - does that really matter - I did it that way because, judging by
filter counters the first match that fails stops further matching. It
depends on what you match and your traffic patterns, but it seemed like
it would be more efficient.
> This filter works in most cases, but not always: it does not take into
> account the IP options. IP packets with options in the IP header will
> not match.
> The reason is that "ip dport" is equivalent to "offset 22" from the
> beginning of the IP header.
I wonder how many packets there are like that in the wild - I don't have
much traffic to test. It's possible to make a fall through counter by
making a match and not specifying a class/flowid, though ISTR seeing a
patch recently that made me think that won't work anymore.
Andy.
More information about the LARTC
mailing list