What could cause tc to stop classifying packets?

0

My home office has very limited internet bandwidth, so I have to use QoS pretty heavily to classify traffic. I use FireHol and FireQOS to do this, which basically generate the "iptables" and "tc" commands under the covers. Within the past two weeks this seems to have stopped working, as FireQOS no longer shows any packets being classified into buckets.

What could cause tc to stop classifying packets? How would I go about troubleshooting this?

Router: Marvell EspressoBin
OS: Arch Linux ARM
Kernel: 4.15.7-1 (from Arch Linux ARM "linux-espressobin" package)

  • Using connmarks for traffic classification
  • Firewall appears to be functioning normally and marking packets as expected
  • Bandwidth is pre-throttled at a percentage of max to enable ingress QoS
  • External interface is "extern", IFB device created for it automatically is "extern-ifb"

Details:

FIREQOS SUMMARY OF CLASSIFICATIONS:
-------------------------------------

: interface extern receive input rate 3217kbps adsl remote bridged-llc (extern-ifb, 26353kbit, mtu 1500, quantum 1500, minrate 263kbit)
:       class voip commit 90kbps prio 2 (1:11, 737/26353kbit, prio 2)
:       class work commit 40% prio 3 (1:12, 10541/26353kbit, prio 3)
:       class default (1:8000, 263/26353kbit, prio 4)
:       committed rate 11541kbit (43%), the remaining 14811kbit will be spare bandwidth.

: interface extern transmit output rate 570kbps adsl remote bridged-llc (extern, 4669kbit, mtu 1500, quantum 1500, minrate 46kbit)
:       class voip commit 90kbps prio 2 (1:11, 737/4669kbit, prio 2)
:       class work commit 55% prio 3 (1:12, 2567/4669kbit, prio 3)
:       class default (1:8000, 46/4669kbit, prio 4)
:       committed rate 3350kbit (71%), the remaining 1318kbit will be spare bandwidth.


TC QDISC SHOW DEV EXTERN
---------------------------

qdisc htb 1: root refcnt 2 r2q 3 default 32768 direct_packets_stat 1 direct_qlen 1000
qdisc fq_codel 12: parent 1:12 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
qdisc fq_codel 11: parent 1:11 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
qdisc fq_codel 13: parent 1:8000 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
qdisc ingress ffff: parent ffff:fff1 ----------------


TC CLASS SHOW DEV EXTERN
--------------------------

class htb 1:11 parent 1:1 leaf 11: prio rate 737Kbit ceil 4669Kbit burst 1599b cburst 1599b
class htb 1:8000 parent 1:1 leaf 13: prio rate 46Kbit ceil 4669Kbit burst 1599b cburst 1599b
class htb 1:1 root rate 4669Kbit ceil 4669Kbit burst 1599b cburst 1599b
class htb 1:12 parent 1:1 leaf 12: prio rate 2567Kbit ceil 4669Kbit burst 1599b cburst 1599b
class fq_codel 13:df parent 13:
class fq_codel 13:fd parent 13:
class fq_codel 13:3dd parent 13:
class fq_codel 13:df parent 13:
class fq_codel 13:fd parent 13:
class fq_codel 13:3dd parent 13:

TC FILTER SHOW DEV EXTERN
----------------------------

filter parent 1: protocol ip pref 10 u32 chain 0
filter parent 1: protocol ip pref 10 u32 chain 0 fh 800: ht divisor 1
filter parent 1: protocol ip pref 10 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:11 not_in_hw
  mark 0x0004 0x003f (success 0)
filter parent 1: protocol ip pref 20 u32 chain 0
filter parent 1: protocol ip pref 20 u32 chain 0 fh 801: ht divisor 1
filter parent 1: protocol ip pref 20 u32 chain 0 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:11 not_in_hw
  match 00110000/00ff0000 at 8
  match c0a8002c/ffffffff at 12
filter parent 1: protocol ip pref 30 u32 chain 0
filter parent 1: protocol ip pref 30 u32 chain 0 fh 802: ht divisor 1
filter parent 1: protocol ip pref 30 u32 chain 0 fh 802::800 order 2048 key ht 802 bkt 0 flowid 1:12 not_in_hw
  mark 0x0003 0x003f (success 0)

Seii

Posted 2018-03-02T16:04:37.937

Reputation: 1

Was fireqos still running ? Any kernel update ? – vera – 2018-03-02T16:39:07.670

@vera FireQOS is indeed still running, FireHOL as well. I've stopped and restarted both as part of past efforts. I can't see any obvious problems with either one. The kernel was indeed updated, so I'm sure that could be related - just no idea how to troubleshoot something where there aren't any error messages to be found. – Seii – 2018-03-02T17:26:33.930

This might be the subject of a an issue / bug report for FireQoS (https://github.com/firehol/firehol/issues). The author reponds rather rapidly.

– vera – 2018-03-05T07:59:07.320

@vera I think I will file a bug just in case. Thanks! – Seii – 2018-03-05T16:48:51.377

Answers

0

I've filed a bug with FireHol just in case, but it appears the culprit was actually my upgrading the iproute2 package. For some reason version 4.15.0-1 in the Arch Linux ARM repository was failing to classify packets as I had mentioned, while version 4.14.1-2 has been succeeding. For now I'll just use the older version.

Seii

Posted 2018-03-02T16:04:37.937

Reputation: 1