FlexQoS FlexQoS 1.2.4 - Flexible QoS Enhancement Script for Adaptive QoS

D

Deleted member 72428

Guest
Can you elaborate on this a little more since I run a fulltime VPN on the router? Should I change the default from File Downloads to something else? Thanks dave!

Hi @dave14305, same as above, can you please elaborate on what cases/scenarios it covers? Does it affect outbound WAN or LAN as well? Could this setting affect my poor bufferbloat on uploads with excellent bufferbloat on downloads? I have a symmetric connection.
 

DanNuke86

Regular Contributor
Can't reproduce here. Switching from Cake to A.QoS properly removed existing qdiscs before setting up the A.QoS ones, as QoS gets stopped, then started:

Code:
        else if (strcmp(script, "qos") == 0)
        {
                nvram_set("restart_qo", "1");
                if(action&RC_SERVICE_STOP) {
                        stop_iQos();
#if defined(RTCONFIG_BWDPI)
                        stop_dpi_engine_service(0);
#endif
                        del_iQosRules();
                }
                if(action & RC_SERVICE_START) {
#ifdef HND_ROUTER
                        hnd_nat_ac_init(0);
#endif
                        if (nvram_match("qos_enable", "1") &&
                           !nvram_match("qos_type", "2")) {
                                ForceDisableWLan_bw();
                        } else if (nvram_match("qos_enable", "0")) {
                                ForceDisableWLan_bw();
                        }
#if defined(RTCONFIG_QCA) || \
                (defined(RTCONFIG_RALINK) && !defined(RTCONFIG_DSL) && !defined(RTN13U))
                        reinit_hwnat(-1);
#endif
                        QOS_CONTROL();
                }
                nvram_set("restart_qo", "0");
        }
Code:
qdisc htb 1: dev eth0 root refcnt 2 r2q 10 default 0 direct_packets_stat 2 direct_qlen 1000
qdisc fq_codel 8018: dev eth0 parent 1:2 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms
qdisc fq_codel 801a: dev eth0 parent 1:10 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc fq_codel 801c: dev eth0 parent 1:11 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc fq_codel 801e: dev eth0 parent 1:12 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc fq_codel 8020: dev eth0 parent 1:13 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc fq_codel 8022: dev eth0 parent 1:14 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc fq_codel 8024: dev eth0 parent 1:15 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc fq_codel 8026: dev eth0 parent 1:16 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc fq_codel 8028: dev eth0 parent 1:17 limit 1000p flows 1024 quantum 300 target 5ms interval 100ms
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth3 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth4 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth5 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev spu_us_dummy root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev spu_ds_dummy root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth6 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth7 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc htb 1: dev br0 root refcnt 2 r2q 10 default 0 direct_packets_stat 1 direct_qlen 2
qdisc fq_codel 8017: dev br0 parent 1:2 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms
qdisc fq_codel 8019: dev br0 parent 1:10 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc fq_codel 801b: dev br0 parent 1:11 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc fq_codel 801d: dev br0 parent 1:12 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc fq_codel 801f: dev br0 parent 1:13 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc fq_codel 8021: dev br0 parent 1:14 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc fq_codel 8023: dev br0 parent 1:15 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc fq_codel 8025: dev br0 parent 1:16 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc fq_codel 8027: dev br0 parent 1:17 limit 1000p flows 1024 quantum 1514 target 5ms interval 100ms ecn
qdisc cake 8002: dev ifb4eth0 root refcnt 2 bandwidth 495002Kbit besteffort dual-dsthost nat wash ingress no-ack-filter split-gso rtt 100ms noatm overhead 18 mpu 64

Can confirm this has been partially reproduced (not quite the same log as last time) by switching back to A.QoS from CAKE. Rebooting the router corrects the issue and removes the rogue code.
 

cplay

Senior Member
Hi @dave14305, same as above, can you please elaborate on what cases/scenarios it covers? Does it affect outbound WAN or LAN as well? Could this setting affect my poor bufferbloat on uploads with excellent bufferbloat on downloads? I have a symmetric connection.
+1 for this @dave14305 - as you know I use vpn on all my devices - ufferfloat is really good on download but I can never get upload down regardless of what manual upload limit I apply.
 

dave14305

Part of the Furniture
Hi @dave14305, same as above, can you please elaborate on what cases/scenarios it covers? Does it affect outbound WAN or LAN as well? Could this setting affect my poor bufferbloat on uploads with excellent bufferbloat on downloads? I have a symmetric connection.
+1 for this @dave14305 - as you know I use vpn on all my devices - ufferfloat is really good on download but I can never get upload down regardless of what manual upload limit I apply.
This setting only affects traffic that originates from within the router itself going to the Internet. VPN Clients seem to behave as if they originate from the router, even though client LAN traffic is within the VPN tunnel. Since all the traffic is encrypted in the tunnel, there is no differentiation as far as QoS can see. It all looks the same, and so it probably doesn’t get prioritized in any meaningful way.

I’ve never run a VPN client on my router, so much of this explanation is theoretical for me.
 
D

Deleted member 72428

Guest
I am still at a loss why I have significantly higher ping spikes on UL vs DL
 

dave14305

Part of the Furniture

raion969

Senior Member
Heyy lately i get really inconsitent upload Bitrate when i stream with obs and usw flexqos. As i switch qos off no uploat flotation or anything else is happening? I have tried everything but it is related to the qos of flexqos.

Also i have a lot of Errors here, does this mean anything?:

Mar 20 21:01:33 dnsmasq-dhcp[2903]: DHCPDISCOVER(br0)
Mar 20 21:01:33 dnsmasq-dhcp[2903]: DHCPOFFER(br0)
Mar 20 21:01:33 dnsmasq-dhcp[2903]: DHCPREQUEST(br0)
Mar 20 21:01:33 dnsmasq-dhcp[2903]: DHCPACK(br0)
Mar 20 21:12:08 dnsmasq-dhcp[2903]: DHCPREQUEST(br0)
Mar 20 21:12:08 dnsmasq-dhcp[2903]: DHCPACK(br0)
Mar 20 21:21:34 rc_service: dhcp6c 30764:notify_rc restart_ddns
Mar 20 21:21:34 custom_script: Running /jffs/scripts/service-event (args: restart ddns)
Mar 20 21:21:34 custom_script: Running /jffs/scripts/service-event-end (args: restart ddns)
Mar 20 22:04:06 syslog: wlceventd_proc_event(508): eth1: Disassoc 3A:BE:B5:14:14:3A, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8), rssi:0
Mar 20 22:06:34 rc_service: dhcp6c 8026:notify_rc restart_ddns
Mar 20 22:06:34 custom_script: Running /jffs/scripts/service-event (args: restart ddns)
Mar 20 22:06:34 custom_script: Running /jffs/scripts/service-event-end (args: restart ddns)
Mar 20 22:51:34 rc_service: dhcp6c 17849:notify_rc restart_ddns
Mar 20 22:51:34 custom_script: Running /jffs/scripts/service-event (args: restart ddns)
Mar 20 22:51:34 custom_script: Running /jffs/scripts/service-event-end (args: restart ddns)
Mar 20 23:36:34 rc_service: dhcp6c 27543:notify_rc restart_ddns
Mar 20 23:36:34 custom_script: Running /jffs/scripts/service-event (args: restart ddns)
Mar 20 23:36:34 custom_script: Running /jffs/scripts/service-event-end (args: restart ddns)
 

dave14305

Part of the Furniture
Also i have a lot of Errors here, does this mean anything?:
None of those are errors. They are information only.

I don't really understand what you're describing. I don't know if it is typos or translation problems. What is obs?
 

dave14305

Part of the Furniture
Tomorrow I plan to push 1.2.3 to the stable release if no major showstoppers have been identified.

Too many QoS tabs for one developer! :eek:
1616292886276.png
 

JohnD5000

Senior Member
Is there a good explanation of what each of these settings under Qos Customizations/Options does?

Note, my setting is in (), should I change any of them?

WAN packet overhead / ATM (0 / unchecked)
Enable Conntrack Flushing (Yes)
Router Outbound Traffic Class (File Downloads)

I also have the following settings if that affects the above settings in any way.

Queue Discipline (fq_codel)
Add Well-Known iptables Rule ()

Thanks
 

dave14305

Part of the Furniture
Version 1.2.3 (Released 21-Mar-2021)

NEW
- Added ability to remember filter settings between sessions. See the Remember checkbox in the Filter Connections header. Saved filters are stored as browser cookies and not as a configuration setting.

CHANGED
- Made fq_codel the default qdisc option. Can be disabled by choosing "ASUS" as the QoS Mode.
- Delay FlexQoS startup until all qdiscs are created by Adaptive QoS, since we now replace them with fq_codel by default.
- During startup check, if QoS fails to initialize, only attempt to restart qos one time before erroring out. This avoids endless qos restart loops from happening if an unrecoverable error happens with Adaptive QoS.
- Adopt sqm-scripts minimum quantum/burst/cburst of 1749 based on worst-case ATM overhead for one packet of MTU size.
- Renamed File Downloads to File Transfers to more closely resemble the stock File Transferring label.
- Renamed Game Downloads category back to Learn-From-Home. Changed built-in Game Downloads rule to use File Transferring category for new rules. Existing Game Downloads rules will still direct to the Learn-From-Home priority level.
- Show full stock category names in CLI appdb command output.
- Moved FlexQoS tab to the third tab between QoS and Classification.
- All Class dropdowns are now listed in the user-defined priority order.
- Moved version number and update check under Options panel
- Moved graph scale option to the main page under the refresh dropdown

FIXED
- When disabling Refresh in the WebUI, don't refresh one last time.
- Fixed Overhead dropdown display issue when using 384 firmware.
 

BreakingDad

Very Senior Member
@dave14305 what should i set WAN packet overhead to on Virgin Media Cable ? 500/30 ? and should I tick ATM ?
 

dave14305

Part of the Furniture
Is there a good explanation of what each of these settings under Qos Customizations/Options does?

Note, my setting is in (), should I change any of them?

WAN packet overhead / ATM (0 / unchecked)
Enable Conntrack Flushing (Yes)
Router Outbound Traffic Class (File Downloads)
If you click on the WAN packet overhead label, you'll see Merlin's tooltip explanation. If you know the type of connection you have from your ISP, choose it from the dropdown. Otherwise, don't worry about it.

Conntrack flushing resets existing connections so they will be picked up by the iptables rules when making changes to the rules.

Outbound Traffic Class isn't too important. It determines which class to assign to traffic that the router originates going out to the internet. This doesn't catch much, unless you have torrents running on the router. But it does determine how VPN client traffic is marked, if you use the router VPN client at all.

In general, default settings are fine.
 

JohnSmith

Regular Contributor
Updated to V1.2.3 from V1.2.2 with fq_codel, and everything appears to be running smoothly. (30+ devices, gaming, streaming, Work-from-Home, etc.)

Only minor issue is the FlexQOS tab is still the 4th tab, after "Classification", and NOT "- Moved FlexQoS tab to the third tab between QoS and Classification.", even after doing a Ctrl+F5 for hard refresh.

1616425668826.png
 

dave14305

Part of the Furniture
Updated to V1.2.3 from V1.2.2 with fq_codel, and everything appears to be running smoothly. (30+ devices, gaming, streaming, Work-from-Home, etc.)

Only minor issue is the FlexQOS tab is still the 4th tab, after "Classification", and NOT "- Moved FlexQoS tab to the third tab between QoS and Classification.", even after doing a Ctrl+F5 for hard refresh.

View attachment 32341
Yes, that’s true. I always reuse the existing file name and position of the tab if it already exists, to prevent it changing from user1 to user2, etc. It will move the next time you reboot, or if you run flexqos disable / enable.
 

Sign Up For SNBForums Daily Digest

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