seagull Опубликовано 21 декабря, 2010 · Жалоба Здравствуйте коллеги! Бьюсь над такой вот задачей... Есть софт-роутер, линух, ядро 2.6.24.5-smp. Он роутит-шейпит-натит трафик юзерам. Шейпинг реализован так: на устройстве ifb0 висят шейперы на входящий трафик, на ifb1 - на исходящий. Юзеры висят на интерфейсе eth2.953. С него трафик редиректится на IFB следующим образом: tc qdisc add dev eth2.953 root handle 1 prio tc qdisc add dev eth2.953 ingress tc filter add dev eth2.953 parent 1: protocol ip u32 match u32 0 0 flowid 1:10 action mirred egress redirect dev ifb0 tc filter add dev eth2.953 parent ffff: protocol ip u32 match u32 0 0 flowid 1:11 action mirred egress redirect dev ifb1 Задача - шейпить юзерам только интернетовский трафик, а пиринговый - не резать. Нашел статью, в которай рассматривается аналогичная ситуация: http://nolimits.org.ua/bz/razdelenije_traf...arezka_HTB.html Ну, кое-чего подправил под себя. В общем идея такая - чтобы трафик в/из сетки, анонсированые в пиринге, уходил на интерфейсы ifb2/3, а остальной, как и раньше на ifb0/1, где висят шейперы. В общем, получаются скрипты такого рода: tc qdisc del dev eth2.953 root tc qdisc del dev eth2.953 ingress tc qdisc add dev eth2.953 root handle 2 prio tc qdisc add dev eth2.953 ingress ./eth2.953_egress_filter ./eth2.953_ingress_filter eth2.953_egress_filter: tc filter add dev eth2.953 parent 2: prio 120 protocol ip u32 tc filter add dev eth2.953 parent 2: prio 120 handle 900: protocol ip u32 divisor 256 tc filter add dev eth2.953 parent 2: prio 120 protocol ip u32 ht 900:0a: match ip dst 10.1.0.0/16 flowid 1:12 action mirred egress redirect dev ifb2 tc filter add dev eth2.953 parent 2: prio 120 protocol ip u32 ht 900:0a: match ip dst 10.3.0.0/16 flowid 1:12 action mirred egress redirect dev ifb2 . . tc filter add dev eth2.953 parent 2: prio 120 protocol ip u32 ht 900:ff: match ip dst 0.0.0.0/0 flowid 1:10 action mirred egress redirect dev ifb0 tc filter add dev eth2.953 parent 2: prio 120 protocol ip u32 ht 800:: match ip dst 0.0.0.0/0 flowid 1:10 hashkey mask 0xff000000 at 16 link 900: eth2.953_ingress_filter: tc filter add dev eth2.953 parent ffff: prio 110 protocol ip u32 tc filter add dev eth2.953 parent ffff: prio 110 handle 900: protocol ip u32 divisor 256 tc filter add dev eth2.953 parent ffff: prio 110 protocol ip u32 ht 900:0a: match ip src 10.1.0.0/16 flowid 1:13 action mirred egress redirect dev ifb3 tc filter add dev eth2.953 parent ffff: prio 110 protocol ip u32 ht 900:0a: match ip src 10.3.0.0/16 flowid 1:13 action mirred egress redirect dev ifb3 . . tc filter add dev eth2.953 parent ffff: prio 110 protocol ip u32 ht 900:ff: match ip src 0.0.0.0/0 flowid 1:11 action mirred egress redirect dev ifb1 tc filter add dev eth2.953 parent ffff: prio 110 protocol ip u32 ht 800:: match ip src 0.0.0.0/0 flowid 1:11 hashkey mask 0xff000000 at 12 link 900: Но при этом желаемый результат не достигается. Во первых, на ifb2/3 уходит явно слишком много трафика, а во-вторых, трафик на пиринговые сетки все равно шейпится... Признаюсь честно, смысл вышеуказаных команд понимаю пока явно не полностью, LARTC курю, но пока не докурил, а мозги уже в трубочку сворачиваются. Гуру роутинга и филтеринга, подскажите, куда копать... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...