1SKBPRIO(8) Linux SKBPRIO(8)
2
3
4
6 skbprio - SKB Priority Queue
7
8
10 tc qdisc ... add skbprio [ limit packets ]
11
12
14 SKB Priority Queue is a queueing discipline intended to prioritize the
15 most important packets during a denial-of-service ( DoS ) attack. The
16 priority of a packet is given by skb->priority , where a higher value
17 places the packet closer to the exit of the queue. When the queue is
18 full, the lowest priority packet in the queue is dropped to make room
19 for the packet to be added if it has higher priority. If the packet to
20 be added has lower priority than all packets in the queue, it is
21 dropped.
22
23 Without SKB priority queue, queue length limits must be imposed on
24 individual sub-queues, and there is no straightforward way to enforce a
25 global queue length limit across all priorities. SKBprio queue enforces
26 a global queue length limit while not restricting the lengths of indi‐
27 vidual sub-queues.
28
29 While SKB Priority Queue is agnostic to how skb->priority is assigned.
30 A typical use case is to copy the 6-bit DS field of IPv4 and IPv6 pack‐
31 ets using tc-skbedit(8). If skb->priority is greater or equal to 64,
32 the priority is assumed to be 63. Priorities less than 64 are taken at
33 face value.
34
35 SKB Priority Queue enables routers to locally decide which packets to
36 drop under a DoS attack. Priorities should be assigned to packets such
37 that the higher the priority, the more expected behavior a source
38 shows. So sources have an incentive to play by the rules.
39
40
42 Skbprio maintains 64 lists (priorities go from 0 to 63). When a packet
43 is enqueued, it gets inserted at the tail of its priority list. When a
44 packet needs to be sent out to the network, it is taken from the head
45 of the highest priority list. When the queue is full, the packet at the
46 tail of the lowest priority list is dropped to serve the ingress packet
47 - if it is of higher priority, otherwise the ingress packet is dropped.
48 This algorithm allocates as much bandwidth as possible to high priority
49 packets, while only servicing low priority packets when there is enough
50 bandwidth.
51
52
54 limit Maximum queue size specified in packets. It defaults to 64. The
55 range for this parameter is [0, UINT32_MAX].
56
57
59 tc-prio(8), tc-skbedit(8)
60
61
63 Nishanth Devarajan <devarajn@uci.edu>, Michel Machado <michel@digi‐
64 rati.com.br>
65
66 This manpage maintained by Bert Hubert <ahu@ds9a.nl>
67
68
69
70iproute2 13 August 2018 SKBPRIO(8)