Re: [RFC] sched: CHOKe packet scheduler (v0.2)

Changli Gao
2011-01-07T05:39:48Z

On Fri, Jan 7, 2011 at 12:55 PM, Stephen Hemminger
<shemminger@vyatta.com> wrote:
> On Thu, 06 Jan 2011 05:07:30 +0100
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
>
>> Le mercredi 05 janvier 2011 à 11:21 -0800, Stephen Hemminger a écrit :
>> > This implements the CHOKe packet scheduler based on the existing
>> > Linux RED scheduler based on the algorithm described in the paper.
>> >
>> > The core idea is:
>> >   For every packet arrival:
>> >     Calculate Qave
>> >     if (Qave < minth)
>> >          Queue the new packet
>> >     else
>> >          Select randomly a packet from the queue
>> >          if (both packets from same flow)
>> >          then Drop both the packets
>> >          else if (Qave > maxth)
>> >               Drop packet
>> >          else
>> >               Admit packet with probability p (same as RED)
>> >
>> > See also:
>> >   Rong Pan, Balaji Prabhakar, Konstantinos Psounis, "CHOKe: a stateless active
>> >    queue management scheme for approximating fair bandwidth allocation",
>> >   Proceeding of INFOCOM'2000, March 2000.
>> >
>> > Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
>> >
>>
>> To be really useful in a wide range of environments, I believe that :
>>
>> - CHOKe should be able to use an external flow classifier (like say...
>> SFQ) to compute a token and compare two skbs by this token instead of
>> custom rxhash or whatever. (rxhash can be the default in absence of flow
>> classifier). Probably you need to store the token in skb->cb[] to avoid
>> calling tc_classify() several times for a given packet.
>>
>> http://lwn.net/Articles/236200/
>> http://kerneltrap.org/mailarchive/linux-netdev/2008/1/31/667679
>
> Probably should split SFQ flow hash stuff into core code for reuse.
>
>

We need not do that, since we have sch_drr and cls_flow. :)

--
Regards,
Changli Gao(xiaosuo@gmail.com)