SKB Priority Queue is a queueing discipline intended to prioritize the most important packets during a
denial-of-service ( DoS ) attack. The priority of a packet is given by skb->priority , where a higher
value places the packet closer to the exit of the queue. When the queue is full, the lowest priority
packet in the queue is dropped to make room for the packet to be added if it has higher priority. If the
packet to be added has lower priority than all packets in the queue, it is dropped.
Without SKB priority queue, queue length limits must be imposed on individual sub-queues, and there is no
straightforward way to enforce a global queue length limit across all priorities. SKBprio queue enforces
a global queue length limit while not restricting the lengths of individual sub-queues.
While SKB Priority Queue is agnostic to how skb->priority is assigned. A typical use case is to copy the
6-bit DS field of IPv4 and IPv6 packets using tc-skbedit(8). If skb->priority is greater or equal to 64,
the priority is assumed to be 63. Priorities less than 64 are taken at face value.
SKB Priority Queue enables routers to locally decide which packets to drop under a DoS attack.
Priorities should be assigned to packets such that the higher the priority, the more expected behavior a
source shows. So sources have an incentive to play by the rules.