Possible bug in tc tool or kernel
Subsystems (2)
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.
Cong Wang
Acked-byQuoted 8 lines · Соловьев Сергей
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?
Can you check if the following commit fixes your problem?
It is already merged in stable kernel, you probably need to wait for a newer Fedora kernel release if it has included it.
commit b057df24a7536cce6c372efe9d0e3d1558afedf4
Author: Ignacy Gawędzki <[email protected]> Date: Tue Feb 3 19:05:18 2015 +0100
cls_api.c: Fix dumping of non-existing actions' stats.
In tcf_exts_dump_stats(), ensure that exts->actions is not empty before accessing the first element of that list and calling tcf_action_copy_stats() on it. This fixes some random segvs when adding filters of type
"basic" with
no particular action.
This also fixes the dumping of those "no-action" filters, which more often than not made calls to tcf_action_copy_stats() fail and consequently netlink attributes added by the caller to be removed by a call to nla_nest_cancel().
Quoted 31 lines · Cong Wang
Quoted 8 lines · Соловьев Сергей
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?
Can you check if the following commit fixes your problem?
It is already merged in stable kernel, you probably need to wait for a newer Fedora kernel release if it has included it.
commit
b057df24a7536cce6c372efe9d0e3d1558afedf4Author: Ignacy Gawędzki <[email protected]> Date: Tue Feb 3 19:05:18 2015 +0100
cls_api.c: Fix dumping of non-existing actions' stats.In
tcf_exts_dump_stats(), ensure thatexts->actionsis not empty before accessing the first element of that list and callingtcf_action_copy_stats()on it. This fixes some random segvs when adding filters of type
"basic" with
no particular action.This also fixes the dumping of those "no-action" filters, which more often than not made calls to
tcf_action_copy_stats()fail and consequently netlink attributes added by the caller to be removed by a call tonla_nest_cancel().
Quoted 8 lines
Fixes 33be62715991 ("net_sched: act: use standard struct list_head")Signed-off-by Ignacy Gawędzki <[email protected]>Acked-by Cong Wang <[email protected]>Signed-off-by David S. Miller <[email protected]>--
To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi,
I tested on:
Linux 4.0.0-rc3-ARCH-00130-g4363890 #1 SMP PREEMPT Tue Mar 17 23:11:06 EET 2015 x86_64 GNU/Linux
and got this:
$ tc filter list dev lo
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 100:1:800 order 2048 key ht 100 bkt 1 link 201:
match 0a0a0100/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:2:800 order 2048 key ht 100 bkt 2 link 202:
match 0a0a0200/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:3:800 order 2048 key ht 100 bkt 3 link 203:
match 0a0a0300/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:4:800 order 2048 key ht 100 bkt 4 link 204:
match 0a0a0400/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:5:800 order 2048 key ht 100 bkt 5 link 205:
match 0a0a0500/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:6:800 order 2048 key ht 100 bkt 6 link 206:
match 0a0a0600/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:7:800 order 2048 key ht 100 bkt 7 link 207:
match 0a0a0700/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:8:800 order 2048 key ht 100 bkt 8 link 208:
match 0a0a0800/ffffff00 at 16
hash mask 000000ff at 16
filter parent 1: protocol ip pref 10 u32 fh 100:9:800 order 2048 key ht 100 bkt 9 link 209:
match 0a0a0900/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 Regards,
17.03.2015 23:42, Cong Wang пишет:
Quoted 30 lines · Соловьев Сергей
Quoted 8 lines
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?
Can you check if the following commit fixes your problem?
It is already merged in stable kernel, you probably need to wait for a newer Fedora kernel release if it has included it.
commit
b057df24a7536cce6c372efe9d0e3d1558afedf4Author: Ignacy Gawędzki <[email protected]> Date: Tue Feb 3 19:05:18 2015 +0100
cls_api.c: Fix dumping of non-existing actions' stats.In
tcf_exts_dump_stats(), ensure thatexts->actionsis not empty before accessing the first element of that list and callingtcf_action_copy_stats()on it. This fixes some random segvs when adding filters of type
"basic" with
no particular action.This also fixes the dumping of those "no-action" filters, which more often than not made calls to
tcf_action_copy_stats()fail and consequently netlink attributes added by the caller to be removed by a call tonla_nest_cancel().
Quoted 9 lines
Fixes 33be62715991 ("net_sched: act: use standard struct list_head")Signed-off-by Ignacy Gawędzki <[email protected]>Acked-by Cong Wang <[email protected]>Signed-off-by David S. Miller <[email protected]>--
To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Checked. This patch is applied to my kernel and not fixes this problem.
tc as part of iproute2 freshed to latest 3.19.0 version, but nothing...
Quoted 5 lines · Соловьев Сергей
Checked. This patch is applied to my kernel and not fixes this problem.
tc as part of iproute2 freshed to latest 3.19.0 version, but nothing...
I got the same result with Vadim, on latest net-next.