Bug 12642 - QoS does not correctly set fq_codel qdisc
Summary: QoS does not correctly set fq_codel qdisc
Status: CLOSED NOTABUG
Alias: None
Product: IPFire
Classification: Unclassified
Component: --- (show other bugs)
Version: 2
Hardware: all Linux
: Will affect most users Major Usability
Assignee: Assigned to nobody - feel free to grab it and work on it
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-06-17 06:02 UTC by dnl
Modified: 2021-06-17 15:25 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description dnl 2021-06-17 06:02:36 UTC
In a community discussion [1] all users who checked did not have the 'fq_codel' queuing discipline active on one or both of their 'red0' and 'imq0' interfaces.  Instead the 'htb' qdisc was in use.

I expect that the 'fq_codel' qdisc is used for uplink and downlink when QoS is enabled.  'fq_codel' was mentioned back when it was first implemented (regarding "bufferbloat") and the wiki still mentions it specifically.


I noticed this problem from syslog messages:

May  9 16:01:25 ipfire root: Could not find a bridged zone for imq0
May  9 16:01:25 ipfire codel: Codel AQM could not be enabled on 'imq0'. Error code: 2
May  9 16:01:25 ipfire ipfire: QoS started
May  9 16:01:25 ipfire vnstatd[2306]: Interface "imq0" enabled.

These had happened for some time on my system.  I can search history if required.

1. PARTIAL FIX
The "Error code: 2" above is from the IPFire "enable_codel" script.  It incorrectly uses the 'add' argument not 'replace'.  The manual page for the 'tc' utility states:

"
       replace
              Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet it is created.
"

Therefore I suggest changing 'add' to 'replace' in enable_codel.

2. SECOND PROBLEM
However this is not a complete fix.  When I manually changed the script only the imq0 interface had fq_codel set after a QoS restart, not red0.
Even a fresh reboot results in 'htb' being set for both uplink and downlink on my system.

3. THIRD PROBLEM
If I used 'tc' to manually replace 'htb' with 'fq_codel' all rrdtool graphs on the QoS page in the WUI stopped working.  I do not know the cause and did not troubleshoot further.


I wonder if there is a relationship with bridging being enabled.  On my system I have bridged the GREEN interface to allow a VM hosted on my IPFire system to use that network.  Not all users in the community thread reported using Bridging.

My fireinfo is https://fireinfo.ipfire.org/profile/12a8c1b37699b320895097608705c5cc374254a9

As always, thank you in advance!

Refs:
[1] https://community.ipfire.org/t/qos-warning-about-aqm-codel-not-being-enabled/5372/5
Comment 1 Michael Tremer 2021-06-17 15:25:05 UTC
This bug report lacks basic understanding of how QoS works.

1) You cannot have fq_codel and HTB at the same time. CoDel is employed in the subclasses
2) imq0 does not have/need fq_codel
3) Graphs stop working when you disable the QoS