TC(8) Linux TC(8)

# [NAME](#NAME)

choke - choose and keep scheduler

# [SYNOPSIS](#SYNOPSIS)

**tc qdisc ... choke** **limit** packets **min** packets **max** packets **avpkt** bytes **burst** packets **\[ ecn ] \[ bandwidth** rate **] probability** chance

# [DESCRIPTION](#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.

# [ALGORITHM](#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 **max**, the new packet will always be marked (or dropped). If the queue length exceeds **limit**, the new packet is always dropped.

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

# [PARAMETERS](#PARAMETERS)

The parameters are the same as for RED, except that RED uses bytes whereas choke counts packets. See [**tc-red**(8)](/man/os/iproute2/tc-red.8) for a description.

# [SOURCE](#SOURCE)

[o](#o)

R. Pan, B. Prabhakar, and K. Psounis, "CHOKe, A Stateless Active Queue Management Scheme for Approximating Fair Bandwidth Allocation", IEEE INFOCOM, 2000.

[o](#o~2)

A. Tang, J. Wang, S. Low, "Understanding CHOKe: Throughput and Spatial Characteristics", IEEE/ACM Transactions on Networking, 2004

# [SEE ALSO](#SEE_ALSO)

[**tc**(8)](/man/os/iproute2/tc.8), [**tc-red**(8)](/man/os/iproute2/tc-red.8)

# [AUTHOR](#AUTHOR)

sched\_choke was contributed by Stephen Hemminger.

August 2011 iproute2

---

Document: tc-choke(8) from iproute2 7.2.0-r1 (Chainguard OS)
Source: https://kernel.googlesource.com/pub/scm/network/iproute2/iproute2
