Pull xpc-disengage into release branch
[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         ---help---
8           When the kernel has several packets to send out over a network
9           device, it has to decide which ones to send first, which ones to
10           delay, and which ones to drop. This is the job of the packet
11           scheduler, and several different algorithms for how to do this
12           "fairly" have been proposed.
13
14           If you say N here, you will get the standard packet scheduler, which
15           is a FIFO (first come, first served). If you say Y here, you will be
16           able to choose from among several alternative algorithms which can
17           then be attached to different network devices. This is useful for
18           example if some of your network devices are real time devices that
19           need a certain minimum data flow rate, or if you need to limit the
20           maximum data flow rate for traffic which matches specified criteria.
21           This code is considered to be experimental.
22
23           To administer these schedulers, you'll need the user-level utilities
24           from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>.
25           That package also contains some documentation; for more, check out
26           <http://snafu.freedom.org/linux2.2/iproute-notes.html>.
27
28           This Quality of Service (QoS) support will enable you to use
29           Differentiated Services (diffserv) and Resource Reservation Protocol
30           (RSVP) on your Linux router if you also say Y to "QoS support",
31           "Packet classifier API" and to some classifiers below. Documentation
32           and software is at <http://diffserv.sourceforge.net/>.
33
34           If you say Y here and to "/proc file system" below, you will be able
35           to read status information about packet schedulers from the file
36           /proc/net/psched.
37
38           The available schedulers are listed in the following questions; you
39           can say Y to as many as you like. If unsure, say N now.
40
41 choice
42         prompt "Packet scheduler clock source"
43         depends on NET_SCHED
44         default NET_SCH_CLK_JIFFIES
45         help
46           Packet schedulers need a monotonic clock that increments at a static
47           rate. The kernel provides several suitable interfaces, each with
48           different properties:
49           
50           - high resolution (us or better)
51           - fast to read (minimal locking, no i/o access)
52           - synchronized on all processors
53           - handles cpu clock frequency changes
54
55           but nothing provides all of the above.
56
57 config NET_SCH_CLK_JIFFIES
58         bool "Timer interrupt"
59         help
60           Say Y here if you want to use the timer interrupt (jiffies) as clock
61           source. This clock source is fast, synchronized on all processors and
62           handles cpu clock frequency changes, but its resolution is too low
63           for accurate shaping except at very low speed.
64
65 config NET_SCH_CLK_GETTIMEOFDAY
66         bool "gettimeofday"
67         help
68           Say Y here if you want to use gettimeofday as clock source. This clock
69           source has high resolution, is synchronized on all processors and
70           handles cpu clock frequency changes, but it is slow.
71
72           Choose this if you need a high resolution clock source but can't use
73           the CPU's cycle counter.
74
75 # don't allow on SMP x86 because they can have unsynchronized TSCs.
76 # gettimeofday is a good alternative
77 config NET_SCH_CLK_CPU
78         bool "CPU cycle counter"
79         depends on ((X86_TSC || X86_64) && !SMP) || ALPHA || SPARC64 || PPC64 || IA64
80         help
81           Say Y here if you want to use the CPU's cycle counter as clock source.
82           This is a cheap and high resolution clock source, but on some
83           architectures it is not synchronized on all processors and doesn't
84           handle cpu clock frequency changes.
85
86           The useable cycle counters are:
87
88                 x86/x86_64      - Timestamp Counter
89                 alpha           - Cycle Counter
90                 sparc64         - %ticks register
91                 ppc64           - Time base
92                 ia64            - Interval Time Counter
93
94           Choose this if your CPU's cycle counter is working properly.
95
96 endchoice
97
98 config NET_SCH_CBQ
99         tristate "CBQ packet scheduler"
100         depends on NET_SCHED
101         ---help---
102           Say Y here if you want to use the Class-Based Queueing (CBQ) packet
103           scheduling algorithm for some of your network devices.  This
104           algorithm classifies the waiting packets into a tree-like hierarchy
105           of classes; the leaves of this tree are in turn scheduled by
106           separate algorithms (called "disciplines" in this context).
107
108           See the top of <file:net/sched/sch_cbq.c> for references about the
109           CBQ algorithm.
110
111           CBQ is a commonly used scheduler, so if you're unsure, you should
112           say Y here. Then say Y to all the queueing algorithms below that you
113           want to use as CBQ disciplines.  Then say Y to "Packet classifier
114           API" and say Y to all the classifiers you want to use; a classifier
115           is a routine that allows you to sort your outgoing traffic into
116           classes based on a certain criterion.
117
118           To compile this code as a module, choose M here: the
119           module will be called sch_cbq.
120
121 config NET_SCH_HTB
122         tristate "HTB packet scheduler"
123         depends on NET_SCHED
124         ---help---
125           Say Y here if you want to use the Hierarchical Token Buckets (HTB)
126           packet scheduling algorithm for some of your network devices. See
127           <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
128           in-depth articles.
129
130           HTB is very similar to the CBQ regarding its goals however is has 
131           different properties and different algorithm.
132
133           To compile this code as a module, choose M here: the
134           module will be called sch_htb.
135
136 config NET_SCH_HFSC
137         tristate "HFSC packet scheduler"
138         depends on NET_SCHED
139         ---help---
140           Say Y here if you want to use the Hierarchical Fair Service Curve
141           (HFSC) packet scheduling algorithm for some of your network devices.
142
143           To compile this code as a module, choose M here: the
144           module will be called sch_hfsc.
145
146 #tristate '  H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ
147 config NET_SCH_ATM
148         tristate "ATM pseudo-scheduler"
149         depends on NET_SCHED && ATM
150         ---help---
151           Say Y here if you want to use the ATM pseudo-scheduler.  This
152           provides a framework for invoking classifiers (aka "filters"), which
153           in turn select classes of this queuing discipline.  Each class maps
154           the flow(s) it is handling to a given virtual circuit (see the top of
155           <file:net/sched/sch_atm.c>).
156
157           To compile this code as a module, choose M here: the
158           module will be called sch_atm.
159
160 config NET_SCH_PRIO
161         tristate "The simplest PRIO pseudoscheduler"
162         depends on NET_SCHED
163         help
164           Say Y here if you want to use an n-band priority queue packet
165           "scheduler" for some of your network devices or as a leaf discipline
166           for the CBQ scheduling algorithm. If unsure, say Y.
167
168           To compile this code as a module, choose M here: the
169           module will be called sch_prio.
170
171 config NET_SCH_RED
172         tristate "RED queue"
173         depends on NET_SCHED
174         help
175           Say Y here if you want to use the Random Early Detection (RED)
176           packet scheduling algorithm for some of your network devices (see
177           the top of <file:net/sched/sch_red.c> for details and references
178           about the algorithm).
179
180           To compile this code as a module, choose M here: the
181           module will be called sch_red.
182
183 config NET_SCH_SFQ
184         tristate "SFQ queue"
185         depends on NET_SCHED
186         ---help---
187           Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
188           packet scheduling algorithm for some of your network devices or as a
189           leaf discipline for the CBQ scheduling algorithm (see the top of
190           <file:net/sched/sch_sfq.c> for details and references about the SFQ
191           algorithm).
192
193           To compile this code as a module, choose M here: the
194           module will be called sch_sfq.
195
196 config NET_SCH_TEQL
197         tristate "TEQL queue"
198         depends on NET_SCHED
199         ---help---
200           Say Y here if you want to use the True Link Equalizer (TLE) packet
201           scheduling algorithm for some of your network devices or as a leaf
202           discipline for the CBQ scheduling algorithm. This queueing
203           discipline allows the combination of several physical devices into
204           one virtual device. (see the top of <file:net/sched/sch_teql.c> for
205           details).
206
207           To compile this code as a module, choose M here: the
208           module will be called sch_teql.
209
210 config NET_SCH_TBF
211         tristate "TBF queue"
212         depends on NET_SCHED
213         help
214           Say Y here if you want to use the Simple Token Bucket Filter (TBF)
215           packet scheduling algorithm for some of your network devices or as a
216           leaf discipline for the CBQ scheduling algorithm (see the top of
217           <file:net/sched/sch_tbf.c> for a description of the TBF algorithm).
218
219           To compile this code as a module, choose M here: the
220           module will be called sch_tbf.
221
222 config NET_SCH_GRED
223         tristate "GRED queue"
224         depends on NET_SCHED
225         help
226           Say Y here if you want to use the Generic Random Early Detection
227           (GRED) packet scheduling algorithm for some of your network devices
228           (see the top of <file:net/sched/sch_red.c> for details and
229           references about the algorithm).
230
231           To compile this code as a module, choose M here: the
232           module will be called sch_gred.
233
234 config NET_SCH_DSMARK
235         tristate "Diffserv field marker"
236         depends on NET_SCHED
237         help
238           Say Y if you want to schedule packets according to the
239           Differentiated Services architecture proposed in RFC 2475.
240           Technical information on this method, with pointers to associated
241           RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
242
243           To compile this code as a module, choose M here: the
244           module will be called sch_dsmark.
245
246 config NET_SCH_NETEM
247         tristate "Network emulator"
248         depends on NET_SCHED
249         help
250           Say Y if you want to emulate network delay, loss, and packet
251           re-ordering. This is often useful to simulate networks when
252           testing applications or protocols.
253
254           To compile this driver as a module, choose M here: the module
255           will be called sch_netem.
256
257           If unsure, say N.
258
259 config NET_SCH_INGRESS
260         tristate "Ingress Qdisc"
261         depends on NET_SCHED 
262         help
263           If you say Y here, you will be able to police incoming bandwidth
264           and drop packets when this bandwidth exceeds your desired rate.
265           If unsure, say Y.
266
267           To compile this code as a module, choose M here: the
268           module will be called sch_ingress.
269
270 config NET_QOS
271         bool "QoS support"
272         depends on NET_SCHED
273         ---help---
274           Say Y here if you want to include Quality Of Service scheduling
275           features, which means that you will be able to request certain
276           rate-of-flow limits for your network devices.
277
278           This Quality of Service (QoS) support will enable you to use
279           Differentiated Services (diffserv) and Resource Reservation Protocol
280           (RSVP) on your Linux router if you also say Y to "Packet classifier
281           API" and to some classifiers below. Documentation and software is at
282           <http://diffserv.sourceforge.net/>.
283
284           Note that the answer to this question won't directly affect the
285           kernel: saying N will just cause the configurator to skip all
286           the questions about QoS support.
287
288 config NET_ESTIMATOR
289         bool "Rate estimator"
290         depends on NET_QOS
291         help
292           In order for Quality of Service scheduling to work, the current
293           rate-of-flow for a network device has to be estimated; if you say Y
294           here, the kernel will do just that.
295
296 config NET_CLS
297         bool "Packet classifier API"
298         depends on NET_SCHED
299         ---help---
300           The CBQ scheduling algorithm requires that network packets which are
301           scheduled to be sent out over a network device be classified
302           according to some criterion. If you say Y here, you will get a
303           choice of several different packet classifiers with the following
304           questions.
305
306           This will enable you to use Differentiated Services (diffserv) and
307           Resource Reservation Protocol (RSVP) on your Linux router.
308           Documentation and software is at
309           <http://diffserv.sourceforge.net/>.
310
311 config NET_CLS_BASIC
312         tristate "Basic classifier"
313         depends on NET_CLS
314         ---help---
315           Say Y here if you want to be able to classify packets using
316           only extended matches and actions.
317
318           To compile this code as a module, choose M here: the
319           module will be called cls_basic.
320
321 config NET_CLS_TCINDEX
322         tristate "TC index classifier"
323         depends on NET_CLS
324         help
325           If you say Y here, you will be able to classify outgoing packets
326           according to the tc_index field of the skb. You will want this
327           feature if you want to implement Differentiated Services using
328           sch_dsmark. If unsure, say Y.
329
330           To compile this code as a module, choose M here: the
331           module will be called cls_tcindex.
332
333 config NET_CLS_ROUTE4
334         tristate "Routing table based classifier"
335         depends on NET_CLS
336         select NET_CLS_ROUTE
337         help
338           If you say Y here, you will be able to classify outgoing packets
339           according to the route table entry they matched. If unsure, say Y.
340
341           To compile this code as a module, choose M here: the
342           module will be called cls_route.
343
344 config NET_CLS_ROUTE
345         bool
346         default n
347
348 config NET_CLS_FW
349         tristate "Firewall based classifier"
350         depends on NET_CLS
351         help
352           If you say Y here, you will be able to classify outgoing packets
353           according to firewall criteria you specified.
354
355           To compile this code as a module, choose M here: the
356           module will be called cls_fw.
357
358 config NET_CLS_U32
359         tristate "U32 classifier"
360         depends on NET_CLS
361         help
362           If you say Y here, you will be able to classify outgoing packets
363           according to their destination address. If unsure, say Y.
364
365           To compile this code as a module, choose M here: the
366           module will be called cls_u32.
367
368 config CLS_U32_PERF
369         bool "U32 classifier performance counters"
370         depends on NET_CLS_U32
371         help
372           gathers stats that could be used to tune u32 classifier performance.
373           Requires a new iproute2
374           You MUST NOT turn this on if you dont have an update iproute2.
375
376 config NET_CLS_IND
377         bool "classify input device (slows things u32/fw) "
378         depends on NET_CLS_U32 || NET_CLS_FW
379         help
380           This option will be killed eventually when a 
381           metadata action appears because it slows things a little
382           Available only for u32 and fw classifiers.
383           Requires a new iproute2
384           You MUST NOT turn this on if you dont have an update iproute2.
385
386 config CLS_U32_MARK
387         bool "Use nfmark as a key in U32 classifier"
388         depends on NET_CLS_U32 && NETFILTER
389         help
390           This allows you to match mark in a u32 filter.
391           Example:
392           tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 \
393                 match mark 0x0090 0xffff \
394                 match ip dst 4.4.4.4 \
395                 flowid 1:90
396           You must use a new iproute2 to use this feature.
397
398 config NET_CLS_RSVP
399         tristate "Special RSVP classifier"
400         depends on NET_CLS && NET_QOS
401         ---help---
402           The Resource Reservation Protocol (RSVP) permits end systems to
403           request a minimum and maximum data flow rate for a connection; this
404           is important for real time data such as streaming sound or video.
405
406           Say Y here if you want to be able to classify outgoing packets based
407           on their RSVP requests.
408
409           To compile this code as a module, choose M here: the
410           module will be called cls_rsvp.
411
412 config NET_CLS_RSVP6
413         tristate "Special RSVP classifier for IPv6"
414         depends on NET_CLS && NET_QOS
415         ---help---
416           The Resource Reservation Protocol (RSVP) permits end systems to
417           request a minimum and maximum data flow rate for a connection; this
418           is important for real time data such as streaming sound or video.
419
420           Say Y here if you want to be able to classify outgoing packets based
421           on their RSVP requests and you are using the new Internet Protocol
422           IPv6 as opposed to the older and more common IPv4.
423
424           To compile this code as a module, choose M here: the
425           module will be called cls_rsvp6.
426
427 config NET_EMATCH
428         bool "Extended Matches"
429         depends on NET_CLS
430         ---help---
431           Say Y here if you want to use extended matches on top of classifiers
432           and select the extended matches below.
433
434           Extended matches are small classification helpers not worth writing
435           a separate classifier.
436
437           You must have a recent version of the iproute2 tools in order to use
438           extended matches.
439
440 config NET_EMATCH_STACK
441         int "Stack size"
442         depends on NET_EMATCH
443         default "32"
444         ---help---
445           Size of the local stack variable used while evaluating the tree of
446           ematches. Limits the depth of the tree, i.e. the number of
447           encapsulated precedences. Every level requires 4 bytes of additional
448           stack space.
449
450 config NET_EMATCH_CMP
451         tristate "Simple packet data comparison"
452         depends on NET_EMATCH
453         ---help---
454           Say Y here if you want to be able to classify packets based on
455           simple packet data comparisons for 8, 16, and 32bit values.
456
457           To compile this code as a module, choose M here: the
458           module will be called em_cmp.
459
460 config NET_EMATCH_NBYTE
461         tristate "Multi byte comparison"
462         depends on NET_EMATCH
463         ---help---
464           Say Y here if you want to be able to classify packets based on
465           multiple byte comparisons mainly useful for IPv6 address comparisons.
466
467           To compile this code as a module, choose M here: the
468           module will be called em_nbyte.
469
470 config NET_EMATCH_U32
471         tristate "U32 hashing key"
472         depends on NET_EMATCH
473         ---help---
474           Say Y here if you want to be able to classify packets using
475           the famous u32 key in combination with logic relations.
476
477           To compile this code as a module, choose M here: the
478           module will be called em_u32.
479
480 config NET_EMATCH_META
481         tristate "Metadata"
482         depends on NET_EMATCH
483         ---help---
484           Say Y here if you want to be ablt to classify packets based on
485           metadata such as load average, netfilter attributes, socket
486           attributes and routing decisions.
487
488           To compile this code as a module, choose M here: the
489           module will be called em_meta.
490
491 config NET_EMATCH_TEXT
492         tristate "Textsearch"
493         depends on NET_EMATCH
494         select TEXTSEARCH
495         select TEXTSEARCH_KMP
496         select TEXTSEARCH_BM
497         select TEXTSEARCH_FSM
498         ---help---
499           Say Y here if you want to be ablt to classify packets based on
500           textsearch comparisons.
501
502           To compile this code as a module, choose M here: the
503           module will be called em_text.
504
505 config NET_CLS_ACT
506         bool "Packet ACTION"
507         depends on EXPERIMENTAL && NET_CLS && NET_QOS
508         ---help---
509         This option requires you have a new iproute2. It enables
510         tc extensions which can be used with tc classifiers.
511           You MUST NOT turn this on if you dont have an update iproute2.
512
513 config NET_ACT_POLICE
514         tristate "Policing Actions"
515         depends on NET_CLS_ACT 
516         ---help---
517         If you are using a newer iproute2 select this one, otherwise use one
518         below to select a policer.
519           You MUST NOT turn this on if you dont have an update iproute2.
520
521 config NET_ACT_GACT
522         tristate "generic Actions"
523         depends on NET_CLS_ACT
524         ---help---
525         You must have new iproute2 to use this feature.
526         This adds simple filtering actions like drop, accept etc.
527
528 config GACT_PROB
529         bool "generic Actions probability"
530         depends on NET_ACT_GACT
531         ---help---
532         Allows generic actions to be randomly or deterministically used.
533
534 config NET_ACT_MIRRED
535         tristate "Packet In/Egress redirecton/mirror Actions"
536         depends on NET_CLS_ACT
537         ---help---
538         requires new iproute2
539         This allows packets to be mirrored or redirected to netdevices
540
541 config NET_ACT_IPT
542         tristate "iptables Actions"
543         depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
544         ---help---
545         requires new iproute2
546         This allows iptables targets to be used by tc filters
547
548 config NET_ACT_PEDIT
549         tristate "Generic Packet Editor Actions"
550         depends on NET_CLS_ACT
551         ---help---
552         requires new iproute2
553         This allows for packets to be generically edited
554
555 config NET_CLS_POLICE
556         bool "Traffic policing (needed for in/egress)"
557         depends on NET_CLS && NET_QOS && NET_CLS_ACT!=y
558         help
559           Say Y to support traffic policing (bandwidth limits).  Needed for
560           ingress and egress rate limiting.
561
562 config NET_ACT_SIMP
563         tristate "Simple action"
564         depends on NET_CLS_ACT
565         ---help---
566         You must have new iproute2 to use this feature.
567         This adds a very simple action for demonstration purposes
568         The idea is to give action authors a basic example to look at.
569         All this action will do is print on the console the configured
570         policy string followed by _ then packet count.
571