aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/Kconfig
diff options
context:
space:
mode:
authorShriram Rajagopalan <rshriram@cs.ubc.ca>2012-02-05 08:51:32 -0500
committerDavid S. Miller <davem@davemloft.net>2012-02-07 12:54:56 -0500
commitc3059be16c9ef29c05f0876a9df5fea21f29724f (patch)
tree18e5635982b69c7d8369e441d3233c437d2262df /net/sched/Kconfig
parent17b8a74f00474fb4fe6154aa426a80bcf1220997 (diff)
net/sched: sch_plug - Queue traffic until an explicit release command
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: Shriram Rajagopalan <rshriram@cs.ubc.ca> Signed-off-by: Brendan Cully <brendan@cs.ubc.ca> [author of the code in the linux 2.6.32 pvops tree] Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/Kconfig')
-rw-r--r--net/sched/Kconfig26
1 files changed, 26 insertions, 0 deletions
diff --git a/net/sched/Kconfig b/net/sched/Kconfig
index 2590e91b328..75b58f81d53 100644
--- a/net/sched/Kconfig
+++ b/net/sched/Kconfig
@@ -260,6 +260,32 @@ config NET_SCH_INGRESS
260 To compile this code as a module, choose M here: the 260 To compile this code as a module, choose M here: the
261 module will be called sch_ingress. 261 module will be called sch_ingress.
262 262
263config NET_SCH_PLUG
264 tristate "Plug network traffic until release (PLUG)"
265 ---help---
266
267 This queuing discipline allows userspace to plug/unplug a network
268 output queue, using the netlink interface. When it receives an
269 enqueue command it inserts a plug into the outbound queue that
270 causes following packets to enqueue until a dequeue command arrives
271 over netlink, causing the plug to be removed and resuming the normal
272 packet flow.
273
274 This module also provides a generic "network output buffering"
275 functionality (aka output commit), wherein upon arrival of a dequeue
276 command, only packets up to the first plug are released for delivery.
277 The Remus HA project uses this module to enable speculative execution
278 of virtual machines by allowing the generated network output to be rolled
279 back if needed.
280
281 For more information, please refer to http://wiki.xensource.com/xenwiki/Remus
282
283 Say Y here if you are using this kernel for Xen dom0 and
284 want to protect Xen guests with Remus.
285
286 To compile this code as a module, choose M here: the
287 module will be called sch_plug.
288
263comment "Classification" 289comment "Classification"
264 290
265config NET_CLS 291config NET_CLS