What's new

FlexQoS FlexQoS 1.0 - Flexible QoS Enhancement Script for Adaptive QoS

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

My theory isn't model-specific, so what are you thinking about specifically?
I was just wondering that because my AX88U is running a newer kernel version, if there is a way to check if your theory about fq codel still applies in practice, considering that the adding for fq codel on a 2.x.x.x kernel is a modification of sorts.

It's just that due to the newer kernel on my router I was hoping that fq codel might be better slightly that's all, I'm more than willing to help test this of you need me to run any commands I can.

So also according to your theory adaptive QoS needs to replace htb with fq codel in order for it to work properly with fq codel?

Or would the traffic have to hit fq codel before hitting the HTB categories?
 
It's just that due to the newer kernel on my router I was hoping that fq codel might be better slightly that's all
There’s no flaw in fq_codel. It’s a matter of Adaptive QoS slicing and dicing your traffic so much before it reaches one of tens or hundreds of fq_codel qdiscs for actual scheduling. I’m probably not articulating it well, but all your traffic gets organized as follows:
  1. Traffic is assigned a mark by the Trend Micro DPI kernel module thingy that includes the direction (8=download,4=upload), a device specific identifier, and the more familiar AppDB mark.
  2. For example assume Work-From-Home is 1:11. Zoom traffic entering an interface (br0 or eth0) is first filtered according to the AppDB category into one of 8 classes (1:10 through 1:17). For Zoom it would be 1:11. See these filters with tc -s filter show dev br0 parent 1:
  3. Once the traffic is ”inside” one of those classes, it gets filtered again by the device ID bits of the mark into a device-specific child class of 1:11. These classes will be 11:2 through 11:256, depending on how many devices you have. 256 is the default class for traffic not assigned to a specific device. Assume your Zoom device is assigned to 11:4. See these filters with tc -s filter show dev br0 parent 11:
  4. By now, your Zoom traffic has first been isolated by category and now by LAN device, so all traffic entering the fq_codel qdisc underneath child class 11:4 is ONLY VoIP related traffic from ONLY your single device. See this qdisc with tc -s qdisc show dev br0 | grep -A4 " 11:3 "
  5. This fq_codel qdisc 2003: is only dealing with a small cross-section of your total LAN traffic, and if you only have 10 connections for your Zoom meeting, and no other VoIP related traffic, fq_codel is merely ensuring your Zoom meeting isn’t competing with itself for bandwidth. Not very useful to me, but the same is true for any qdisc in this situation. There are multiple fq_codel qdiscs all being underworked (each LAN device has a unique fq_codel qdisc under all 8 major QoS categories from #2 above). If you have 10 active devices on your LAN, you can expect at least 88 individual fq_codel qdiscs (8 per device plus 8 default qdiscs for unidentified devices).
EDIT: below was a similar rant from FreshJR:
https://www.snbforums.com/threads/r...and-inner-workings.36836/page-131#post-469372
 
Last edited:
There’s no flaw in fq_codel. It’s a matter of Adaptive QoS slicing and dicing your traffic so much before it reaches one of tens or hundreds of fq_codel qdiscs for actual scheduling. I’m probably not articulating it well, but all your traffic gets organized as follows:
  1. Traffic is assigned a mark by the Trend Micro DPI kernel module thingy that includes the direction (8=download,4=upload), a device specific identifier, and the more familiar AppDB mark.
  2. For example assume Work-From-Home is 1:11. Zoom traffic entering an interface (br0 or eth0) is first filtered according to the AppDB category into one of 8 classes (1:10 through 1:17). For Zoom it would be 1:11. See these filters with tc -s filter show dev br0 parent 1:
  3. Once the traffic is ”inside” one of those classes, it gets filtered again by the device ID bits of the mark into a device-specific child class of 1:11. These classes will be 11:2 through 11:256, depending on how many devices you have. 256 is the default class for traffic not assigned to a specific device. Assume your Zoom device is assigned to 11:4. See these filters with tc -s filter show dev br0 parent 11:
  4. By now, your Zoom traffic has first been isolated by category and now by LAN device, so all traffic entering the fq_codel qdisc underneath child class 11:4 is ONLY VoIP related traffic from ONLY your single device. See this qdisc with tc -s qdisc show dev br0 | grep -A4 " 11:3 "
  5. This fq_codel qdisc 2003: is only dealing with a small cross-section of your total LAN traffic, and if you only have 10 connections for your Zoom meeting, and no other VoIP related traffic, fq_codel is merely ensuring your Zoom meeting isn’t competing with itself for bandwidth. Not very useful to me, but the same is true for any qdisc in this situation. There are multiple fq_codel qdiscs all being underworked (each LAN device has a unique fq_codel qdisc under all 8 major QoS categories from #2 above). If you have 10 active devices on your LAN, you can expect at least 88 individual fq_codel qdiscs (8 per device plus 8 default qdiscs for unidentified devices).
EDIT: below was a similar rant from FreshJR:
https://www.snbforums.com/threads/r...and-inner-workings.36836/page-131#post-469372
I suppose it makes logical sense considering that sfq was the native method and fq codel was simply injected into QoS through TC intercept.

So with that being said then how does the default method of sfq factor into adaptive qos is it suffering form the same issue, or is there something else going on entirely?

I asked jack the Asus rep about fq codel being implemented natively he said that he would have to get back to me about it after the new big update.

Also thank you for the explanation, which will open up more questions like which scheduler should we be using SFC being default consideration given to fq codel not currently being natively implemented as of yet.
 
So with that being said then how does the default method of sfq factor into adaptive qos is it suffering form the same issue, or is there something else going on entirely?
I think the point is that by the time the packets make their way to that level of the QoS, the actual queuing displipline doesn't really have anything left to do, so the choice between codel and sfq is moot.
 
which scheduler should we be using SFC being default consideration given to fq codel not currently being natively implemented as of yet.
Wade summarized my thinking very succinctly. There is probably little difference in outcomes between sfq and fq_codel with Adaptive QoS. I could also be completely wrong or misguided since I spend most of my time studying HTB and not fq_codel or sfq. I just switched my own router to sfc to see if I notice any differences or not.

The only curiosity I have is when I switched to sfq in the GUI, the overhead/ATM fields are now hidden, so I'm wondering if it's still valid to apply the overhead value to HTB when paired with sfq. It looks like faketc and Traditional QoS will still apply the overhead value even when not using fq_codel, so I'm wondering why it wouldn't be customizable in the GUI.
 
The only curiosity I have is when I switched to sfq in the GUI, the overhead/ATM fields are now hidden, so I'm wondering if it's still valid to apply the overhead value to HTB when paired with sfq. It looks like faketc and Traditional QoS will still apply the overhead value even when not using fq_codel, so I'm wondering why it wouldn't be customizable in the GUI.

If the scheduler is set to the default sfq scheduler (qos_sched=0), then faketc directly passes the command to tc without doing anything. The rationale behind this is when sfq is selected, I want everything to work 100% unchanged as in stock firmware, therefore that means without injecting overhead parameters.
 
If the scheduler is set to the default sfq scheduler (qos_sched=0), then faketc directly passes the command to tc without doing anything. The rationale behind this is when sfq is selected, I want everything to work 100% unchanged as in stock firmware, therefore that means without injecting overhead parameters.
I get it now (I think). When qos_sched=0, faketc doesn't invoke do_cmd. I'm going to leave my script as-is since I'm already responsible for tainting stock Adaptive QoS behavior. :)
 
thats what ive been saying all along.. with htb it almost doesnt matter what category things are in and fq_codel doesnt do alot either unless within a category there is alot of competition.

the priorities only affect what categories get 1st crack at using over and above the minimum reserved% and codel workes within those categories so if you have a category with umm lets say netflix and gaming device fq_codel would ensure the gaming device gets good ping with the small packets.. but that setup is unlikly to happen.
 
Congrats on the release Dave! This script is excellent! :)
 
Not a huge deal, but anyone notice nomatter what browser in Linux, the flexqos page charts just keep growing and growing with every 3 second update. None of the other ui charts do this.
 

Attachments

  • Screenshot at 2020-10-08 20-50-40.png
    Screenshot at 2020-10-08 20-50-40.png
    88.6 KB · Views: 115
Not a huge deal, but anyone notice nomatter what browser in Linux, the flexqos page charts just keep growing and growing with every 3 second update. None of the other ui charts do this.
That is awesome. Does it happen on the original Classification page also?
 
That is awesome. Does it happen on the original Classification page also?
I just get to many tracked connections on that page and it doesnt update. I left the traffic analyzer on and i dont "think" that pie chart is growing. But it only updates hourly
 
@dave14305 does your script need or use information from Traffic Analyzer tab? I asked because last night while doing school work my router was acting weird. Once I got into it I noticed the low jffs icon (!) and saw that it was running dangerously low. Check to see what was taking up most of the space and found it was mostly Traffic Analyzer. Wanted to turn that off if possible without messing up flexqos. Thanks!
 
@dave14305 does your script need or use information from Traffic Analyzer tab? I asked because last night while doing school work my router was acting weird. Once I got into it I noticed the low jffs icon (!) and saw that it was running dangerously low. Check to see what was taking up most of the space and found it was mostly Traffic Analyzer. Wanted to turn that off if possible without messing up flexqos. Thanks!
No dependency whatsoever.
 
is Spanning-Tree Protocol good for gaming ? i have heard its better to disable it for more performance ?
 
is Spanning-Tree Protocol good for gaming ? i have heard its better to disable it for more performance ?

Spanning-Tree Protocol prevents a network loop form amplifying traffic to the point that the network becomes unusable. It is only activated when a port is first connected and operates for 30 seconds after this or till the network converges, which ever comes last. If someone reported that it made there network more effective by disabling it the placebo effect is probably happening.

Morris
 
so i shoult let this enabled ?
 
so i shoult let this enabled ?

It is a protection. If you only have the router in your network, then the only protection it provides is for someone connecting one cable to two ports. More than one switch and it's best enabled.
 

Latest threads

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top