[Cake] Getting Cake to work better with Steam and similar applications

Dendari Marini dendari92 at gmail.com
Sat Apr 22 04:25:20 EDT 2017


Hi Sebastian,

Only now I noticed your message, it seems we were writing at the same time.

So please add “atm overhead 32" to cake on eth0 or “atm overhead 40” to
> cake instances on pppoe (these packets do not have the PPPoE header added
> yet and hence appear 8 bytes to small).


Thanks for your help, will definitely use them. Just wondering if I use
"pppoe-vcmux/bridged-llcsnap" on eth0 or "pppoe-llcsnap" on pppoe0 would
have the same effect? Or are there some other "under-the-hood" changes when
using them?

Question: if you set the shaper’s to 50% of line rate (8.75/0.5?) do you
> still see that unfairness? And if you add “atm overhead 40” to cake on
> pppoe0 and set the shaper to 90% of line rates (15.75/0.9) how does the
> Steam affect per-host fairness? Also how transient are these connections
> team uses?


Actually did more testing about this and it seems that as far I have set
the bandwidth to ~15Mbps (so ~15% less of my max speed) and use the "nat"
parameter, the per-host fairness works even without the "dual-host" and
"overhead" parameters. I definitely find this very interesting, is this
behaviour caused by the way Steam downloads games?

As far as I can tell cake can drill down to the required IP/TCP/UDP fields
> independent of whether there are VLAN tags or PPPoE headers so cake should
> not care (except for the different overhead specifications you need to add
> as stated above). BUT if instantiated on eth0 cake will see pppoe LCP
> packets and might decide to drop them, which can take down the link, so out
> of caution I would still instantiate on pppoe in your case.


Yeah, with further testing it seems the interface wasn't the culprit but
I'll still do all my testing on pppoe0 just to be safe.

Anyway I was wondering if there's some kind of manual for Cake and the
various parameters, I'm looking to set it up best way possible but there
are some parameters which I'm not sure what they do (one of them being
"ingress"). Also while reading on the bufferbloat.net Cake page I noticed a
possible "fix" for BitTorrent (by setting it as "background",
https://www.bufferbloat.net/projects/codel/wiki/Cake/#diffserv-support),
I'm wondering if this can be done with Steam too?

On 21 April 2017 at 15:27, Dendari Marini <dendari92 at gmail.com> wrote:

> Hello, I have an update.
>
> The download test (PC1 downloading Steam game, PC2 downloading a file)
> seems to work fine now, even while using higher bandwidth value. So that
> seems resolved, probably the interface change was the fix.
>
> Now about the gaming test (PC1 downloading Steam game, PC2 online gaming),
> this is the one I'm mostly looking forward to fix and the main reason I
> bought the ER-X. Unfortunately Cake doesn't seem to do much in this case,
> specifically I'm still getting high latency spikes and packet loss on PC2.
> One weird thing: starting a download on PC2 will decrease the
> lantecy/p.loss issues, not sure if it's because of the Steam speed being
> halved on PC1 or something else.
>
> On 21 April 2017 at 10:34, Dendari Marini <dendari92 at gmail.com> wrote:
>
>> Hello, thanks for all of your replies.
>>
>> First of all, my connection encapsulation should be ATM LLC and it can
>> actually reach up to 17.5/1 Mbps, but that's kinda best case scenario which
>> is why I wanted to play it safe with just 16/.9 (which I should reach more
>> consistently).
>>
>> Back to the Steam issue. Unfortunately I can't seem to get really
>> consistent results, mainly because sometimes it's downloading the game from
>> just a few connections and other times it's downloading from dozens and
>> dozens connections. The latter is the one giving me more issues both in
>> terms of latency/packet loss and in terms of evenly splitting the bandwidth
>> across the hosts.
>>
>> One thing that seems to give better results is changing the interface
>> where Cake is used from eth0 to pppoe0. When I used fq_codel it seemed to
>> give better results when using eth0 and so I went ahead and did the same
>> with Cake.
>>
>> Anyway more testing needed, will report if I notice any consistent result.
>>
>> By the way this is the thread I opened on the Ubiquiti forums talking
>> about this issue (not sure if it can give you some more info):
>> https://community.ubnt.com/t5/EdgeMAX/Smart-Queue-seemingly-
>> not-working-for-Steam-downloads/td-p/1890405
>> Also the thread where I got Cake for the ER-X from:
>> https://community.ubnt.com/t5/EdgeMAX/Cake-and-FQ-PIE-
>> compiled-for-the-EdgeRouter-devices/td-p/1679844
>>
>> On 20 April 2017 at 20:36, Sebastian Moeller <moeller0 at gmx.de> wrote:
>>
>>>
>>> > On Apr 20, 2017, at 18:05, Dendari Marini <dendari92 at gmail.com> wrote:
>>> >
>>> > Hello, thanks for your reply.
>>> >
>>> > Looks like most of your options are okay, including the correct “dual”
>>> modes and “ingress” mode in the right place.  However, I think you need to
>>> adjust your bandwidth and overhead settings, otherwise Cake isn’t reliably
>>> in control of the bottleneck queues.  Try these to begin with:
>>> >
>>> > … bandwidth 850Kbit conservative dual-srchost nat
>>> >
>>> > … bandwidth 15Mbit conservative dual-dsthost nat ingress
>>> >
>>> > That should give you correct operation, and you can fine-tune from
>>> there.
>>> >
>>> > Just did quick test with your settings. First thing I noticed is my
>>> final download bandwidth is about 12Mbps, Steam on PC1 downloads at
>>> 1.4-1.5MB/s while downloading a file on PC2 seems to max out at ~250KB/s.
>>> From my understanding I should see each PC download at ~700KB/s, or am I
>>> mistaken?
>>>
>>> Assuming you measured good put in [M|K]iBytes this adds up to  1.5+0.25
>>> = 1.75 * 1024^2 * 8 = 14680064 Bits or (1.4+0.25) * 8 *1024^2 / 1000^2 =
>>> 13.84 Mbps which seems a bit high for a 16Mbps ADSL link. I would ecpext
>>> something like 16 * (48/53)  * ((1500 - 8 - 20 -20) / (1500 + 32)) = 13.73
>>> Mbps TCP/IPv4 goodput… so you seem to be running close to theoretical
>>> maximum of your link (assuming I am not totally off with the overhead
>>> (estimated ADSL overhead on top of MTU: 6 destination MAC + 6 source MAC +
>>> 2 ethertype + 3 ATM LLC + 5 ATM SNAP + 2 ATM pad + 8 ATM AAL5 SAR 32
>>> bytes). But with your shaper set at 15Mbps without the atm option you will
>>> actually accept up to 15 * (53/48) = 16.5625 Mbps on the wire, which
>>> probably is above your link bandwidth. This fits well with the really low
>>> number of drops in your cake stats, you simply never have cake feel that
>>> shaping is needed?
>>>
>>> Best Regards
>>>
>>>
>>>
>>>
>>> >
>>> > On 20 April 2017 at 17:32, Jonathan Morton <chromatix99 at gmail.com>
>>> wrote:
>>> >
>>> >> On 20 Apr, 2017, at 18:23, Dendari Marini <dendari92 at gmail.com>
>>> wrote:
>>> >>
>>> >>> Could you post the output of calling “tc -s qdisc” here on the list
>>> please? That should allow to figure out what you actually told cake to do ;0
>>> >
>>> >> qdisc cake 8001: dev eth0 root refcnt 2 bandwidth 900Kbit diffserv3
>>> dual-srchost nat rtt 100.0ms raw
>>> >
>>> >> qdisc cake 8002: dev ifb4eth0 root refcnt 2 bandwidth 16Mbit
>>> diffserv3 dual-dsthost nat ingress rtt 100.0ms raw
>>> >
>>> > Looks like most of your options are okay, including the correct “dual”
>>> modes and “ingress” mode in the right place.  However, I think you need to
>>> adjust your bandwidth and overhead settings, otherwise Cake isn’t reliably
>>> in control of the bottleneck queues.  Try these to begin with:
>>> >
>>> > … bandwidth 850Kbit conservative dual-srchost nat
>>> >
>>> > … bandwidth 15Mbit conservative dual-dsthost nat ingress
>>> >
>>> > That should give you correct operation, and you can fine-tune from
>>> there.
>>> >
>>> > - Jonathan Morton
>>> >
>>> >
>>> >
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/cake/attachments/20170422/c93f4a7c/attachment.html>


More information about the Cake mailing list