{
    "mode": "man",
    "parameter": "tc-skbprio",
    "section": "8",
    "url": "https://www.chedong.com/phpMan.php/man/tc-skbprio/8/json",
    "generated": "2026-06-14T07:47:32Z",
    "synopsis": "tc qdisc ... add skbprio [ limit packets ]",
    "sections": {
        "NAME": {
            "content": "skbprio - SKB Priority Queue\n\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "tc qdisc ... add skbprio [ limit packets ]\n\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "SKB Priority Queue is a queueing discipline intended to prioritize the most important packets\nduring a denial-of-service ( DoS ) attack. The priority of a packet is given by skb->priority\n,  where  a higher value places the packet closer to the exit of the queue. When the queue is\nfull, the lowest priority packet in the queue is dropped to make room for the  packet  to  be\nadded  if it has higher priority. If the packet to be added has lower priority than all pack‐\nets in the queue, it is dropped.\n\nWithout SKB priority queue, queue length limits must be imposed on individual sub-queues, and\nthere is no straightforward way to enforce a global queue length limit across all priorities.\nSKBprio queue enforces a global queue length limit while not restricting the lengths of indi‐\nvidual sub-queues.\n\nWhile  SKB Priority Queue is agnostic to how skb->priority is assigned. A typical use case is\nto copy the 6-bit DS field of IPv4 and IPv6 packets using tc-skbedit(8).  If skb->priority is\ngreater  or equal to 64, the priority is assumed to be 63.  Priorities less than 64 are taken\nat face value.\n\nSKB Priority Queue enables routers to locally decide which packets to drop under  a  DoS  at‐\ntack.   Priorities  should be assigned to packets such that the higher the priority, the more\nexpected behavior a source shows.  So sources have an incentive to play by the rules.\n\n",
            "subsections": []
        },
        "ALGORITHM": {
            "content": "Skbprio maintains 64 lists (priorities go from 0 to 63).  When a packet is enqueued, it  gets\ninserted at the tail of its priority list. When a packet needs to be sent out to the network,\nit is taken from the head of the highest priority list. When the queue is full, the packet at\nthe  tail  of  the  lowest priority list is dropped to serve the ingress packet - if it is of\nhigher priority, otherwise the ingress packet is dropped. This algorithm  allocates  as  much\nbandwidth  as  possible  to  high priority packets, while only servicing low priority packets\nwhen there is enough bandwidth.\n\n",
            "subsections": []
        },
        "PARAMETERS": {
            "content": "limit  Maximum queue size specified in packets. It defaults to 64.  The range for this param‐\neter is [0, UINT32MAX].\n\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "tc-prio(8), tc-skbedit(8)\n\n",
            "subsections": []
        },
        "AUTHORS": {
            "content": "Nishanth Devarajan <devarajn@uci.edu>, Michel Machado <michel@digirati.com.br>\n\nThis manpage maintained by Bert Hubert <ahu@ds9a.nl>\n\n\n\niproute2                                   13 August 2018                                 SKBPRIO(8)",
            "subsections": []
        }
    },
    "summary": "skbprio - SKB Priority Queue",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "tc-prio",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/tc-prio/8/json"
        },
        {
            "name": "tc-skbedit",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/tc-skbedit/8/json"
        }
    ]
}