sched: CHOKe flow scheduler
authorstephen hemminger <shemminger@vyatta.com>
Wed, 2 Feb 2011 15:21:10 +0000 (15:21 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Feb 2011 04:52:42 +0000 (20:52 -0800)
commit45e144339ac59971eb44be32e1282760aaabe861
treeb9d93acb2c1bb505d3b6facc426d307c59dc63a4
parent119b3d386985fcd477b3131190c041516a73f83a
sched: CHOKe flow scheduler

CHOKe ("CHOose and Kill" or "CHOose and Keep") is an alternative
packet scheduler based on the Random Exponential Drop (RED) algorithm.

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 proability 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.

Help from:
     Eric Dumazet <eric.dumazet@gmail.com>
     Patrick McHardy <kaber@trash.net>

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/pkt_sched.h
net/sched/Kconfig
net/sched/Makefile
net/sched/sch_choke.c [new file with mode: 0644]