[Cake] Help untangling CAKE settings for FTTH

Thibaut hacks at slashdirt.org
Thu Nov 17 10:53:00 EST 2022

Hi Sebastian,

> Le 17 nov. 2022 à 16:19, Sebastian Moeller <moeller0 at gmx.de> a écrit :
> Hi Thibaut,

>>>> Although I must confess that it certainly feels counter-intuitive that for ethernet (and FTTH) we suggest a higher overhead than e.g. VDSL2/cable (which themselves run off an ethernet interface).
>>> 	That is simply because for (ADSL) DOCSIS VDSL2 we have a much clear picture about what we need to account for. And AON can be essentially using true ethernet encapsulation so we can expect an unspecified "FTTH" class to encompass a broad set of different encapsulations, if we want to recommend a single number that should also cover AON (the PONs are much less clear*). Why do you assume that FTTH necessarily would have a smaller per-packet-overhead than other link technologies? 
>> I’m not (necessarily) making that assumption for FTTH (although I would expect it to be the case, from my limited understanding of FTTH technologies),
> 	Well, all I can say about encapsulations and per-packet-overhead is: it's complicated.

I can see that now :)

>> I am however certainly making that assumption for plain ethernet, which is included in the 44-byte documentation case. I think it’s a reasonable one?
> 	Yes, the goal is to give one number that works everywhere so 44 is what we recommend. As I said overestimating the overhead is benign, underestimating it is not. True ethernet has an effective* per-packet-overhead of:
> 7 Byte Preamble + 1 Byte start of frame delimiter (SFD) + 12 Byte inter frame gap (IFG) + 4 Byte Frame Check Sequence (FCS) + 6 (dest MAC) + 6 (src MAC) + 2 (ethertype)
> 7 + 1 + 12 + 4 + 6 + 6 + 2 = 38 bytes

And now I’m even more confused: why do we suggest an overhead of 34/26 for VDSL or 22 for docsis cable then? I assume the respective modems are connected via ethernet, aren’t they?

Another confusing point in the current detailed doc (and possibly the one that got me started):
"	• Link Layer Adaptation calculates the proper overheads for WAN links such as DSL and ADSL. If you use any kind of DSL link, you should review this section."

This seems to imply LLA is only necessary for « exotic » links such as ADSL/VDSL.

This also brought me to the (naïve) comment that it would be nice if CAKE would account for local NIC L2 overhead internally (since that info is readily available to it, is it not?), and one would only have to configure the actual « overhead » of whatever is connected to the local NIC. There would be less margin for error I believe.

Then I saw this:

"Please note that as of middle 2018 cake, and cake only, will try to interpret any given overhead to be applied on top of IP packets, all other qdiscs (and cake if configured with the “raw” keyword) will add the specified overhead on top of the overhead the kernel already accounted for. This seems confusing, because it is ;) so if in doubt stick to cake."

Well yes, it *is* very confusing :P

> Now if a VLAN tag is added you end up with 38+4 = 42 so both pure ethernet and ethernet+VLAN have a er-packet-overhead close to 44 bytes.
> *) The IFG is not real bytes, but transmission silence for the time it would take to transmit 12 octets.
>>> 	Now, if you have reliable information for say GPON-overhead, by all means add it (but to be useful this also should contain an easy identifier for other users to figure out whether they use GPON in the first place).
>>> 	The bigger point however is IMHO, from the perspective of minimizing bufferbloat/latency-under-load-increase using a slightly too large per-packet-overhead is fully benign, while specifying to small an overhead can easily result in measurable bufferbloat increase. So IMHO it is fine to err on the side of too large when estimating the per-packet-overhead.
>> OK. Although I would think people reading the detailed explanation are looking for precise info and explanations, not one-stop-shop approximations.
> 	Sure, but the problem is we can not give them that "precise information" them, you , me would like to have, so we do the best we can.
>> Not to mention the kind of users who want to squeeze the maximum performance out of their setup.
> 	Just read the section where I explain how per-packet-overhead and shaper-rate are not orthogonal variables to understand how problematic the whoe thing is, add to it that ISPs often employ traffic shapers with potentially independent overhead-assumptions making the whole problem even harder.

Yes, I see it’s a bit of a headache :)

>>> *) The core problem is that we have no straight forward way to empirically deduce the effective per-packet-overhead over an arbitrary network path, so if a link technology defines/documents the overhead well and conclusively (like docsis) we are in luck, but if the details a vague or leave many options to the ISP we have to make an educated guess.
>>>> I would also like to see some info about ppp vs ethernet interface in there (matching your previous email): unless you beat me to it I will add it.
>>> 	I will not beat you to it, because for users of cake it does not matter
>> You said the exact opposite in your previous email (persistence of statistics) :)
> 	I misunderstood your argument here and thought you wanted a section explaining the issues with getting the overhead numbers for pppoe** and ethernet interfaces set for HTB+fq_codel, sorry. If you want to explain differences between cake on pppoe or on ethN go for it.

OK but I also believe it’s important to clarify that the overhead setting needs not be adjusted whether we shape the pppoe interface or its underlying ethernet one: that certainly was counter-intuitive for me.

Thanks for bearing with my ignorance,

More information about the Cake mailing list