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

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? Т.е. как работает просмотр фильтров? В документации написано, что согласно порядку добавления и приоритету, но не сказано - прекращается ли просмотр фильтров при совпадении.

 

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

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


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

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 не подходит для этого 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, какое правило сработает в итоге?

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


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

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

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

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

 

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

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


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

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

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

 

 

 

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

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

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

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

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


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

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

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


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

Join the conversation

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

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

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

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

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

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

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