I’ve got hAP ax³ as edge router, and internet connection is 5G, supposed to be 100Mbit download and 10Mbit upload, but the download is often 10Mbit only. So, internet connection speed is unstable and bandwidth unknown.
The connection was behaving strangely, sometimes pages take few seconds to even begin loading, and sometimes won’t even load at all. These issues were caused by router dns (cache) not resolving queries for domain names, that aren’t yet cached. This resolution failure was caused by bufferbloat, when something was being downloaded from strong upstream.
My normal ping is 30~100ms, and while downloading something it got over 1400ms, sometimes reaching over 2000ms, and dropping DNS responses, due to bufferbloat.
I’ve configured queue tree with CAKE, and bufferbloat issue got mitigated. Now, ping increases only to 50~150ms during download, and DNS responses aren’t lost anymore. I used CAKE, because of unknown/unstable bandwidth and CAKE offers cake-autorate-ingress option.
Wondering, why Mikrotik doesn’t provide something in default setup? And, why there are no docs with QoS anti-bufferbloat quick-setup recommendation? This issue very much worsens experience on internet (via Mikrotik router). And, Mikrotik routers are often praised for routing performance, but is it because QoS is just not handled at all by default and router has less work to do?
Other vendors provide this feature under one checkbox. The https://www.waveform.com/tools/bufferbloat recommends Amazon eero Pro 6 mesh WiFi, NETGEAR Nighthawk Pro Gaming 6-Stream WiFi 6 Router (XR1000), IQrouter – IQRV3 Self-Optimizing Router with Dual Band WiFi or Ubiquiti EdgeRouter 4.
My cake queue tree configuration:
/ip firewall mangle
add action=mark-packet chain=forward in-interface-list=WAN new-packet-mark=wan_download
add action=mark-packet chain=forward new-packet-mark=wan_upload out-interface-list=WAN
/queue type
add cake-autorate-ingress=yes cake-flowmode=dual-dsthost cake-nat=yes kind=cake name=cake-download
add cake-autorate-ingress=yes cake-flowmode=dual-srchost cake-nat=yes kind=cake name=cake-upload
/queue tree
add max-limit=95M name=cake-download packet-mark=wan_download parent=bridge queue=cake-download
add max-limit=9500k name=cake-upload packet-mark=wan_upload parent=ether1 queue=cake-upload
# disable fasttrack, export should contain action=fasttrack-connection as disabled=yes
/ip firewall filter
...
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related disabled=yes hw-offload=yes
...
Also, is above a correct setup of CAKE queue true? I mean it works, but is the way it should be done? Or, can something be improved?