Bug 95001 - tc do not create filter rules without any error
Summary: tc do not create filter rules without any error
Status: NEW
Alias: None
Product: Networking
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-03-17 13:32 UTC by Sergey Soloview
Modified: 2015-11-29 06:07 UTC (History)
1 user (show)

See Also:
Kernel Version: 3.18.9-100.fc20.x86_64
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Sergey Soloview 2015-03-17 13:32:13 UTC
Hi!

I'm sol sorry, but English in not my native language.

After upgrade kernel  tc lost some u32 filters

example: where is a "match ip dst 10.10.0.0/24" entries?

[root@sol ~]# tc -b tc.batch
[root@sol ~]# tc filter list dev p10p1
filter parent 1: protocol ip pref 10 u32
filter parent 1: protocol ip pref 10 u32 fh 209: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 208: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 207: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 206: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 205: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 204: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 203: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 202: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 201: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 200: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 100: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 100::800 order 2048 key ht 100 bkt 0 link 200:
  match 0a0a0000/ffffff00 at 16
    hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 100:
  match 0a0a0000/ffff0000 at 16
    hash mask 0000ff00 at 16
[root@sol ~]#
[root@sol ~]#
[root@sol ~]# cat tc.batch
qdisc add dev p10p1 root handle 1: htb default fffe
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 100: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip dst 10.10.0.0/16 hashkey mask 0x0000ff00 at 16 link 100:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 200: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:0: match ip dst 10.10.0.0/24 hashkey mask 0x000000ff at 16 link 200:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 201: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:1: match ip dst 10.10.1.0/24 hashkey mask 0x000000ff at 16 link 201:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 202: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:2: match ip dst 10.10.2.0/24 hashkey mask 0x000000ff at 16 link 202:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 203: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:3: match ip dst 10.10.3.0/24 hashkey mask 0x000000ff at 16 link 203:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 204: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:4: match ip dst 10.10.4.0/24 hashkey mask 0x000000ff at 16 link 204:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 205: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:5: match ip dst 10.10.5.0/24 hashkey mask 0x000000ff at 16 link 205:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 206: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:6: match ip dst 10.10.6.0/24 hashkey mask 0x000000ff at 16 link 206:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 207: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:7: match ip dst 10.10.7.0/24 hashkey mask 0x000000ff at 16 link 207:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 208: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:8: match ip dst 10.10.8.0/24 hashkey mask 0x000000ff at 16 link 208:
filter add dev p10p1 parent 1:0 protocol ip pref 10 handle 209: u32 divisor 256
filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:9: match ip dst 10.10.9.0/24 hashkey mask 0x000000ff at 16 link 209:
[root@sol ~]# uname -a
Linux sol.sol-home.local 3.18.9-200.fc21.x86_64 #1 SMP Mon Mar 9 15:10:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@sol ~]#



ruleset in tc.batch autogenerating by this tool http://sourceforge.net/projects/sc-tool/

If i copy-paste pules directly to tc command line, tc accept this line without any error. But rule in tc filter show is absent.

[root@sol ~]# tc filter add dev p10p1 parent 1:0 protocol ip pref 10 u32 ht 100:9: match ip dst 10.10.9.0/24 hashkey mask 0x000000ff at 16 link 209:
[root@sol ~]# echo $?
0
[root@sol ~]# tc filter list dev p10p1
filter parent 1: protocol ip pref 10 u32
filter parent 1: protocol ip pref 10 u32 fh 209: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 208: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 207: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 206: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 205: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 204: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 203: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 202: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 201: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 200: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 100: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 100::800 order 2048 key ht 100 bkt 0 link 200:
  match 0a0a0000/ffffff00 at 16
    hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 100:
  match 0a0a0000/ffff0000 at 16
    hash mask 0000ff00 at 16
[root@sol ~]#


dmesg is clear.

Hoop to helping, Soloview Sergey.
Comment 1 Serge Kostakov 2015-11-29 06:07:16 UTC
Hello, faced this too.
Trying to create filtersw with u32 dst 10.8.20.31/32, but it silently fails:

[root@fire2 ~]# tc qdisc del dev eth1 root
[root@fire2 ~]#
[root@fire2 ~]# uname -a
Linux fire2 3.18.10 #1 SMP Thu Nov 19 19:47:38 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@fire2 ~]# tc qdisc add dev eth1 root handle 1: htb default ffff
[root@fire2 ~]#
[root@fire2 ~]# tc filter add dev eth1 parent 1:0 handle 320: protocol ip u32 divisor 256
[root@fire2 ~]# tc filter show dev eth1
filter parent 1: protocol ip pref 49152 u32
filter parent 1: protocol ip pref 49152 u32 fh 320: ht divisor 256
filter parent 1: protocol ip pref 49152 u32 fh 800: ht divisor 1
[root@fire2 ~]# tc filter add dev eth1 protocol ip parent 1:0 prio 14344 u32 ht 320:1f: match ip dst 10.8.20.31/32 flowid 1:fff5
[root@fire2 ~]# tc filter show dev eth1
filter parent 1: protocol ip pref 14344 u32
filter parent 1: protocol ip pref 14344 u32 fh 801: ht divisor 1
filter parent 1: protocol ip pref 49152 u32
filter parent 1: protocol ip pref 49152 u32 fh 320: ht divisor 256
filter parent 1: protocol ip pref 49152 u32 fh 800: ht divisor 1
[root@fire2 ~]#
[root@fire2 ~]#

Note You need to log in before you can comment on or make changes to this bug.