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

tc filter порядок обработки

Здравствуйте!

 

Дано:

Интерфейсу eth1 назначена дисциплина PRIO:

tc qdisc add dev eth1 root handle 1: prio

 

IP-трафик, в направлении 192.168.0.2 нужно поместить в подкласс 1:1

tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2/32 flowid 1:1

Остальное в подкласс 1:3

tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 0/0 flowid 1:3

 

на каждую полосу я повесил sfq:

tc qdisc add dev eth1 parent 1:1 handle 10: sfq

tc qdisc add dev eth1 parent 1:2 handle 20: sfq

tc qdisc add dev eth1 parent 1:3 handle 30: sfq

 

Т.е. в подкласс 20: не должно попасть ничего, а "tc -s qdisc ls dev eth1" показывает, что счетчик там крутится, т.е как-будто пакеты распределяются в соответствии с priomap.

 

Подскажите, плз, как добиться желаемого не прибегая к маркировке пакетов средствами netfilter? Т.е. как работает просмотр фильтров? В документации написано, что согласно порядку добавления и приоритету, но не сказано - прекращается ли просмотр фильтров при совпадении.

 

Заранее благодарен всем ответившим!

Share this post


Link to post
Share on other sites

prio не подходит для этого IMHO

лучше сделать через HTB/HSFC

 

приоритеты в фильтрах делать через prio

 

tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2/32 flowid 1:1

tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 0/0 flowid 1:3

 

Share this post


Link to post
Share on other sites
prio не подходит для этого IMHO

лучше сделать через HTB/HSFC

В данном примере я хотел только приоритетов без нарезания скорости.
приоритеты в фильтрах делать через prio

 

tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.0.2/32 flowid 1:1

tc filter add dev eth1 parent 1:0 protocol ip prio 2 u32 match ip dst 0/0 flowid 1:3

Про prio я понял из lartc и прочих howto, но, то ли там нет, то ли проглядел один момент - что происходит при срабатывании фильтра? Там first match или last match? Т.е. есть пакет с dst ip 192.168.0.2, какое правило сработает в итоге?

Share this post


Link to post
Share on other sites

Ну вообще - first match, но проверять нужно по tc -s -d filter show dev eth1

сначала обрабатываются фильтры с меньшим prio

Если prio одинаковый - хз, наверное first match.

 

Пакеты в 1:2, возможно "не-ip (arp?)", т.к. у вас фильтр не на protocol all, а на protocol ip

Share this post


Link to post
Share on other sites

Опытным путем выяснил, что работает по принципу first match.

Всем большое спасибо.

 

 

 

Ну вообще - first match, но проверять нужно по tc -s -d filter show dev eth1

сначала обрабатываются фильтры с меньшим prio

Если prio одинаковый - хз, наверное first match.

Огромный пасиб! Разобрался.
Пакеты в 1:2, возможно "не-ip (arp?)", т.к. у вас фильтр не на protocol all, а на protocol ip
Все пакеты - ip.

Share this post


Link to post
Share on other sites

Всегда приятно помочь человеку грамотно задающему вопросы, ищущему ответы самостоятельно и схватывающему на лету. :-)

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