pkt_sched: Control group classifier
[safe/jmp/linux-2.6] / net / sched / Kconfig
1 #
2 # Traffic control configuration.
3
4
5 menuconfig NET_SCHED
6         bool "QoS and/or fair queueing"
7         select NET_SCH_FIFO
8         ---help---
9           When the kernel has several packets to send out over a network
10           device, it has to decide which ones to send first, which ones to
11           delay, and which ones to drop. This is the job of the queueing
12           disciplines, several different algorithms for how to do this
13           "fairly" have been proposed.
14
15           If you say N here, you will get the standard packet scheduler, which
16           is a FIFO (first come, first served). If you say Y here, you will be
17           able to choose from among several alternative algorithms which can
18           then be attached to different network devices. This is useful for
19           example if some of your network devices are real time devices that
20           need a certain minimum data flow rate, or if you need to limit the
21           maximum data flow rate for traffic which matches specified criteria.
22           This code is considered to be experimental.
23
24           To administer these schedulers, you'll need the user-level utilities
25           from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>.
26           That package also contains some documentation; for more, check out
27           <http://linux-net.osdl.org/index.php/Iproute2>.
28
29           This Quality of Service (QoS) support will enable you to use
30           Differentiated Services (diffserv) and Resource Reservation Protocol
31           (RSVP) on your Linux router if you also say Y to the corresponding
32           classifiers below.  Documentation and software is at
33           <http://diffserv.sourceforge.net/>.
34
35           If you say Y here and to "/proc file system" below, you will be able
36           to read status information about packet schedulers from the file
37           /proc/net/psched.
38
39           The available schedulers are listed in the following questions; you
40           can say Y to as many as you like. If unsure, say N now.
41
42 if NET_SCHED
43
44 comment "Queueing/Scheduling"
45
46 config NET_SCH_CBQ
47         tristate "Class Based Queueing (CBQ)"
48         ---help---
49           Say Y here if you want to use the Class-Based Queueing (CBQ) packet
50           scheduling algorithm. This algorithm classifies the waiting packets
51           into a tree-like hierarchy of classes; the leaves of this tree are
52           in turn scheduled by separate algorithms.
53
54           See the top of <file:net/sched/sch_cbq.c> for more details.
55
56           CBQ is a commonly used scheduler, so if you're unsure, you should
57           say Y here. Then say Y to all the queueing algorithms below that you
58           want to use as leaf disciplines.
59
60           To compile this code as a module, choose M here: the
61           module will be called sch_cbq.
62
63 config NET_SCH_HTB
64         tristate "Hierarchical Token Bucket (HTB)"
65         ---help---
66           Say Y here if you want to use the Hierarchical Token Buckets (HTB)
67           packet scheduling algorithm. See
68           <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
69           in-depth articles.
70
71           HTB is very similar to CBQ regarding its goals however is has
72           different properties and different algorithm.
73
74           To compile this code as a module, choose M here: the
75           module will be called sch_htb.
76
77 config NET_SCH_HFSC
78         tristate "Hierarchical Fair Service Curve (HFSC)"
79         ---help---
80           Say Y here if you want to use the Hierarchical Fair Service Curve
81           (HFSC) packet scheduling algorithm.
82
83           To compile this code as a module, choose M here: the
84           module will be called sch_hfsc.
85
86 config NET_SCH_ATM
87         tristate "ATM Virtual Circuits (ATM)"
88         depends on ATM
89         ---help---
90           Say Y here if you want to use the ATM pseudo-scheduler.  This
91           provides a framework for invoking classifiers, which in turn
92           select classes of this queuing discipline.  Each class maps
93           the flow(s) it is handling to a given virtual circuit.
94
95           See the top of <file:net/sched/sch_atm.c> for more details.
96
97           To compile this code as a module, choose M here: the
98           module will be called sch_atm.
99
100 config NET_SCH_PRIO
101         tristate "Multi Band Priority Queueing (PRIO)"
102         ---help---
103           Say Y here if you want to use an n-band priority queue packet
104           scheduler.
105
106           To compile this code as a module, choose M here: the
107           module will be called sch_prio.
108
109 config NET_SCH_MULTIQ
110         tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
111         ---help---
112           Say Y here if you want to use an n-band queue packet scheduler
113           to support devices that have multiple hardware transmit queues.
114
115           To compile this code as a module, choose M here: the
116           module will be called sch_multiq.
117
118 config NET_SCH_RED
119         tristate "Random Early Detection (RED)"
120         ---help---
121           Say Y here if you want to use the Random Early Detection (RED)
122           packet scheduling algorithm.
123
124           See the top of <file:net/sched/sch_red.c> for more details.
125
126           To compile this code as a module, choose M here: the
127           module will be called sch_red.
128
129 config NET_SCH_SFQ
130         tristate "Stochastic Fairness Queueing (SFQ)"
131         ---help---
132           Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
133           packet scheduling algorithm.
134
135           See the top of <file:net/sched/sch_sfq.c> for more details.
136
137           To compile this code as a module, choose M here: the
138           module will be called sch_sfq.
139
140 config NET_SCH_TEQL
141         tristate "True Link Equalizer (TEQL)"
142         ---help---
143           Say Y here if you want to use the True Link Equalizer (TLE) packet
144           scheduling algorithm. This queueing discipline allows the combination
145           of several physical devices into one virtual device.
146
147           See the top of <file:net/sched/sch_teql.c> for more details.
148
149           To compile this code as a module, choose M here: the
150           module will be called sch_teql.
151
152 config NET_SCH_TBF
153         tristate "Token Bucket Filter (TBF)"
154         ---help---
155           Say Y here if you want to use the Token Bucket Filter (TBF) packet
156           scheduling algorithm.
157
158           See the top of <file:net/sched/sch_tbf.c> for more details.
159
160           To compile this code as a module, choose M here: the
161           module will be called sch_tbf.
162
163 config NET_SCH_GRED
164         tristate "Generic Random Early Detection (GRED)"
165         ---help---
166           Say Y here if you want to use the Generic Random Early Detection
167           (GRED) packet scheduling algorithm for some of your network devices
168           (see the top of <file:net/sched/sch_red.c> for details and
169           references about the algorithm).
170
171           To compile this code as a module, choose M here: the
172           module will be called sch_gred.
173
174 config NET_SCH_DSMARK
175         tristate "Differentiated Services marker (DSMARK)"
176         ---help---
177           Say Y if you want to schedule packets according to the
178           Differentiated Services architecture proposed in RFC 2475.
179           Technical information on this method, with pointers to associated
180           RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
181
182           To compile this code as a module, choose M here: the
183           module will be called sch_dsmark.
184
185 config NET_SCH_NETEM
186         tristate "Network emulator (NETEM)"
187         ---help---
188           Say Y if you want to emulate network delay, loss, and packet
189           re-ordering. This is often useful to simulate networks when
190           testing applications or protocols.
191
192           To compile this driver as a module, choose M here: the module
193           will be called sch_netem.
194
195           If unsure, say N.
196
197 config NET_SCH_INGRESS
198         tristate "Ingress Qdisc"
199         depends on NET_CLS_ACT
200         ---help---
201           Say Y here if you want to use classifiers for incoming packets.
202           If unsure, say Y.
203
204           To compile this code as a module, choose M here: the
205           module will be called sch_ingress.
206
207 comment "Classification"
208
209 config NET_CLS
210         boolean
211
212 config NET_CLS_BASIC
213         tristate "Elementary classification (BASIC)"
214         select NET_CLS
215         ---help---
216           Say Y here if you want to be able to classify packets using
217           only extended matches and actions.
218
219           To compile this code as a module, choose M here: the
220           module will be called cls_basic.
221
222 config NET_CLS_TCINDEX
223         tristate "Traffic-Control Index (TCINDEX)"
224         select NET_CLS
225         ---help---
226           Say Y here if you want to be able to classify packets based on
227           traffic control indices. You will want this feature if you want
228           to implement Differentiated Services together with DSMARK.
229
230           To compile this code as a module, choose M here: the
231           module will be called cls_tcindex.
232
233 config NET_CLS_ROUTE4
234         tristate "Routing decision (ROUTE)"
235         select NET_CLS_ROUTE
236         select NET_CLS
237         ---help---
238           If you say Y here, you will be able to classify packets
239           according to the route table entry they matched.
240
241           To compile this code as a module, choose M here: the
242           module will be called cls_route.
243
244 config NET_CLS_ROUTE
245         bool
246
247 config NET_CLS_FW
248         tristate "Netfilter mark (FW)"
249         select NET_CLS
250         ---help---
251           If you say Y here, you will be able to classify packets
252           according to netfilter/firewall marks.
253
254           To compile this code as a module, choose M here: the
255           module will be called cls_fw.
256
257 config NET_CLS_U32
258         tristate "Universal 32bit comparisons w/ hashing (U32)"
259         select NET_CLS
260         ---help---
261           Say Y here to be able to classify packets using a universal
262           32bit pieces based comparison scheme.
263
264           To compile this code as a module, choose M here: the
265           module will be called cls_u32.
266
267 config CLS_U32_PERF
268         bool "Performance counters support"
269         depends on NET_CLS_U32
270         ---help---
271           Say Y here to make u32 gather additional statistics useful for
272           fine tuning u32 classifiers.
273
274 config CLS_U32_MARK
275         bool "Netfilter marks support"
276         depends on NET_CLS_U32
277         ---help---
278           Say Y here to be able to use netfilter marks as u32 key.
279
280 config NET_CLS_RSVP
281         tristate "IPv4 Resource Reservation Protocol (RSVP)"
282         select NET_CLS
283         ---help---
284           The Resource Reservation Protocol (RSVP) permits end systems to
285           request a minimum and maximum data flow rate for a connection; this
286           is important for real time data such as streaming sound or video.
287
288           Say Y here if you want to be able to classify outgoing packets based
289           on their RSVP requests.
290
291           To compile this code as a module, choose M here: the
292           module will be called cls_rsvp.
293
294 config NET_CLS_RSVP6
295         tristate "IPv6 Resource Reservation Protocol (RSVP6)"
296         select NET_CLS
297         ---help---
298           The Resource Reservation Protocol (RSVP) permits end systems to
299           request a minimum and maximum data flow rate for a connection; this
300           is important for real time data such as streaming sound or video.
301
302           Say Y here if you want to be able to classify outgoing packets based
303           on their RSVP requests and you are using the IPv6 protocol.
304
305           To compile this code as a module, choose M here: the
306           module will be called cls_rsvp6.
307
308 config NET_CLS_FLOW
309         tristate "Flow classifier"
310         select NET_CLS
311         ---help---
312           If you say Y here, you will be able to classify packets based on
313           a configurable combination of packet keys. This is mostly useful
314           in combination with SFQ.
315
316           To compile this code as a module, choose M here: the
317           module will be called cls_flow.
318
319 config NET_CLS_CGROUP
320         bool "Control Group Classifier"
321         select NET_CLS
322         depends on CGROUPS
323         ---help---
324           Say Y here if you want to classify packets based on the control
325           cgroup of their process.
326
327           To compile this code as a module, choose M here: the
328           module will be called cls_cgroup.
329
330 config NET_EMATCH
331         bool "Extended Matches"
332         select NET_CLS
333         ---help---
334           Say Y here if you want to use extended matches on top of classifiers
335           and select the extended matches below.
336
337           Extended matches are small classification helpers not worth writing
338           a separate classifier for.
339
340           A recent version of the iproute2 package is required to use
341           extended matches.
342
343 config NET_EMATCH_STACK
344         int "Stack size"
345         depends on NET_EMATCH
346         default "32"
347         ---help---
348           Size of the local stack variable used while evaluating the tree of
349           ematches. Limits the depth of the tree, i.e. the number of
350           encapsulated precedences. Every level requires 4 bytes of additional
351           stack space.
352
353 config NET_EMATCH_CMP
354         tristate "Simple packet data comparison"
355         depends on NET_EMATCH
356         ---help---
357           Say Y here if you want to be able to classify packets based on
358           simple packet data comparisons for 8, 16, and 32bit values.
359
360           To compile this code as a module, choose M here: the
361           module will be called em_cmp.
362
363 config NET_EMATCH_NBYTE
364         tristate "Multi byte comparison"
365         depends on NET_EMATCH
366         ---help---
367           Say Y here if you want to be able to classify packets based on
368           multiple byte comparisons mainly useful for IPv6 address comparisons.
369
370           To compile this code as a module, choose M here: the
371           module will be called em_nbyte.
372
373 config NET_EMATCH_U32
374         tristate "U32 key"
375         depends on NET_EMATCH
376         ---help---
377           Say Y here if you want to be able to classify packets using
378           the famous u32 key in combination with logic relations.
379
380           To compile this code as a module, choose M here: the
381           module will be called em_u32.
382
383 config NET_EMATCH_META
384         tristate "Metadata"
385         depends on NET_EMATCH
386         ---help---
387           Say Y here if you want to be able to classify packets based on
388           metadata such as load average, netfilter attributes, socket
389           attributes and routing decisions.
390
391           To compile this code as a module, choose M here: the
392           module will be called em_meta.
393
394 config NET_EMATCH_TEXT
395         tristate "Textsearch"
396         depends on NET_EMATCH
397         select TEXTSEARCH
398         select TEXTSEARCH_KMP
399         select TEXTSEARCH_BM
400         select TEXTSEARCH_FSM
401         ---help---
402           Say Y here if you want to be able to classify packets based on
403           textsearch comparisons.
404
405           To compile this code as a module, choose M here: the
406           module will be called em_text.
407
408 config NET_CLS_ACT
409         bool "Actions"
410         ---help---
411           Say Y here if you want to use traffic control actions. Actions
412           get attached to classifiers and are invoked after a successful
413           classification. They are used to overwrite the classification
414           result, instantly drop or redirect packets, etc.
415
416           A recent version of the iproute2 package is required to use
417           extended matches.
418
419 config NET_ACT_POLICE
420         tristate "Traffic Policing"
421         depends on NET_CLS_ACT 
422         ---help---
423           Say Y here if you want to do traffic policing, i.e. strict
424           bandwidth limiting. This action replaces the existing policing
425           module.
426
427           To compile this code as a module, choose M here: the
428           module will be called police.
429
430 config NET_ACT_GACT
431         tristate "Generic actions"
432         depends on NET_CLS_ACT
433         ---help---
434           Say Y here to take generic actions such as dropping and
435           accepting packets.
436
437           To compile this code as a module, choose M here: the
438           module will be called gact.
439
440 config GACT_PROB
441         bool "Probability support"
442         depends on NET_ACT_GACT
443         ---help---
444           Say Y here to use the generic action randomly or deterministically.
445
446 config NET_ACT_MIRRED
447         tristate "Redirecting and Mirroring"
448         depends on NET_CLS_ACT
449         ---help---
450           Say Y here to allow packets to be mirrored or redirected to
451           other devices.
452
453           To compile this code as a module, choose M here: the
454           module will be called mirred.
455
456 config NET_ACT_IPT
457         tristate "IPtables targets"
458         depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
459         ---help---
460           Say Y here to be able to invoke iptables targets after successful
461           classification.
462
463           To compile this code as a module, choose M here: the
464           module will be called ipt.
465
466 config NET_ACT_NAT
467         tristate "Stateless NAT"
468         depends on NET_CLS_ACT
469         ---help---
470           Say Y here to do stateless NAT on IPv4 packets.  You should use
471           netfilter for NAT unless you know what you are doing.
472
473           To compile this code as a module, choose M here: the
474           module will be called nat.
475
476 config NET_ACT_PEDIT
477         tristate "Packet Editing"
478         depends on NET_CLS_ACT
479         ---help---
480           Say Y here if you want to mangle the content of packets.
481
482           To compile this code as a module, choose M here: the
483           module will be called pedit.
484
485 config NET_ACT_SIMP
486         tristate "Simple Example (Debug)"
487         depends on NET_CLS_ACT
488         ---help---
489           Say Y here to add a simple action for demonstration purposes.
490           It is meant as an example and for debugging purposes. It will
491           print a configured policy string followed by the packet count
492           to the console for every packet that passes by.
493
494           If unsure, say N.
495
496           To compile this code as a module, choose M here: the
497           module will be called simple.
498
499 config NET_ACT_SKBEDIT
500         tristate "SKB Editing"
501         depends on NET_CLS_ACT
502         ---help---
503           Say Y here to change skb priority or queue_mapping settings.
504
505           If unsure, say N.
506
507           To compile this code as a module, choose M here: the
508           module will be called skbedit.
509
510 config NET_CLS_IND
511         bool "Incoming device classification"
512         depends on NET_CLS_U32 || NET_CLS_FW
513         ---help---
514           Say Y here to extend the u32 and fw classifier to support
515           classification based on the incoming device. This option is
516           likely to disappear in favour of the metadata ematch.
517
518 endif # NET_SCHED
519
520 config NET_SCH_FIFO
521         bool