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

вопрос по tc

Есть записи вида

tc filter add dev eth2 protocol ip parent 1: prio 6 u32 match ip dst xx.73.128.0/20 flowid 1:253

tc filter add dev eth2 protocol ip parent 1: prio 7 u32 match ip dst xx.26.80.0/22 flowid 1:253

 

Есть два аплинка eth0 и eth1

 

Нужно каким то образом в правила tc добавить что:

если пакет пришел через eth0 к ip dst xx.73.128.0/20 то flowid 1:253

если пакет пришел через eth1 к ip dst xx.73.128.0/20 то flowid 1:1000

 

Как это сделать без помощи iptables -t mangle ?

 

 

Share this post


Link to post
Share on other sites

adron2

а почему mangle не устраивает? там же, по сути, только одно правило - выставить MARK для одного из двух интерфейсов.

 

Share this post


Link to post
Share on other sites
adron2

а почему mangle не устраивает? там же, по сути, только одно правило - выставить MARK для одного из двух интерфейсов.

страшно за производительность. Через этот роутер 800 мегабит бегает и по 150 000 pps.

 

Реально в мангле будет где то 10 правил всего. Не более.

 

 

Share this post


Link to post
Share on other sites

пока сделал так.

Создал два класса 1:11 и 1:12

В них все нужные подклассы и классификаторы трафика на на базе u32

А в классы 1:11 и 1:12

tc filter add dev eth2 parent 1: protocol ip handle 0x555 fw prio 1 flowid 1:11

tc filter add dev eth2 parent 1: protocol ip handle 0x777 fw prio 1 flowid 1:12

Ну и соответственно

iptables -t mangle -A FORWARD -i eth1 -o eth2.+ -j MARK --set-mark 0x555

iptables -t mangle -A FORWARD -i eth0 -o eth2.+ -j MARK --set-mark 0x777

 

То есть обошлись всего двумя правилами в mangle.

Но все равно лишние модули iptable_mangle, xt_MARK загружаются.

 

Вопрос с гуру ядер линукса. На сколько такие вот действия критичны для производительности системы?

Ядро стоит 2.6.30

Edited by adron2

Share this post


Link to post
Share on other sites

adron2

Я приблизительно такое имел ввиду:

tc filter add ... u32 ht ... match ip dst a.b.c.d/e  match mark 0x555 0xffffffff  flowid 1:253
tc filter add ... u32 ht ... match ip dst a.b.c.d/e  flowid 1:1000

iptables -t mangle -A FORWARD -i eth1 -o eth2.+ -j MARK --set-mark 0x555

 

Share this post


Link to post
Share on other sites
Для таких целей подойдет классификатор route: http://lartc.org/howto/lartc.adv-filter.route.html

не получится так. Маршруты добавляются зеброй динамически. Можно конечно пропатчить квагу и метить реалмом пекеты но оно все такое нестабильное.

 

Share this post


Link to post
Share on other sites

Можно делать не -j MARK, а -j CLASSIFY --set-class 1:11, тогда не нужно будет фильтры tc создавать. Не знаю, будет ли это эффективнее обычной маркировки.

Edited by photon

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