Traffic Shaper - FQ_CoDel with weighted queues?

Started by marigx, January 01, 2018, 12:17:11 AM

Previous topic - Next topic
I have been using the FlowQueue-CoDel scheduler type successfully for traffic shaping for a few months.

Does anyone know if it is possible to use FlowQueue-CoDel in conjunction with weighted Queues? 

I have about 5 Mbits of download bandwidth total to work with, and a Roku box with a fixed IP address that I'd like to prioritize, when it's streaming, to give it all or nearly all of the 5 Mbits.  Now the Roku isn't always using 5 Mbits when it's streaming, so I'd like other clients to get whatever bandwidth is left over, or when more is available when the Roku is not using all 5 Mbits.

So the weighted Queue feature seemed to be a perfect fit for what I want, and I can indeed get it to work when using a scheduler type of Weighted Fair Queueing.  But when I switch my download pipe to use the scheduler type of FlowQueue-CoDel, the Queue weights seem to be ignored.

So I would like, if possible, to combine the elimination of buffer bloat I get with FQ-CoDel with the weighted queues.  Maybe the two are just incompatible, and I have mis-understood something along the way?

Thanks for any insights anyone can provide!


Well, WFQ and ticking the CoDel checkbox on the queue does help a lot, but it doesn't seem to be as good with buffer bloat as using FQ-CoDel as the scheduler type.

I am basing this solely on the buffer bloat score at DSLReports.com/Speedtest:



I usually get a B, sometimes a C, WFQ and the CoDel checkboxes ticked.

With the FQ-CoDel scheduler type, I can get an A every time, but as I explained, right now, the weighting is more important for me.

I'm also just trying to understand whether I am doing something wrong, or maybe if the OpnSense UI is incorrectly leading me to believe the weighting is available to me with FQ-CoDel, when in reality they don't really work together.

I had a chance to look into the source code for how fq_codel is implemented in OpnSense - I believe this is the right source file:

https://github.com/opnsense/src/blob/master/sys/netpfil/ipfw/dn_sched_fq_codel.c

Reviewing the source, there is no mention of weight.  A search of the file for 'weight' comes up with no hits.

If I look in the source for the QFQ or WF2Q+ schedulers, there are multiple instances where weight appears in the source code:

https://github.com/opnsense/src/blob/master/sys/netpfil/ipfw/dn_sched_qfq.c
https://github.com/opnsense/src/blob/master/sys/netpfil/ipfw/dn_sched_wf2q.c

Unless I'm missing something, I'd say it's pretty definitive that the fq_codel scheduler in OpnSense doesn't utilize the queue weights.

Did you ever get an answer on this?  I'm looking to do something similar with FQ_CoDel.