{
    "content": [
        {
            "type": "text",
            "text": "# tc-codel (man)\n\n## NAME\n\nCoDel - Controlled-Delay Active Queue Management algorithm\n\n## SYNOPSIS\n\ntc  qdisc  ...  codel  [  limit PACKETS ] [ target TIME ] [ interval TIME ] [ ecn | noecn ] [\ncethreshold TIME ]\n\n## DESCRIPTION\n\nCoDel (pronounced \"coddle\") is an adaptive \"no-knobs\" active queue management algorithm (AQM)\nscheme  that was developed to address the shortcomings of RED and its variants. It was devel‐\noped with the following goals in mind:\no It should be parameterless.\no It should keep delays low while permitting bursts of traffic.\no It should control delay.\no It should adapt dynamically to changing link rates with no impact on utilization.\no It should be simple and efficient and should scale from simple to complex routers.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **ALGORITHM**\n- **PARAMETERS** (4 subsections)\n- **EXAMPLES**\n- **SEE ALSO**\n- **SOURCES**\n- **AUTHORS**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "tc-codel",
        "section": "",
        "mode": "man",
        "summary": "CoDel - Controlled-Delay Active Queue Management algorithm",
        "synopsis": "tc  qdisc  ...  codel  [  limit PACKETS ] [ target TIME ] [ interval TIME ] [ ecn | noecn ] [\ncethreshold TIME ]",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [
            "# tc qdisc add dev eth0 root codel",
            "# tc -s qdisc show",
            "qdisc codel 801b: dev eth0 root refcnt 2 limit 1000p target 5.0ms interval 100.0ms",
            "Sent 245801662 bytes 275853 pkt (dropped 0, overlimits 0 requeues 24)",
            "backlog 0b 0p requeues 24",
            "count 0 lastcount 0 ldelay 2us dropnext 0us",
            "maxpacket 7306 ecnmark 0 dropoverlimit 0",
            "# tc qdisc add dev eth0 root codel limit 100 target 4ms interval 30ms ecn",
            "# tc -s qdisc show",
            "qdisc codel 801c: dev eth0 root refcnt 2 limit 100p target 4.0ms interval 30.0ms ecn",
            "Sent 237573074 bytes 268561 pkt (dropped 0, overlimits 0 requeues 5)",
            "backlog 0b 0p requeues 5",
            "count 0 lastcount 0 ldelay 76us dropnext 0us",
            "maxpacket 2962 ecnmark 0 dropoverlimit 0"
        ],
        "see_also": [
            {
                "name": "tc",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc/8/json"
            },
            {
                "name": "tc-red",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc-red/8/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 10,
                "subsections": []
            },
            {
                "name": "ALGORITHM",
                "lines": 17,
                "subsections": []
            },
            {
                "name": "PARAMETERS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "limit",
                        "lines": 5
                    },
                    {
                        "name": "target",
                        "lines": 5
                    },
                    {
                        "name": "interval",
                        "lines": 6
                    },
                    {
                        "name": "ecn | noecn",
                        "lines": 11
                    }
                ]
            },
            {
                "name": "EXAMPLES",
                "lines": 18,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "SOURCES",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "AUTHORS",
                "lines": 7,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "CoDel - Controlled-Delay Active Queue Management algorithm\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "tc  qdisc  ...  codel  [  limit PACKETS ] [ target TIME ] [ interval TIME ] [ ecn | noecn ] [\ncethreshold TIME ]\n\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "CoDel (pronounced \"coddle\") is an adaptive \"no-knobs\" active queue management algorithm (AQM)\nscheme  that was developed to address the shortcomings of RED and its variants. It was devel‐\noped with the following goals in mind:\no It should be parameterless.\no It should keep delays low while permitting bursts of traffic.\no It should control delay.\no It should adapt dynamically to changing link rates with no impact on utilization.\no It should be simple and efficient and should scale from simple to complex routers.\n\n",
                "subsections": []
            },
            "ALGORITHM": {
                "content": "CoDel comes with three major innovations. Instead of using queue size or  queue  average,  it\nuses  the local minimum queue as a measure of the standing/persistent queue.  Second, it uses\na single state-tracking variable of the minimum delay to see where  it  is  relative  to  the\nstanding  queue delay. Third, instead of measuring queue size in bytes or packets, it is mea‐\nsured in packet-sojourn time in the queue.\n\nCoDel measures the minimum local queue delay (i.e. standing queue delay) and compares  it  to\nthe  value of the given acceptable queue delay target.  As long as the minimum queue delay is\nless than target or the buffer contains fewer than  MTU  worth  of  bytes,  packets  are  not\ndropped.  Codel enters a dropping mode when the minimum queue delay has exceeded target for a\ntime greater than interval.  In this mode, packets are dropped at different drop times  which\nis  set by a control law. The control law ensures that the packet drops cause a linear change\nin the throughput. Once the minimum delay goes below target, packets are no longer dropped.\n\nAdditional details can be found in the paper cited below.\n\n",
                "subsections": []
            },
            "PARAMETERS": {
                "content": "",
                "subsections": [
                    {
                        "name": "limit",
                        "content": "hard limit on the real queue size. When this limit is reached, incoming packets are  dropped.\nIf  the  value  is lowered, packets are dropped so that the new limit is met. Default is 1000\npackets.\n\n"
                    },
                    {
                        "name": "target",
                        "content": "is the acceptable minimum standing/persistent queue delay. This minimum delay  is  identified\nby  tracking  the local minimum queue delay that packets experience.  Default and recommended\nvalue is 5ms.\n\n"
                    },
                    {
                        "name": "interval",
                        "content": "is used to ensure that the measured minimum delay does not become too stale. The minimum  de‐\nlay  must be experienced in the last epoch of length interval.  It should be set on the order\nof the worst-case RTT through the bottleneck to give endpoints sufficient time to react.  De‐\nfault value is 100ms.\n\n"
                    },
                    {
                        "name": "ecn | noecn",
                        "content": "can  be  used to mark packets instead of dropping them. If ecn has been enabled, noecn can be\nused to turn it off and vice-a-versa. By default, ecn is turned off.\n\n\ncethreshold\nsets a threshold above which all packets are marked with ECN Congestion Experienced. This  is\nuseful  for  DCTCP-style  congestion  control algorithms that require marking at very shallow\nqueueing thresholds.\n\n\n"
                    }
                ]
            },
            "EXAMPLES": {
                "content": "# tc qdisc add dev eth0 root codel\n# tc -s qdisc show\nqdisc codel 801b: dev eth0 root refcnt 2 limit 1000p target 5.0ms interval 100.0ms\nSent 245801662 bytes 275853 pkt (dropped 0, overlimits 0 requeues 24)\nbacklog 0b 0p requeues 24\ncount 0 lastcount 0 ldelay 2us dropnext 0us\nmaxpacket 7306 ecnmark 0 dropoverlimit 0\n\n# tc qdisc add dev eth0 root codel limit 100 target 4ms interval 30ms ecn\n# tc -s qdisc show\nqdisc codel 801c: dev eth0 root refcnt 2 limit 100p target 4.0ms interval 30.0ms ecn\nSent 237573074 bytes 268561 pkt (dropped 0, overlimits 0 requeues 5)\nbacklog 0b 0p requeues 5\ncount 0 lastcount 0 ldelay 76us dropnext 0us\nmaxpacket 2962 ecnmark 0 dropoverlimit 0\n\n\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "tc(8), tc-red(8)\n\n",
                "subsections": []
            },
            "SOURCES": {
                "content": "o    Kathleen  Nichols  and   Van   Jacobson,   \"Controlling   Queue   Delay\",   ACM   Queue,\nhttp://queue.acm.org/detail.cfm?id=2209336\n\n",
                "subsections": []
            },
            "AUTHORS": {
                "content": "CoDel  was implemented by Eric Dumazet and David Taht. This manpage was written by Vijay Sub‐\nramanian. Please reports corrections to the Linux Networking mailing  list  <netdev@vger.ker‐\nnel.org>.\n\n\n\niproute2                                     23 May 2012                                    CoDel(8)",
                "subsections": []
            }
        }
    }
}