vserver 1.9.5.x5
[linux-2.6.git] / net / sched / Kconfig
1 #
2 # Traffic control configuration.
3
4 choice
5         prompt "Packet scheduler clock source"
6         depends on NET_SCHED
7         default NET_SCH_CLK_JIFFIES
8         help
9           Packet schedulers need a monotonic clock that increments at a static
10           rate. The kernel provides several suitable interfaces, each with
11           different properties:
12           
13           - high resolution (us or better)
14           - fast to read (minimal locking, no i/o access)
15           - synchronized on all processors
16           - handles cpu clock frequency changes
17
18           but nothing provides all of the above.
19
20 config NET_SCH_CLK_JIFFIES
21         bool "Timer interrupt"
22         help
23           Say Y here if you want to use the timer interrupt (jiffies) as clock
24           source. This clock source is fast, synchronized on all processors and
25           handles cpu clock frequency changes, but its resolution is too low
26           for accurate shaping except at very low speed.
27
28 config NET_SCH_CLK_GETTIMEOFDAY
29         bool "gettimeofday"
30         help
31           Say Y here if you want to use gettimeofday as clock source. This clock
32           source has high resolution, is synchronized on all processors and
33           handles cpu clock frequency changes, but it is slow.
34
35           Choose this if you need a high resolution clock source but can't use
36           the CPU's cycle counter.
37
38 config NET_SCH_CLK_CPU
39         bool "CPU cycle counter"
40         depends on X86_TSC || X86_64 || ALPHA || SPARC64 || PPC64 || IA64
41         help
42           Say Y here if you want to use the CPU's cycle counter as clock source.
43           This is a cheap and high resolution clock source, but on some
44           architectures it is not synchronized on all processors and doesn't
45           handle cpu clock frequency changes.
46
47           The useable cycle counters are:
48
49                 x86/x86_64      - Timestamp Counter
50                 alpha           - Cycle Counter
51                 sparc64         - %ticks register
52                 ppc64           - Time base
53                 ia64            - Interval Time Counter
54
55           Choose this if your CPU's cycle counter is working properly.
56
57 endchoice
58
59 config NET_SCH_CBQ
60         tristate "CBQ packet scheduler"
61         depends on NET_SCHED
62         ---help---
63           Say Y here if you want to use the Class-Based Queueing (CBQ) packet
64           scheduling algorithm for some of your network devices.  This
65           algorithm classifies the waiting packets into a tree-like hierarchy
66           of classes; the leaves of this tree are in turn scheduled by
67           separate algorithms (called "disciplines" in this context).
68
69           See the top of <file:net/sched/sch_cbq.c> for references about the
70           CBQ algorithm.
71
72           CBQ is a commonly used scheduler, so if you're unsure, you should
73           say Y here. Then say Y to all the queueing algorithms below that you
74           want to use as CBQ disciplines.  Then say Y to "Packet classifier
75           API" and say Y to all the classifiers you want to use; a classifier
76           is a routine that allows you to sort your outgoing traffic into
77           classes based on a certain criterion.
78
79           To compile this code as a module, choose M here: the
80           module will be called sch_cbq.
81
82 config NET_SCH_HTB
83         tristate "HTB packet scheduler"
84         depends on NET_SCHED
85         ---help---
86           Say Y here if you want to use the Hierarchical Token Buckets (HTB)
87           packet scheduling algorithm for some of your network devices. See
88           <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
89           in-depth articles.
90
91           HTB is very similar to the CBQ regarding its goals however is has 
92           different properties and different algorithm.
93
94           To compile this code as a module, choose M here: the
95           module will be called sch_htb.
96
97 config NET_SCH_HFSC
98         tristate "HFSC packet scheduler"
99         depends on NET_SCHED
100         ---help---
101           Say Y here if you want to use the Hierarchical Fair Service Curve
102           (HFSC) packet scheduling algorithm for some of your network devices.
103
104           To compile this code as a module, choose M here: the
105           module will be called sch_hfsc.
106
107 #tristate '  H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ
108 config NET_SCH_ATM
109         tristate "ATM pseudo-scheduler"
110         depends on NET_SCHED && ATM
111         ---help---
112           Say Y here if you want to use the ATM pseudo-scheduler.  This
113           provides a framework for invoking classifiers (aka "filters"), which
114           in turn select classes of this queuing discipline.  Each class maps
115           the flow(s) it is handling to a given virtual circuit (see the top of
116           <file:net/sched/sch_atm.c>).
117
118           To compile this code as a module, choose M here: the
119           module will be called sch_atm.
120
121 config NET_SCH_PRIO
122         tristate "The simplest PRIO pseudoscheduler"
123         depends on NET_SCHED
124         help
125           Say Y here if you want to use an n-band priority queue packet
126           "scheduler" for some of your network devices or as a leaf discipline
127           for the CBQ scheduling algorithm. If unsure, say Y.
128
129           To compile this code as a module, choose M here: the
130           module will be called sch_prio.
131
132 config NET_SCH_RED
133         tristate "RED queue"
134         depends on NET_SCHED
135         help
136           Say Y here if you want to use the Random Early Detection (RED)
137           packet scheduling algorithm for some of your network devices (see
138           the top of <file:net/sched/sch_red.c> for details and references
139           about the algorithm).
140
141           To compile this code as a module, choose M here: the
142           module will be called sch_red.
143
144 config NET_SCH_SFQ
145         tristate "SFQ queue"
146         depends on NET_SCHED
147         ---help---
148           Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
149           packet scheduling algorithm for some of your network devices or as a
150           leaf discipline for the CBQ scheduling algorithm (see the top of
151           <file:net/sched/sch_sfq.c> for details and references about the SFQ
152           algorithm).
153
154           To compile this code as a module, choose M here: the
155           module will be called sch_sfq.
156
157 config NET_SCH_TEQL
158         tristate "TEQL queue"
159         depends on NET_SCHED
160         ---help---
161           Say Y here if you want to use the True Link Equalizer (TLE) packet
162           scheduling algorithm for some of your network devices or as a leaf
163           discipline for the CBQ scheduling algorithm. This queueing
164           discipline allows the combination of several physical devices into
165           one virtual device. (see the top of <file:net/sched/sch_teql.c> for
166           details).
167
168           To compile this code as a module, choose M here: the
169           module will be called sch_teql.
170
171 config NET_SCH_TBF
172         tristate "TBF queue"
173         depends on NET_SCHED
174         help
175           Say Y here if you want to use the Simple Token Bucket Filter (TBF)
176           packet scheduling algorithm for some of your network devices or as a
177           leaf discipline for the CBQ scheduling algorithm (see the top of
178           <file:net/sched/sch_tbf.c> for a description of the TBF algorithm).
179
180           To compile this code as a module, choose M here: the
181           module will be called sch_tbf.
182
183 config NET_SCH_GRED
184         tristate "GRED queue"
185         depends on NET_SCHED
186         help
187           Say Y here if you want to use the Generic Random Early Detection
188           (RED) packet scheduling algorithm for some of your network devices
189           (see the top of <file:net/sched/sch_red.c> for details and
190           references about the algorithm).
191
192           To compile this code as a module, choose M here: the
193           module will be called sch_gred.
194
195 config NET_SCH_DSMARK
196         tristate "Diffserv field marker"
197         depends on NET_SCHED
198         help
199           Say Y if you want to schedule packets according to the
200           Differentiated Services architecture proposed in RFC 2475.
201           Technical information on this method, with pointers to associated
202           RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
203
204           To compile this code as a module, choose M here: the
205           module will be called sch_dsmark.
206
207 config NET_SCH_NETEM
208         tristate "Network emulator"
209         depends on NET_SCHED
210         help
211           Say Y if you want to emulate network delay, loss, and packet
212           re-ordering. This is often useful to simulate networks when
213           testing applications or protocols.
214
215           To compile this driver as a module, choose M here: the module
216           will be called sch_netem.
217
218           If unsure, say N.
219
220 config NET_SCH_INGRESS
221         tristate "Ingress Qdisc"
222         depends on NET_SCHED 
223         help
224           If you say Y here, you will be able to police incoming bandwidth
225           and drop packets when this bandwidth exceeds your desired rate.
226           If unsure, say Y.
227
228           To compile this code as a module, choose M here: the
229           module will be called sch_ingress.
230
231 config NET_QOS
232         bool "QoS support"
233         depends on NET_SCHED
234         ---help---
235           Say Y here if you want to include Quality Of Service scheduling
236           features, which means that you will be able to request certain
237           rate-of-flow limits for your network devices.
238
239           This Quality of Service (QoS) support will enable you to use
240           Differentiated Services (diffserv) and Resource Reservation Protocol
241           (RSVP) on your Linux router if you also say Y to "Packet classifier
242           API" and to some classifiers below. Documentation and software is at
243           <http://diffserv.sourceforge.net/>.
244
245           Note that the answer to this question won't directly affect the
246           kernel: saying N will just cause the configurator to skip all
247           the questions about QoS support.
248
249 config NET_ESTIMATOR
250         bool "Rate estimator"
251         depends on NET_QOS
252         help
253           In order for Quality of Service scheduling to work, the current
254           rate-of-flow for a network device has to be estimated; if you say Y
255           here, the kernel will do just that.
256
257 config NET_CLS
258         bool "Packet classifier API"
259         depends on NET_SCHED
260         ---help---
261           The CBQ scheduling algorithm requires that network packets which are
262           scheduled to be sent out over a network device be classified
263           according to some criterion. If you say Y here, you will get a
264           choice of several different packet classifiers with the following
265           questions.
266
267           This will enable you to use Differentiated Services (diffserv) and
268           Resource Reservation Protocol (RSVP) on your Linux router.
269           Documentation and software is at
270           <http://diffserv.sourceforge.net/>.
271
272 config NET_CLS_TCINDEX
273         tristate "TC index classifier"
274         depends on NET_CLS
275         help
276           If you say Y here, you will be able to classify outgoing packets
277           according to the tc_index field of the skb. You will want this
278           feature if you want to implement Differentiated Services using
279           sch_dsmark. If unsure, say Y.
280
281           To compile this code as a module, choose M here: the
282           module will be called cls_tcindex.
283
284 config NET_CLS_ROUTE4
285         tristate "Routing table based classifier"
286         depends on NET_CLS
287         select NET_CLS_ROUTE
288         help
289           If you say Y here, you will be able to classify outgoing packets
290           according to the route table entry they matched. If unsure, say Y.
291
292           To compile this code as a module, choose M here: the
293           module will be called cls_route.
294
295 config NET_CLS_ROUTE
296         bool
297         default n
298
299 config NET_CLS_FW
300         tristate "Firewall based classifier"
301         depends on NET_CLS
302         help
303           If you say Y here, you will be able to classify outgoing packets
304           according to firewall criteria you specified.
305
306           To compile this code as a module, choose M here: the
307           module will be called cls_fw.
308
309 config NET_CLS_U32
310         tristate "U32 classifier"
311         depends on NET_CLS
312         help
313           If you say Y here, you will be able to classify outgoing packets
314           according to their destination address. If unsure, say Y.
315
316           To compile this code as a module, choose M here: the
317           module will be called cls_u32.
318
319 config CLS_U32_PERF
320         bool "U32 classifier performance counters"
321         depends on NET_CLS_U32
322         help
323           gathers stats that could be used to tune u32 classifier performance.
324           Requires a new iproute2
325           You MUST NOT turn this on if you dont have an update iproute2.
326
327 config NET_CLS_IND
328         bool "classify input device (slows things u32/fw) "
329         depends on NET_CLS_U32 || NET_CLS_FW
330         help
331           This option will be killed eventually when a 
332           metadata action appears because it slows things a little
333           Available only for u32 and fw classifiers.
334           Requires a new iproute2
335           You MUST NOT turn this on if you dont have an update iproute2.
336
337 config CLS_U32_MARK
338         bool "Use nfmark as a key in U32 classifier"
339         depends on NET_CLS_U32 && NETFILTER
340         help
341           This allows you to match mark in a u32 filter.
342           Example:
343           tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 \
344                 match mark 0x0090 0xffff \
345                 match ip dst 4.4.4.4 \
346                 flowid 1:90
347           You must use a new iproute2 to use this feature.
348
349 config NET_CLS_RSVP
350         tristate "Special RSVP classifier"
351         depends on NET_CLS && NET_QOS
352         ---help---
353           The Resource Reservation Protocol (RSVP) permits end systems to
354           request a minimum and maximum data flow rate for a connection; this
355           is important for real time data such as streaming sound or video.
356
357           Say Y here if you want to be able to classify outgoing packets based
358           on their RSVP requests.
359
360           To compile this code as a module, choose M here: the
361           module will be called cls_rsvp.
362
363 config NET_CLS_RSVP6
364         tristate "Special RSVP classifier for IPv6"
365         depends on NET_CLS && NET_QOS
366         ---help---
367           The Resource Reservation Protocol (RSVP) permits end systems to
368           request a minimum and maximum data flow rate for a connection; this
369           is important for real time data such as streaming sound or video.
370
371           Say Y here if you want to be able to classify outgoing packets based
372           on their RSVP requests and you are using the new Internet Protocol
373           IPv6 as opposed to the older and more common IPv4.
374
375           To compile this code as a module, choose M here: the
376           module will be called cls_rsvp6.
377
378 config NET_CLS_ACT
379         bool "Packet ACTION"
380         depends on EXPERIMENTAL && NET_CLS && NET_QOS
381         ---help---
382         This option requires you have a new iproute2. It enables
383         tc extensions which can be used with tc classifiers.
384           You MUST NOT turn this on if you dont have an update iproute2.
385
386 config NET_ACT_POLICE
387         tristate "Policing Actions"
388         depends on NET_CLS_ACT 
389         ---help---
390         If you are using a newer iproute2 select this one, otherwise use one
391         below to select a policer.
392           You MUST NOT turn this on if you dont have an update iproute2.
393
394 config NET_ACT_GACT
395         tristate "generic Actions"
396         depends on NET_CLS_ACT
397         ---help---
398         You must have new iproute2 to use this feature.
399         This adds simple filtering actions like drop, accept etc.
400
401 config GACT_PROB
402         bool "generic Actions probability"
403         depends on NET_ACT_GACT
404         ---help---
405         Allows generic actions to be randomly or deterministically used.
406
407 config NET_ACT_MIRRED
408         tristate "Packet In/Egress redirecton/mirror Actions"
409         depends on NET_CLS_ACT
410         ---help---
411         requires new iproute2
412         This allows packets to be mirrored or redirected to netdevices
413
414 config NET_ACT_IPT
415         tristate "iptables Actions"
416         depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
417         ---help---
418         requires new iproute2
419         This allows iptables targets to be used by tc filters
420
421 config NET_ACT_PEDIT
422         tristate "Generic Packet Editor Actions"
423         depends on NET_CLS_ACT
424         ---help---
425         requires new iproute2
426         This allows for packets to be generically edited
427
428 config NET_CLS_POLICE
429         bool "Traffic policing (needed for in/egress)"
430         depends on NET_CLS && NET_QOS && NET_CLS_ACT!=y
431         help
432           Say Y to support traffic policing (bandwidth limits).  Needed for
433           ingress and egress rate limiting.
434