Ядро linux-2.6.25. Попробовал пакет htbinit. Там конфигурационные файлы преобразовуются в правила tc, но все равно фильтрация через u32. Я пробовал
iptables -t mangle -A PREROUTING -s 192.168.100.3 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -s 192.168.100.3 -j RETURN
и смотрел iptables -t mangle -nvL - пакеты маркируются, но скорость не падает :(
Протокол компиляции
/sbin/tc qdisc del dev eth1 root
/sbin/tc qdisc add dev eth1 root handle 1 htb default 30 r2q 100/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 1 htb default 30 r2q 100
/sbin/tc class add dev eth1 parent 1: classid 1:2 htb rate 1024Kbit
/sbin/tc class add dev eth1 parent 1:2 classid 1:10 htb rate 256Kbit ceil 512Kbit prio 10
/sbin/tc qdisc add dev eth1 parent 1:10 handle 10 sfq perturb 10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip dport 22 0xffff classid 1:10
/sbin/tc class add dev eth1 parent 1:2 classid 1:30 htb rate 512Kbit ceil 1024Kbit prio 30
/sbin/tc qdisc add dev eth1 parent 1:30 handle 30 sfq perturb 10
/sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 1024Kbit
/sbin/tc class add dev eth0 parent 1:2 classid 1:10 htb rate 256Kbit ceil 512Kbit prio 10
/sbin/tc qdisc add dev eth0 parent 1:10 handle 10 sfq perturb 10
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip sport 22 0xffff classid 1:10
/sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 21Kbit ceil 52Kbit prio 20
/sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.0.3 classid 1:20
/sbin/tc class add dev eth0 parent 1:2 classid 1:30 htb rate 512Kbit ceil 1024Kbit prio 30
/sbin/tc qdisc add dev eth0 parent 1:30 handle 30 sfq perturb 10
У меня
eth0<-------->(локальная сеть)
eth1<-------->ppp0