>[оверквотинг удален]
>подвешена входящая дисциплина (ограничитель) на ppp0, которая обрезает (police drop) входящий
>ко мне из инета трафик до 896кбит, и на ppp0 же
>подвешана корневая дисциплина, которая шейпит трафик, идущий от меня и локальной
>сети в Инет (чтоб не забивать модем очередями). Все это для
>малого пинга. Фактически нужный шейпер висит на eth1, которая смотрит в
>локальную сеть, и он режет общий канал 896кбит на пользователей локальной
>сети. Проблема в том, что я, сидя на роутере (мой компьютер)
>не попадаю под действие шейпера на eth1, так как оказываюсь "до"
>него. А хочется разделать трафик для роутера и локальной сети одной
>общей дисциплиной. Что посоветуете? здесь дело такое - если нужно только ограничение полосы пропускания и не нужно
переупорядочивать и приоритизировать пакеты, то вполне подойдет dropper на
входящем интерфейсе. как-то сложилось мнение, что shaper это более православное
решение, чем dropper, но ни в литературе, ни по личному опыту не могу сказать, что
результаты применения shaper vs dropper различаются - результат получается примерно
одинаковый.
если же нужно что-то более сложное, то наиболее простой путь - применение imq, которое
является как и ifb промежуточным псевдоустройством, на котром можно организовывать
очереди, но в отличие от ifb imq не имеет ограничений по типу интерфейса.
если же не хочется патчить ядро и iptables, то есть еще варианты, но их стоит проверить,
например попробовать зацепиться на метаданные пакеты, например fwmark:
tc -batch << EOF
qdisc add dev ifb0 root handle 1: htb default 120
class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
class add dev ifb0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 1
qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 384kbit prio 2
class add dev ifb0 parent 1:20 classid 1:110 htb rate 384kbit ceil 384kbit prio 3
qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
class add dev ifb0 parent 1:20 classid 1:120 htb rate 256kbit ceil 256kbit prio 4
qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10
tc filter add dev ifb0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
tc filter add dev ifb0 parent 1: protocol ip prio 4 handle 20 fw flowid 1:20
tc filter add dev ifb0 parent 1: protocol ip prio 3 handle 110 fw flowid 1:110
tc filter add dev ifb0 parent 1: protocol ip prio 5 handle 120 fw flowid 1:120
qdisc add dev ppp0 ingress
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 \
action ipt -j MARK --set-mark 20 \
action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.1 \
action ipt -j MARK --set-mark 10 \
action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.3 \
action ipt -j MARK --set-mark 110 \
action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.2 \
action ipt -j MARK --set-mark 120 \
action continue
filter add dev ppp0 parent fff: protocol ip pref 2 u32 match u32 0 0 \
action mirrer egress redirect dev ifb0
EOF
если же этот вариант не прокатит, то можно попробовать все описать при помощи generic
action + pipe, но это будет значительно менее читабельно и более громоздко
пока писал это вспомнил еще один вариант
tc -batch <<EOF
qdisc add dev ppp0 ingress
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 flowid :20 action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.1 flowid :10 action continue
......
filter add dev ppp0 parent fff: protocol ip pref 2 u32 match u32 0 0 \
action mirrer egress redirect dev ifb0
qdisc add dev ifb0 root handle 1: htb default 120
class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
class add dev ifb0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 1
qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 384kbit prio 2
class add dev ifb0 parent 1:20 classid 1:110 htb rate 384kbit ceil 384kbit prio 3
qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
class add dev ifb0 parent 1:20 classid 1:120 htb rate 256kbit ceil 256kbit prio 4
qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10
EOF