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

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.

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


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

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас