http://lartc.org и четене му е майката. За да работи шейпъра към всеки class трябва да се закачи някакъв qdisc. Освен това default трябва да се закачи направо за root, не за 1:1. В default отива всичко което filter не е пратило в друг клас.
Т.е.:
#!/bin/bash
/sbin/tc qdisc del dev eth0 root 2>/dev/null
/sbin/tc qdisc add dev eth0 root handle 1: htb default 10
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 512Kbit burst 15k
/sbin/tc qdisc add dev eth0 parent 1:1 sfq perturb 10
/sbin/tc class add dev eth0 parent 1: classid 1:10 htb rate 1Kbit ceil 2Kbit
/sbin/tc qdisc add dev eth0 parent 1:10 sfq perturb 10
TCCAD="/sbin/tc class add dev eth0 parent 1:1 classid "
$TCCAD 1:20 htb rate 40Kbit ceil 45Kbit burst 10k
/sbin/tc qdisc add dev eth0 parent 1:20 sfq perturb 10
TC_DOWN_N="/sbin/tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst"
$TC_DOWN_N 192.168.0.3 flowid 1:20