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!

Ideally, the band should be "0", on unlimited.
I think that I probably misunderstood your post, but if you set the bandwidth to 0 there is no need to specify unlimited in the extra options- cake interprets 0 as unlimited
 
Setting bandwidth to zero won’t benefit all use cases.
For me, setting zero on up, or down, or both, gives results way worse than no ‘Cake’ at all.:(
Absolutely, that's what my earlier post tried to explain. Unlimited has it's uses in some cases, but the majority of people are better off setting their bandwidth values at 90-95% of actuals.

However I think it was also being suggested that when you want to use unlimited, to set 0 in the bandwidth values and unlimited in the extra options. This isn't required as simply setting 0 specifies unlimited.
 
Setting bandwidth to zero won’t benefit all use cases.
For me, setting zero on up, or down, or both, gives results way worse than no ‘Cake’ at all.:(

on my download speed, with cake, i can get as fast as 320Mbps.
I tried: "unlimited"/"0", "320", "300", "285"
the only one that makes dslreports happy is "285"
(the others allow latency swings during first few seconds (~5s) of the download test)
for upload i still use "unlimited" because my upload speed changes during the day
Code:
[1]  --> Download Speed             | [285 Mbit]
[2]  --> Upload Speed               | [0 Mbit]
[3]  --> Queue Priority             | [besteffort]
[4]  --> Extra Download Options     | [docsis ack-filter dual-dsthost]
[5]  --> Extra Upload Options       | [docsis ack-filter dual-srchost]
 
Last edited:
on my download speed, with cake, i can get as fast as 320Mbps.
I tried: "unlimited"/"0", "320", "300", "285"
the only one that makes dslreports happy is "285"
(the others allow latency swings during first few seconds (~5s) of the download test)
for upload i still use "unlimited" because my upload speed changes during the day
Code:
[1]  --> Download Speed             | [285 Mbit]
[2]  --> Upload Speed               | [0 Mbit]
[3]  --> Queue Priority             | [besteffort]
[4]  --> Extra Download Options     | [docsis ack-filter dual-dsthost]
[5]  --> Extra Upload Options       | [docsis ack-filter dual-srchost]

correct is right!!

I am back to the "defualts" that got me hooked on Cake.

upload_2020-7-2_14-12-13.png


Has been my best experience, when running 4K prime, multiple S2S VPN clients running movies, direct access clients etc.....all while working and running Teams calls and presenting etc.

Sometimes, simplicity is best and makes it easy like CAKE!
 
Just providing a datapoint, my parent's connection is cable at a modest 30/5, and the settings that seem to work best for them are:

Download: 28.5 (95% of speed)
Upload: 4.75 (95% of speed)
Queue: besteffort
Extra Download Options: docsis dual-dsthost
Extra Upload Options: docsis dual-srchost

I ran it a while without the dual-xhost entries (meaning it was running on the default triple-isolate). It did generally a good job but bufferbloat tests were a little inconsistent.

As mentioned on https://openwrt.org/docs/guide-user...pe_without_a_safety_net_aka_advanced_features:

More recently Cake switched to triple-isolate, which will first make sure that no internal _or_ internal host will hog too much bandwidth and then will still guarantee for fairness for each host. In that mode, Cake mostly does the right thing. It would ensure that no single stream and no single host could hog all the capacity of the WAN link. However, it can't prevent a BitTorrent client - with multiple connections - from monopolizing most of the capacity. And running speedtests from multiple internal hosts to the same speedtest server can give unpredictable results.

If anyone else wants to test this out, there is no need to enter the "ingress" option as mentioned in this link as we already include it in our script for the "download" cake command.

Note: I don't use ack-filter as @Wade Coxon shared this article with me which suggests this option is good for 10+:1 dl/ul ratios: http://blog.cerowrt.org/post/ack_filtering/ (my parent's connection is 6:1). In other words, if your connection is something like 100/10 up/down, then you might be interested in testing out ack-filter.

EDIT: Sharing a screencap of the tests on DSLReports:

Screenshot_2020-07-02_14-40-43.png


The tests up until mid-way to the 25.1 A+ result were on triple-isolate (you can see the results were inconsistent), everything after was with the above config.
 
Last edited:
thanks for the link! very educative.

my new settings:
Code:
[1]  --> Download Speed             | [285 Mbit]
[2]  --> Upload Speed               | [0 Mbit]
[3]  --> Queue Priority             | [diffserv4]
[4]  --> Extra Download Options     | [docsis dual-dsthost]
[5]  --> Extra Upload Options       | [docsis ack-filter dual-srchost]

That link is the default manual....if I haven't I'll get it to the main posts.

Done: https://www.snbforums.com/threads/release-cakeqos-merlin.64800/
 
thanks for the link! very educative.

my new settings:
Code:
[1]  --> Download Speed             | [285 Mbit]
[2]  --> Upload Speed               | [0 Mbit]
[3]  --> Queue Priority             | [diffserv4]
[4]  --> Extra Download Options     | [docsis dual-dsthost]
[5]  --> Extra Upload Options       | [docsis ack-filter dual-srchost]

Thanks! I was curious so I just tested besteffort vs diffserv4; it seems besteffort results in better test results on DSLReports for me. But each connection/circumstance is different so this might not be the case for everyone.
 
Thanks! I was curious so I just tested besteffort vs diffserv4; it seems besteffort results in better test results on DSLReports for me. But each connection/circumstance is different so this might not be the case for everyone.
I've been running diffserv4 for quite a while and your post prompted me to swap back to besteffort and test again - I would tend to agree that DSLReports results seemed better assuming my traffic remained consistent between the tests.

Having tested diffserv since last weekend I can say that I'm seeing very little traffic outside of the besteffort tin anyway, so unless a way is found to improve the traffic categorisation, I am better off sticking with besteffort.
 
I've been running diffserv4 for quite a while and your post prompted me to swap back to besteffort and test again - I would tend to agree that DSLReports results seemed better assuming my traffic remained consistent between the tests.

Having tested diffserv since last weekend I can say that I'm seeing very little traffic outside of the besteffort tin anyway, so unless a way is found to improve the traffic categorisation, I am better off sticking with besteffort.

Agreed, at the very least with besteffort + dual-src/dsthost you're ensuring flow + host fairness and control (as detailed on the OpenWRT page) which makes a huge difference (even without specifying dual-dst/srchost, the default triple-isolate helps a lot compared to no QoS at all); an added benefit is less CPU usage with besteffort compared to using diffserv4. diffserv4 has traffic classification as a bonus but this is only effective if the categorization is accurate. I guess for anyone who has this (traffic categorization) as a requirement, FlexQoS is a good thing to look into.
 
i'm not sure dslreports would show significant differences between besteffort and diffserv4, if your network is not busy/
to compare these two you need to have video, voice, speed test, webex, etc all going at same time
 
Agreed, at the very least with besteffort + dual-src/dsthost you're ensuring flow + host fairness and control (as detailed on the OpenWRT page) which makes a huge difference; an added benefit is less CPU usage with besteffort compared to using diffserv4. diffserv4 has traffic classification as a bonus but this is only effective if the categorization is accurate. I guess for anyone who has this (traffic categorization) as a requirement, FlexQoS is a good thing to look into.

my bet is that the added cpu cost of diffserv4 (vs besteffort) is not significant.
 
i don't think dslreports would show differences between besteffort and diffserv4 (if your network is not busy)
to compare these two you need to have video, voice, speed test, webex, etc all going at same time
Agreed that you need to see enough traffic categorised into the other tins, but after a week of our busy house with people working from home, gaming and calling we have seen so little traffic that unless we find a way to improve that aspect, the overhead of diffserv4 doesn't seem worthwhile.

Testing besteffort against diffserv4 with most traffic in the besteffort tin does seem to give marginally better results for besteffort in my network. However it could all be snake oil.

However, I still have a dream that we could find a way to use the Trend Micro classifications to implement traffic prioritisation with diffserv4 or diffserv8, but although I've seen the following in the manual
OVERRIDING CLASSIFICATION WITH TC FILTERS top
CAKE supports overriding of its internal classification of packets
through the tc filter mechanism. Packets can be assigned to different
priority tins by setting the priority field on the skb, and the flow
hashing can be overridden by setting the classid parameter.

Tin override

To assign a priority tin, the major number of the priority
field needs to match the qdisc handle of the cake instance; if it
does, the minor number will be interpreted as the tin index. For
example, to classify all ICMP packets as 'bulk', the following filter
can be used:

# tc qdisc replace dev eth0 handle 1: root cake diffserv3
# tc filter add dev eth0 parent 1: protocol ip prio 1 \
u32 match icmp type 0 0 action skbedit priority 1:1

Flow hash override

To override flow hashing, the classid can be set. CAKE will
interpret the major number of the classid as the host hash used in
host isolation mode, and the minor number as the flow hash used for
flow-based queueing. One or both of those can be set, and will be
used if the relevant flow isolation parameter is set (i.e., the major
number will be ignored if CAKE is not configured in hosts mode, and
the minor number will be ignored if CAKE is not configured in flows
mode).

This example will assign all ICMP packets to the first queue:

# tc qdisc replace dev eth0 handle 1: root cake
# tc filter add dev eth0 parent 1: protocol ip prio 1 \
u32 match icmp type 0 0 classid 0:1

If only one of the host and flow overrides is set, CAKE will compute
the other hash from the packet as normal. Note, however, that the
host isolation mode works by assigning a host ID to the flow queue;
so if overriding both host and flow, the same flow cannot have more
than one host assigned. In addition, it is not possible to assign
different source and destination host IDs through the override
mechanism; if a host ID is assigned, it will be used as both source
and destination host.

EXAMPLES top
# tc qdisc delete root dev eth0
# tc qdisc add root dev eth0 cake bandwidth 100Mbit ethernet
# tc -s qdisc show dev eth0
qdisc cake 1: root refcnt 2 bandwidth 100Mbit diffserv3 triple-
isolate rtt 100.0ms noatm overhead 38 mpu 84
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
memory used: 0b of 5000000b
capacity estimate: 100Mbit
min/max network layer size: 65535 / 0
min/max overhead-adjusted size: 65535 / 0
average network hdr offset: 0

Bulk Best Effort Voice
thresh 6250Kbit 100Mbit 25Mbit
target 5.0ms 5.0ms 5.0ms
interval 100.0ms 100.0ms 100.0ms
pk_delay 0us 0us 0us
av_delay 0us 0us 0us
sp_delay 0us 0us 0us
pkts 0 0 0
bytes 0 0 0
way_inds 0 0 0
way_miss 0 0 0
way_cols 0 0 0
drops 0 0 0
marks 0 0 0
ack_drop 0 0 0
sp_flows 0 0 0
bk_flows 0 0 0
un_flows 0 0 0
max_len 0 0 0
quantum 300 1514 762

After some use:
# tc -s qdisc show dev eth0

qdisc cake 1: root refcnt 2 bandwidth 100Mbit diffserv3 triple-
isolate rtt 100.0ms noatm overhead 38 mpu 84
Sent 44709231 bytes 31931 pkt (dropped 45, overlimits 93782 requeues
0)
backlog 33308b 22p requeues 0
memory used: 292352b of 5000000b
capacity estimate: 100Mbit
min/max network layer size: 28 / 1500
min/max overhead-adjusted size: 84 / 1538
average network hdr offset: 14

Bulk Best Effort Voice
thresh 6250Kbit 100Mbit 25Mbit
target 5.0ms 5.0ms 5.0ms
interval 100.0ms 100.0ms 100.0ms
pk_delay 8.7ms 6.9ms 5.0ms
av_delay 4.9ms 5.3ms 3.8ms
sp_delay 727us 1.4ms 511us
pkts 2590 21271 8137
bytes 3081804 30302659 11426206
way_inds 0 46 0
way_miss 3 17 4
way_cols 0 0 0
drops 20 15 10
marks 0 0 0
ack_drop 0 0 0
sp_flows 2 4 1
bk_flows 1 2 1
un_flows 0 0 0
max_len 1514 1514 1514
quantum 300 1514 762
I don't have any understanding of how it all works, but what I can see is that because I haven't withdrawn consent from Trend Micro services, the Trend engine is still classifying traffic for the bandwidth monitor and traffic analyser while Asus adaptive QoS is turned off. There must be someone with a magic wand on the forums?
 
Last edited:
Each user is going to be unique. I use diffserv4. I'm a live video nut though and it seems this works the best for my setup. Again my setup is unique in it's own right.
 
Each user is going to be unique. I use diffserv4. I'm a live video nut though and it seems this works the best for my setup. Again my setup is unique in it's own right.
Do you have any examples that are getting categorised in the voice and video tins?

I've been getting a small amount of traffic but haven't been able to isolate which applications it's from.
 
A question I asked previously but didn't get a reply is why it's been chosen to enforce the wash option on download traffic within the script as a hard coded default?

I'm keen to understand the reasoning rather than saying it shouldn't be that way, and again for my use case I found manually editing the script to leave it set to the cake default of nowash had little if any effect.
 
My case is seat of the pants. I tried all these settings out for a day each. and settled on what I have. My overhead is 0, I'm using ack-filter and diffserv4. That's it.
 
The only problem I have is with the fiber upload bandwidth. It takes so long to ramp up to full use.
 
A question I asked previously but didn't get a reply is why it's been chosen to enforce the wash option on download traffic within the script as a hard coded default?

I'm keen to understand the reasoning rather than saying it shouldn't be that way, and again for my use case I found manually editing the script to leave it set to the cake default of nowash had little if any effect.

wash

Traffic entering your diffserv domain is frequently mis-marked
in transit from the perspective of your network, and traffic exiting
yours may be mis-marked from the perspective of the transiting
provider.

Apply the wash option to clear all extra diffserv (but not ECN bits),
after priority queuing has taken place.

If you are shaping inbound, and cannot trust the diffserv markings
(as is the case for Comcast Cable, among others), it is best to use a
single queue "besteffort" mode with wash.



interesting
sounds like since cake-qos script applies wash to the download, diffserv4 might not work all that well?
it should either be "wash besteffort" or "nowash diffserv4" (unless you have comcast apparently).
 
Last edited:

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top