Перейти к содержимому
Калькуляторы

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.