Skip to content
  • Shriram Rajagopalan's avatar
    net/sched: sch_plug - Queue traffic until an explicit release command · c3059be1
    Shriram Rajagopalan authored
    The qdisc supports two operations - plug and unplug. When the
    qdisc receives a plug command via netlink request, packets arriving
    henceforth are buffered until a corresponding unplug command is received.
    Depending on the type of unplug command, the queue can be unplugged
    indefinitely or selectively.
    
    This qdisc can be used to implement output buffering, an essential
    functionality required for consistent recovery in checkpoint based
    fault-tolerance systems. Output buffering enables speculative execution
    by allowing generated network traffic to be rolled back. It is used to
    provide network protection for Xen Guests in the Remus high availability
    project, available as part of Xen.
    
    This module is generic enough to be used by any other system that wishes
    to add speculative execution and output buffering to its applications.
    
    This module was originally available in the linux 2.6.32 PV-OPS tree,
    used as dom0 for Xen.
    
    For more information, please refer to http://nss.cs.ubc.ca/remus/
    and http://wiki.xensource.com/xenwiki/Remus
    
    
    
    Changes in V3:
      * Removed debug output (printk) on queue overflow
      * Added TCQ_PLUG_RELEASE_INDEFINITE - that allows the user to
        use this qdisc, for simple plug/unplug operations.
      * Use of packet counts instead of pointers to keep track of
        the buffers in the queue.
    
    Signed-off-by: default avatarShriram Rajagopalan <rshriram@cs.ubc.ca>
    Signed-off-by: default avatarBrendan Cully <brendan@cs.ubc.ca>
    [author of the code in the linux 2.6.32 pvops tree]
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c3059be1