нужно: зажать входящий p2p-трафик. для этого выделил ему 5% гарантированной ширины с возможностью заимствовать до 100%.
hi-prio пакеты выделяю посредством анализа source port, всё остальное - low-prio
первый вариант:
+---------+
| root 1: |
+---------+
|
| +-----------------------------------------+
+--| class 1:1 нетранзитный трафик |
| +-----------------------------------------+
|
| +-----------------------------------------+
+--| class 1:2 транзитный трафик (hi-prio) |
| +-----------------------------------------+
| | | | | |
| +-----+ +-----+ +-----+ +-----+ +-----+
| | 1:5 | | 1:8 | |1:10 | |1:20 | |1:30 |
| +-----+ +-----+ +-----+ +-----+ +-----+
|
| +-----------------------------------------+
+--| class 1:90 транзитный трафик (low-prio) |
+-----------------------------------------+
$TC qdisc add dev $DEV_IN root handle 1:0 htb r2q 3
$TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL1 classid 1:1
$TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL2 classid 1:1
$TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL3 classid 1:1
$TC filter add dev $DEV_IN parent 1:0 prio 5 handle 5 protocol ip fw flowid 1:5
$TC filter add dev $DEV_IN parent 1:0 prio 8 handle 8 protocol ip fw flowid 1:8
$TC filter add dev $DEV_IN parent 1:0 prio 10 handle 10 protocol ip fw flowid 1:10
$TC filter add dev $DEV_IN parent 1:0 prio 20 handle 20 protocol ip fw flowid 1:20
$TC filter add dev $DEV_IN parent 1:0 prio 30 handle 30 protocol ip fw flowid 1:30
$TC filter add dev $DEV_IN parent 1:0 prio 90 handle 90 protocol ip fw flowid 1:90
$TC class add dev $DEV_IN parent 1:0 classid 1:1 htb rate $RATE_LOCAL quantum 60000 prio 99
$TC qdisc add dev $DEV_IN parent 1:1 pfifo
$TC class add dev $DEV_IN parent 1:0 classid 1:2 htb rate $[90*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 1
$TC class add dev $DEV_IN parent 1:2 classid 1:5 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 5
$TC class add dev $DEV_IN parent 1:2 classid 1:8 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 8
$TC class add dev $DEV_IN parent 1:2 classid 1:10 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 10
$TC class add dev $DEV_IN parent 1:2 classid 1:20 htb rate $[45*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 20
$TC class add dev $DEV_IN parent 1:2 classid 1:30 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 30
$TC filter add dev $DEV_IN parent 5: prio 5 protocol ip handle 8 flow hash keys dst divisor 256
$TC filter add dev $DEV_IN parent 8: prio 8 protocol ip handle 8 flow hash keys dst divisor 256
$TC filter add dev $DEV_IN parent 10: prio 10 protocol ip handle 10 flow hash keys dst divisor 256
$TC filter add dev $DEV_IN parent 20: prio 20 protocol ip handle 20 flow hash keys dst divisor 256
$TC filter add dev $DEV_IN parent 30: prio 30 protocol ip handle 30 flow hash keys dst divisor 256
$TC class add dev $DEV_IN parent 1:0 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 10
$TC qdisc add dev $DEV_IN parent 1:90 handle 90: sfq perturb 30
при таком варианте игнорируются ceil классов 1:2 и 1:90, т.е. ни 1:2, ни 1:90 не могут «разгонятся» до 100%
второй вариант:
+---------+
| root 1: |
+---------+
|
| +---------------------------------------------+
+--| class 1:1 нетранзитный трафик |
| +---------------------------------------------+
|
| +---------------------------------------------+
+--| class 1:2 транзитный трафик |
+---------------------------------------------+
|
| +-----------------------------------------+
+--| class 1:3 (hi-prio) |
| +-----------------------------------------+
| | | | | |
| +-----+ +-----+ +-----+ +-----+ +-----+
| | 1:5 | | 1:8 | |1:10 | |1:20 | |1:30 |
| +-----+ +-----+ +-----+ +-----+ +-----+
|
| +-----------------------------------------+
+--| class 1:90 (low-prio) |
+-----------------------------------------+
$TC qdisc add dev $DEV_IN root handle 1:0 htb r2q 3
$TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL1 classid 1:1
$TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL2 classid 1:1
$TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip u32 match ip src $IP_LOCAL3 classid 1:1
$TC filter add dev $DEV_IN parent 1:0 prio 5 handle 5 protocol ip fw flowid 1:5
$TC filter add dev $DEV_IN parent 1:0 prio 8 handle 8 protocol ip fw flowid 1:8
$TC filter add dev $DEV_IN parent 1:0 prio 10 handle 10 protocol ip fw flowid 1:10
$TC filter add dev $DEV_IN parent 1:0 prio 20 handle 20 protocol ip fw flowid 1:20
$TC filter add dev $DEV_IN parent 1:0 prio 30 handle 30 protocol ip fw flowid 1:30
$TC filter add dev $DEV_IN parent 1:0 prio 90 handle 90 protocol ip fw flowid 1:90
$TC class add dev $DEV_IN parent 1:0 classid 1:1 htb rate $RATE_LOCAL quantum 60000 prio 99
$TC qdisc add dev $DEV_IN parent 1:1 pfifo
$TC class add dev $DEV_IN parent 1:0 classid 1:2 htb rate ${RATE_IN}kbit ceil ${RATE_IN}kbit prio 1
$TC class add dev $DEV_IN parent 1:2 classid 1:3 htb rate $[90*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 1
$TC class add dev $DEV_IN parent 1:3 classid 1:5 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 5
$TC class add dev $DEV_IN parent 1:3 classid 1:8 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 8
$TC class add dev $DEV_IN parent 1:3 classid 1:10 htb rate $[10*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 10
$TC class add dev $DEV_IN parent 1:3 classid 1:20 htb rate $[45*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 20
$TC class add dev $DEV_IN parent 1:3 classid 1:30 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 30
$TC qdisc add dev $DEV_IN parent 1:5 handle 5: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:8 handle 8: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:10 handle 10: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:20 handle 20: sfq perturb 10
$TC qdisc add dev $DEV_IN parent 1:30 handle 30: sfq perturb 10
$TC class add dev $DEV_IN parent 1:2 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 90
$TC qdisc add dev $DEV_IN parent 1:90 handle 90: sfq perturb 30
при таком варианте 1:90 съедает около 70% от допустимого rate родительского класса (1:2), оставляя с носом класс 1:3
подскажите, пожалуйста, ЧЯДНТ!