xref: /openbmc/linux/net/sched/Kconfig (revision 367b8112)
1#
2# Traffic control configuration.
3#
4
5menuconfig 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
42if NET_SCHED
43
44comment "Queueing/Scheduling"
45
46config 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
63config 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
77config 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
86config 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
100config 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
109config 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
118config 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
129config 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
140config 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
152config 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
163config 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
174config 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
185config 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
197config 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
207comment "Classification"
208
209config NET_CLS
210	boolean
211
212config 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
222config 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
233config 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
244config NET_CLS_ROUTE
245	bool
246
247config 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
257config 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
267config 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
274config 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
280config 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
294config 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
308config 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
319config NET_EMATCH
320	bool "Extended Matches"
321	select NET_CLS
322	---help---
323	  Say Y here if you want to use extended matches on top of classifiers
324	  and select the extended matches below.
325
326	  Extended matches are small classification helpers not worth writing
327	  a separate classifier for.
328
329	  A recent version of the iproute2 package is required to use
330	  extended matches.
331
332config NET_EMATCH_STACK
333	int "Stack size"
334	depends on NET_EMATCH
335	default "32"
336	---help---
337	  Size of the local stack variable used while evaluating the tree of
338	  ematches. Limits the depth of the tree, i.e. the number of
339	  encapsulated precedences. Every level requires 4 bytes of additional
340	  stack space.
341
342config NET_EMATCH_CMP
343	tristate "Simple packet data comparison"
344	depends on NET_EMATCH
345	---help---
346	  Say Y here if you want to be able to classify packets based on
347	  simple packet data comparisons for 8, 16, and 32bit values.
348
349	  To compile this code as a module, choose M here: the
350	  module will be called em_cmp.
351
352config NET_EMATCH_NBYTE
353	tristate "Multi byte comparison"
354	depends on NET_EMATCH
355	---help---
356	  Say Y here if you want to be able to classify packets based on
357	  multiple byte comparisons mainly useful for IPv6 address comparisons.
358
359	  To compile this code as a module, choose M here: the
360	  module will be called em_nbyte.
361
362config NET_EMATCH_U32
363	tristate "U32 key"
364	depends on NET_EMATCH
365	---help---
366	  Say Y here if you want to be able to classify packets using
367	  the famous u32 key in combination with logic relations.
368
369	  To compile this code as a module, choose M here: the
370	  module will be called em_u32.
371
372config NET_EMATCH_META
373	tristate "Metadata"
374	depends on NET_EMATCH
375	---help---
376	  Say Y here if you want to be able to classify packets based on
377	  metadata such as load average, netfilter attributes, socket
378	  attributes and routing decisions.
379
380	  To compile this code as a module, choose M here: the
381	  module will be called em_meta.
382
383config NET_EMATCH_TEXT
384	tristate "Textsearch"
385	depends on NET_EMATCH
386	select TEXTSEARCH
387	select TEXTSEARCH_KMP
388	select TEXTSEARCH_BM
389	select TEXTSEARCH_FSM
390	---help---
391	  Say Y here if you want to be able to classify packets based on
392	  textsearch comparisons.
393
394	  To compile this code as a module, choose M here: the
395	  module will be called em_text.
396
397config NET_CLS_ACT
398	bool "Actions"
399	---help---
400	  Say Y here if you want to use traffic control actions. Actions
401	  get attached to classifiers and are invoked after a successful
402	  classification. They are used to overwrite the classification
403	  result, instantly drop or redirect packets, etc.
404
405	  A recent version of the iproute2 package is required to use
406	  extended matches.
407
408config NET_ACT_POLICE
409	tristate "Traffic Policing"
410        depends on NET_CLS_ACT
411        ---help---
412	  Say Y here if you want to do traffic policing, i.e. strict
413	  bandwidth limiting. This action replaces the existing policing
414	  module.
415
416	  To compile this code as a module, choose M here: the
417	  module will be called police.
418
419config NET_ACT_GACT
420        tristate "Generic actions"
421        depends on NET_CLS_ACT
422        ---help---
423	  Say Y here to take generic actions such as dropping and
424	  accepting packets.
425
426	  To compile this code as a module, choose M here: the
427	  module will be called gact.
428
429config GACT_PROB
430        bool "Probability support"
431        depends on NET_ACT_GACT
432        ---help---
433	  Say Y here to use the generic action randomly or deterministically.
434
435config NET_ACT_MIRRED
436        tristate "Redirecting and Mirroring"
437        depends on NET_CLS_ACT
438        ---help---
439	  Say Y here to allow packets to be mirrored or redirected to
440	  other devices.
441
442	  To compile this code as a module, choose M here: the
443	  module will be called mirred.
444
445config NET_ACT_IPT
446        tristate "IPtables targets"
447        depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
448        ---help---
449	  Say Y here to be able to invoke iptables targets after successful
450	  classification.
451
452	  To compile this code as a module, choose M here: the
453	  module will be called ipt.
454
455config NET_ACT_NAT
456        tristate "Stateless NAT"
457        depends on NET_CLS_ACT
458        ---help---
459	  Say Y here to do stateless NAT on IPv4 packets.  You should use
460	  netfilter for NAT unless you know what you are doing.
461
462	  To compile this code as a module, choose M here: the
463	  module will be called nat.
464
465config NET_ACT_PEDIT
466        tristate "Packet Editing"
467        depends on NET_CLS_ACT
468        ---help---
469	  Say Y here if you want to mangle the content of packets.
470
471	  To compile this code as a module, choose M here: the
472	  module will be called pedit.
473
474config NET_ACT_SIMP
475        tristate "Simple Example (Debug)"
476        depends on NET_CLS_ACT
477        ---help---
478	  Say Y here to add a simple action for demonstration purposes.
479	  It is meant as an example and for debugging purposes. It will
480	  print a configured policy string followed by the packet count
481	  to the console for every packet that passes by.
482
483	  If unsure, say N.
484
485	  To compile this code as a module, choose M here: the
486	  module will be called simple.
487
488config NET_ACT_SKBEDIT
489        tristate "SKB Editing"
490        depends on NET_CLS_ACT
491        ---help---
492	  Say Y here to change skb priority or queue_mapping settings.
493
494	  If unsure, say N.
495
496	  To compile this code as a module, choose M here: the
497	  module will be called skbedit.
498
499config NET_CLS_IND
500	bool "Incoming device classification"
501	depends on NET_CLS_U32 || NET_CLS_FW
502	---help---
503	  Say Y here to extend the u32 and fw classifier to support
504	  classification based on the incoming device. This option is
505	  likely to disappear in favour of the metadata ematch.
506
507endif # NET_SCHED
508
509config NET_SCH_FIFO
510	bool
511