Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
* [Cake] Doubt regarding the Linux implementation of Cake
@ 2017-03-29 17:34 vignesh kannan
  2017-03-29 17:42 ` Jonathan Morton
  0 siblings, 1 reply; 2+ messages in thread
From: vignesh kannan @ 2017-03-29 17:34 UTC (permalink / raw)
  To: cake

[-- Attachment #1: Type: text/plain, Size: 1192 bytes --]

Hello,

I am Vignesh, and I am new to this mailing list. I have been going through
the Cobalt AQM algorithm implemented in the Cake framework since the last
two weeks. Here is the link :

The C file : https://github.com/dtaht/sch_cake/blob/master/cobalt.c
The header file : https://github.com/dtaht/sch_cake/blob/master/cobalt.h

I have also been following the discussions happening about Cobalt on the
Bufferbloat mailing list. So I am having problems relating the two sources
just mentioned above (the implementation and the discussion). According to
my understanding of the Codel algorithm, the count variable (which keeps
track of the number of packets dropped in the currently running dropping
state) is never really decremented iteratively.

However the Cobalt implementation reduces count iteratively (in line 234 of
the file cobalt.c) under certain circumstances and this is happening in the
function named cobalt_should_drop( ) which is called to determine if Cobalt
should drop the packet or dequeue it. It would be great if someone could
throw light on what is exactly happening in this function and also a
comprehensive explanation of Cobalt itself would be appreciated.

Thanks!

[-- Attachment #2: Type: text/html, Size: 1654 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Cake] Doubt regarding the Linux implementation of Cake
  2017-03-29 17:34 [Cake] Doubt regarding the Linux implementation of Cake vignesh kannan
@ 2017-03-29 17:42 ` Jonathan Morton
  0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Morton @ 2017-03-29 17:42 UTC (permalink / raw)
  To: vignesh kannan; +Cc: cake


> On 29 Mar, 2017, at 20:34, vignesh kannan <vignesh2496@gmail.com> wrote:
> 
> I have also been following the discussions happening about Cobalt on the Bufferbloat mailing list. So I am having problems relating the two sources just mentioned above (the implementation and the discussion). According to my understanding of the Codel algorithm, the count variable (which keeps track of the number of packets dropped in the currently running dropping state) is never really decremented iteratively.
> 
> However the Cobalt implementation reduces count iteratively (in line 234 of the file cobalt.c) under certain circumstances and this is happening in the function named cobalt_should_drop( ) which is called to determine if Cobalt should drop the packet or dequeue it. It would be great if someone could throw light on what is exactly happening in this function and also a comprehensive explanation of Cobalt itself would be appreciated. 

An open question in Codel is exactly how best to choose the initial value of “count” when re-entering the dropping state after a relatively short period of not dropping.

I was unsatisfied with the usual approaches, which in the reference Codel implementation involve a rather opaque calculation, and in some variants involve a halving of the previous count value, both with a hard time cutoff before a full reset to 1.

What I do in Cobalt is, while in non-dropping state, to decrement count on the same schedule as it would increment in dropping state.  This completely eliminates the need for a hard time cutoff and seems like a natural solution to the problem.

I’m currently writing a series of articles for the Bufferbloat website on the algorithms Cake uses, including their performance relative to existing alternatives.

 - Jonathan Morton


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-03-29 17:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-29 17:34 [Cake] Doubt regarding the Linux implementation of Cake vignesh kannan
2017-03-29 17:42 ` Jonathan Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox