tc-choke(8) — Linux manual page


TC(8)                             Linux                            TC(8)

NAME         top

       choke - choose and keep scheduler

SYNOPSIS         top

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

DESCRIPTION         top

       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         top

       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         top

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

SOURCE         top

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

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

SEE ALSO         top

       tc(8), tc-red(8)

AUTHOR         top

       sched_choke was contributed by Stephen Hemminger.

COLOPHON         top

       This page is part of the iproute2 (utilities for controlling
       TCP/IP networking and traffic) project.  Information about the
       project can be found at 
       If you have a bug report for this manual page, send it to,  This page was
       obtained from the project's upstream Git repository
       ⟨⟩ on
       2024-06-14.  (At that time, the date of the most recent commit
       that was found in the repository was 2024-06-11.)  If you
       discover any rendering problems in this HTML version of the page,
       or you believe there is a better or more up-to-date source for
       the page, or you have corrections or improvements to the
       information in this COLOPHON (which is not part of the original
       manual page), send a mail to

iproute2                       August 2011                         TC(8)

Pages that refer to this page: tc(8)tc-red(8)