{
    "mode": "man",
    "parameter": "tc-fq_codel",
    "section": "8",
    "url": "https://www.chedong.com/phpMan.php/man/tc-fq_codel/8/json",
    "generated": "2026-08-17T08:39:03Z",
    "synopsis": "tc  qdisc ... fqcodel [ limit PACKETS ] [ flows NUMBER ] [ target TIME ] [ interval TIME ] [\nquantum BYTES ] [ ecn | noecn ] [ cethreshold TIME ] [ cethresholdselector VALUE/MASK ]  [\nmemorylimit BYTES ]",
    "sections": {
        "NAME": {
            "content": "CoDel - Fair Queuing (FQ) with Controlled Delay (CoDel)\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "tc  qdisc ... fqcodel [ limit PACKETS ] [ flows NUMBER ] [ target TIME ] [ interval TIME ] [\nquantum BYTES ] [ ecn | noecn ] [ cethreshold TIME ] [ cethresholdselector VALUE/MASK ]  [\nmemorylimit BYTES ]\n\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "FQCodel  (Fair  Queuing  Controlled  Delay) is queuing discipline that combines Fair Queuing\nwith the CoDel AQM scheme. FQCodel uses a stochastic model to classify incoming packets into\ndifferent flows and is used to provide a fair share of the bandwidth to all the  flows  using\nthe  queue.  Each  such  flow is managed by the CoDel queuing discipline. Reordering within a\nflow is avoided since Codel internally uses a FIFO queue.\n\n",
            "subsections": []
        },
        "PARAMETERS": {
            "content": "",
            "subsections": [
                {
                    "name": "limit",
                    "content": "has the same semantics as codel and is the hard limit on the  real  queue  size.   When  this\nlimit is reached, incoming packets are dropped. Default is 10240 packets.\n\n"
                },
                {
                    "name": "memory_limit",
                    "content": "sets  a  limit on the total number of bytes that can be queued in this FQ-CoDel instance. The\nlower of the packet limit of the limit parameter and the memory limit will be  enforced.  De‐\nfault is 32 MB.\n\n\n"
                },
                {
                    "name": "flows",
                    "content": "is  the number of flows into which the incoming packets are classified. Due to the stochastic\nnature of hashing, multiple flows may end up being hashed into the  same  slot.  Newer  flows\nhave  priority  over older ones. This parameter can be set only at load time since memory has\nto be allocated for the hash table.  Default value is 1024.\n\n"
                },
                {
                    "name": "target",
                    "content": "has the same semantics as codel and is the acceptable minimum standing/persistent  queue  de‐\nlay.  This minimum delay is identified by tracking the local minimum queue delay that packets\nexperience. Default value is 5ms.\n\n"
                },
                {
                    "name": "interval",
                    "content": "has the same semantics as codel and is used to ensure that the measured  minimum  delay  does\nnot  become too stale.  The minimum delay must be experienced in the last epoch of length in‐\nterval.  It should be set on the order of the worst-case RTT through the bottleneck  to  give\nendpoints sufficient time to react. Default value is 100ms.\n\n"
                },
                {
                    "name": "quantum",
                    "content": "is  the  number  of  bytes used as 'deficit' in the fair queuing algorithm. Default is set to\n1514 bytes which corresponds to the Ethernet MTU plus the hardware header length of 14 bytes.\n\n"
                },
                {
                    "name": "ecn | noecn",
                    "content": "has the same semantics as codel and can be used to mark packets instead of dropping them.  If\necn has been enabled, noecn can be used to turn it off and vice-a-versa. Unlike codel, ecn is\nturned on by default.\n\n"
                },
                {
                    "name": "ce_threshold",
                    "content": "sets  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"
                },
                {
                    "name": "ce_threshold_selector",
                    "content": "sets  a  filter  so  that the cethreshold feature is applied to only a subset of the traffic\nseen by the qdisc. If set, the MASK value will be applied as  a  bitwise  AND  to  the  diff‐\nserv/ECN byte of the IP header, and only if the result of this masking equals VALUE, will the\ncethreshold logic be applied to the packet.\n\n"
                },
                {
                    "name": "drop_batch",
                    "content": "sets  the  maximum  number of packets to drop when limit or memorylimit is exceeded. Default\nvalue is 64.\n\n"
                }
            ]
        },
        "EXAMPLES": {
            "content": "#tc qdisc add   dev eth0 root fqcodel\n#tc -s qdisc show\nqdisc fqcodel 8002: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1514\ntarget 5.0ms interval 100.0ms ecn\nSent 428514 bytes 2269 pkt (dropped 0, overlimits 0 requeues 0)\nbacklog 0b 0p requeues 0\nmaxpacket 256 dropoverlimit 0 newflowcount 0 ecnmark 0\nnewflowslen 0 oldflowslen 0\n\n#tc qdisc add dev eth0 root fqcodel limit 2000 target 3ms interval 40ms noecn\n#tc -s qdisc show\nqdisc fqcodel 8003: dev eth0 root refcnt 2 limit 2000p flows 1024 quantum 1514 target  3.0ms\ninterval 40.0ms\nSent 2588985006 bytes 1783629 pkt (dropped 0, overlimits 0 requeues 34869)\nbacklog 0b 0p requeues 34869\nmaxpacket 65226 dropoverlimit 0 newflowcount 73 ecnmark 0\nnewflowslen 1 oldflowslen 3\n\n\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "tc(8), tc-codel(8), tc-red(8)\n\n",
            "subsections": []
        },
        "AUTHORS": {
            "content": "FQCoDel  was  implemented  by  Eric  Dumazet. This manpage was written by Vijay Subramanian.\nPlease report corrections to the Linux Networking mailing list <netdev@vger.kernel.org>.\n\niproute2                                     4 June 2012                                 FQCoDel(8)",
            "subsections": []
        }
    },
    "summary": "CoDel - Fair Queuing (FQ) with Controlled Delay (CoDel)",
    "flags": [],
    "examples": [
        "#tc qdisc add   dev eth0 root fqcodel",
        "#tc -s qdisc show",
        "qdisc fqcodel 8002: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1514",
        "target 5.0ms interval 100.0ms ecn",
        "Sent 428514 bytes 2269 pkt (dropped 0, overlimits 0 requeues 0)",
        "backlog 0b 0p requeues 0",
        "maxpacket 256 dropoverlimit 0 newflowcount 0 ecnmark 0",
        "newflowslen 0 oldflowslen 0",
        "#tc qdisc add dev eth0 root fqcodel limit 2000 target 3ms interval 40ms noecn",
        "#tc -s qdisc show",
        "qdisc fqcodel 8003: dev eth0 root refcnt 2 limit 2000p flows 1024 quantum 1514 target  3.0ms",
        "interval 40.0ms",
        "Sent 2588985006 bytes 1783629 pkt (dropped 0, overlimits 0 requeues 34869)",
        "backlog 0b 0p requeues 34869",
        "maxpacket 65226 dropoverlimit 0 newflowcount 73 ecnmark 0",
        "newflowslen 1 oldflowslen 3"
    ],
    "see_also": [
        {
            "name": "tc",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/tc/8/json"
        },
        {
            "name": "tc-codel",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/tc-codel/8/json"
        },
        {
            "name": "tc-red",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/tc-red/8/json"
        }
    ]
}