[Cake] diffserv3 vs diffserv4

Jonathan Morton chromatix99 at gmail.com
Sat Jul 25 13:47:58 EDT 2020


> On 25 Jul, 2020, at 8:18 pm, Sebastian Moeller <moeller0 at gmx.de> wrote:
> 
> I am confused... but I am also confused by cake's output:
> 
>                   Bulk  Best Effort        Voice
>  thresh       3062Kbit       49Mbit    12250Kbit"
> 
> as far as I can tell, Bulk's 3062Kbit must be the minimum, while BE and Voice give their maxima... That, or I am missing something important...
> (I wonder whether it would not be clearer to give both min and max for each tin, then again I probably missing all the deyails of the actual implementation...)

Cake delivers from the highest-priority tin that both has data to send and is "behind" its local schedule, defined by the threshold rate.  If no tin with data to send is behind schedule, then some tin that does have data to send is chosen (so Cake as a whole is work-conserving, modulo its global shaper).  IIRC, it'll be the highest priority such tin.

The notion of which tin is highest priority is a little counter-intuitive.  One tin must be at the global shaper rate, and will be the lowest priority tin - and normally that is the "best effort" tin.  So the BK tin is actually at a higher priority, but only up to its very limited threshold rate.  To avoid starving the best effort tin under all possible combinations of traffic, it is necessary and sufficient to ensure that the sum of all higher-priority tins' threshold rates is less than the global rate.

In the case of Diffserv3, the BK and VO tins both have higher priority than BE and sum to 5/16ths of the global rate. So with all tins saturated, the BE traffic gets 11/16ths which is pretty respectable.  If the BE and VO traffic goes away, BK is then able to use all available bandwidth.

 - Jonathan Morton



More information about the Cake mailing list