What's new

FlexQoS FlexQoS 1.3.2 - 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!

Status
Not open for further replies.
Similar? Yes. Exactly the same? No. I do have 50/10mbit VDSL2 now. Sync rate is up around 58/59 and 12/12.5 depending on conditions. Cable in the area is having issues, so it made sense to switch to something more reliable.

There are some changes, but they are very situation specific, and may not apply to most people.

I have been doing remote work, so I added in Work-From-Home at the top and put some more important stuff in there. (Like Zoom meetings and TeamViewer) That allows people to be gaming and not interfere with it more critical stuff. There's still enough bandwidth that everything functions, but I might reduce Work-From-Home's outbound bandwidth by 10% if games were having issues. (For example, when sending large files back and forth with TeamViewer.)

XBox comfortably gets the back seat, which is good.


You'll notice that I'm using two strategies. On the inbound column, there isn't enough minimum bandwidth to guarantee that everything gets the required bandwidth at all times. 50mbit isn't a huge amount to play with. A 4K stream can be 10-20mbit, and most 1080p is at least 3-4mbit. But I really don't want Streaming (with huge 60 second buffers) to go ahead of realtime traffic and latency sensitive stuff like web browsing. Since I can't increase the minimums much without one category or another going down, potentially destroying the responsiveness of that category when a top bucket/category is under heavy load, they are instead quite balanced across all the priority levels, giving everything enough speed to continue happening (if a bit slower); generally this works fine. I then drop the maximums so increase the likelihood that two or three categories share and have all the bandwidth that they need. Streaming has enough (just from the minimums) to maintain 4 average quality streams within the home, or one 4K stream, even if something above it in priority is also gobbling bandwidth. The lower maximums on Gaming and Work From Home prevent those from hogging everything, allowing at least two other categories to get more than expected (more than minimum) bandwidth even when under high utilization. It works pretty well, but sacrifices maximum throughput for some mis-classified XBox downloads and things like TeamViewer file transfers. Might also take longer to load into a game server and receive mod data, unless they use HTTPS (Web Surfing), etc.

On the outbound side, very few categories require as much guaranteed bandwidth, so it's a lot more simple. Crank up the minimum as required on the important categories, keep it low on the rest to choke them as needed, and make sure that total utilization remains within a level that doesn't affect connection ping greatly. Just in case something ends up in the wrong bucket, even unimportant ones have minimums above 1%. This simply improves failure outcomes. If somehow an upload to a website ended up in File Transfers rather than Web Surfing, it'd go at least 4x faster than if it was at 1%, assuming no torrents are active and some other upload is hogging the whole connection. (To force it to the minimum speed.) That would be rare, but if it happened it'd annoy people less having a 45 second upload rather than a 180 second upload.

XBox's are the main bad actor for QOS. An XBox can have connections that are in 6 category buckets - Work-From-Home, Gaming, Web Surfing, Other, Streaming, and File Transfers. If you have an XBox, and have trouble when it's active, you may want to just categorize it by IP address into some mid-tier or low-tier category to stop it from interfering. You would degrade its experience, but save the rest of the network. It is the trickiest device to work around. XBox's love maxing out your buckets completely, whatever they are. I have observed one doing a huge 100GB game download (which takes a while) - in FlexQOS, it had huge amounts of data coming in on Gaming, Web Surfing, Other, and File Transfers. Realistically, downloads should all be File Transfers, not 4 separate categories. I finally got annoyed and shoved some of it by DSCP mark into Learn-From-Home. It can still get the minimums at all times. :p Besides, if a connection is too slow, it'll just try dozens more until it gets one into the Gaming category, maxing that out. Such a PITA device. Microsoft! o_O
I appreciate the detailed explanation of your setup. I appreciate it.
 
I appreciate the detailed explanation of your setup. I appreciate it.
No problem! Happy to help.

The connection gets a pretty good workout for 50mbit. By and large, it doesn't seem to need tuning anymore - but if it did, and a new device was causing trouble, I'd investigate and figure out how to classify and incorporate it. Having such a solid base (Thanks, @dave14305 !) makes it easy to tune the edges a little to get it working flawlessly. :)


image_2022-12-26_234730267.png


1672127339942.png
 
I do have 50/10mbit VDSL2 now.
A bit off-topic, but have you tried CakeQoS to see how it handles your situation and the Xbox? Seeing as you have below 250mbit connection, it should work better.

That being said, I hope FlexQOS is able to work out some custom configurations for the Xbox.
 
Last edited:
A bit off-topic, but have you tried CakeQoS to see how it handles your situation and the Xbox? Seeing as you have below 250mbit connection, it should work better.

That being said, I hope FlexQOS is able to work out some custom configurations for the Xbox.
Nope, I have not tried it. I may at some point, but I tend not to mess with things that aren't broken. FlexQOS is working well enough that I really don't have to think about it or adjust/maintain it much anymore. I go many months without poking it.
 
I installed the Flex qos on asus DSL AX82U with GNUton firmware 388. I adjusted the qos flex as I used it on the Asus AC 68 U but it doesn't seem to work on the new modem. Under 'classification' I don't see any traffic statistics. I don't understand where I'm wrong
 
Try with Flow Cache disabled - on the AX86U that's the only way FlexQoS (or Asus Adaptive QoS) classifies correctly....
 
I'm guessing the router will still use its own adaptive qos, that's on, it should work. At this point I have to uninstall the flex qos?
 
Has anyone had the same problems as me with Flex qos?
When Flex-QoS is installed, can you provide the output of:

flexqos -debug

I did noticed you're using the a DSL AX82U with the GNUton firmware so this may be the issue. You might need to provide additonal info since the hardware is different. I know @dave14305 recently made a minor update to support those newer models!

Also, what’s the output of:
Code:
tc filter show dev br0
 
When Flex-QoS is installed, can you provide the output of:

flexqos -debug

I did noticed you're using the a DSL AX82U with the GNUton firmware so this may be the issue. You might need to provide additonal info since the hardware is different. I know @dave14305 recently made a minor update to support those newer models!

Also, what’s the output of:
Code:
tc filter show dev br0
Here is the debug:

Code:
FlexQoS v1.3.2 released 2022-09-16

Debug date      : 2023-01-24 14:03:00+0100
Router Model    : DSL-AX82U
Firmware Ver    : 388.1_0-gnuton1
DPI/Sig Ver     : 2.0.1 / 2.330
WAN iface       : ppp0
tc WAN iface    : atm0
IPv6            : disabled
Undf Prio       : 2
Down Band       : 0
Up Band         : 0
*****************
Net Control     : 1:11
Work-From-Home  : 1:13
Gaming          : 1:10
Others          : 1:17
Web Surfing     : 1:15
Streaming       : 1:12
File Transfers  : 1:16
Learn-From-Home : 1:14
*****************
Custom rates disabled with Automatic Bandwidth mode!
*****************
iptables settings: Defaults
-A FlexQoS_down -p udp -m multiport --sports 500,4500 -j MARK --set-mark 0x8006ffff/0xc03fffff
-A FlexQoS_up -p udp -m multiport --dports 500,4500 -j MARK --set-mark 0x4006ffff/0xc03fffff
-A FlexQoS_down -p udp -m multiport --dports 16384:16415 -j MARK --set-mark 0x8006ffff/0xc03fffff
-A FlexQoS_up -p udp -m multiport --sports 16384:16415 -j MARK --set-mark 0x4006ffff/0xc03fffff
-A FlexQoS_down -p tcp -m multiport --sports 119,563 -j MARK --set-mark 0x8003ffff/0xc03fffff
-A FlexQoS_up -p tcp -m multiport --dports 119,563 -j MARK --set-mark 0x4003ffff/0xc03fffff
-A FlexQoS_down -p tcp -m multiport --sports 80,443 -m mark --mark 0x80080000/0xc03f0000 -j MARK --set-mark 0x8003ffff/0xc03fffff
-A FlexQoS_up -p tcp -m multiport --dports 80,443 -m mark --mark 0x40080000/0xc03f0000 -j MARK --set-mark 0x4003ffff/0xc03fffff
*****************
appdb rules: Defaults
filter change dev br0 prio 2 protocol all handle 828::800 u32 flowid 1:17
filter change dev atm0 prio 2 protocol all handle 828::800 u32 flowid 1:17
filter add dev br0 protocol all prio 2 u32 match mark 0x8000006B 0xc03fffff flowid 1:17
filter add dev atm0 protocol all prio 2 u32 match mark 0x4000006B 0xc03fffff flowid 1:17
filter add dev br0 protocol all prio 15 u32 match mark 0x800D0007 0xc03fffff flowid 1:16
filter add dev atm0 protocol all prio 15 u32 match mark 0x400D0007 0xc03fffff flowid 1:16
filter add dev br0 protocol all prio 15 u32 match mark 0x800D0086 0xc03fffff flowid 1:16
filter add dev atm0 protocol all prio 15 u32 match mark 0x400D0086 0xc03fffff flowid 1:16
filter add dev br0 protocol all prio 15 u32 match mark 0x800D00A0 0xc03fffff flowid 1:16
filter add dev atm0 protocol all prio 15 u32 match mark 0x400D00A0 0xc03fffff flowid 1:16
filter add dev br0 protocol all prio 20 u32 match mark 0x8012003F 0xc03fffff flowid 1:15
filter add dev atm0 protocol all prio 20 u32 match mark 0x4012003F 0xc03fffff flowid 1:15
filter change dev br0 prio 22 protocol all handle 802::800 u32 flowid 1:15
filter change dev atm0 prio 22 protocol all handle 802::800 u32 flowid 1:15
filter change dev br0 prio 23 protocol all handle 805::800 u32 flowid 1:15
filter change dev atm0 prio 23 protocol all handle 805::800 u32 flowid 1:15
 
tc filter show dev br0
Please post these outputs:
Code:
nvram get wan_ifname
cat /tmp/bwdpi/dev_wan
tc qdisc show root
Also, disable Gear Accelerator if you continue to use FlexQoS. It causes conflicts.
 
Please post these outputs:
Code:
nvram get wan_ifname
cat /tmp/bwdpi/dev_wan
tc qdisc show root
Also, disable Gear Accelerator if you continue to use FlexQoS. It causes conflicts.
I tried disabling game boost but if I do that it also turns off native qos. If I then enable native qos, it also enables game boost. It seems I can't use native qos without game boost
 
ASUSWRT-Merlin DSL-AX82U 388.1_0-gnuton1 Thu Jan 19 18:45:52 UTC 2023
admin@DSL-AX82U-EC98:/tmp/home/root# nvram get wan_ifname
eth4
admin@DSL-AX82U-EC98:/tmp/home/root# cat /tmp/bwdpi/dev_wan
ppp0,wan0admin@DSL-AX82U-EC98:/tmp/home/root# tc qdisc show root
qdisc pfifo_fast 0: dev eth0 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 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 eth6 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 5415 direct_qlen 2
qdisc pfifo_fast 0: dev wl0.1 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 atm0 root refcnt 2 r2q 10 default 0 direct_packets_stat 8 direct_qlen 1000
qdisc pfifo_fast 0: dev ppp0 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 tun13 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 
admin@DSL-AX82U-EC98:/tmp/home/root# nvram get wan_ifname
eth4

qdisc htb 1: dev atm0 root refcnt 2 r2q 10 default 0 direct_packets_stat 8 direct_qlen 1000
The issue with seeing statistics is that @GNUton is using wan_ifname (eth4) to collect the tc class output, but the upload stats would be found on interface atm0.

I think maybe he should see how wan_ifnames is set in init.c if atm or ptm are active.


I tried disabling game boost but if I do that it also turns off native qos. If I then enable native qos, it also enables game boost. It seems I can't use native qos without game boost
Then make sure no devices are listed under that feature.
 
Last edited:
Thanks for the replies. I don't have any devices configured in the game boost list, however I can't disable game boost without also disabling the native qos.

For the rest I don't know what to do, I don't think there will be a solution soon
 
Hi, it may be a noob question but can somebody tell me if Whatsapp is in "Work from Home" category then the files sent or recived through Whatsapp fall in same category or they are dealt in File Transfer category?
Basically i want to give files uploaded through whatsapp a high priority. can i do that?
 
Last edited:
Hi, Can someone tell me the highest WAN bandwidth of AX86U using FlexQoS and turning off Flow Cache?
 
Status
Not open for further replies.

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