.TH TC 8 "August 2011" "iproute2" "Linux"
.SH NAME
choke \- choose and keep scheduler
.SH SYNOPSIS
.B tc qdisc ... choke
.B limit
packets
.B min
packets
.B max
packets
.B avpkt
bytes
.B burst
packets
.B [ ecn ] [ bandwidth
rate
.B ] probability
chance

.SH DESCRIPTION

CHOKe (CHOose and Keep for responsive flows, CHOose and Kill for unresponsive flows)
is a classless qdisc designed to both identify and penalize flows that monopolize the
queue. CHOKe is a variation of RED, and the configuration is similar to RED.

.SH ALGORITHM
Once the queue hits a certain average length, a random packet is drawn from the
queue. If both the to-be-queued and the drawn packet belong to the same flow,
both packets are dropped. Otherwise, if the queue length is still below the maximum length,
the new packet has a configurable chance of being marked (which may mean dropped).
If the queue length exceeds
.BR max ,
the new packet will always be marked (or dropped).
If the queue length exceeds
.BR limit ,
the new packet is always dropped.

The marking probability computation is the same as used by the RED qdisc.

.SH PARAMETERS
The parameters are the same as for RED, except that RED uses bytes whereas choke
counts packets. See
.BR tc-red (8)
for a description.

.SH SOURCE
.TP
o
R. Pan, B. Prabhakar, and K. Psounis, "CHOKe, A Stateless
Active Queue Management Scheme for Approximating Fair Bandwidth Allocation",
IEEE INFOCOM, 2000.
.TP
o
A. Tang, J. Wang, S. Low, "Understanding CHOKe: Throughput and Spatial
Characteristics", IEEE/ACM Transactions on Networking, 2004

.SH SEE ALSO
.BR tc (8),
.BR tc-red (8)

.SH AUTHOR
sched_choke was contributed by Stephen Hemminger.