What's new

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

Ahh, I see! I think I misunderstood how classification worked. I was imagining a list of rules (some customizable, some proprietary and unknown) that get evaluated and push connections into each category/bucket. But instead it seems, connections could go in any of the buckets, and rules for each one get evaluated in order of the categories. So some could be Web Browsing, or could be Streaming, or could be Learn-From-Home, changing the order of them around may result in it changing where it appears? This is rather different from my Tomato days, which had one sequentially evaluated list. You stuck your heavy hitters like torrent traffic at the top of the list, since you'd be classifying hundreds of those per second, and then worked downward from there.

Oh, that might be a copy paste error. I had about 20 screenshots in Paint.net as I was piecing together what was happening. That one may have been before I scrapped Snapchat, as I was removing them one by one and retesting where things landed. If I had grabbed the screenshot to the right of it, probably no squiggly.

And the 2 rules moving TikTok and Crunchyroll would now be superfluous since they are in Streaming by default.
Cheers. This interaction is helping me wrap my head around the differences. I didn't imagine that re-ordering categories would change where connections end up.
 
Last edited:
I'm wondering if there is a way to get adaptive to see rumble and bitchute as video streaming, Im thinking rules wise.
 
This might be answered elsewhere, but can you tell me how UDP traffic is handled in FlexQOS? Back in the Tomato QOS days, you had the option to exclude incoming UDP from traffic shaping. That was great since many UDP protocols did not have a retransmit mechanism like say, uTP does - so for example, games might desync and VOIP might crackle if packets were dropped - but then you needed to set your maximums low enough to have some spare room for the incoming undroppable UDP data, or you'd end up with bufferbloat at your ISP. I believe this was later improved to just throttle TCP connections more and keep UDP+TCP within each limit?

I noticed a bunch of UDP traffic getting classified automatically, so I assume that AppDB magic/identification is at work, and anything classified is accounted for? Does FlexQOS do anything special to decide what to drop and what not to? I assume, drop all that junk at the bottom first... Learn-From-Home, File Transfers, Streaming, etc.; but what would happen if it made its way to higher up UDP protocols that are packet loss intolerant? Does it chop away at the speed available to TCP connections first and foremost?

This question really only applies when you're running redline (fully maxed out internet connections) for long periods of time, as then you're likely to hit edge cases throughout the day.

Cheers,
 
But instead it seems, connections could go in any of the buckets, and rules for each one get evaluated in order of the categories. So some could be Web Browsing, or could be Streaming, or could be Learn-From-Home, changing the order of them around may result in it changing where it appears?
In general, every identifiable application should only end up in one category. But logic was defied when Learn-From-Home was introduced last year because they duplicated existing categories that were perfectly fine already. So you won’t see this behavior with any other categories than these already mentioned.
can you tell me how UDP traffic is handled in FlexQOS? Back in the Tomato QOS days, you had the option to exclude incoming UDP from traffic shaping.
Adaptive QoS doesn’t seem to differentiate at all. Therefore, neither does FlexQoS.
I assume that AppDB magic/identification is at work, and anything classified is accounted for?
Also anything unclassified is still shaped and scheduled.
Does FlexQOS do anything important to decide what to drop and what not to? I assume, drop all that junk at the bottom first... Learn-From-Home, File Transfers, Streaming, etc.; but what would happen if it made its way to higher up UDP protocols that are packet loss intolerant? Does it chop away at the speed available to TCP connections first and foremost?
Dropping is a passive function in the sense that we don’t do anything to explicitly drop packets. If a flow queue builds up within a fq_codel qdisc and exceeds the target time (waiting in the queue) or the total queue length, then dropping starts to happen. And since traffic is sent in descending priority of categories (top to bottom) it could be that the lowest categories could have more delayed packets and therefore build up a longer queue, or a slower queue and drop more. But quantum prevents starvation of lower priority classes and competing flows within fq_codel.

So in general, in my learnings, drops should be rare under normal circumstances. I find that for people with low bandwidth (e.g. below 2.5Mbit) the default 5ms target used for fq_codel is insufficient and could lead to unnecessary dropping. But FlexQoS accounts for that. Other QoS options in the firmware do not (but CAKE does).
 
I'm wondering if there is a way to get adaptive to see rumble and bitchute as video streaming, Im thinking rules wise.
I don’t use either, so what is unique about those connections?

I’ve thought about adding the same ipset functionality I just added to CakeQos-Merlin to FlexQoS, but I know it would not work nicely with the Tracked Connections table (no awareness in the WebUI which remote IPs are members of an ipset).
 
Ahh, I see! Very, very helpful.

I think I hit an edge case then. Back before Learn-From-Home was moved down below, when the connection was maxed and it was interfering with everything... just check out this packet loss from connmon. People got home at 6PM and went to sleep at 10:30.

1633694912680.png

1633695177775.png


It is much improved with the categorisation changes and small adjustments to minimums/maximums: (You'd barely notice the full connection use.)

1633695129966.png

1633695247670.png
 
I'm wondering if there is a way to get adaptive to see rumble and bitchute as video streaming, Im thinking rules wise.
OK, so I did a little research by watching some Dinesh D'Souza videos on Rumble and you could do a manual classification outside of FlexQoS if you were so inclined. The important DNS name seems to be sp.rmbl.ws.

Create an ipset for Streaming:
Bash:
ipset create streaming_4 hash:ip timeout 86400
ipset create streaming_6 hash:ip family inet6 timeout 86400
Add it to dnsmasq.conf.add:
Code:
max-cache-ttl=86400
ipset=/sp.rmbl.ws/bitchute.com/streaming_4,streaming_6
Create iptables rules to match on those ipsets:
Bash:
iptables -t mangle -A POSTROUTING -o eth0 -m set --match-set streaming_4 dst -j MARK --set-mark 0x4004ffff/0xc03fffff
iptables -t mangle -A POSTROUTING -o br0 -m set --match-set streaming_4 src -j MARK --set-mark 0x8004ffff/0xc03fffff
ip6tables -t mangle -A POSTROUTING -o eth0 -m set --match-set streaming_6 dst -j MARK --set-mark 0x4004ffff/0xc03fffff
ip6tables -t mangle -A POSTROUTING -o br0 -m set --match-set streaming_6 src -j MARK --set-mark 0x8004ffff/0xc03fffff
 
Last edited:
I don’t use either, so what is unique about those connections?

I’ve thought about adding the same ipset functionality I just added to CakeQos-Merlin to FlexQoS, but I know it would not work nicely with the Tracked Connections table (no awareness in the WebUI which remote IPs are members of an ipset).
the seem to be or it could be me with bad eyes not falling into the steaming category, im going to half guess that ill have to wait for ASUS to update classification, they are alternative platforms to YouTube, unfortunately some creators i watch seem to be moving to these platforms vs YouTube.
 
Is that a feature that could be added to FlexQOS? Tomato QOS allowed both remote IPs and domain names. I used that with DDNS to prioritize game traffic to friends, way way back. It re-registered at the same time as the Firewall scripts section, if I remember right. Occasionally after someone's IP changed, the service would have to be restarted for it to pick up a new IP.

In FlexQOS remote IPs can only be IPs. Just wondering if this is a feature that could be added as a third section, similar to the AppDB and IPTables sections. It's sometimes very handy to easily categorize by domain name. (Especially in combination with other details like port numbers.)

If too much work, no worries - just bringing up the idea.
 
Is that a feature that could be added to FlexQOS? Tomato QOS allowed both remote IPs and domain names. I used that with DDNS to prioritize game traffic to friends, way way back. It re-registered at the same time as the Firewall scripts section, if I remember right. Occasionally after someone's IP changed, the service would have to be restarted for it to pick up a new IP.

In FlexQOS remote IPs can only be IPs. Just wondering if this is a feature that could be added as a third section, similar to the AppDB and IPTables sections. It's sometimes very handy to easily categorize by domain name. (Especially in combination with other details like port numbers.)
What variant of Tomato are people generally referring to when they say “Tomato” in 2021? I ask because I want to see what their QoS code looks like to support domains. Shibby, Fresh, Advanced, blah blah blah. Maybe they’re all the same. I haven’t used Tomato since the Linksys WRT54G.

As I mentioned a couple posts above, if I add any domain name/ipset based features to FlexQoS, traffic that gets modified by such an iptables rule won’t show up in the correct priority class in the list of Tracked Connections. That tends to freak people out when they think the traffic should show up in one class (e.g. Gaming) but it shows up in another (e.g. Web Surfing).
 
FreshTomato is the currently supported/developed project, but I had Tomato mostly during the Original, then Toastman and Shibby days.

To my knowledge they all had that capability going right back to builds a decade and a half back. I have some QOS notes in my Router stuff folder from 2009, which clearly list some rules by domain name. My earliest retained firmware is from 2007 (no source code, sorry) - and I have screenshots from 2012 that include rules that used domain names, not IPs. So as far as I know, it's a core capability that has been around right from the start - just like VLANs, which came in very early too.

Can't do much to solve people freaking out, except maybe put a disclaimer on that section saying that it won't show up in the right category, with a giant *BETA* tag. :p

Hehe, WRT54GL user here too. :) And then RT-N16, RT-AC3200, RT-AX56U - the last two are still in active use.
 
Why do i get higher upload speed test results in the router speedtest itself with flexqos disabled? The download speed is always the same
 
Why do i get higher upload speed test results in the router speedtest itself with flexqos disabled? The download speed is always the same
Because stock Adaptive QoS does not limit uploads from the router itself (i.e. where the speedtest runs from). FlexQoS puts such traffic from the router in File Downloads by default, so it is limited by your QoS upload bandwidth value.
 
I had a quick question. why is it recomended to move Learn-from-Home to the bottom if customizing the order of the catagores but not if you choose a preset one? i usually customize but i wanted to keep things simple
 
why is it recomended to move Learn-from-Home to the bottom if customizing the order of the catagores but not if you choose a preset one?
You can't customize the priorities of the preset options. So how could I recommend to move Learn-From-Home in that case? :rolleyes:

The rest of the explanation for moving Learn-From-Home was fully discussed recently in this thread.
 
I had a quick question. why is it recomended to move Learn-from-Home to the bottom if customizing the order of the catagores but not if you choose a preset one? i usually customize but i wanted to keep things simple
I believe this has been covered in the past.

It's not recommended to use the presets because none of the preset options put the L-f-H at the bottom. So it's best to use the customize option instead.
 
You can't customize the priorities of the preset options. So how could I recommend to move Learn-From-Home in that case? :rolleyes:

The rest of the explanation for moving Learn-From-Home was fully discussed recently in this thread.
so should i just always have learn from home at the bottom and dont make any iptable entries that point to it and just ignore it?
 
so should i just always have learn from home at the bottom and dont make any iptable entries that point to it and just ignore it?
You should leave it at the bottom (or at least beneath both Streaming and Web Surfing; doesn't have to be at the very bottom as long as those two are higher priority). You can still use iptables rules if you want to put something else in Learn-From-Home since it will be otherwise unused.
 
You should leave it at the bottom (or at least beneath both Streaming and Web Surfing; doesn't have to be at the very bottom as long as those two are higher priority). You can still use iptables rules if you want to put something else in Learn-From-Home since it will be otherwise unused.
ok cool. thanks man. sorry for all the questions its just these threads are so long its hard to sift through everything
 
What variant of Tomato are people generally referring to when they say “Tomato” in 2021? I ask because I want to see what their QoS code looks like to support domains. Shibby, Fresh, Advanced, blah blah blah. Maybe they’re all the same. I haven’t used Tomato since the Linksys WRT54G.

As I mentioned a couple posts above, if I add any domain name/ipset based features to FlexQoS, traffic that gets modified by such an iptables rule won’t show up in the correct priority class in the list of Tracked Connections. That tends to freak people out when they think the traffic should show up in one class (e.g. Gaming) but it shows up in another (e.g. Web Surfing).
did you ever get around to playing around with this? if i could also add domain names it would be the best of both worlds. i think now with fc and runner disabled the buffer bloat is pretty much the same as with cake (make +2 ot 3ms but thats it) but it seems snappier for my network usage then cake... or if its not super complicated just tell me how to do it i know the ins and outs of linux and stuff , no windows in this house! :p
 

Latest threads

Sign Up For SNBForums Daily Digest

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