[Cake] inbound cake or fq_codel shaping fails on cable on netflix reno

Jonathan Morton chromatix99 at gmail.com
Sat Jul 21 16:24:11 EDT 2018


> On 21 Jul, 2018, at 11:01 pm, Dave Taht <dave.taht at gmail.com> wrote:
> 
> The cmts buffer fills more rapidly, particularly in slow start, while
> presenting packets to the inbound shaper at 100mbit. cake starts
> signalling, late, trying to achieve  but at that point the apparent
> RTTs are still growing rapidly (because of the buffer building up in
> the cmts inflicting that RTT), so as fast as we signal, we've got such
> a big buffer built up in the CMTS that tcp only sees one signal per
> RTT which is mismatched against what cake is trying to thwart. The
> pathology persists.
> 
> the idea for bobbie was that the goal for codel is wrong for inbound
> shaping, that instead of aiming for a rate, we needed to sum all the
> overage over our rate and reduce that until it all drains from cmts
> shaper.

Another possibility, which I've previously mentioned but haven't got around to implementing, is to give ECN more flexibility in signalling - so that it can indicate impending congestion as well as actual congestion.

That is, as well as the present CE mark meaning "back off now", there may be softer signals carried on the dual encodings of ECT, meaning "ramp down now", "don't ramp up", and "ramp up only with caution".  These signals can be given without delay, according to instantaneous conditions at the bottleneck, without needing to estimate path RTT.  You could think of it as a version of DCTCP that can actually be deployed in the internet, because it doesn't destroy the existing meaning of CE.

The main problem is with getting the endpoints (both receiver and sender) to recognise these new signals and react appropriately to them.  Producing these signals at the AQM is relatively easy.  I think I worked out a way to do it with the two padding bytes that normally accompany the Timestamp option in TCP - this requires replacing the Timestamp option with one that has the same semantics, but also carries the extra data about recent ECT marks, and doesn't require padding to be naturally aligned in the packet.

This would give a way to halt slow-start when it reaches roughly the correct window size, instead of having it overshoot first.  It would also give a way to gently control the cwnd to the ideal value while in steady-state, instead of oscillating around it.

 - Jonathan Morton



More information about the Cake mailing list