Vexira
Part of the Furniture
ASUSWRT-Merlin RT-AX88U 384.19_0 Fri Aug 14 19:20:07 UTC 2020I've been spending a lot of time reading about HTB and fq_codel ("the classics" in the age of CAKE). I was always happy to ignore the complexity of the device priority classes lurking beneath the more pleasant "Category" classes that we usually talk about (Net Control, Work-From-Home, Streaming, etc.). It's quite a fascinating subject, technically and one that can blow your mind especially when trying to unravel the Adaptive QoS classes, qdiscs and filters.
For anyone with more than 10 devices on their network, and who do not use any form of device priority on the Bandwidth Monitor tab of the QoS webUI, I'm interested to know the output of this command on your router:
I personally have no device priorities assigned (everything is Default) but I still see some devices assigned to classes that are at prio 3, when everything else is at prio 2.Code:tc class show dev br0 | grep -E "parent 10:1 .* prio "
I can't tell yet if this is an issue that requires a reboot (I had tested a device priority to see what happens underneath the covers, but reverted my change). So is this a flaw in Trend's kernel module that assigns some default priority devices a lower priority class (not all same-priority devices are created equally)?Code:# tc class show dev br0 | grep -E "parent 10:1 .* prio " class htb 10:2 parent 10:1 leaf 1002: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:3 parent 10:1 leaf 1003: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:4 parent 10:1 leaf 1004: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:5 parent 10:1 leaf 1005: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:6 parent 10:1 leaf 1006: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:7 parent 10:1 leaf 1007: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:8 parent 10:1 leaf 1008: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:9 parent 10:1 leaf 1009: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:11 parent 10:1 leaf 1011: prio 3 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:10 parent 10:1 leaf 1010: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:256 parent 10:1 leaf 1256: prio 3 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:13 parent 10:1 leaf 1013: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:12 parent 10:1 leaf 1012: prio 3 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b class htb 10:14 parent 10:1 leaf 1014: prio 2 rate 16Kbit overhead 18 ceil 322560Kbit burst 3200b cburst 403200b
Anyhow, my latest quest is to see if there's a way to understand and make better use of the device priority structure in Adaptive QoS, which has always been poo-poo'd by FreshJR.
Also, as I've been reading and studying more, I did become quite dismayed at just how old the Linux kernel is on my AC68U. I think I measured the sch_htb.c file from circa January 2010. The more you learn about the latest advances in traffic control, the more you want to play with the latest ideas (e.g. CAKE). OpenWRT is where it's at for CAKE, but I don't really like (or maybe understand?) the best HW options. It becomes rather frustrating to keep trying to crack the Adaptive QoS code (figuratively) when so many other QoS solutions are more "open".
Anyway, I'm not going anywhere anytime soon, but it gets rather lonely trying to unravel this in a vacuum. If anyone is seriously interested in how it all works, I've also started reading the archives of the Bufferbloat mailing list. Especially you CAKE users. You can pick the brains of the authors and other smart people, if you can formulate an intelligent enough question to catch their attention.
vexira@RT-AX88U-C528:/tmp/home/root# tc class show dev br0 | grep -E "parent 10:
1 .* prio "
class htb 10:2 parent 10:1 leaf 1002: prio 3 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:3 parent 10:1 leaf 1003: prio 3 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:4 parent 10:1 leaf 1004: prio 3 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:5 parent 10:1 leaf 1005: prio 3 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:6 parent 10:1 leaf 1006: prio 3 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:7 parent 10:1 leaf 1007: prio 2 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:8 parent 10:1 leaf 1008: prio 2 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:9 parent 10:1 leaf 1009: prio 2 rate 16Kbit overhead 19 ceil 97280K bit burst 3200b cburst 121600b
class htb 10:256 parent 10:1 leaf 1256: prio 3 rate 16Kbit overhead 19 ceil 9728 0Kbit burst 3200b cburst 121600b
class htb 10:10 parent 10:1 leaf 1010: prio 2 rate 16Kbit overhead 19 ceil 97280 Kbit burst 3200b cburst 121600b
class htb 10:13 parent 10:1 leaf 1013: prio 3 rate 16Kbit overhead 19 ceil 97280 Kbit burst 3200b cburst 121600b
class htb 10:12 parent 10:1 leaf 1012: prio 2 rate 16Kbit overhead 19 ceil 97280 Kbit burst 3200b cburst 121600b
class htb 10:14 parent 10:1 leaf 1014: prio 2 rate 16Kbit overhead 19 ceil 97280 Kbit burst 3200b cburst 121600b
Ive read about cake and htb also hsbc, for years i wondered what an alternative to htb would be like performance wise in adaptive qos, when i first heard of cake it peaked my interest, since i was running an adsl2+ connection and wanted lower latency in general since when i used Netgear's implementation of FQ_Codel which i think uses qualcom stream burst, i was getting 12ms is most games.
At the moment im wating till adaptive qos adpots a more native form of FQ_Codel which I heard may become a reality after the new ai Mesh update or Cake, which is better for most connections in general.