Jump to content
Калькуляторы

Шейпинг и фильтры в Linux Помогите настроить....

Здравствуйте коллеги!

 

Бьюсь над такой вот задачей...

Есть софт-роутер, линух, ядро 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 курю, но пока не докурил, а мозги уже в трубочку сворачиваются.

Гуру роутинга и филтеринга, подскажите, куда копать...

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this