FlexQoS FlexQoS 1.0 - Flexible QoS Enhancement Script for Adaptive QoS

  • ATTENTION! You'll notice a Prefix dropdown when you create a thread. If your post applies to one of the topics listed, please use that Prefix for your post. When browsing the thread list you can use the Prefix to filter the view.
  • ATTENTION! As of November 1, 2020, you are not able to reply to threads 6 months after the thread is opened if there are more than 500 posts in the thread.
    Threads will not be locked, so posts may still be edited by their authors.
    Just start a new thread on the topic to post if you get an error message when trying to reply to a thread.

dave14305

Part of the Furniture
Is it possible to exclude an IP or IPrange from QoS?

I have a NAS and I want/need it to be completely excluded from QoS. I don't want it to be top priority, I simply want to exclude it from QoS. Must like how SpdMerlin does when performing a speedtest.

Thanks!
If this were possible, I would support the idea of an Exclusions table. or table for excluded devices.
You would somehow need to erase the mark in iptables so it is not detected by any of the filters. I'm not sure how to do that. There are some references to doing so in the FreshJR thread, but no specifics I could find in a quick search.
 

Jack Yaz

Part of the Furniture
You would somehow need to erase the mark in iptables so it is not detected by any of the filters. I'm not sure how to do that. There are some references to doing so in the FreshJR thread, but no specifics I could find in a quick search.
I set a mark in spdMerlin that I got from FreshJR which should have it skip classification. Whether or not it still works, I don't know as I haven't poked around with tc for ages
 

dave14305

Part of the Furniture
I set a mark in spdMerlin that I got from FreshJR which should have it skip classification. Whether or not it still works, I don't know as I haven't poked around with tc for ages
I did look at that today and will think about how or why it works. Been a long day. Woken up at 5AM for an outage at work. :confused:
 

QuikSilver

Very Senior Member
I did look at that today and will think about how or why it works. Been a long day. Woken up at 5AM for an outage at work. :confused:
Hopefully your job isn't like ....you've been up since 5 working on a task but if you show up "late" during work hours (8 or so), people wonder if your "goofing off".
 

Kingp1n

Very Senior Member
I'm tryin to create streaming rule for my firestick. Is the correct streaming mark: 13*** , 04*** or !04*** ? Thanks alot!
 

dave14305

Part of the Furniture
I'm tryin to create streaming rule for my firestick. Is the correct streaming mark: 13*** , 04*** or !04*** ? Thanks alot!
I would personally go with !04**** so that you don't bother changing packets that are already classified as Streaming (04****). 13 is part of Web Surfing.
 

chatmandu_uk

Occasional Visitor
Hi Dave,

I have a question regarding FlexQoS and the custom rules that can be added. I think you've previously stated that the most important rule should sit at the bottom of the table to avoid it being overridden by a subsequent rule.

When configuring Cisco routers (e.g. access lists, etc), the most explicit rules are normally placed above the generic rules because the router will stop processing rules as soon as it has a match. For example:

Permit 192.168.1.100 255.255.255.255
Deny 192.168.1.0 255.255.255.0

If those commands were reversed, the 'permit' rule would never get processed.

Does FlexQoS continue to process rules, even if it has already matched a rule? If so, isn't this a waste of CPU resources (every single packet could get processed against 24 rules) and also potentially adds a delay because the packet can't be routed until all 24 rules have been processed?

I have finally managed to perform a wireshark capture* for 'Call of Duty Warzone' and discovered that all 'in game' traffic is bound to Internal UDP port 3074.

Ideally, I'd like to have two gaming rules configured:
  • Rule 1
  • Internal IP address = Gaming PC
  • Internal port = UDP 3074
  • Marking = 000000
  • Class = Net Control (?) to give it the highest possible priority on the network.

  • Rule 2
  • Internal IP address = Gaming PC
  • Remote port = !80,443
  • Marking = 000000
  • Class = Gaming

I would have thought that Rule 1 should appear before Rule 2 in any table because it is a more specific match. This would allow it to be processed first and then any other packets, that fail to match Rule 1, can be processed by Rule 2.

Thanks,


* Wireshark is blocked and the game automatically shuts down if it is detected. I renamed the wireshark.exe file and that allowed me to grab the in game data.
 

dave14305

Part of the Furniture
Hi Dave,

I have a question regarding FlexQoS and the custom rules that can be added. I think you've previously stated that the most important rule should sit at the bottom of the table to avoid it being overridden by a subsequent rule.

When configuring Cisco routers (e.g. access lists, etc), the most explicit rules are normally placed above the generic rules because the router will stop processing rules as soon as it has a match. For example:

Permit 192.168.1.100 255.255.255.255
Deny 192.168.1.0 255.255.255.0

If those commands were reversed, the 'permit' rule would never get processed.

Does FlexQoS continue to process rules, even if it has already matched a rule? If so, isn't this a waste of CPU resources (every single packet could get processed against 24 rules) and also potentially adds a delay because the packet can't be routed until all 24 rules have been processed?

I have finally managed to perform a wireshark capture* for 'Call of Duty Warzone' and discovered that all 'in game' traffic is bound to Internal UDP port 3074.

Ideally, I'd like to have two gaming rules configured:
  • Rule 1
  • Internal IP address = Gaming PC
  • Internal port = UDP 3074
  • Marking = 000000
  • Class = Net Control (?) to give it the highest possible priority on the network.

  • Rule 2
  • Internal IP address = Gaming PC
  • Remote port = !80,443
  • Marking = 000000
  • Class = Gaming

I would have thought that Rule 1 should appear before Rule 2 in any table because it is a more specific match. This would allow it to be processed first and then any other packets, that fail to match Rule 1, can be processed by Rule 2.

Thanks,


* Wireshark is blocked and the game automatically shuts down if it is detected. I renamed the wireshark.exe file and that allowed me to grab the in game data.
The precedence is driven by the behavior of the iptables MARK target. It is a non-terminating target, meaning it keeps processing additional rules even if a match is made. So the final matching rule in the chain determines the ultimate state of the packet. I can't change that Linux behavior as far as I know.
 

Prodeje79

Regular Contributor
No, it's built specifically for ASUS Adaptive QoS. If you want interesting QoS solutions for other routers, check out the SQM Scripts at OpenWRT. Very smart guys doing really neat stuff with different qdiscs.
ok, figured I'd ask! My friend has a ASUS Lyra setup, so it is ASUS, but not Merlin. We were able to limit the bandwidth and that helped buffer bloat at least. He is single and puts gaming first, any opinion on his best setup since cant use yours? basically we put on adaptive, limited UL and DL to 90% of his worst speed test, choose gaming profile.
 

dave14305

Part of the Furniture
ok, figured I'd ask! My friend has a ASUS Lyra setup, so it is ASUS, but not Merlin. We were able to limit the bandwidth and that helped buffer bloat at least. He is single and puts gaming first, any opinion on his best setup since cant use yours? basically we put on adaptive, limited UL and DL to 90% of his worst speed test, choose gaming profile.
The original FreshJR_QOS script might still work on stock firmware. Worth a try. There are instructions for Stock users in the second post in the original thread.
 

Prodeje79

Regular Contributor
OK great thanks! Worth a try, sounds like we basically put a USB drive into the router, then run a BAT file in windows.

My friend has Adaptive QoS option, why cant your script work like this and be installed on stock? stock won't have SSH, JFFS scripts enabled ? Is it impossible or just an undertaking to make a stock version of your script? Maybe just needs to be a certain version of AsusWRT? Sorry if my question is ridiculous! :)

It sounds like one issue is that you always have to reboot the whole router after any UI changes are made.....
"Script modifications get reset when WebUI changes are made (normal behavior).
For AsusWRT users it is not possible to trigger the script after WebUI changes. "


The original FreshJR_QOS script might still work on stock firmware. Worth a try. There are instructions for Stock users in the second post in the original thread.
 

dave14305

Part of the Furniture
My friend has Adaptive QoS option, why cant your script work like this and be installed on stock? stock won't have SSH, JFFS scripts enabled ? Is it impossible or just an undertaking to make a stock version of your script?
FlexQoS relies on the Merlin Add-on API for storing all the settings and allowing WebUI modifications. FreshJR used to make use of 2 unused nvram variables to store all his rules which is why there were hard limits on the number of rules possible. In theory, the script portion can be hacked to work on Stock by creating the /jffs/addons/custom_settings.txt file and cloning the helper.sh script from Merlin's firmware to get the am_settings_get and set functions. There would be no point to the WebUI since it would ignore the settings in /jffs. Changing rules would involve manually editing the custom_settings.txt entries. Then there would be issues with the lack of user scripts to detect qos restarts and signature updates, etc.

It could be done. Just not by me. :)
 

Prodeje79

Regular Contributor
go on.... how and who????? :D

This could be life changing if could work on stock firmwares for folks!
I am just fine with my 86u, but am thinking of all the good this could do!
In other news, appears my 86u just took a dump.... keeps powering off every 10 seconds over and over.
Going to try a hard reset holding WPS button while powering on and see what happens. I am assuming a hardware failure though.
Plugged the ol 68u in for now....

FlexQoS relies on the Merlin Add-on API for storing all the settings and allowing WebUI modifications. FreshJR used to make use of 2 unused nvram variables to store all his rules which is why there were hard limits on the number of rules possible. In theory, the script portion can be hacked to work on Stock by creating the /jffs/addons/custom_settings.txt file and cloning the helper.sh script from Merlin's firmware to get the am_settings_get and set functions. There would be no point to the WebUI since it would ignore the settings in /jffs. Changing rules would involve manually editing the custom_settings.txt entries. Then there would be issues with the lack of user scripts to detect qos restarts and signature updates, etc.

It could be done. Just not by me. :)
 
Last edited:

dave14305

Part of the Furniture
This thread is now retired with the release of version 1.1.0. Thanks for your support and please continue the discussion in the new thread.
 

Phil Outram

Regular Contributor
Note sure if this has already been mentioned, but on the latest 386.1 beta running FlexQoS 1.0.6 vpn traffic appears to be inverted on the FlexQoS tab. VPN download traffic over the is showing up under uploads. I know there is a long standing issue with the Bandwidth monitor tab where vpn download traffic has always showed up under uploads but this never used to be the case for the FlexQoS tab. It still shows correctly under the classification tab, but FlexQoS is now incorrect.

Edit - Just realised there is a new thread so will post there instead.
 

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