blob: fcc89706745b88adbb4bbd3d8b4d674803ccef2f [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#
2# Traffic control configuration.
3#
Sam Ravnborg6a2e9b72005-07-11 21:13:56 -07004
Randy Dunlap85ef3e52007-10-18 21:56:38 -07005menuconfig NET_SCHED
Sam Ravnborg6a2e9b72005-07-11 21:13:56 -07006 bool "QoS and/or fair queueing"
David Kimdon3c62f752006-11-09 16:16:21 -08007 select NET_SCH_FIFO
Sam Ravnborg6a2e9b72005-07-11 21:13:56 -07008 ---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
Thomas Graf52ab4ac2005-11-01 15:13:02 +010011 delay, and which ones to drop. This is the job of the queueing
12 disciplines, several different algorithms for how to do this
Sam Ravnborg6a2e9b72005-07-11 21:13:56 -070013 "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
Andrew Shewmaker5d330cd2014-12-03 14:07:31 -080025 from the package iproute2+tc at
26 <https://www.kernel.org/pub/linux/utils/net/iproute2/>. That package
27 also contains some documentation; for more, check out
Michael Wittenc996d8b2010-11-15 19:55:34 +000028 <http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>.
Sam Ravnborg6a2e9b72005-07-11 21:13:56 -070029
30 This Quality of Service (QoS) support will enable you to use
31 Differentiated Services (diffserv) and Resource Reservation Protocol
Thomas Graf52ab4ac2005-11-01 15:13:02 +010032 (RSVP) on your Linux router if you also say Y to the corresponding
33 classifiers below. Documentation and software is at
34 <http://diffserv.sourceforge.net/>.
Sam Ravnborg6a2e9b72005-07-11 21:13:56 -070035
36 If you say Y here and to "/proc file system" below, you will be able
37 to read status information about packet schedulers from the file
38 /proc/net/psched.
39
40 The available schedulers are listed in the following questions; you
41 can say Y to as many as you like. If unsure, say N now.
42
Roman Zippel05b8b0f2005-11-17 15:22:39 -080043if NET_SCHED
44
Thomas Graf52ab4ac2005-11-01 15:13:02 +010045comment "Queueing/Scheduling"
Thomas Graf52ab4ac2005-11-01 15:13:02 +010046
Linus Torvalds1da177e2005-04-16 15:20:36 -070047config NET_SCH_CBQ
Thomas Graf52ab4ac2005-11-01 15:13:02 +010048 tristate "Class Based Queueing (CBQ)"
Linus Torvalds1da177e2005-04-16 15:20:36 -070049 ---help---
50 Say Y here if you want to use the Class-Based Queueing (CBQ) packet
Thomas Graf52ab4ac2005-11-01 15:13:02 +010051 scheduling algorithm. This algorithm classifies the waiting packets
52 into a tree-like hierarchy of classes; the leaves of this tree are
53 in turn scheduled by separate algorithms.
Linus Torvalds1da177e2005-04-16 15:20:36 -070054
Thomas Graf52ab4ac2005-11-01 15:13:02 +010055 See the top of <file:net/sched/sch_cbq.c> for more details.
Linus Torvalds1da177e2005-04-16 15:20:36 -070056
57 CBQ is a commonly used scheduler, so if you're unsure, you should
58 say Y here. Then say Y to all the queueing algorithms below that you
Thomas Graf52ab4ac2005-11-01 15:13:02 +010059 want to use as leaf disciplines.
Linus Torvalds1da177e2005-04-16 15:20:36 -070060
61 To compile this code as a module, choose M here: the
62 module will be called sch_cbq.
63
64config NET_SCH_HTB
Thomas Graf52ab4ac2005-11-01 15:13:02 +010065 tristate "Hierarchical Token Bucket (HTB)"
Linus Torvalds1da177e2005-04-16 15:20:36 -070066 ---help---
67 Say Y here if you want to use the Hierarchical Token Buckets (HTB)
Thomas Graf52ab4ac2005-11-01 15:13:02 +010068 packet scheduling algorithm. See
Linus Torvalds1da177e2005-04-16 15:20:36 -070069 <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
70 in-depth articles.
71
Thomas Graf52ab4ac2005-11-01 15:13:02 +010072 HTB is very similar to CBQ regarding its goals however is has
Linus Torvalds1da177e2005-04-16 15:20:36 -070073 different properties and different algorithm.
74
75 To compile this code as a module, choose M here: the
76 module will be called sch_htb.
77
78config NET_SCH_HFSC
Thomas Graf52ab4ac2005-11-01 15:13:02 +010079 tristate "Hierarchical Fair Service Curve (HFSC)"
Linus Torvalds1da177e2005-04-16 15:20:36 -070080 ---help---
81 Say Y here if you want to use the Hierarchical Fair Service Curve
Thomas Graf52ab4ac2005-11-01 15:13:02 +010082 (HFSC) packet scheduling algorithm.
Linus Torvalds1da177e2005-04-16 15:20:36 -070083
84 To compile this code as a module, choose M here: the
85 module will be called sch_hfsc.
86
Linus Torvalds1da177e2005-04-16 15:20:36 -070087config NET_SCH_ATM
Thomas Graf52ab4ac2005-11-01 15:13:02 +010088 tristate "ATM Virtual Circuits (ATM)"
Roman Zippel05b8b0f2005-11-17 15:22:39 -080089 depends on ATM
Linus Torvalds1da177e2005-04-16 15:20:36 -070090 ---help---
91 Say Y here if you want to use the ATM pseudo-scheduler. This
Thomas Graf52ab4ac2005-11-01 15:13:02 +010092 provides a framework for invoking classifiers, which in turn
93 select classes of this queuing discipline. Each class maps
94 the flow(s) it is handling to a given virtual circuit.
95
Gabriel Craciunescu99acaeb2007-07-18 02:00:04 -070096 See the top of <file:net/sched/sch_atm.c> for more details.
Linus Torvalds1da177e2005-04-16 15:20:36 -070097
98 To compile this code as a module, choose M here: the
99 module will be called sch_atm.
100
101config NET_SCH_PRIO
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100102 tristate "Multi Band Priority Queueing (PRIO)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100103 ---help---
Linus Torvalds1da177e2005-04-16 15:20:36 -0700104 Say Y here if you want to use an n-band priority queue packet
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100105 scheduler.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700106
107 To compile this code as a module, choose M here: the
108 module will be called sch_prio.
109
Alexander Duyck92651942008-09-12 16:29:34 -0700110config NET_SCH_MULTIQ
111 tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
112 ---help---
113 Say Y here if you want to use an n-band queue packet scheduler
114 to support devices that have multiple hardware transmit queues.
115
116 To compile this code as a module, choose M here: the
117 module will be called sch_multiq.
118
Linus Torvalds1da177e2005-04-16 15:20:36 -0700119config NET_SCH_RED
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100120 tristate "Random Early Detection (RED)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100121 ---help---
Linus Torvalds1da177e2005-04-16 15:20:36 -0700122 Say Y here if you want to use the Random Early Detection (RED)
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100123 packet scheduling algorithm.
124
125 See the top of <file:net/sched/sch_red.c> for more details.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700126
127 To compile this code as a module, choose M here: the
128 module will be called sch_red.
129
Eric Dumazete13e02a2011-02-23 10:56:17 +0000130config NET_SCH_SFB
131 tristate "Stochastic Fair Blue (SFB)"
132 ---help---
133 Say Y here if you want to use the Stochastic Fair Blue (SFB)
134 packet scheduling algorithm.
135
136 See the top of <file:net/sched/sch_sfb.c> for more details.
137
138 To compile this code as a module, choose M here: the
139 module will be called sch_sfb.
140
Linus Torvalds1da177e2005-04-16 15:20:36 -0700141config NET_SCH_SFQ
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100142 tristate "Stochastic Fairness Queueing (SFQ)"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700143 ---help---
144 Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
Gabriel Craciunescu99acaeb2007-07-18 02:00:04 -0700145 packet scheduling algorithm.
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100146
147 See the top of <file:net/sched/sch_sfq.c> for more details.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700148
149 To compile this code as a module, choose M here: the
150 module will be called sch_sfq.
151
152config NET_SCH_TEQL
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100153 tristate "True Link Equalizer (TEQL)"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700154 ---help---
155 Say Y here if you want to use the True Link Equalizer (TLE) packet
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100156 scheduling algorithm. This queueing discipline allows the combination
157 of several physical devices into one virtual device.
158
159 See the top of <file:net/sched/sch_teql.c> for more details.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160
161 To compile this code as a module, choose M here: the
162 module will be called sch_teql.
163
164config NET_SCH_TBF
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100165 tristate "Token Bucket Filter (TBF)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100166 ---help---
167 Say Y here if you want to use the Token Bucket Filter (TBF) packet
168 scheduling algorithm.
169
170 See the top of <file:net/sched/sch_tbf.c> for more details.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700171
172 To compile this code as a module, choose M here: the
173 module will be called sch_tbf.
174
Vinicius Costa Gomes585d7632017-10-16 18:01:26 -0700175config NET_SCH_CBS
176 tristate "Credit Based Shaper (CBS)"
177 ---help---
178 Say Y here if you want to use the Credit Based Shaper (CBS) packet
179 scheduling algorithm.
180
181 See the top of <file:net/sched/sch_cbs.c> for more details.
182
183 To compile this code as a module, choose M here: the
184 module will be called sch_cbs.
185
Vinicius Costa Gomes25db26a2018-07-03 15:42:53 -0700186config NET_SCH_ETF
187 tristate "Earliest TxTime First (ETF)"
188 help
189 Say Y here if you want to use the Earliest TxTime First (ETF) packet
190 scheduling algorithm.
191
192 See the top of <file:net/sched/sch_etf.c> for more details.
193
194 To compile this code as a module, choose M here: the
195 module will be called sch_etf.
196
Linus Torvalds1da177e2005-04-16 15:20:36 -0700197config NET_SCH_GRED
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100198 tristate "Generic Random Early Detection (GRED)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100199 ---help---
Linus Torvalds1da177e2005-04-16 15:20:36 -0700200 Say Y here if you want to use the Generic Random Early Detection
Lucas Correia Villa Real20cc6be2005-05-03 14:34:20 -0700201 (GRED) packet scheduling algorithm for some of your network devices
Linus Torvalds1da177e2005-04-16 15:20:36 -0700202 (see the top of <file:net/sched/sch_red.c> for details and
203 references about the algorithm).
204
205 To compile this code as a module, choose M here: the
206 module will be called sch_gred.
207
208config NET_SCH_DSMARK
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100209 tristate "Differentiated Services marker (DSMARK)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100210 ---help---
Linus Torvalds1da177e2005-04-16 15:20:36 -0700211 Say Y if you want to schedule packets according to the
212 Differentiated Services architecture proposed in RFC 2475.
213 Technical information on this method, with pointers to associated
214 RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
215
216 To compile this code as a module, choose M here: the
217 module will be called sch_dsmark.
218
219config NET_SCH_NETEM
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100220 tristate "Network emulator (NETEM)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100221 ---help---
Linus Torvalds1da177e2005-04-16 15:20:36 -0700222 Say Y if you want to emulate network delay, loss, and packet
223 re-ordering. This is often useful to simulate networks when
224 testing applications or protocols.
225
226 To compile this driver as a module, choose M here: the module
227 will be called sch_netem.
228
229 If unsure, say N.
230
Patrick McHardy13d2a1d2008-11-20 04:10:00 -0800231config NET_SCH_DRR
232 tristate "Deficit Round Robin scheduler (DRR)"
233 help
234 Say Y here if you want to use the Deficit Round Robin (DRR) packet
235 scheduling algorithm.
236
237 To compile this driver as a module, choose M here: the module
238 will be called sch_drr.
239
240 If unsure, say N.
241
John Fastabendb8970f02011-01-17 08:06:09 +0000242config NET_SCH_MQPRIO
243 tristate "Multi-queue priority scheduler (MQPRIO)"
244 help
245 Say Y here if you want to use the Multi-queue Priority scheduler.
246 This scheduler allows QOS to be offloaded on NICs that have support
247 for offloading QOS schedulers.
248
249 To compile this driver as a module, choose M here: the module will
250 be called sch_mqprio.
251
252 If unsure, say N.
253
stephen hemminger45e14432011-02-02 15:21:10 +0000254config NET_SCH_CHOKE
255 tristate "CHOose and Keep responsive flow scheduler (CHOKE)"
256 help
257 Say Y here if you want to use the CHOKe packet scheduler (CHOose
258 and Keep for responsive flows, CHOose and Kill for unresponsive
259 flows). This is a variation of RED which trys to penalize flows
260 that monopolize the queue.
261
262 To compile this code as a module, choose M here: the
263 module will be called sch_choke.
264
stephen hemminger0545a302011-04-04 05:30:58 +0000265config NET_SCH_QFQ
266 tristate "Quick Fair Queueing scheduler (QFQ)"
267 help
268 Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
269 packet scheduling algorithm.
270
271 To compile this driver as a module, choose M here: the module
272 will be called sch_qfq.
273
274 If unsure, say N.
275
Eric Dumazet76e3cc12012-05-10 07:51:25 +0000276config NET_SCH_CODEL
277 tristate "Controlled Delay AQM (CODEL)"
278 help
279 Say Y here if you want to use the Controlled Delay (CODEL)
280 packet scheduling algorithm.
281
282 To compile this driver as a module, choose M here: the module
283 will be called sch_codel.
284
285 If unsure, say N.
286
Eric Dumazet4b549a22012-05-11 09:30:50 +0000287config NET_SCH_FQ_CODEL
288 tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)"
289 help
290 Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL)
291 packet scheduling algorithm.
292
293 To compile this driver as a module, choose M here: the module
294 will be called sch_fq_codel.
295
296 If unsure, say N.
297
Eric Dumazetafe4fd02013-08-29 15:49:55 -0700298config NET_SCH_FQ
299 tristate "Fair Queue"
300 help
301 Say Y here if you want to use the FQ packet scheduling algorithm.
302
303 FQ does flow separation, and is able to respect pacing requirements
304 set by TCP stack into sk->sk_pacing_rate (for localy generated
305 traffic)
306
307 To compile this driver as a module, choose M here: the module
308 will be called sch_fq.
309
310 If unsure, say N.
311
Terry Lam10239ed2013-12-15 00:30:21 -0800312config NET_SCH_HHF
313 tristate "Heavy-Hitter Filter (HHF)"
314 help
315 Say Y here if you want to use the Heavy-Hitter Filter (HHF)
316 packet scheduling algorithm.
317
318 To compile this driver as a module, choose M here: the module
319 will be called sch_hhf.
320
Vijay Subramaniand4b36212014-01-04 17:33:55 -0800321config NET_SCH_PIE
322 tristate "Proportional Integral controller Enhanced (PIE) scheduler"
323 help
324 Say Y here if you want to use the Proportional Integral controller
325 Enhanced scheduler packet scheduling algorithm.
326 For more information, please see
327 http://tools.ietf.org/html/draft-pan-tsvwg-pie-00
328
329 To compile this driver as a module, choose M here: the module
330 will be called sch_pie.
331
332 If unsure, say N.
333
Linus Torvalds1da177e2005-04-16 15:20:36 -0700334config NET_SCH_INGRESS
Daniel Borkmann1f211a12016-01-07 22:29:47 +0100335 tristate "Ingress/classifier-action Qdisc"
Patrick McHardy72eb7bd2008-01-31 16:57:15 -0800336 depends on NET_CLS_ACT
Pablo Neira1cf519002015-05-13 18:19:37 +0200337 select NET_INGRESS
Daniel Borkmann1f211a12016-01-07 22:29:47 +0100338 select NET_EGRESS
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100339 ---help---
Daniel Borkmann1f211a12016-01-07 22:29:47 +0100340 Say Y here if you want to use classifiers for incoming and/or outgoing
341 packets. This qdisc doesn't do anything else besides running classifiers,
342 which can also have actions attached to them. In case of outgoing packets,
343 classifiers that this qdisc holds are executed in the transmit path
344 before real enqueuing to an egress qdisc happens.
345
Linus Torvalds1da177e2005-04-16 15:20:36 -0700346 If unsure, say Y.
347
Daniel Borkmann1f211a12016-01-07 22:29:47 +0100348 To compile this code as a module, choose M here: the module will be
349 called sch_ingress with alias of sch_clsact.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700350
Shriram Rajagopalanc3059be2012-02-05 13:51:32 +0000351config NET_SCH_PLUG
352 tristate "Plug network traffic until release (PLUG)"
353 ---help---
354
355 This queuing discipline allows userspace to plug/unplug a network
356 output queue, using the netlink interface. When it receives an
357 enqueue command it inserts a plug into the outbound queue that
358 causes following packets to enqueue until a dequeue command arrives
359 over netlink, causing the plug to be removed and resuming the normal
360 packet flow.
361
362 This module also provides a generic "network output buffering"
363 functionality (aka output commit), wherein upon arrival of a dequeue
364 command, only packets up to the first plug are released for delivery.
365 The Remus HA project uses this module to enable speculative execution
366 of virtual machines by allowing the generated network output to be rolled
367 back if needed.
368
Andrew Shewmaker5d330cd2014-12-03 14:07:31 -0800369 For more information, please refer to <http://wiki.xenproject.org/wiki/Remus>
Shriram Rajagopalanc3059be2012-02-05 13:51:32 +0000370
371 Say Y here if you are using this kernel for Xen dom0 and
372 want to protect Xen guests with Remus.
373
374 To compile this code as a module, choose M here: the
375 module will be called sch_plug.
376
stephen hemminger8ea3e432017-04-13 08:40:53 -0700377menuconfig NET_SCH_DEFAULT
378 bool "Allow override default queue discipline"
379 ---help---
380 Support for selection of default queuing discipline.
381
382 Nearly all users can safely say no here, and the default
383 of pfifo_fast will be used. Many distributions already set
384 the default value via /proc/sys/net/core/default_qdisc.
385
386 If unsure, say N.
387
388if NET_SCH_DEFAULT
389
390choice
391 prompt "Default queuing discipline"
392 default DEFAULT_PFIFO_FAST
393 help
394 Select the queueing discipline that will be used by default
395 for all network devices.
396
397 config DEFAULT_FQ
398 bool "Fair Queue" if NET_SCH_FQ
399
400 config DEFAULT_CODEL
401 bool "Controlled Delay" if NET_SCH_CODEL
402
403 config DEFAULT_FQ_CODEL
404 bool "Fair Queue Controlled Delay" if NET_SCH_FQ_CODEL
405
406 config DEFAULT_SFQ
407 bool "Stochastic Fair Queue" if NET_SCH_SFQ
408
409 config DEFAULT_PFIFO_FAST
410 bool "Priority FIFO Fast"
411endchoice
412
413config DEFAULT_NET_SCH
414 string
415 default "pfifo_fast" if DEFAULT_PFIFO_FAST
416 default "fq" if DEFAULT_FQ
417 default "fq_codel" if DEFAULT_FQ_CODEL
418 default "sfq" if DEFAULT_SFQ
419 default "pfifo_fast"
420endif
421
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100422comment "Classification"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700423
424config NET_CLS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500425 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -0700426
427config NET_CLS_BASIC
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100428 tristate "Elementary classification (BASIC)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100429 select NET_CLS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700430 ---help---
431 Say Y here if you want to be able to classify packets using
432 only extended matches and actions.
433
434 To compile this code as a module, choose M here: the
435 module will be called cls_basic.
436
437config NET_CLS_TCINDEX
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100438 tristate "Traffic-Control Index (TCINDEX)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100439 select NET_CLS
440 ---help---
441 Say Y here if you want to be able to classify packets based on
442 traffic control indices. You will want this feature if you want
443 to implement Differentiated Services together with DSMARK.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700444
445 To compile this code as a module, choose M here: the
446 module will be called cls_tcindex.
447
448config NET_CLS_ROUTE4
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100449 tristate "Routing decision (ROUTE)"
Randy Dunlap034cfe42011-05-19 19:23:28 -0400450 depends on INET
Patrick McHardyc7066f72011-01-14 13:36:42 +0100451 select IP_ROUTE_CLASSID
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100452 select NET_CLS
453 ---help---
454 If you say Y here, you will be able to classify packets
455 according to the route table entry they matched.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700456
457 To compile this code as a module, choose M here: the
458 module will be called cls_route.
459
Linus Torvalds1da177e2005-04-16 15:20:36 -0700460config NET_CLS_FW
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100461 tristate "Netfilter mark (FW)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100462 select NET_CLS
463 ---help---
464 If you say Y here, you will be able to classify packets
465 according to netfilter/firewall marks.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700466
467 To compile this code as a module, choose M here: the
468 module will be called cls_fw.
469
470config NET_CLS_U32
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100471 tristate "Universal 32bit comparisons w/ hashing (U32)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100472 select NET_CLS
473 ---help---
Matt LaPlante3539c272006-06-30 18:53:46 +0200474 Say Y here to be able to classify packets using a universal
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100475 32bit pieces based comparison scheme.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700476
477 To compile this code as a module, choose M here: the
478 module will be called cls_u32.
479
480config CLS_U32_PERF
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100481 bool "Performance counters support"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700482 depends on NET_CLS_U32
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100483 ---help---
484 Say Y here to make u32 gather additional statistics useful for
485 fine tuning u32 classifiers.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700486
487config CLS_U32_MARK
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100488 bool "Netfilter marks support"
Thomas Graf82e91ff2006-11-09 15:19:14 -0800489 depends on NET_CLS_U32
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100490 ---help---
491 Say Y here to be able to use netfilter marks as u32 key.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700492
493config NET_CLS_RSVP
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100494 tristate "IPv4 Resource Reservation Protocol (RSVP)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100495 select NET_CLS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700496 ---help---
497 The Resource Reservation Protocol (RSVP) permits end systems to
498 request a minimum and maximum data flow rate for a connection; this
499 is important for real time data such as streaming sound or video.
500
501 Say Y here if you want to be able to classify outgoing packets based
502 on their RSVP requests.
503
504 To compile this code as a module, choose M here: the
505 module will be called cls_rsvp.
506
507config NET_CLS_RSVP6
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100508 tristate "IPv6 Resource Reservation Protocol (RSVP6)"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100509 select NET_CLS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700510 ---help---
511 The Resource Reservation Protocol (RSVP) permits end systems to
512 request a minimum and maximum data flow rate for a connection; this
513 is important for real time data such as streaming sound or video.
514
515 Say Y here if you want to be able to classify outgoing packets based
Gabriel Craciunescu99acaeb2007-07-18 02:00:04 -0700516 on their RSVP requests and you are using the IPv6 protocol.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700517
518 To compile this code as a module, choose M here: the
519 module will be called cls_rsvp6.
520
Patrick McHardye5dfb812008-01-31 18:37:42 -0800521config NET_CLS_FLOW
522 tristate "Flow classifier"
523 select NET_CLS
524 ---help---
525 If you say Y here, you will be able to classify packets based on
526 a configurable combination of packet keys. This is mostly useful
527 in combination with SFQ.
528
529 To compile this code as a module, choose M here: the
530 module will be called cls_flow.
531
Thomas Graff4009232008-11-07 22:56:00 -0800532config NET_CLS_CGROUP
Ben Blum8e039d82010-03-23 05:24:03 +0000533 tristate "Control Group Classifier"
Thomas Graff4009232008-11-07 22:56:00 -0800534 select NET_CLS
Daniel Borkmannfe1217c2013-12-29 18:27:10 +0100535 select CGROUP_NET_CLASSID
Thomas Graff4009232008-11-07 22:56:00 -0800536 depends on CGROUPS
537 ---help---
538 Say Y here if you want to classify packets based on the control
539 cgroup of their process.
540
Ben Blum8e039d82010-03-23 05:24:03 +0000541 To compile this code as a module, choose M here: the
542 module will be called cls_cgroup.
543
Daniel Borkmann7d1d65c2013-10-28 16:43:02 +0100544config NET_CLS_BPF
545 tristate "BPF-based classifier"
546 select NET_CLS
547 ---help---
548 If you say Y here, you will be able to classify packets based on
549 programmable BPF (JIT'ed) filters as an alternative to ematches.
550
551 To compile this code as a module, choose M here: the module will
552 be called cls_bpf.
553
Jiri Pirko77b99002015-05-12 14:56:21 +0200554config NET_CLS_FLOWER
555 tristate "Flower classifier"
556 select NET_CLS
557 ---help---
558 If you say Y here, you will be able to classify packets based on
559 a configurable combination of packet keys and masks.
560
561 To compile this code as a module, choose M here: the module will
562 be called cls_flower.
563
Jiri Pirkobf3994d2016-07-21 12:03:11 +0200564config NET_CLS_MATCHALL
565 tristate "Match-all classifier"
566 select NET_CLS
567 ---help---
568 If you say Y here, you will be able to classify packets based on
569 nothing. Every packet will match.
570
571 To compile this code as a module, choose M here: the module will
572 be called cls_matchall.
573
Linus Torvalds1da177e2005-04-16 15:20:36 -0700574config NET_EMATCH
575 bool "Extended Matches"
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100576 select NET_CLS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700577 ---help---
578 Say Y here if you want to use extended matches on top of classifiers
579 and select the extended matches below.
580
581 Extended matches are small classification helpers not worth writing
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100582 a separate classifier for.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700583
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100584 A recent version of the iproute2 package is required to use
Linus Torvalds1da177e2005-04-16 15:20:36 -0700585 extended matches.
586
587config NET_EMATCH_STACK
588 int "Stack size"
589 depends on NET_EMATCH
590 default "32"
591 ---help---
592 Size of the local stack variable used while evaluating the tree of
593 ematches. Limits the depth of the tree, i.e. the number of
Thomas Grafb8249792005-06-08 15:10:22 -0700594 encapsulated precedences. Every level requires 4 bytes of additional
Linus Torvalds1da177e2005-04-16 15:20:36 -0700595 stack space.
596
597config NET_EMATCH_CMP
598 tristate "Simple packet data comparison"
599 depends on NET_EMATCH
600 ---help---
601 Say Y here if you want to be able to classify packets based on
602 simple packet data comparisons for 8, 16, and 32bit values.
603
604 To compile this code as a module, choose M here: the
605 module will be called em_cmp.
606
607config NET_EMATCH_NBYTE
608 tristate "Multi byte comparison"
609 depends on NET_EMATCH
610 ---help---
611 Say Y here if you want to be able to classify packets based on
612 multiple byte comparisons mainly useful for IPv6 address comparisons.
613
614 To compile this code as a module, choose M here: the
615 module will be called em_nbyte.
616
617config NET_EMATCH_U32
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100618 tristate "U32 key"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700619 depends on NET_EMATCH
620 ---help---
621 Say Y here if you want to be able to classify packets using
622 the famous u32 key in combination with logic relations.
623
624 To compile this code as a module, choose M here: the
625 module will be called em_u32.
626
627config NET_EMATCH_META
628 tristate "Metadata"
629 depends on NET_EMATCH
630 ---help---
Adrian Bunkbb7e8c52006-01-11 16:40:30 -0800631 Say Y here if you want to be able to classify packets based on
Linus Torvalds1da177e2005-04-16 15:20:36 -0700632 metadata such as load average, netfilter attributes, socket
633 attributes and routing decisions.
634
635 To compile this code as a module, choose M here: the
636 module will be called em_meta.
637
Thomas Grafd675c982005-06-23 21:00:58 -0700638config NET_EMATCH_TEXT
639 tristate "Textsearch"
640 depends on NET_EMATCH
David S. Millerf2d368f2005-06-23 23:55:41 -0700641 select TEXTSEARCH
David S. Millerf7704342005-06-24 17:39:03 -0700642 select TEXTSEARCH_KMP
David S. Miller29cb9f92005-08-25 16:23:11 -0700643 select TEXTSEARCH_BM
David S. Millerf7704342005-06-24 17:39:03 -0700644 select TEXTSEARCH_FSM
Thomas Grafd675c982005-06-23 21:00:58 -0700645 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100646 Say Y here if you want to be able to classify packets based on
David S. Millerf7704342005-06-24 17:39:03 -0700647 textsearch comparisons.
Thomas Grafd675c982005-06-23 21:00:58 -0700648
649 To compile this code as a module, choose M here: the
650 module will be called em_text.
651
Rostislav Lisovyf057bbb2012-07-04 05:32:03 +0200652config NET_EMATCH_CANID
653 tristate "CAN Identifier"
Marc Kleine-Buddea303fbf2012-11-23 00:44:57 +0000654 depends on NET_EMATCH && (CAN=y || CAN=m)
Rostislav Lisovyf057bbb2012-07-04 05:32:03 +0200655 ---help---
656 Say Y here if you want to be able to classify CAN frames based
657 on CAN Identifier.
658
659 To compile this code as a module, choose M here: the
660 module will be called em_canid.
661
Florian Westphal6d4fa852012-07-11 10:56:57 +0000662config NET_EMATCH_IPSET
663 tristate "IPset"
664 depends on NET_EMATCH && IP_SET
665 ---help---
666 Say Y here if you want to be able to classify packets based on
667 ipset membership.
668
669 To compile this code as a module, choose M here: the
670 module will be called em_ipset.
671
Eyal Birgerccc007e2018-02-15 19:42:43 +0200672config NET_EMATCH_IPT
673 tristate "IPtables Matches"
674 depends on NET_EMATCH && NETFILTER && NETFILTER_XTABLES
675 ---help---
676 Say Y here to be able to classify packets based on iptables
677 matches.
678 Current supported match is "policy" which allows packet classification
679 based on IPsec policy that was used during decapsulation
680
681 To compile this code as a module, choose M here: the
682 module will be called em_ipt.
683
Linus Torvalds1da177e2005-04-16 15:20:36 -0700684config NET_CLS_ACT
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100685 bool "Actions"
Jiri Pirko8ec15072017-06-04 18:49:28 +0200686 select NET_CLS
Linus Torvalds1da177e2005-04-16 15:20:36 -0700687 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100688 Say Y here if you want to use traffic control actions. Actions
689 get attached to classifiers and are invoked after a successful
690 classification. They are used to overwrite the classification
691 result, instantly drop or redirect packets, etc.
692
693 A recent version of the iproute2 package is required to use
694 extended matches.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700695
696config NET_ACT_POLICE
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100697 tristate "Traffic Policing"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700698 depends on NET_CLS_ACT
699 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100700 Say Y here if you want to do traffic policing, i.e. strict
701 bandwidth limiting. This action replaces the existing policing
702 module.
703
704 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800705 module will be called act_police.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700706
707config NET_ACT_GACT
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100708 tristate "Generic actions"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700709 depends on NET_CLS_ACT
710 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100711 Say Y here to take generic actions such as dropping and
712 accepting packets.
713
714 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800715 module will be called act_gact.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700716
717config GACT_PROB
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100718 bool "Probability support"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700719 depends on NET_ACT_GACT
720 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100721 Say Y here to use the generic action randomly or deterministically.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700722
723config NET_ACT_MIRRED
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100724 tristate "Redirecting and Mirroring"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700725 depends on NET_CLS_ACT
726 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100727 Say Y here to allow packets to be mirrored or redirected to
728 other devices.
729
730 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800731 module will be called act_mirred.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700732
Yotam Gigi5c5670f2017-01-23 11:07:09 +0100733config NET_ACT_SAMPLE
734 tristate "Traffic Sampling"
735 depends on NET_CLS_ACT
736 select PSAMPLE
737 ---help---
738 Say Y here to allow packet sampling tc action. The packet sample
739 action consists of statistically choosing packets and sampling
740 them using the psample module.
741
742 To compile this code as a module, choose M here: the
743 module will be called act_sample.
744
Linus Torvalds1da177e2005-04-16 15:20:36 -0700745config NET_ACT_IPT
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100746 tristate "IPtables targets"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700747 depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
748 ---help---
Matt LaPlante3539c272006-06-30 18:53:46 +0200749 Say Y here to be able to invoke iptables targets after successful
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100750 classification.
751
752 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800753 module will be called act_ipt.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700754
Herbert Xub4219952007-09-27 12:48:05 -0700755config NET_ACT_NAT
756 tristate "Stateless NAT"
757 depends on NET_CLS_ACT
Herbert Xub4219952007-09-27 12:48:05 -0700758 ---help---
759 Say Y here to do stateless NAT on IPv4 packets. You should use
760 netfilter for NAT unless you know what you are doing.
761
762 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800763 module will be called act_nat.
Herbert Xub4219952007-09-27 12:48:05 -0700764
Linus Torvalds1da177e2005-04-16 15:20:36 -0700765config NET_ACT_PEDIT
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100766 tristate "Packet Editing"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700767 depends on NET_CLS_ACT
768 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100769 Say Y here if you want to mangle the content of packets.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700770
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100771 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800772 module will be called act_pedit.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700773
Jamal Hadi Salimdb753072005-04-24 20:10:16 -0700774config NET_ACT_SIMP
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100775 tristate "Simple Example (Debug)"
Jamal Hadi Salimdb753072005-04-24 20:10:16 -0700776 depends on NET_CLS_ACT
777 ---help---
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100778 Say Y here to add a simple action for demonstration purposes.
779 It is meant as an example and for debugging purposes. It will
780 print a configured policy string followed by the packet count
781 to the console for every packet that passes by.
Jamal Hadi Salimdb753072005-04-24 20:10:16 -0700782
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100783 If unsure, say N.
784
785 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800786 module will be called act_simple.
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100787
Alexander Duyckca9b0e22008-09-12 16:30:20 -0700788config NET_ACT_SKBEDIT
789 tristate "SKB Editing"
790 depends on NET_CLS_ACT
791 ---help---
792 Say Y here to change skb priority or queue_mapping settings.
793
794 If unsure, say N.
795
796 To compile this code as a module, choose M here: the
Jan Luebbed4ae20b2010-02-08 22:41:44 -0800797 module will be called act_skbedit.
Alexander Duyckca9b0e22008-09-12 16:30:20 -0700798
Grégoire Baroneb4d4062010-08-18 13:10:35 +0000799config NET_ACT_CSUM
800 tristate "Checksum Updating"
David S. Miller7abac682010-08-23 20:42:11 -0700801 depends on NET_CLS_ACT && INET
Davide Carattiab9d2262017-01-09 11:24:20 +0100802 select LIBCRC32C
Grégoire Baroneb4d4062010-08-18 13:10:35 +0000803 ---help---
804 Say Y here to update some common checksum after some direct
805 packet alterations.
806
807 To compile this code as a module, choose M here: the
808 module will be called act_csum.
809
Jiri Pirkoc7e2b962014-11-19 14:05:03 +0100810config NET_ACT_VLAN
811 tristate "Vlan manipulation"
812 depends on NET_CLS_ACT
813 ---help---
814 Say Y here to push or pop vlan headers.
815
816 If unsure, say N.
817
818 To compile this code as a module, choose M here: the
819 module will be called act_vlan.
820
Jiri Pirkod23b8ad2015-01-15 09:52:39 +0100821config NET_ACT_BPF
822 tristate "BPF based action"
823 depends on NET_CLS_ACT
824 ---help---
825 Say Y here to execute BPF code on packets. The BPF code will decide
826 if the packet should be dropped or not.
827
828 If unsure, say N.
829
830 To compile this code as a module, choose M here: the
831 module will be called act_bpf.
832
Felix Fietkau22a5dc02015-01-18 16:35:14 -0500833config NET_ACT_CONNMARK
834 tristate "Netfilter Connection Mark Retriever"
835 depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
Arnd Bergmann2dbce092015-01-28 17:30:09 +0100836 depends on NF_CONNTRACK && NF_CONNTRACK_MARK
Felix Fietkau22a5dc02015-01-18 16:35:14 -0500837 ---help---
838 Say Y here to allow retrieving of conn mark
839
840 If unsure, say N.
841
842 To compile this code as a module, choose M here: the
843 module will be called act_connmark.
844
Jamal Hadi Salim86da71b2016-09-12 20:13:09 -0400845config NET_ACT_SKBMOD
846 tristate "skb data modification action"
847 depends on NET_CLS_ACT
848 ---help---
849 Say Y here to allow modification of skb data
850
851 If unsure, say N.
852
853 To compile this code as a module, choose M here: the
854 module will be called act_skbmod.
855
Jamal Hadi Salimef6980b62016-02-27 08:08:54 -0500856config NET_ACT_IFE
857 tristate "Inter-FE action based on IETF ForCES InterFE LFB"
858 depends on NET_CLS_ACT
Yotam Gigi295a6e02017-02-01 15:30:03 +0200859 select NET_IFE
Jamal Hadi Salimef6980b62016-02-27 08:08:54 -0500860 ---help---
861 Say Y here to allow for sourcing and terminating metadata
862 For details refer to netdev01 paper:
863 "Distributing Linux Traffic Control Classifier-Action Subsystem"
864 Authors: Jamal Hadi Salim and Damascene M. Joachimpillai
865
866 To compile this code as a module, choose M here: the
867 module will be called act_ife.
868
Amir Vadaid0f6dd82016-09-08 16:23:48 +0300869config NET_ACT_TUNNEL_KEY
870 tristate "IP tunnel metadata manipulation"
871 depends on NET_CLS_ACT
872 ---help---
873 Say Y here to set/release ip tunnel metadata.
874
875 If unsure, say N.
876
877 To compile this code as a module, choose M here: the
878 module will be called act_tunnel_key.
879
Jamal Hadi Salim084e2f62016-02-27 08:08:55 -0500880config NET_IFE_SKBMARK
881 tristate "Support to encoding decoding skb mark on IFE action"
882 depends on NET_ACT_IFE
Jamal Hadi Salim084e2f62016-02-27 08:08:55 -0500883
Jamal Hadi Salim200e10f2016-02-27 08:08:56 -0500884config NET_IFE_SKBPRIO
885 tristate "Support to encoding decoding skb prio on IFE action"
886 depends on NET_ACT_IFE
Jamal Hadi Salim200e10f2016-02-27 08:08:56 -0500887
Jamal Hadi Salim408fbc22016-09-18 07:31:43 -0400888config NET_IFE_SKBTCINDEX
889 tristate "Support to encoding decoding skb tcindex on IFE action"
890 depends on NET_ACT_IFE
Jamal Hadi Salim408fbc22016-09-18 07:31:43 -0400891
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100892config NET_CLS_IND
893 bool "Incoming device classification"
Roman Zippel05b8b0f2005-11-17 15:22:39 -0800894 depends on NET_CLS_U32 || NET_CLS_FW
Thomas Graf52ab4ac2005-11-01 15:13:02 +0100895 ---help---
896 Say Y here to extend the u32 and fw classifier to support
897 classification based on the incoming device. This option is
898 likely to disappear in favour of the metadata ematch.
899
Roman Zippel05b8b0f2005-11-17 15:22:39 -0800900endif # NET_SCHED
901
Randy Dunlap85ef3e52007-10-18 21:56:38 -0700902config NET_SCH_FIFO
903 bool