QoSmate: (Yet Another) Quality of Service Tool for OpenWrt

Sweet, thanks for the suggestion.

And what would I exactly be looking for in terms of feeling good, If I set it too low for instance 5ms that the packets will be dropping and shots not registering? Or what?

CPU usage will increase as target latency is reduced, and at some point packets will start dropping uncontrollably.

Oh OK, so as long as I have the cpu powerful enough to withstand the lower delay as long as it's not too low that it starts to drop off I should be good?

You have to watch statistics, massive drops means machine is struggling. Best is to target one frame time 1000ms/144Hz

Hi @Hudra, I sent a small initial PR for some minor code style improvements. I have additional ideas which I may follow up with if this gets merged.

5 Likes

Thank you for the PR and the improvements! I've merged your changes right away. I should probably start using shellcheck more consistently.

I'm definitely interested in hearing more of your ideas! Regarding our previous discussion about config management: While I appreciate the benefits of the adblock-lean approach you suggested (validation, healing, migration support, etc.), I want to maintain QoSmate's current UCI-based config management for a few reasons (at least for now):

  1. Consistency with OpenWrt ecosystem - UCI is the standard configuration system, making it familiar to users and other developers
  2. Easy integration with LuCI - The UCI approach works seamlessly with the web interface
  3. Maintainability - The direct UCI approach keeps things simple and easy to understand
5 Likes

shellcheck has saved me from countless bugs and many unnecessary debugging hours - highly recommended. If using VS Code, there is a shellcheck plugin for it - I've been using it for a while now. Before that, I've been using 'micro' (a pretty good text editor for Linux) which also had shellcheck integration.

I'll say in advance that I know next to nothing about traffic shaping and understand nothing from the insane technical discussion you're having here :slight_smile: All my ideas are in the categories of code style, efficiency, readability, compactness and error checking. That said, I'll make a new PR which will implement some of these ideas.

You are also welcome to look through my shell code libraries and see if some of that can be useful. All the code in those libraries is a byproduct of my work on geoip-shell. All of it is well tested in geoip-shell, and some in adblock-lean. The code is POSIX-compliant for portability, so will work as is in busybox ash, but if intended specifically for Busybox ash then may be somewhat enhanced by making some of the variables local etc.

https://github.com/friendly-bits/posix-lists-and-strings
https://github.com/friendly-bits/shell-ip-tools
https://github.com/friendly-bits/POSIX-arrays

4 Likes

Hello, everyone!

Iā€™ve noticed that updates 5.33 and 5.38 worked best for my setup when playing Warzone. Unfortunately, with the latest updates, Iā€™m not achieving the same performance and results in the game.

Could anyone guide me on where I can find the previous updates to reinstall them?

Thanks in advance for your help!

Check history here:

Can you post a copy of /etc/config/qosmate for examination, also check in connections tab whether any of game connections is marked cs0/cs1 opposed to what is configured.

1 Like

Thank you for your attention and help with the QoSmate configuration.

In previous updates, using the same fine-tuning and port prioritization settings, the gameā€™s responsiveness was much better. However, after the recent update, even with the same configuration, I canā€™t get satisfactory results. Thereā€™s lag, and shots arenā€™t registering as they used to.

Iā€™m not at my PC right now to send the configuration, but as soon as I can, Iā€™ll share the /etc/config/qosmate file and check if any game connections are marked as cs0/cs1.

Thanks again for your support!

Clone the git repository, then you can move back in history and checkout any older version, if you know the last commit for that version (there might even be version tags).

1 Like

Versions are nicely celebrated marking version number in file, so you can also track changes using those.

I donā€™t have much knowledge of programming, but Iā€™ve been using OpenWrt for a while, and Iā€™m a big fan of the tools you provide for low-latency gaming. Iā€™m really happy with all the work youā€™ve done on QoSmate so far.

Apologies for my lack of technical understanding, but I feel like there may have been recent changes to the marking scripts or something similar. Again, I donā€™t have the technical expertise to pinpoint itā€”sorry if Iā€™m mistaken.

This is just me venting a bit. Maybe something from version 5.33 could be brought back? I donā€™t know exactly what it was, but for me, that version was the best so far; everything felt smooth and perfect for gaming.

Thank you again for all the hard work!

Marking scripts sligjtly changet what is marked (after 30s timeout) and reduced cpu work to mark a packet.

where you see "bump version" press middle of 3 buttons see the file, then copy raw link and download to /etc/qosmate.sh on the router (setting +x attribute) and restart qosmate.

2 Likes

Hey there, when you do get a chance after downgrading, can you let me know if is indeed better for you?

I have just same result with all of them. You should have in mind that your connection is not always the culprit, shit servers, sbmm is the worst part of user experience in cod.

1 Like

Fastest would be to bisect, i.e take last good and last version, measurably confirm the problem, like in-game stats showing dropped frames. Then take version half way, check for problems, and drill to a patch that damages something.

Yep, it depends on time of day/week

Hi @Hudra, I sent another fairly small PR which implements some code style and efficiency improvements, and adds some error checking, in the init script. Important to test the code! I didn't test it, since I don't have qosmate installed :slight_smile:

1 Like

I have created a rule to assign CS4 to TCP connections on port 853 to prioritize DNS over TLS traffic. To verify that it works, I checked the Connections tab and saw that all traffic has CS0 priority. What am I doing wrong?