What's new

CakeQOS CakeQOS-Merlin

  • 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!

ttgapers

Senior Member
I am pleased to announce the release of CakeQOS-Merlin!

Discussions (due to thread closure): https://github.com/ttgapers/cakeqos-merlin/discussions

Current Version: 1.0.7 (Changelog)

CakeQOS-Merlin is a custom add-on for supported Asus routers with Merlin firmware that introduces CAKE QoS as an alternative to Traditional/Adaptive/FreshJR implementations.

One key difference is on the ease of use, and the ability to "just work" based on limited/basic configuration which is usually the connection's upload and download speeds as a percentage (90-95%).

Credits: Thanks to @robcore, @Odkrys, @jackiechun and @maghuro for their work and all the numerous testers -- you know who you are!

A fair bit of the script development was also from past works here, including but not limited to @Adamm @Jack Yaz, @Martineau and @rgnldo!

Project: https://github.com/ttgapers/cakeqos-merlin
Setup: https://github.com/ttgapers/cakeqos-merlin#cakeqos-merlin

Tweaking Cake (Advanced use cases): https://www.man7.org/linux/man-pages/man8/tc-cake.8.html#OVERHEAD_COMPENSATION_PARAMETERS

Current Supported Routers: RT-AX56U, RT-AX58U, RT-AC86U & RT-AX88U

What is Cake? Common Applications Kept Enhanced
Development on Cake was originally sponsored by IIS and is now sponsored by NLnet

Cake is the rollup of 3 years of deployment experience of the htb + fq_codel based sqm-scripts SQM for aqm/fq/qos inbound and outbound bufferbloat management.

For more detailed information on CAKE see: https://www.bufferbloat.net/projects/codel/wiki/Cake/


Donations: RMerlin thread (Thanks for the awesome firmware @RMerlin!)
 
Last edited:
Known Issues
  • Cake/TC need to be recompiled for AX86U
 
Last edited:
Roadmap
  • Router check validation (see Martineau's input)
  • Service placement on startup might be modified for stability across platform
  • Print ouputs
  • Cronjob to check service status periodically
  • MD5 checks against versions
  • Additional model support (HND)
  • amtm addition
  • Cake/TC build instructions
  • GUI front end
Item(s) on roadmap do not indicate commitment to implement. Best spot for tracking would be Github Issues.
 
Last edited:
Releases/Changelog
1.0.7

  • GT-AC2900 & RT-AX86U support (Experimental)
1.0.6
  • Apply archer instead of runner
1.0.5
  • RT-AX3000 support
1.0.4
  • Add RT-AX56U / RT-AX58U support
  • Remove unused manifest string
1.02
  • Remove hard exit on update
  • Change information prefix from "i" to "*"
  • Allow "0" as valid bandwidth setting (unlimited)
  • Add separate upload/download options
  • Remove Cake_Stop from start function
  • Don't show update check when in submenus
  • Additional status options (download & upload)
  • Don't allow malformed commands
  • Update malformed command output
  • Display CLI version of commands when using menu options
1.0.1
  • Aesthetics
  • Miscellaneous bugfixes
1.0.0
  • Menu (GUI)
  • Script completely reworked
  • Special thanks the masters @Jack Yaz and @Adamm for their MARVELOUS work. Thanks for coming onboard!
0.1.0
  • Version 0.1.0 released, thanks to one of the masters @Adamm
  • Addresses update issue(s)
0.0.6
  • Implemented watchdog (installed automatically when starting script)
  • No need for install or enable. When doing cake-qos start XXMBit XXMBit "additional parameters" the script will automatically configure
  • Readme updated with new instructions
  • Miscellaneous bugfixes
0.0.5
  • Autodetects router model, meaning you do not need to manually enter your router model for the install and update commands anymore
  • Added to /opt/bin to now be able to run commands simply by entering "cake-qos install" for example, instead of "/jffs/scripts/cake-qos install"
  • Bound to nat-start
  • Added MD5 check to update as an additional check for any script updates
  • Added more intuitive log messages
As mentioned in Post 1 thanks to @Jack Yaz, @Martineau and @rgnldo have also contributed to this. I'd also like to call this the @maghuro release, as his contributions to this version has been invaluable. Welcome @maghuro to the team as well!

0.0.4
  • added status option which will show you if cake is running and what your download/upload parameters are
  • update option now checks and downloads latest script, so in theory from this point on you just need to run /jffs/scripts/cake-qos update {ac86u|ax88u} to get the latest binaries/script
  • added wait to start cake when Entware is started for more consistent start-ups (Thanks @JGrana)
  • added checks to not double-start cake (e.g. if you start cake when it's running, it will stop cake and start cake to avoid the "RTNETLINK answers: File exists" message)
0.0.3
  • update and uninstall options added
  • install option will automatically check the repository for the latest and greatest cake binaries
  • added support for users to use any other prioritization queue they like (e.g. diffserv3, diffserv4, diffserv8, besteffort). If none are explicitly specified it will default to besteffort.
0.0.2
  • Original release. All initial development work until now is captured here.
 
Last edited:
Question:

your github prereqs say "Not recommended for connection up/down of 250Mbps or higher".

Do you mean if EITHER the upload or download is 250+, you don't recommend this script? Or are you referring to symmetric connections (both upload and download are the same; i.e. 250mbps / 250mbps)

Also, you may want to specify which versions of the Asuswrt-Merlin firmwares have been tested with this script.
 
Question:

your github prereqs say "Not recommended for connection up/down of 250Mbps or higher".

Do you mean if EITHER the upload or download is 250+, you don't recommend this script? Or are you referring to symmetric connections (both upload and download are the same; i.e. 250mbps / 250mbps)

Also, you may want to specify which versions of the Asuswrt-Merlin firmwares have been tested with this script.

First one is a guideline, and I'd say both -- so I'll update but I have seen where users are using Cake with higher download speeds based on their usage pattern for example.

Second item, we can definitely update!

Thanks for all the feedback.
 
Last edited:
install was a non event. no errors. easy instructions.

question1: if i disable it (with "/jffs/scripts/cake-qos disable"), will HW acceleration and router config be restored to prior state?
question2: how do we get updates to cake?



my comcast connection is 500/20 on average, but latency is atrocious if someone is downloading at full speed. if someone uploads at full speed, then all other clients come to a stop in both directions.

with cake i'm now measuring 260/20 but no bufferbloat. even with one client uploading at close to max capacity, the other connections remain happy. ping plotter does not budge!

I'm willing to give up the max download speed for a more stable connection for now.

although, I'm wondering if in my specific case, i would achieve same effect, with a simple bandwidth limiter to avoid maxing my connection?
i think with cake we also get a more fair distribution among different types of traffic, right?

thanks for cake!
 
Last edited:
question1: if i disable it (with "/jffs/scripts/cake-qos disable"), will HW acceleration and router config be restored to prior state?
question2: how do we get updates to cake?

#1: Yes it does (re-enables hardware acceleration flow cache and runner), however it does not re-enable QoS/TrendMicro.

#2: Great question: an idea I have is adding an "update" option that will check the Github repository for a text-file containing version numbers of the cake binaries and download/install the latest versions if found.
 
Im guessing my ac68u isnt powerful enough to run this and is why its not 'supported'.

Referenced from a post by @RMerlin in 2018: "This requires the 4.x kernel, which means only possible with the RT-AC86U..."

So technically anything with it, however we only have builds for the two routers mentioned. If there are individuals interested in building/testing support for additional models, I'd say please speak up!

The builds we have were developed by @Odkrys and here (for reference - use the installer from this thread ONLY).
 
Congrats! Have been watching the other thread to see the progress you all have made. Will definitely keep an eye on this one. I have a second router (86u unit) which has a 16/1.5 connection. May try this on it.
 
How does the Quality chart compare to pre-cake?
on my 500/20 connection
prior to cake: round trip is 10ms on a mostly idle line. shoots to 500ms when download maxed, packets lost if upload maxed with roundtrip over 2000ms
after cake: 10ms regardless of network activity. since with cake my DL is never maxed anymore no surprise there, but i'm now able to max my upload (20Mbps) without degrading the connection. and this was my main issue. a client maxing upload capacity would degrade uploads and downloads for the other clients. maybe a simple bandwith upload limit would do the trick for my setup (vs cake).
 
For the sake of science, I decided to fool around with my RT-AX88U (main) router and the symmetrical 1Gbps up/down Fibre ISP connection I have with this script. :)

Without QoS of any sort, I normally get an indicated 1ms unloaded and 5ms loaded latencies on my i7 desktop with 950Mbps down and 880Mbps up speeds on fast.com. On dslreports.com, I get A+ on all categories too.

When I installed this script, I tested with both 950Mbps down and 850Mbps up and with 500Mbps down and 500Mbps up speeds for the "docsis ack-filter" parameters.

With both tests above, I achieved a latency of 2ms unloaded and 18 to 20ms loaded with speeds of 440Mbps down and 500Mbps up. On dslreports.com I dropped to A on all categories too.

The script works very well and, IMO, works well above the 250Mbps indicated in the notes. :)

Of course, for symmetrical Fibre connections below about 500Mbps it may prove unnecessary (only testing will tell for sure), but for any cable, DSL, or satellite connections, this script is a very welcome feature. I can't wait to test it with some of my customer's routers who have ISP connections much lower than mine.

Congrats to all here who contributed to this!

Now, my question is... how do I completely uninstall this script from my RT-AX88U? :D
 
Now, my question is... how do I completely uninstall this script from my RT-AX88U? :D

Thanks for testing!

For a complete uninstall:

/jffs/scripts/cake-qos disable (this will also remove the firewall-start, services-stop entries)

Then:

opkg remove sched-cake-oot
opkg remove tc-adv
rm /jffs/scripts/cake-qos
 
@jackiechun, thank you!

For completeness, I should have added that simply running '/jffs/scripts/cake-qos disable' brought my connection back to where it was too, but cleaning the additional files is perfect. :)
 

Similar threads

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