Yes. At some point, it asked me if I want it to add even more graphs that could make debugging the algorithm easier and I replied with "okay". Please don't ask me what any of this means.
Neither my roommate nor I really care whether get 150, 120 or 100 mbps of bandwidth. All we care about is that we can play online games (Call of Duty specifically ) while the other watches videos on YouTube or downloads stuff. For this CAKE seems to work, mostly. Except for that initial, massive latency spike and that "extrapolation" warning for as long as the bandwidth is somewhat saturated. Whenever that warning shows up in-game, there's a perceived delay, that both of us have noticed. But that's incredibly hard to test for and put into numbers, as it doesn't seem to reflect in ping at all - at least as long as SQM is active. Without SQM, the ping reflects more closely what the gaming experience feels like.
In that regard, I'm sorry to report we couldn't feel (I feel so stupid for using this word when talking to experts) much of a difference when using autorate or not.
I appreciate it so very much that you two even replied to this at all. At this point I assume the source of this problem lays somewhere outside of our LAN. I'll probably call the ISP tomorrow again... really not looking forward to that.
A crude test would be to set the cake bandwidth to a fixed 10Mbit/s download and upload. If you still see big latency issues - the initial spike and trouble on saturation - with that then cake-autorate can't fix things.
In that case I believe this issue would be solvable using cake bandwidth adjustments (cake-autorate) in principle.
Can you show me the same flent run but with cake-autorate on your present settings?
Can you also try setting the base cake-autorate bandwidth to 10Mbit/s download and upload? This would allow controlled bandwidth excursions (from 10MBit/s to say 100 or 200MBit/s) for downloading big files, subject to latency not spiking, but it would keep the initial bandwidth in safer territory, which might work better in respect of sudden loads.
min_dl_shaper_rate_kbps=5000 # minimum bandwidth for download (Kbit/s)
base_dl_shaper_rate_kbps=10000 # steady state bandwidth for download (Kbit/s)
max_dl_shaper_rate_kbps=100000 # maximum bandwidth for download (Kbit/s)
min_ul_shaper_rate_kbps=5000 # minimum bandwidth for upload (Kbit/s)
base_ul_shaper_rate_kbps=10000 # steady state bandwidth for upload (KBit/s)
max_ul_shaper_rate_kbps=100000 # maximum bandwidth for upload (Kbit/s)
Maybe this change would be enough to solve your issue.
I am speculating that the issue arises because your connection cannot tolerate very sudden increase in bandwidth usage:
However, with this, the SQM settings in LuCI set to Download speed (ingress) and Upload speed (egress) to 10000 and your previous sugesstions, unfortunately I still get this dreaded latency spike:
This just sets initial bandwidth but cake-autorate will overwrite it as soon as it starts running.
All cake-autorate does is adjust the cake bandwidth in dependence upon measured load and latency - if load increases without latency increase, cake bandwidth is allowed to increase and if latency increases then the cake bandwidth is reduced, and bandwidth returns to base when there is no load. This is a very crude explanation.
There's just one more question, using the default diffserv3 instead of besteffort, most of the (outgoing) traffic still gets put into the Best Effort bin:
Shouldn't the majority of packets be in Bulk? How does OpenWrt decide what traffic gets put into what tin? Can I nudge it somehow to make more appropriate decisions?
The obvious next tweak for me is to try increasing the ping frequency. But I hope @moeller0 can advise on ideas here.
To work on this you need to start marking traffic using DSCPs. This is a later optimisation to work on. Like cherry on cake whereas now you have a mud pie.
No, Bulk is the name for a lower priority class, say if you send Bulk traffic all you care is that it arrives eventually. Cake will just look at each packet's DSCP header field and sort (a few) DSCP values into its priority tins. It is up to you to make sure that the packets you send out have the desired DSCP marking. There are a few projects out there that help in doing that and that also tackle the harder problem of how to make sure that incoming packets have meaningful DSCP values for your network.
Just google for cake-qos-simple, qosify or qosmate (all for OpenWrt) and pick your preferred one. cake-qos-simple is @Lynx's brainchild, like cake-autorate. Currently, I believe qosmate is under most active development, but maybe the other options are simply already mature enough.