So I got the router and I've been messing with it a bit. It's amazing how much you can get to know the actual quality of your internet (spoiler alert: it's dog----) but also just how much you can squeeze out of it under the right circumstances.
I have arrived at a solution.
First, I tried limiting speeds by static-ing IP addresses in the DHCP, grouping them into simple queues (i.e. phones, streaming devices, my gaming pc) so that I could limit the network on the other devices enough to give me enough room to game. This only kind of worked, but stressing all the devices provided both a bad experience for the other users and still caused my game to lag a bit (but not as much).
Next, I tried finding the ports my game runs on and marking those, put that in a queue tree along with unmarked, and increased the priority on the game queue. I confirmed packets were being sent back and forth so I knew it was recognizing the game's packets. But once the network became congested, the game would still lag. I figured the issue was my internet is just too slow to handle any kind of alternate traffic.
At that point I started looking into other queue solutions. I kept searching google and the tubes for solutions but most everything was "HOW TO FASTTRACK YOUR GAMES TO ELIMINATE LAG." Most were not in English as well so I had to just follow visual directions. At best, playing around with that ended mostly like the 2nd solution so not very well if at all.
Then somehow I stumbled across this video:
https://www.youtube.com/watch?v=phKi_NGJfpg
And OH MY GOODNESS did this begin to bring results. I learned about buffer bloat and realized THAT was the reason my games chugged every time someone else used the internet. I didn't even see SFQ in the list of queue options but apparently you have to create the type first. What I ended up with was a single SFQ to manage my entire network. It wasn't great, but I could watch a video without the game completely pausing in time and everyone teleporting everywhere.
I wasn't satisfied though. I had heard about SQM, cake, etc... and how those were more elegant solutions to buffer bloat. Did a little more digging and found the latest video in that youtuber's playlist:
https://www.youtube.com/watch?v=wNT3CqmVFi4
Found out my router, even though I updated it day 1, didn't actually upgrade to the latest stable release. So I went to packages and did a download&install of version 7. After a bit of tinkering, I have set up a single fq_codel queue that manages the entire ether1 interface. Followed some recommended directions for a <100mbps internet connection and ended with this:
- Limit: 1200 packets
- Interval: 100ms
- Target: 2ms
- Quantum: 300
I was still getting a bit of buffer bloat unfortunately (using
https://www.waveform.com/tools/bufferbloat), and wasn't terribly happy when I figured out the reason: the quality of my 4g network is so bad it fluctuates between 10-30mbps down and 3-7mbps up. Once I set the limits to 10M/3M from like 20M/5M I got an A-grade score.
You may think "well that sucks. Not being able to use a whole 2/3 of your bandwidth sounds like the internet is really bad." And yes, you would be right that it does suck, but somehow it is actually fine. Everyone is able to browse the web and watch videos (at 480-720p) whilst others game, and there is VIRTUALLY NO LAG. Max load does cause +10-15ms lag for games sometimes but it's barely noticeable. At 10 down 3 up our connection has never been more stable. And if we want to gather and watch a big video in full HD I can just disable the queue temporarily. The best part about this solution is, even though I could mitigate the gaming lag by hogging most of the bandwidth for my PC, other PC tasks such as updating or whatever would still be able to cause lag. Now they don't because ALL PACKETS are queued fairly (to a degree).
Somehow, in an area with perhaps some of the worst possible options for internet in the entire country, I have conquered lag. It's not perfect by far, but it works. This router has been a dream and I wish I knew it existed earlier. It's amazing.
I'll probably keep tinkering with it and find out the average minimums of our connection at certain times of day and set timers for different queues, but for now it is just okay enough to not want to tear my hair out.