I built a real-time web UI for CAKE SQM stats

Hi @segal_72 ,

Sorry for the multiple mentions.

Regarding my previous post, latest version is now v1.0.3 and I believe it's best to just git clone again or just get the latest release.

I added some improvements to the install.sh script (see c5f39ef for the details):

Priority order: wget → curl → uclient-fetch.
wget and curl remain first because they provide better progress output
and are more widely available outside of OpenWrt.

Instead of manually choosing the binary from Releases, download the Source code(zip), unzip it, and run the install.sh. I hope it'll work out of the box for you.

If you have some spare time to pull the latest version and see if the throughput numbers finally show up for your cake_mq setup, I’d really appreciate it!

Cheers!

Hi,

Thanks again for the continuous updates and improvements much appreciated.

I will remove the previous installation and reinstall v1.0.3 using the install.sh script from the source archive as you suggested.

For context, my setup is running OpenWrt with cake_mq (multi-queue) enabled on a 900 Mbit interface, so the issue I previously observed was specifically related to the total TX rate showing 0 B/s while the child cake instances were active.

After reinstalling v1.0.3, I will:
• generate sustained traffic
• compare the header TX rate with tc -s qdisc show
• verify whether the aggregated bandwidth now reflects the sum of the child qdiscs

I’ll report back with precise feedback.

Thanks again for actively supporting cake_mq setups — I know they are less common.

Cheers!

2 Likes

Hi,

I installed v1.0.3 using install.sh and tested it under heavy load (Waveform test).

I’m running OpenWrt with cake_mq (multi-queue) on a 750 Mbit interface.

The TX statistics are now displayed correctly — the previous 0 B/s issue is gone.

Under load:

  • cake-stats shows ~1.2 GB sent on eth1
  • tc -s qdisc show dev eth1 reports:
qdisc cake_mq 800e: root bandwidth 750Mbit ...
Sent 1149909394 bytes 2059122 pkt (dropped 45, overlimits 1030621)

The aggregated sent bytes in cake-stats match the cake_mq parent counters.

I’ve attached screenshots of cake-stats during load for reference.

It looks like cake_mq aggregation is now working properly.

Thanks again for the quick fix and support!

Cheers


For additional reference, here is a Waveform bufferbloat test under full load. The line remains stable (A+, 0 ms increase under load), confirming CAKE is working correctly with cake_mq.

3 Likes

Hi @segal_72 ,

Thanks for the screenshots.

Can you show me the full outputs of both your tc -s qdisc and tc -s -j qdisc?
The tc outputs will look like this.

I saw from one of your screenshots that your ifb4eth1 is wrongly detected as [EGRESS], so I want to make sure if it's a bug from cake-stats or it's how your cake_mq is configured.

I also feel like it's a bug because looking at your screenshot (the ifb4eth1 one), the bandwidth for each table isn't usually how cake splits bandwidth for diffserv4.

In your screenshot:

  • Bulk = 375Mbit
  • Best Effort = 187500Kbit
  • Video = 187500Kbit
  • Voice = 250Mbit

According to the manpage, the diffserv4 mode is supposed to be like this:

diffserv4

          Provides a general-purpose Diffserv implementation with
          four tins:

          • Bulk (CS1, LE in kernel v5.9+), 6.25% threshold,
          generally low priority.
          • Best Effort (general), 100% threshold.
          • Video (AF4x, AF3x, CS3, AF2x, CS2, TOS4, TOS1), 50%
          threshold.
          • Voice (CS7, CS6, EF, VA, CS5, CS4), 25% threshold.

If you see from the header bw 750Mbit, the Best Effort table should show 750Mbit since the manpage mentioned "Best Effort (general), 100% threshold.", so seeing your tc outputs will save a lot of time finding where things went wrong.

Unfortunately, this bug currently happens only for cake_mq, so I couldn't reproduce it since my OpenWrt doesn't support cake_mq yet.

I have attached the full outputs of:

• tc -s qdisc show dev eth1
• tc -s qdisc show dev ifb4eth1
• tc -s -j qdisc show dev eth1
• tc -s -j qdisc show dev ifb4eth1

Both eth1 (egress) and ifb4eth1 (ingress) are running cake_mq with 4 hardware queues.

Configured bandwidth: 650Mbit

From what I understand, cake_mq appears to split the 650Mbit bandwidth across the 4 hardware queues (~162.5Mbit each) and then apply diffserv4 per queue instance rather than globally.

That would explain why the tin thresholds do not match the expected diffserv4 percentages from the manpage (for example, Best Effort not showing the full 650Mbit in each instance).

Could you confirm whether this is expected cake_mq behaviour, or if this points to a cake-stats detection issue?

=== tc -s qdisc show dev eth1 ===

qdisc cake_mq 8038: root bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 2393576756 bytes 2942537 pkt (dropped 1887, overlimits 4242658 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 0: parent 8038:4 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 682065036 bytes 855226 pkt (dropped 830, overlimits 1235869 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 3042Kb of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           34 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         1
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit      650Mbit   216666Kbit      650Mbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us        334us         75us          3us
  av_delay          0us         97us          4us          0us
  sp_delay          0us          2us          0us          0us
  backlog            0b           0b           0b           0b
  pkts                0       855888          155           13
  bytes               0    683212124        53001         2197
  way_inds            0            0            0            0
  way_miss            0          142            7            1
  way_cols            0            0            0            0
  drops               0          830            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            0            0            1
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0        66884         2708          255
  quantum          1239         1514         1514         1514

qdisc cake 0: parent 8038:3 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 697559831 bytes 1019902 pkt (dropped 697, overlimits 1362003 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 1973504b of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           40 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         1
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit      650Mbit   162500Kbit   162500Kbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us        131us         82us          0us
  av_delay          0us         56us          4us          0us
  sp_delay          0us          1us          1us          0us
  backlog            0b           0b           0b           0b
  pkts                0      1020552           47            0
  bytes               0    698546319        23996            0
  way_inds            0            0            0            0
  way_miss            0          106           10            0
  way_cols            0            0            0            0
  drops               0          697            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            0            0            0
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0        66884         1853            0
  quantum          1239         1514         1514         1514

qdisc cake 0: parent 8038:2 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 524252251 bytes 665206 pkt (dropped 195, overlimits 874210 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 1510912b of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           40 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         2
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit   216666Kbit      325Mbit   216666Kbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us         70us         70us          0us
  av_delay          0us         29us          5us          0us
  sp_delay          0us          0us          1us          0us
  backlog            0b           0b           0b           0b
  pkts                0       665116          282            3
  bytes               0    524433017       102469          295
  way_inds            0            6            0            0
  way_miss            0          121           21            2
  way_cols            0            0            0            0
  drops               0          195            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            2            0            0
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0        63976         3999          132
  quantum          1239         1514         1514         1514

qdisc cake 0: parent 8038:1 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 489699638 bytes 402203 pkt (dropped 165, overlimits 770576 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 919808b of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           28 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         2
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit      325Mbit      325Mbit      325Mbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us        352us         55us          3us
  av_delay          0us         84us          1us          0us
  sp_delay          0us          0us          0us          0us
  backlog            0b           0b           0b           0b
  pkts                0       402318           26           24
  bytes               0    489916111        17717         1948
  way_inds            0            0            0            0
  way_miss            0          109            4            4
  way_cols            0            0            0            0
  drops               0          165            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            1            0            0
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0        66884         1377          582
  quantum          1239         1514         1514         1514

qdisc ingress ffff: parent ffff:fff1 ----------------
 Sent 2679812560 bytes 2551066 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0

=== tc -s qdisc show dev ifb4eth1 ===

root@N5105_2:~# tc -s qdisc show dev ifb4eth1
qdisc cake_mq 803a: root bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 2556898768 bytes 2425974 pkt (dropped 125092, overlimits 3080054 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 0: parent 803a:4 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 631838897 bytes 581902 pkt (dropped 33222, overlimits 723738 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 3264768b of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           46 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         1
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit      650Mbit   162500Kbit      650Mbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us         77us         68us         20us
  av_delay          0us          9us          5us          1us
  sp_delay          0us          1us          1us          1us
  backlog            0b           0b           0b           0b
  pkts                0       614870          105          149
  bytes               0    682074289        36230        21688
  way_inds            0            0            0            0
  way_miss            0          151           18            9
  way_cols            0            0            0            0
  drops               0        33222            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            1            0            1
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0        34822         2584          285
  quantum          1239         1514         1514         1514

qdisc cake 0: parent 803a:3 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 760175966 bytes 920414 pkt (dropped 42417, overlimits 1234834 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 5241600b of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           46 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         2
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit      325Mbit   162500Kbit   216666Kbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us         43us        108us          6us
  av_delay          0us          5us          8us          0us
  sp_delay          0us          0us          1us          0us
  backlog            0b           0b           0b           0b
  pkts                0       962565          252           14
  bytes               0    824311205        75735         2629
  way_inds            0            0            0            0
  way_miss            0          118           26            8
  way_cols            0            0            0            0
  drops               0        42417            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            1            0            0
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0        36336         2168          415
  quantum          1239         1514         1514         1514

qdisc cake 0: parent 803a:2 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 669378520 bytes 542353 pkt (dropped 35865, overlimits 708234 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 6609408b of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           46 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         3
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit   216666Kbit      650Mbit      325Mbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us        103us        247us        175us
  av_delay          0us         38us         38us         10us
  sp_delay          0us          0us          1us          2us
  backlog            0b           0b           0b           0b
  pkts                0       578000          173           45
  bytes               0    723451003       180562        41182
  way_inds            0            0            0            0
  way_miss            0           99            9            5
  way_cols            0            0            0            0
  drops               0        35865            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            0            0            0
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len             0        39364        14741        11628
  quantum          1239         1514         1514         1514

qdisc cake 0: parent 803a:1 bandwidth 650Mbit diffserv4 flows nat nowash no-ack-filter split-gso rtt 20ms noatm overhead 4 mpu 84
 Sent 495505385 bytes 381305 pkt (dropped 13588, overlimits 413248 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 2163200b of 6500000b
 capacity estimate: 0bit
 min/max network layer size:           46 /    1500
 min/max overhead-adjusted size:       84 /    1504
 active queues:                         1
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      40625Kbit      650Mbit      325Mbit      650Mbit
  target            1ms          1ms          1ms          1ms
  interval         20ms         20ms         20ms         20ms
  pk_delay          0us         80us         66us         34us
  av_delay          0us          6us          2us          3us
  sp_delay          0us          1us          1us          0us
  backlog            0b           0b           0b           0b
  pkts                0       388111           50         6732
  bytes               0    515642085        25430       409334
  way_inds            0            0            0            0
  way_miss            0          103            8            6
  way_cols            0            0            0            0
  drops               0        13588            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            0            1            0            0
  bk_flows            0            1            0            1
  un_flows            0            0            0            0
  max_len             0        34822         5288         2932
  quantum          1239         1514         1514         1514

(continued in next reply due to forum character limit)

1 Like

=== tc -s -j qdisc show dev eth1 ===

root@N5105_2:~# tc -s -j qdisc show dev eth1
[{"kind":"cake_mq","handle":"8038:","root":true,"options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":2393576756,"packets":2942537,"drops":1887,"overlimits":4242658,"requeues":0,"backlog":0,"qlen":0},{"kind":"cake","handle":"0:","parent":"8038:4","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":682065036,"packets":855226,"drops":830,"overlimits":1235869,"requeues":0,"backlog":0,"qlen":0,"memory_used":3115008,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":34,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":1,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":81250000,"sent_bytes":683212124,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":334,"avg_delay_us":97,"base_delay_us":2,"sent_packets":855888,"way_indirect_hits":0,"way_misses":142,"way_collisions":0,"drops":830,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":66884,"flow_quantum":1514},{"threshold_rate":27083333,"sent_bytes":53001,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":75,"avg_delay_us":4,"base_delay_us":0,"sent_packets":155,"way_indirect_hits":0,"way_misses":7,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":2708,"flow_quantum":1514},{"threshold_rate":81250000,"sent_bytes":2197,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":3,"avg_delay_us":0,"base_delay_us":0,"sent_packets":13,"way_indirect_hits":0,"way_misses":1,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":255,"flow_quantum":1514}]},{"kind":"cake","handle":"0:","parent":"8038:3","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":697559831,"packets":1019902,"drops":697,"overlimits":1362003,"requeues":0,"backlog":0,"qlen":0,"memory_used":1973504,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":40,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":1,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":81250000,"sent_bytes":698546319,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":131,"avg_delay_us":56,"base_delay_us":1,"sent_packets":1020552,"way_indirect_hits":0,"way_misses":106,"way_collisions":0,"drops":697,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":66884,"flow_quantum":1514},{"threshold_rate":20312500,"sent_bytes":23996,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":82,"avg_delay_us":4,"base_delay_us":1,"sent_packets":47,"way_indirect_hits":0,"way_misses":10,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":1853,"flow_quantum":1514},{"threshold_rate":20312500,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1514}]},{"kind":"cake","handle":"0:","parent":"8038:2","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":524252251,"packets":665206,"drops":195,"overlimits":874210,"requeues":0,"backlog":0,"qlen":0,"memory_used":1510912,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":40,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":2,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":27083333,"sent_bytes":524433017,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":70,"avg_delay_us":29,"base_delay_us":0,"sent_packets":665116,"way_indirect_hits":6,"way_misses":121,"way_collisions":0,"drops":195,"ecn_mark":0,"ack_drops":0,"sparse_flows":2,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":63976,"flow_quantum":1514},{"threshold_rate":40625000,"sent_bytes":102469,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":70,"avg_delay_us":5,"base_delay_us":1,"sent_packets":282,"way_indirect_hits":0,"way_misses":21,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":3999,"flow_quantum":1514},{"threshold_rate":27083333,"sent_bytes":295,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":3,"way_indirect_hits":0,"way_misses":2,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":132,"flow_quantum":1514}]},{"kind":"cake","handle":"0:","parent":"8038:1","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":489699638,"packets":402203,"drops":165,"overlimits":770576,"requeues":0,"backlog":0,"qlen":0,"memory_used":919808,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":28,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":2,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":40625000,"sent_bytes":489916111,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":352,"avg_delay_us":84,"base_delay_us":0,"sent_packets":402318,"way_indirect_hits":0,"way_misses":109,"way_collisions":0,"drops":165,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":66884,"flow_quantum":1514},{"threshold_rate":40625000,"sent_bytes":17717,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":55,"avg_delay_us":1,"base_delay_us":0,"sent_packets":26,"way_indirect_hits":0,"way_misses":4,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":1377,"flow_quantum":1514},{"threshold_rate":40625000,"sent_bytes":1948,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":3,"avg_delay_us":0,"base_delay_us":0,"sent_packets":24,"way_indirect_hits":0,"way_misses":4,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":582,"flow_quantum":1514}]},{"kind":"ingress","handle":"ffff:","parent":"ffff:fff1","options":{},"bytes":2679812560,"packets":2551066,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0}]

=== tc -s -j qdisc show dev ifb4eth1 ===

root@N5105_2:~# tc -s -j qdisc show dev ifb4eth1
[{"kind":"cake_mq","handle":"803a:","root":true,"options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":2557630963,"packets":2429875,"drops":125092,"overlimits":3080675,"requeues":0,"backlog":0,"qlen":0},{"kind":"cake","handle":"0:","parent":"803a:4","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":631948140,"packets":582393,"drops":33222,"overlimits":723777,"requeues":0,"backlog":0,"qlen":0,"memory_used":3264768,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":46,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":1,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":81250000,"sent_bytes":682167382,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":43,"avg_delay_us":5,"base_delay_us":0,"sent_packets":615291,"way_indirect_hits":0,"way_misses":195,"way_collisions":0,"drops":33222,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":34822,"flow_quantum":1514},{"threshold_rate":27083333,"sent_bytes":45366,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":63,"avg_delay_us":5,"base_delay_us":1,"sent_packets":126,"way_indirect_hits":0,"way_misses":20,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":2584,"flow_quantum":1514},{"threshold_rate":81250000,"sent_bytes":28702,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":20,"avg_delay_us":2,"base_delay_us":1,"sent_packets":198,"way_indirect_hits":0,"way_misses":10,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":285,"flow_quantum":1514}]},{"kind":"cake","handle":"0:","parent":"803a:3","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":760431380,"packets":920787,"drops":42417,"overlimits":1235044,"requeues":0,"backlog":0,"qlen":0,"memory_used":5241600,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":46,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":4,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":27083333,"sent_bytes":824549608,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":388,"avg_delay_us":77,"base_delay_us":0,"sent_packets":962869,"way_indirect_hits":0,"way_misses":136,"way_collisions":0,"drops":42417,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":36336,"flow_quantum":1514},{"threshold_rate":20312500,"sent_bytes":91880,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":96,"avg_delay_us":9,"base_delay_us":1,"sent_packets":317,"way_indirect_hits":0,"way_misses":30,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":2168,"flow_quantum":1514},{"threshold_rate":20312500,"sent_bytes":3495,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":6,"avg_delay_us":0,"base_delay_us":0,"sent_packets":18,"way_indirect_hits":0,"way_misses":8,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":415,"flow_quantum":1514}]},{"kind":"cake","handle":"0:","parent":"803a:2","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":669586660,"packets":543150,"drops":35865,"overlimits":708583,"requeues":0,"backlog":0,"qlen":0,"memory_used":6609408,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":46,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":3,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":27083333,"sent_bytes":723652284,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":43,"avg_delay_us":8,"base_delay_us":1,"sent_packets":578780,"way_indirect_hits":0,"way_misses":121,"way_collisions":0,"drops":35865,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":39364,"flow_quantum":1514},{"threshold_rate":27083333,"sent_bytes":187171,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":234,"avg_delay_us":36,"base_delay_us":2,"sent_packets":187,"way_indirect_hits":0,"way_misses":10,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":14741,"flow_quantum":1514},{"threshold_rate":20312500,"sent_bytes":41432,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":173,"avg_delay_us":10,"base_delay_us":2,"sent_packets":48,"way_indirect_hits":0,"way_misses":5,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":11628,"flow_quantum":1514}]},{"kind":"cake","handle":"0:","parent":"803a:1","options":{"bandwidth":81250000,"diffserv":"diffserv4","flowmode":"flows","nat":true,"wash":false,"ingress":false,"ack-filter":"disabled","split_gso":true,"rtt":20000,"raw":false,"atm":"noatm","overhead":4,"mpu":84,"fwmark":"0"},"bytes":495664783,"packets":383545,"drops":13588,"overlimits":413271,"requeues":0,"backlog":0,"qlen":0,"memory_used":2163200,"memory_limit":6500000,"capacity_estimate":0,"min_network_size":46,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1504,"active_queues":1,"avg_hdr_offset":14,"tins":[{"threshold_rate":5078125,"sent_bytes":0,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":0,"avg_delay_us":0,"base_delay_us":0,"sent_packets":0,"way_indirect_hits":0,"way_misses":0,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":0,"flow_quantum":1239},{"threshold_rate":40625000,"sent_bytes":515675702,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":47,"avg_delay_us":6,"base_delay_us":1,"sent_packets":388264,"way_indirect_hits":0,"way_misses":130,"way_collisions":0,"drops":13588,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":34822,"flow_quantum":1514},{"threshold_rate":40625000,"sent_bytes":25430,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":66,"avg_delay_us":2,"base_delay_us":1,"sent_packets":50,"way_indirect_hits":0,"way_misses":8,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":5288,"flow_quantum":1514},{"threshold_rate":81250000,"sent_bytes":535115,"backlog_bytes":0,"target_us":1000,"interval_us":20000,"peak_delay_us":13,"avg_delay_us":2,"base_delay_us":0,"sent_packets":8819,"way_indirect_hits":0,"way_misses":6,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":0,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":2932,"flow_quantum":1514}]}]
root@N5105_2:~#

1 Like

Hi @segal_72 ,

Thanks for including the tc outputs.

Hmm, that means the tc-cake manpage isn't 100% accurate (I mean.. not for cake_mq) if cake_mq separates the bandwidth like that.

I'll see what I can do after comparing your tc outputs with the cake-stats code and I'll let you know when there's a new version with the new fix included.

Hi @segal_72 ,

Configured bandwidth: 650Mbit

From what I understand, cake_mq appears to split the 650Mbit bandwidth across the 4 hardware queues (~162.5Mbit each) and then apply diffserv4 per queue instance rather than globally.

That would explain why the tin thresholds do not match the expected diffserv4 percentages from the manpage (for example, Best Effort not showing the full 650Mbit in each instance).

Could you confirm whether this is expected cake_mq behaviour, or if this points to a cake-stats detection issue?

I've pushed a quick fix (see 60c3869).
Now cake-stats should be able to tell if an interface is [INGRESS]/[EGRESS] properly (hopefully).

You can simply use sh uninstall.sh and then sh install.sh to install the latest version, or if you prefer to git clone again, you can do that as well.

Let me know if cake-stats still wrongly detects ifb4eth1 as [EGRESS].

There’s a pending fix for cake mq bandwidth.

1 Like

Hi @dave14305 ,

Thanks for the info.

It seems that patch will affect how cake_mq shows stats to tc, but cake-stats should be able to parse data correctly when the patch got accepted, as long as they don't change how cake or cake_mq prints its statistics when we use tc -s qdisc.

Hl, i have removed the cake stats and install again, but not the last vers.1.1.15.

OpenWrt 24.10.5, r29087-d9c5716d1d
 -----------------------------------------------------
root@VDF-WRT:~# cd cake-stats
root@VDF-WRT:~/cake-stats# sh uninstall.sh
[INFO] cake-stats uninstaller
This will stop and remove cake-stats. Continue? [y/N]: y
[INFO] Stopping OpenWrt service...
[INFO] Removing /usr/bin/cake-stats
[INFO] Removing /etc/init.d/cake-stats
[INFO] Removing /etc/hotplug.d/iface/99-cake-stats

[OK]   cake-stats has been removed.
root@VDF-WRT:~/cake-stats# cd
root@VDF-WRT:~# rm -rf cake-stats
root@VDF-WRT:~# git clone https://github.com/galpt/cake-stats.git
Cloning into 'cake-stats'...
remote: Enumerating objects: 303, done.
remote: Counting objects: 100% (87/87), done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 303 (delta 43), reused 70 (delta 40), pack-reused 216 (from 1)
Receiving objects: 100% (303/303), 6.91 MiB | 12.15 MiB/s, done.
Resolving deltas: 100% (133/133), done.
root@VDF-WRT:~# cd cake-stats
root@VDF-WRT:~/cake-stats# sh install.sh
[INFO] cake-stats installer v1.0.0
[OK]   Dependencies OK
[INFO] Downloading cake-stats-linux-arm64 from GitHub Releases...
/tmp/tmp.kjJpbO/cake-stats-linux-arm64. 100%[===============================================================================>]   3.07M  --.-KB/s    in 0.08s
[OK]   Binary installed: /usr/bin/cake-stats
[INFO] Detected OS type: openwrt
[INFO] Installing OpenWrt init.d service...
[OK]   OpenWrt service enabled and started

[OK]   Installation complete!
[INFO] Web interface: http://<device-ip>:11112
[INFO] API endpoint:  http://<device-ip>:11112/api/stats

Hi @EXREYFOX ,

[INFO] cake-stats installer v1.0.0

That's the install.sh version, not the cake-stats binary version, so you can safely ignore that.

The install.sh will always download the latest version from GitHub Releases and install it as a service automatically. You can verify it by running /usr/bin/cake-stats -version from your OpenWrt terminal.

2 Likes

ok thanks, i confirm its the last vers.

1 Like

Hi,

I installed the latest version following your instructions (uninstall.sh then install.sh from the repository).

The interface direction detection now looks correct on my system:

eth1      [EGRESS]
ifb4eth1  [INGRESS]

Previously ifb4eth1 was sometimes detected as [EGRESS], but with the current version it is consistently shown as [INGRESS], so the fix seems to work.

My setup is:

  • OpenWrt x86 (N5105)
  • CAKE with diffserv4
  • cake_mq enabled
  • WAN interface: eth1
  • IFB interface: ifb4eth1
  • configured bandwidth: 600–650 Mbit

From the tc output:

qdisc cake ... bandwidth 600Mbit diffserv4 flows nat ...

In cake-stats the tin thresholds appear consistent with a per-queue rate rather than the full link rate, which seems to match what I observed earlier when using cake_mq.

For example the thresholds shown are:

Bulk       ~37.5 Mbit
BestEffort ~600 Mbit
Video      ~300 Mbit
Voice      ~150 Mbit

Given a 600–650 Mbit configured rate and 4 hardware queues, this suggests that each queue is effectively operating on ~150–160 Mbit before diffserv classification.

So my understanding is that cake_mq distributes the bandwidth across the hardware queues and each queue then runs its own CAKE instance with diffserv4.

Does that match the intended behaviour of cake_mq, or should the tin thresholds still reflect the full link rate?

Also thanks for mentioning the kernel patch for the cake_mq rate handling — I saw the discussion on lore.kernel.org and that may explain the behaviour I was seeing earlier.

Thanks again for the quick fix.

1 Like

Hi @segal_72 ,

Thanks for the feedback.

Glad that the new version works as expected.

I can't really say for sure since my OpenWrt doesn't support cake_mq, but the easiest way to confirm if cake-stats works as expected would be to just compare your tc -s qdisc output side-by-side with how cake-stats displays the table.

For example, you can check ifb4eth1 from your tc output, and compare the table shown by cake-stats. If the cake-stats bandwidth for each row (i.e. Best Effort row) shows accurate number like from your tc, then you can assume cake-stats is working as expected.

Cheers!

This maybe are a error:

The Drops are not correct or ack_drops count!!

1 Like

Hi @EXREYFOX ,

Thanks for the feedback.

Can you show me the full outputs of both your tc -s qdisc and tc -s -j qdisc?
The tc outputs will look like this.

Seeing your tc outputs will save a lot of time finding where things went wrong.

root@VDF-WRT:~# tc -s qdisc
qdisc noqueue 0: dev lo root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc mq 0: dev eth0 root
 Sent 422305255789 bytes 309683925 pkt (dropped 18919, overlimits 0 requeues 73928)
 backlog 0b 0p requeues 73928
qdisc fq_codel 0: dev eth0 parent :10 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :f limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :e limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :d limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :c limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :b limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :a limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :9 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 162881382363 bytes 110076228 pkt (dropped 18917, overlimits 0 requeues 7307)
 backlog 0b 0p requeues 7307
  maxpacket 1518 drop_overlimit 18048 new_flow_count 8488037 ecn_mark 0 drop_overmemory 18048
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :8 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :7 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :6 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :5 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 86761092769 bytes 71346166 pkt (dropped 1, overlimits 0 requeues 17471)
 backlog 0b 0p requeues 17471
  maxpacket 4306 drop_overlimit 0 new_flow_count 73162 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :4 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 172662780657 bytes 128261531 pkt (dropped 1, overlimits 0 requeues 49150)
 backlog 0b 0p requeues 49150
  maxpacket 66792 drop_overlimit 0 new_flow_count 1413909 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :3 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :2 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :1 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc mq 0: dev eth1 root
 Sent 19756468738 bytes 125083494 pkt (dropped 109, overlimits 0 requeues 46307)
 backlog 0b 0p requeues 46307
qdisc fq_codel 0: dev eth1 parent :10 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :f limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :e limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :d limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :c limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :b limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :a limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :9 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :8 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :7 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :6 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :5 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 19756468738 bytes 125083494 pkt (dropped 109, overlimits 0 requeues 46307)
 backlog 0b 0p requeues 46307
  maxpacket 1514 drop_overlimit 0 new_flow_count 185633 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth1 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc noqueue 0: dev lan2 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan3 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan4 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan5 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev br-lan root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8025: dev eth1.100 root refcnt 2 bandwidth 114Mbit diffserv4 dual-srchost nat nowash ack-filter split-gso rtt 100ms noatm overhead 44 mpu 84 memlimit 32Mb
 Sent 1099841154 bytes 4287733 pkt (dropped 38265, overlimits 1124382 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 8917248b of 32Mb
 capacity estimate: 114Mbit
 min/max network layer size:           28 /    1500
 min/max overhead-adjusted size:       84 /    1544
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh       7125Kbit      114Mbit       57Mbit    28500Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay         15us         39us         12us         13us
  av_delay          5us          2us          5us          8us
  sp_delay          2us          1us          2us          3us
  backlog            0b           0b           0b           0b
  pkts           148213      3680553        75558       421674
  bytes        36178829   1010398296      4168210     53188347
  way_inds         3066        32491        15859            0
  way_miss         2066        19730          456         7447
  way_cols            0            0            0            0
  drops               0           89            0            0
  marks               0            0            0            0
  ack_drop            0        38175            1            0
  sp_flows            1            0            1            1
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len          5176        67398          579         5960
  quantum           300         1514         1514          869

qdisc ingress ffff: dev eth1.100 parent ffff:fff1 ----------------
 Sent 13269804243 bytes 10994091 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8026: dev ifb4eth1.100 root refcnt 2 bandwidth 490200Kbit diffserv4 dual-dsthost nat nowash ingress no-ack-filter split-gso rtt 100ms noatm overhead 44 mpu 84 memlimit 32Mb
 Sent 13732813917 bytes 10977508 pkt (dropped 16583, overlimits 9821498 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 7898880b of 32Mb
 capacity estimate: 490200Kbit
 min/max network layer size:           42 /    1500
 min/max overhead-adjusted size:       86 /    1544
 average network hdr offset:           14

                   Bulk  Best Effort        Video        Voice
  thresh      30637Kbit   490200Kbit   245100Kbit   122550Kbit
  target            5ms          5ms          5ms          5ms
  interval        100ms        100ms        100ms        100ms
  pk_delay         19us         40us         13us         14us
  av_delay          5us         11us          4us          6us
  sp_delay          2us          1us          1us          3us
  backlog            0b           0b           0b           0b
  pkts           541932     10134056        74895       243208
  bytes       621810388  12972005581      5756954    157018530
  way_inds        14745       327109            0           53
  way_miss         1631        35930          423         5529
  way_cols            0            0            0            0
  drops               0        16583            0            0
  marks               0            0            0            0
  ack_drop            0            0            0            0
  sp_flows            1            0            1            1
  bk_flows            0            1            0            0
  un_flows            0            0            0            0
  max_len         49032        68476          680        26820
  quantum           934         1514         1514         1514

root@VDF-WRT:~# tc -s -j qdisc
[{"kind":"noqueue","handle":"0:","dev":"lo","root":true,"refcnt":2,"options":{},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"mq","handle":"0:","dev":"eth0","root":true,"options":{},"bytes":422363897318,"packets":309726673,"drops":18919,"overlimits":0,"requeues":73928,"backlog":0,"qlen":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":10","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":f","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":e","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":d","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":c","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":b","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":a","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":9","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":162881498945,"packets":110076630,"drops":18917,"overlimits":0,"requeues":7307,"backlog":0,"qlen":0,"maxpacket":1518,"drop_overlimit":18048,"new_flow_count":8488045,"ecn_mark":0,"drop_overmemory":18048,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":8","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":7","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":6","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":5","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":86761150088,"packets":71346591,"drops":1,"overlimits":0,"requeues":17471,"backlog":0,"qlen":0,"maxpacket":4306,"drop_overlimit":0,"new_flow_count":73164,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":4","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":172721248285,"packets":128303452,"drops":1,"overlimits":0,"requeues":49150,"backlog":0,"qlen":0,"maxpacket":66792,"drop_overlimit":0,"new_flow_count":1413948,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":3","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":2","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth0","parent":":1","options":{"limit":10240,"flows":1024,"quantum":1518,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"mq","handle":"0:","dev":"eth1","root":true,"options":{},"bytes":19758585952,"packets":125105521,"drops":109,"overlimits":0,"requeues":46307,"backlog":0,"qlen":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":10","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":f","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":e","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":d","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":c","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":b","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":a","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":9","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":8","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":7","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":6","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":5","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":4","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":3","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":2","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":19758585952,"packets":125105521,"drops":109,"overlimits":0,"requeues":46307,"backlog":0,"qlen":0,"maxpacket":1514,"drop_overlimit":0,"new_flow_count":185633,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"fq_codel","handle":"0:","dev":"eth1","parent":":1","options":{"limit":10240,"flows":1024,"quantum":1514,"target":4999,"interval":99999,"memory_limit":4194304,"ecn":true,"drop_batch":64},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0,"maxpacket":0,"drop_overlimit":0,"new_flow_count":0,"ecn_mark":0,"new_flows_len":0,"old_flows_len":0},{"kind":"noqueue","handle":"0:","dev":"lan2","root":true,"refcnt":2,"options":{},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"noqueue","handle":"0:","dev":"lan3","root":true,"refcnt":2,"options":{},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"noqueue","handle":"0:","dev":"lan4","root":true,"refcnt":2,"options":{},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"noqueue","handle":"0:","dev":"lan5","root":true,"refcnt":2,"options":{},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"noqueue","handle":"0:","dev":"lan1","root":true,"refcnt":2,"options":{},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"noqueue","handle":"0:","dev":"br-lan","root":true,"refcnt":2,"options":{},"bytes":0,"packets":0,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"cake","handle":"8025:","dev":"eth1.100","root":true,"refcnt":2,"options":{"bandwidth":14250000,"diffserv":"diffserv4","flowmode":"dual-srchost","nat":true,"wash":false,"ingress":false,"ack-filter":"enabled","split_gso":true,"rtt":100000,"raw":false,"atm":"noatm","overhead":44,"mpu":84,"memlimit":33554432,"fwmark":"0"},"bytes":1101958368,"packets":4309760,"drops":38265,"overlimits":1124603,"requeues":0,"backlog":0,"qlen":0,"memory_used":8917248,"memory_limit":33554432,"capacity_estimate":14250000,"min_network_size":28,"max_network_size":1500,"min_adj_size":84,"max_adj_size":1544,"avg_hdr_offset":14,"tins":[{"threshold_rate":890625,"sent_bytes":36202071,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":15,"avg_delay_us":5,"base_delay_us":2,"sent_packets":148327,"way_indirect_hits":3082,"way_misses":2068,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":2,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":5176,"flow_quantum":300},{"threshold_rate":14250000,"sent_bytes":1012483927,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":97,"avg_delay_us":6,"base_delay_us":1,"sent_packets":3702328,"way_indirect_hits":32593,"way_misses":19797,"way_collisions":0,"drops":89,"ecn_mark":0,"ack_drops":38175,"sparse_flows":0,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":67398,"flow_quantum":1514},{"threshold_rate":7125000,"sent_bytes":4174620,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":13,"avg_delay_us":5,"base_delay_us":1,"sent_packets":75678,"way_indirect_hits":15900,"way_misses":457,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":1,"sparse_flows":0,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":579,"flow_quantum":1514},{"threshold_rate":3562500,"sent_bytes":53190278,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":14,"avg_delay_us":8,"base_delay_us":3,"sent_packets":421692,"way_indirect_hits":0,"way_misses":7458,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":5960,"flow_quantum":869}]},{"kind":"ingress","handle":"ffff:","dev":"eth1.100","parent":"ffff:fff1","options":{},"bytes":13327582983,"packets":11035776,"drops":0,"overlimits":0,"requeues":0,"backlog":0,"qlen":0},{"kind":"cake","handle":"8026:","dev":"ifb4eth1.100","root":true,"refcnt":2,"options":{"bandwidth":61275000,"diffserv":"diffserv4","flowmode":"dual-dsthost","nat":true,"wash":false,"ingress":true,"ack-filter":"disabled","split_gso":true,"rtt":100000,"raw":false,"atm":"noatm","overhead":44,"mpu":84,"memlimit":33554432,"fwmark":"0"},"bytes":13791177955,"packets":11019193,"drops":16583,"overlimits":9860172,"requeues":0,"backlog":0,"qlen":0,"memory_used":7898880,"memory_limit":33554432,"capacity_estimate":61275000,"min_network_size":42,"max_network_size":1500,"min_adj_size":86,"max_adj_size":1544,"avg_hdr_offset":14,"tins":[{"threshold_rate":3829687,"sent_bytes":621822469,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":16,"avg_delay_us":5,"base_delay_us":2,"sent_packets":542017,"way_indirect_hits":14763,"way_misses":1632,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":49032,"flow_quantum":934},{"threshold_rate":61275000,"sent_bytes":13030346547,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":21,"avg_delay_us":11,"base_delay_us":1,"sent_packets":10175519,"way_indirect_hits":327112,"way_misses":36026,"way_collisions":0,"drops":16583,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":1,"unresponsive_flows":0,"max_pkt_len":68476,"flow_quantum":1514},{"threshold_rate":30637500,"sent_bytes":5765506,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":14,"avg_delay_us":4,"base_delay_us":1,"sent_packets":75012,"way_indirect_hits":0,"way_misses":424,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":680,"flow_quantum":1514},{"threshold_rate":15318750,"sent_bytes":157020969,"backlog_bytes":0,"target_us":5000,"interval_us":100000,"peak_delay_us":13,"avg_delay_us":6,"base_delay_us":3,"sent_packets":243228,"way_indirect_hits":53,"way_misses":5538,"way_collisions":0,"drops":0,"ecn_mark":0,"ack_drops":0,"sparse_flows":1,"bulk_flows":0,"unresponsive_flows":0,"max_pkt_len":26820,"flow_quantum":1514}]}]

Hi @EXREYFOX ,

Thanks for the tc outputs.

After I checked everything, it seems cake-stats parses the statistics properly.

If you see carefully from your screenshot, that's not a bug.
The UI shows dropped: 41 and you can count manually (drops: 7 + ack_drop: 34 = dropped: 41).

I've added some more tests and some fixes to the install.sh script (see bb2b992 and the full changelog).

To cleanly update cake-stats, you can follow the How to Update section here.