• Nishanth Devarajan's avatar
    net/sched: add skbprio scheduler · aea5f654
    Nishanth Devarajan authored
    Skbprio (SKB Priority Queue) is a queueing discipline that prioritizes packets
    according to their skb->priority field. Under congestion, already-enqueued lower
    priority packets will be dropped to make space available for higher priority
    packets. Skbprio was conceived as a solution for denial-of-service defenses that
    need to route packets with different priorities as a means to overcome DoS
    attacks.
    
    v5
    *Do not reference qdisc_dev(sch)->tx_queue_len for setting limit. Instead set
    default sch->limit to 64.
    
    v4
    *Drop Documentation/networking/sch_skbprio.txt doc file to move it to tc man
    page for Skbprio, in iproute2.
    
    v3
    *Drop max_limit parameter in struct skbprio_sched_data and instead use
    sch->limit.
    
    *Reference qdisc_dev(sch)->tx_queue_len only once, during initialisation for
    qdisc (previously being referenced every time qdisc changes).
    
    *Move qdisc's detailed description from in-code to Documentation/networking.
    
    *When qdisc is saturated, enqueue incoming packet first before dequeueing
    lowest priority packet in queue - improves usage of call stack registers.
    
    *Introduce and use overlimit stat to keep track of number of dropped packets.
    
    v2
    *Use skb->priority field rather than DS field. Rename queueing discipline as
    SKB Priority Queue (previously Gatekeeper Priority Queue).
    
    *Queueing discipline is made classful to expose Skbprio's internal priority
    queues.
    Signed-off-by: default avatarNishanth Devarajan <ndev2021@gmail.com>
    Reviewed-by: default avatarSachin Paryani <sachin.paryani@gmail.com>
    Reviewed-by: default avatarCody Doucette <doucette@bu.edu>
    Reviewed-by: default avatarMichel Machado <michel@digirati.com.br>
    Acked-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    aea5f654
Makefile 3.16 KB