на архитектуре i586. для воспроизведения: tc qdisc add dev eth0 root handle 1: htb default fffe tc filter add dev eth0 parent 1:0 protocol ip pref 10 u32 tc filter add dev eth0 parent 1:0 protocol ip pref 10 handle 100: u32 divisor 8 tc filter add dev eth0 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip dst 10.21.10.0/21 hashkey mask 0x00000700 at 16 link 100: потом tc filter show dev eth0 должен вывести что-то вроде этого: filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 100: ht divisor 8 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 1f29a000/fffff800 at 16 hash mask 00000700 at 16 а выводит только первую строчку. на x86_64 не воспроизводится.
добавлю, что на ядре 3.12.25 всё работает как надо. из-за этой проблемы на i586 некорректно работает shapercontrol. собственно можно проверить и с его помощью.
собственно вот такой ответ идёт на i586 # tc filter show dev enp0s25 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 100: ht divisor 8 filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 проблема серьёзнее чем кажется, просьба посмотреть.
Ядро 3.14.18-std-def-alt1
я нашёл коммит, который ответственен за это поведение. commit 6a031f67c83aa175aedd10d4ae64750415ab57b0 Author: Yang Yingliang <yangyingliang@huawei.com> Date: Wed Dec 25 17:35:15 2013 +0800 sch_netem: support of 64bit rates Add a new attribute to support 64bit rates so that tc can use them to break the 32bit limit. То есть это, видимо, не бага, а фича и, возможно, надо просто собрать новый iproute2.
Новый iproute2 не помогает. надо писать автору коммита.
Ядро 3.14 ныне отсутствует в Sisyphus. Если вдруг проблема воспроизводится и далее — прошу переоткрыть багрепорт.