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

SYN policing using ingress qdisc





I am using the SYN-DoS.rate.limit script listed in the examples directory
in iproute2
package  to setup SYN policing. But it doesn't seem to work as expected.

The commands executed are as follows:
iptables -A PREROUTING -i eth1 -t mangle -p tcp --syn -j MARK --set-mark 1
tc qdisc add dev eth1 handle ffff: ingress
tc filter add dev eth1 parent ffff: protocol ip prio 50 handle 1 fw police
rate 1kbit
burst 40 mtu 9k drop flowid:1

With the above configuration, incoming SYNs should be restricted to 3/sec
as
per the comments in the script. But it is not happening eventhough  the
rate of
SYNs is exceeding much beyond the 3 packets.

When i reduce the mtu to 7k, every SYN is getting dropped and the overlimit
counter is getting increased as seen with the tc -d -s option.

I am using 2.4 kernel and the latest iproute2 001007 on a pentium 260mhz
m/c
PSCHED_CLOCK_SOURCE is defined as PSCHED_CPU.

I have a few questions about the options passed to tc filter.
1. How does mtu change the behaviour of policing?
2. Is it possible to have a burst value of 0?

Also i noticed the following piece of code in  the tc code in the file
m_police.c

if (p.rate.rate && !buffer) {
     fprintf(stderr, "\"burst\" requires \"rate\".\n");
     return -1;
}

I guess the above if stmt should be
     if (buffer && !p.rate.rate)


Thanks
Sridhar