1# SPDX-License-Identifier: GPL-2.0-only 2# 3# Traffic control configuration. 4# 5 6menuconfig NET_SCHED 7 bool "QoS and/or fair queueing" 8 select NET_SCH_FIFO 9 help 10 When the kernel has several packets to send out over a network 11 device, it has to decide which ones to send first, which ones to 12 delay, and which ones to drop. This is the job of the queueing 13 disciplines, several different algorithms for how to do this 14 "fairly" have been proposed. 15 16 If you say N here, you will get the standard packet scheduler, which 17 is a FIFO (first come, first served). If you say Y here, you will be 18 able to choose from among several alternative algorithms which can 19 then be attached to different network devices. This is useful for 20 example if some of your network devices are real time devices that 21 need a certain minimum data flow rate, or if you need to limit the 22 maximum data flow rate for traffic which matches specified criteria. 23 This code is considered to be experimental. 24 25 To administer these schedulers, you'll need the user-level utilities 26 from the package iproute2+tc at 27 <https://www.kernel.org/pub/linux/utils/net/iproute2/>. That package 28 also contains some documentation; for more, check out 29 <http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>. 30 31 This Quality of Service (QoS) support will enable you to use 32 Differentiated Services (diffserv) and Resource Reservation Protocol 33 (RSVP) on your Linux router if you also say Y to the corresponding 34 classifiers below. Documentation and software is at 35 <http://diffserv.sourceforge.net/>. 36 37 If you say Y here and to "/proc file system" below, you will be able 38 to read status information about packet schedulers from the file 39 /proc/net/psched. 40 41 The available schedulers are listed in the following questions; you 42 can say Y to as many as you like. If unsure, say N now. 43 44if NET_SCHED 45 46comment "Queueing/Scheduling" 47 48config NET_SCH_CBQ 49 tristate "Class Based Queueing (CBQ)" 50 help 51 Say Y here if you want to use the Class-Based Queueing (CBQ) packet 52 scheduling algorithm. This algorithm classifies the waiting packets 53 into a tree-like hierarchy of classes; the leaves of this tree are 54 in turn scheduled by separate algorithms. 55 56 See the top of <file:net/sched/sch_cbq.c> for more details. 57 58 CBQ is a commonly used scheduler, so if you're unsure, you should 59 say Y here. Then say Y to all the queueing algorithms below that you 60 want to use as leaf disciplines. 61 62 To compile this code as a module, choose M here: the 63 module will be called sch_cbq. 64 65config NET_SCH_HTB 66 tristate "Hierarchical Token Bucket (HTB)" 67 help 68 Say Y here if you want to use the Hierarchical Token Buckets (HTB) 69 packet scheduling algorithm. See 70 <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and 71 in-depth articles. 72 73 HTB is very similar to CBQ regarding its goals however is has 74 different properties and different algorithm. 75 76 To compile this code as a module, choose M here: the 77 module will be called sch_htb. 78 79config NET_SCH_HFSC 80 tristate "Hierarchical Fair Service Curve (HFSC)" 81 help 82 Say Y here if you want to use the Hierarchical Fair Service Curve 83 (HFSC) packet scheduling algorithm. 84 85 To compile this code as a module, choose M here: the 86 module will be called sch_hfsc. 87 88config NET_SCH_ATM 89 tristate "ATM Virtual Circuits (ATM)" 90 depends on ATM 91 help 92 Say Y here if you want to use the ATM pseudo-scheduler. This 93 provides a framework for invoking classifiers, which in turn 94 select classes of this queuing discipline. Each class maps 95 the flow(s) it is handling to a given virtual circuit. 96 97 See the top of <file:net/sched/sch_atm.c> for more details. 98 99 To compile this code as a module, choose M here: the 100 module will be called sch_atm. 101 102config NET_SCH_PRIO 103 tristate "Multi Band Priority Queueing (PRIO)" 104 help 105 Say Y here if you want to use an n-band priority queue packet 106 scheduler. 107 108 To compile this code as a module, choose M here: the 109 module will be called sch_prio. 110 111config NET_SCH_MULTIQ 112 tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)" 113 help 114 Say Y here if you want to use an n-band queue packet scheduler 115 to support devices that have multiple hardware transmit queues. 116 117 To compile this code as a module, choose M here: the 118 module will be called sch_multiq. 119 120config NET_SCH_RED 121 tristate "Random Early Detection (RED)" 122 help 123 Say Y here if you want to use the Random Early Detection (RED) 124 packet scheduling algorithm. 125 126 See the top of <file:net/sched/sch_red.c> for more details. 127 128 To compile this code as a module, choose M here: the 129 module will be called sch_red. 130 131config NET_SCH_SFB 132 tristate "Stochastic Fair Blue (SFB)" 133 help 134 Say Y here if you want to use the Stochastic Fair Blue (SFB) 135 packet scheduling algorithm. 136 137 See the top of <file:net/sched/sch_sfb.c> for more details. 138 139 To compile this code as a module, choose M here: the 140 module will be called sch_sfb. 141 142config NET_SCH_SFQ 143 tristate "Stochastic Fairness Queueing (SFQ)" 144 help 145 Say Y here if you want to use the Stochastic Fairness Queueing (SFQ) 146 packet scheduling algorithm. 147 148 See the top of <file:net/sched/sch_sfq.c> for more details. 149 150 To compile this code as a module, choose M here: the 151 module will be called sch_sfq. 152 153config NET_SCH_TEQL 154 tristate "True Link Equalizer (TEQL)" 155 help 156 Say Y here if you want to use the True Link Equalizer (TLE) packet 157 scheduling algorithm. This queueing discipline allows the combination 158 of several physical devices into one virtual device. 159 160 See the top of <file:net/sched/sch_teql.c> for more details. 161 162 To compile this code as a module, choose M here: the 163 module will be called sch_teql. 164 165config NET_SCH_TBF 166 tristate "Token Bucket Filter (TBF)" 167 help 168 Say Y here if you want to use the Token Bucket Filter (TBF) packet 169 scheduling algorithm. 170 171 See the top of <file:net/sched/sch_tbf.c> for more details. 172 173 To compile this code as a module, choose M here: the 174 module will be called sch_tbf. 175 176config NET_SCH_CBS 177 tristate "Credit Based Shaper (CBS)" 178 help 179 Say Y here if you want to use the Credit Based Shaper (CBS) packet 180 scheduling algorithm. 181 182 See the top of <file:net/sched/sch_cbs.c> for more details. 183 184 To compile this code as a module, choose M here: the 185 module will be called sch_cbs. 186 187config NET_SCH_ETF 188 tristate "Earliest TxTime First (ETF)" 189 help 190 Say Y here if you want to use the Earliest TxTime First (ETF) packet 191 scheduling algorithm. 192 193 See the top of <file:net/sched/sch_etf.c> for more details. 194 195 To compile this code as a module, choose M here: the 196 module will be called sch_etf. 197 198config NET_SCH_TAPRIO 199 tristate "Time Aware Priority (taprio) Scheduler" 200 help 201 Say Y here if you want to use the Time Aware Priority (taprio) packet 202 scheduling algorithm. 203 204 See the top of <file:net/sched/sch_taprio.c> for more details. 205 206 To compile this code as a module, choose M here: the 207 module will be called sch_taprio. 208 209config NET_SCH_GRED 210 tristate "Generic Random Early Detection (GRED)" 211 help 212 Say Y here if you want to use the Generic Random Early Detection 213 (GRED) packet scheduling algorithm for some of your network devices 214 (see the top of <file:net/sched/sch_red.c> for details and 215 references about the algorithm). 216 217 To compile this code as a module, choose M here: the 218 module will be called sch_gred. 219 220config NET_SCH_DSMARK 221 tristate "Differentiated Services marker (DSMARK)" 222 help 223 Say Y if you want to schedule packets according to the 224 Differentiated Services architecture proposed in RFC 2475. 225 Technical information on this method, with pointers to associated 226 RFCs, is available at <http://www.gta.ufrj.br/diffserv/>. 227 228 To compile this code as a module, choose M here: the 229 module will be called sch_dsmark. 230 231config NET_SCH_NETEM 232 tristate "Network emulator (NETEM)" 233 help 234 Say Y if you want to emulate network delay, loss, and packet 235 re-ordering. This is often useful to simulate networks when 236 testing applications or protocols. 237 238 To compile this driver as a module, choose M here: the module 239 will be called sch_netem. 240 241 If unsure, say N. 242 243config NET_SCH_DRR 244 tristate "Deficit Round Robin scheduler (DRR)" 245 help 246 Say Y here if you want to use the Deficit Round Robin (DRR) packet 247 scheduling algorithm. 248 249 To compile this driver as a module, choose M here: the module 250 will be called sch_drr. 251 252 If unsure, say N. 253 254config NET_SCH_MQPRIO 255 tristate "Multi-queue priority scheduler (MQPRIO)" 256 help 257 Say Y here if you want to use the Multi-queue Priority scheduler. 258 This scheduler allows QOS to be offloaded on NICs that have support 259 for offloading QOS schedulers. 260 261 To compile this driver as a module, choose M here: the module will 262 be called sch_mqprio. 263 264 If unsure, say N. 265 266config NET_SCH_SKBPRIO 267 tristate "SKB priority queue scheduler (SKBPRIO)" 268 help 269 Say Y here if you want to use the SKB priority queue 270 scheduler. This schedules packets according to skb->priority, 271 which is useful for request packets in DoS mitigation systems such 272 as Gatekeeper. 273 274 To compile this driver as a module, choose M here: the module will 275 be called sch_skbprio. 276 277 If unsure, say N. 278 279config NET_SCH_CHOKE 280 tristate "CHOose and Keep responsive flow scheduler (CHOKE)" 281 help 282 Say Y here if you want to use the CHOKe packet scheduler (CHOose 283 and Keep for responsive flows, CHOose and Kill for unresponsive 284 flows). This is a variation of RED which tries to penalize flows 285 that monopolize the queue. 286 287 To compile this code as a module, choose M here: the 288 module will be called sch_choke. 289 290config NET_SCH_QFQ 291 tristate "Quick Fair Queueing scheduler (QFQ)" 292 help 293 Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ) 294 packet scheduling algorithm. 295 296 To compile this driver as a module, choose M here: the module 297 will be called sch_qfq. 298 299 If unsure, say N. 300 301config NET_SCH_CODEL 302 tristate "Controlled Delay AQM (CODEL)" 303 help 304 Say Y here if you want to use the Controlled Delay (CODEL) 305 packet scheduling algorithm. 306 307 To compile this driver as a module, choose M here: the module 308 will be called sch_codel. 309 310 If unsure, say N. 311 312config NET_SCH_FQ_CODEL 313 tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)" 314 help 315 Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL) 316 packet scheduling algorithm. 317 318 To compile this driver as a module, choose M here: the module 319 will be called sch_fq_codel. 320 321 If unsure, say N. 322 323config NET_SCH_CAKE 324 tristate "Common Applications Kept Enhanced (CAKE)" 325 help 326 Say Y here if you want to use the Common Applications Kept Enhanced 327 (CAKE) queue management algorithm. 328 329 To compile this driver as a module, choose M here: the module 330 will be called sch_cake. 331 332 If unsure, say N. 333 334config NET_SCH_FQ 335 tristate "Fair Queue" 336 help 337 Say Y here if you want to use the FQ packet scheduling algorithm. 338 339 FQ does flow separation, and is able to respect pacing requirements 340 set by TCP stack into sk->sk_pacing_rate (for localy generated 341 traffic) 342 343 To compile this driver as a module, choose M here: the module 344 will be called sch_fq. 345 346 If unsure, say N. 347 348config NET_SCH_HHF 349 tristate "Heavy-Hitter Filter (HHF)" 350 help 351 Say Y here if you want to use the Heavy-Hitter Filter (HHF) 352 packet scheduling algorithm. 353 354 To compile this driver as a module, choose M here: the module 355 will be called sch_hhf. 356 357config NET_SCH_PIE 358 tristate "Proportional Integral controller Enhanced (PIE) scheduler" 359 help 360 Say Y here if you want to use the Proportional Integral controller 361 Enhanced scheduler packet scheduling algorithm. 362 For more information, please see https://tools.ietf.org/html/rfc8033 363 364 To compile this driver as a module, choose M here: the module 365 will be called sch_pie. 366 367 If unsure, say N. 368 369config NET_SCH_FQ_PIE 370 depends on NET_SCH_PIE 371 tristate "Flow Queue Proportional Integral controller Enhanced (FQ-PIE)" 372 help 373 Say Y here if you want to use the Flow Queue Proportional Integral 374 controller Enhanced (FQ-PIE) packet scheduling algorithm. 375 For more information, please see https://tools.ietf.org/html/rfc8033 376 377 To compile this driver as a module, choose M here: the module 378 will be called sch_fq_pie. 379 380 If unsure, say N. 381 382config NET_SCH_INGRESS 383 tristate "Ingress/classifier-action Qdisc" 384 depends on NET_CLS_ACT 385 select NET_INGRESS 386 select NET_EGRESS 387 help 388 Say Y here if you want to use classifiers for incoming and/or outgoing 389 packets. This qdisc doesn't do anything else besides running classifiers, 390 which can also have actions attached to them. In case of outgoing packets, 391 classifiers that this qdisc holds are executed in the transmit path 392 before real enqueuing to an egress qdisc happens. 393 394 If unsure, say Y. 395 396 To compile this code as a module, choose M here: the module will be 397 called sch_ingress with alias of sch_clsact. 398 399config NET_SCH_PLUG 400 tristate "Plug network traffic until release (PLUG)" 401 help 402 403 This queuing discipline allows userspace to plug/unplug a network 404 output queue, using the netlink interface. When it receives an 405 enqueue command it inserts a plug into the outbound queue that 406 causes following packets to enqueue until a dequeue command arrives 407 over netlink, causing the plug to be removed and resuming the normal 408 packet flow. 409 410 This module also provides a generic "network output buffering" 411 functionality (aka output commit), wherein upon arrival of a dequeue 412 command, only packets up to the first plug are released for delivery. 413 The Remus HA project uses this module to enable speculative execution 414 of virtual machines by allowing the generated network output to be rolled 415 back if needed. 416 417 For more information, please refer to <http://wiki.xenproject.org/wiki/Remus> 418 419 Say Y here if you are using this kernel for Xen dom0 and 420 want to protect Xen guests with Remus. 421 422 To compile this code as a module, choose M here: the 423 module will be called sch_plug. 424 425config NET_SCH_ETS 426 tristate "Enhanced transmission selection scheduler (ETS)" 427 help 428 The Enhanced Transmission Selection scheduler is a classful 429 queuing discipline that merges functionality of PRIO and DRR 430 qdiscs in one scheduler. ETS makes it easy to configure a set of 431 strict and bandwidth-sharing bands to implement the transmission 432 selection described in 802.1Qaz. 433 434 Say Y here if you want to use the ETS packet scheduling 435 algorithm. 436 437 To compile this driver as a module, choose M here: the module 438 will be called sch_ets. 439 440 If unsure, say N. 441 442menuconfig NET_SCH_DEFAULT 443 bool "Allow override default queue discipline" 444 help 445 Support for selection of default queuing discipline. 446 447 Nearly all users can safely say no here, and the default 448 of pfifo_fast will be used. Many distributions already set 449 the default value via /proc/sys/net/core/default_qdisc. 450 451 If unsure, say N. 452 453if NET_SCH_DEFAULT 454 455choice 456 prompt "Default queuing discipline" 457 default DEFAULT_PFIFO_FAST 458 help 459 Select the queueing discipline that will be used by default 460 for all network devices. 461 462 config DEFAULT_FQ 463 bool "Fair Queue" if NET_SCH_FQ 464 465 config DEFAULT_CODEL 466 bool "Controlled Delay" if NET_SCH_CODEL 467 468 config DEFAULT_FQ_CODEL 469 bool "Fair Queue Controlled Delay" if NET_SCH_FQ_CODEL 470 471 config DEFAULT_FQ_PIE 472 bool "Flow Queue Proportional Integral controller Enhanced" if NET_SCH_FQ_PIE 473 474 config DEFAULT_SFQ 475 bool "Stochastic Fair Queue" if NET_SCH_SFQ 476 477 config DEFAULT_PFIFO_FAST 478 bool "Priority FIFO Fast" 479endchoice 480 481config DEFAULT_NET_SCH 482 string 483 default "pfifo_fast" if DEFAULT_PFIFO_FAST 484 default "fq" if DEFAULT_FQ 485 default "fq_codel" if DEFAULT_FQ_CODEL 486 default "fq_pie" if DEFAULT_FQ_PIE 487 default "sfq" if DEFAULT_SFQ 488 default "pfifo_fast" 489endif 490 491comment "Classification" 492 493config NET_CLS 494 bool 495 496config NET_CLS_BASIC 497 tristate "Elementary classification (BASIC)" 498 select NET_CLS 499 help 500 Say Y here if you want to be able to classify packets using 501 only extended matches and actions. 502 503 To compile this code as a module, choose M here: the 504 module will be called cls_basic. 505 506config NET_CLS_TCINDEX 507 tristate "Traffic-Control Index (TCINDEX)" 508 select NET_CLS 509 help 510 Say Y here if you want to be able to classify packets based on 511 traffic control indices. You will want this feature if you want 512 to implement Differentiated Services together with DSMARK. 513 514 To compile this code as a module, choose M here: the 515 module will be called cls_tcindex. 516 517config NET_CLS_ROUTE4 518 tristate "Routing decision (ROUTE)" 519 depends on INET 520 select IP_ROUTE_CLASSID 521 select NET_CLS 522 help 523 If you say Y here, you will be able to classify packets 524 according to the route table entry they matched. 525 526 To compile this code as a module, choose M here: the 527 module will be called cls_route. 528 529config NET_CLS_FW 530 tristate "Netfilter mark (FW)" 531 select NET_CLS 532 help 533 If you say Y here, you will be able to classify packets 534 according to netfilter/firewall marks. 535 536 To compile this code as a module, choose M here: the 537 module will be called cls_fw. 538 539config NET_CLS_U32 540 tristate "Universal 32bit comparisons w/ hashing (U32)" 541 select NET_CLS 542 help 543 Say Y here to be able to classify packets using a universal 544 32bit pieces based comparison scheme. 545 546 To compile this code as a module, choose M here: the 547 module will be called cls_u32. 548 549config CLS_U32_PERF 550 bool "Performance counters support" 551 depends on NET_CLS_U32 552 help 553 Say Y here to make u32 gather additional statistics useful for 554 fine tuning u32 classifiers. 555 556config CLS_U32_MARK 557 bool "Netfilter marks support" 558 depends on NET_CLS_U32 559 help 560 Say Y here to be able to use netfilter marks as u32 key. 561 562config NET_CLS_RSVP 563 tristate "IPv4 Resource Reservation Protocol (RSVP)" 564 select NET_CLS 565 help 566 The Resource Reservation Protocol (RSVP) permits end systems to 567 request a minimum and maximum data flow rate for a connection; this 568 is important for real time data such as streaming sound or video. 569 570 Say Y here if you want to be able to classify outgoing packets based 571 on their RSVP requests. 572 573 To compile this code as a module, choose M here: the 574 module will be called cls_rsvp. 575 576config NET_CLS_RSVP6 577 tristate "IPv6 Resource Reservation Protocol (RSVP6)" 578 select NET_CLS 579 help 580 The Resource Reservation Protocol (RSVP) permits end systems to 581 request a minimum and maximum data flow rate for a connection; this 582 is important for real time data such as streaming sound or video. 583 584 Say Y here if you want to be able to classify outgoing packets based 585 on their RSVP requests and you are using the IPv6 protocol. 586 587 To compile this code as a module, choose M here: the 588 module will be called cls_rsvp6. 589 590config NET_CLS_FLOW 591 tristate "Flow classifier" 592 select NET_CLS 593 help 594 If you say Y here, you will be able to classify packets based on 595 a configurable combination of packet keys. This is mostly useful 596 in combination with SFQ. 597 598 To compile this code as a module, choose M here: the 599 module will be called cls_flow. 600 601config NET_CLS_CGROUP 602 tristate "Control Group Classifier" 603 select NET_CLS 604 select CGROUP_NET_CLASSID 605 depends on CGROUPS 606 help 607 Say Y here if you want to classify packets based on the control 608 cgroup of their process. 609 610 To compile this code as a module, choose M here: the 611 module will be called cls_cgroup. 612 613config NET_CLS_BPF 614 tristate "BPF-based classifier" 615 select NET_CLS 616 help 617 If you say Y here, you will be able to classify packets based on 618 programmable BPF (JIT'ed) filters as an alternative to ematches. 619 620 To compile this code as a module, choose M here: the module will 621 be called cls_bpf. 622 623config NET_CLS_FLOWER 624 tristate "Flower classifier" 625 select NET_CLS 626 help 627 If you say Y here, you will be able to classify packets based on 628 a configurable combination of packet keys and masks. 629 630 To compile this code as a module, choose M here: the module will 631 be called cls_flower. 632 633config NET_CLS_MATCHALL 634 tristate "Match-all classifier" 635 select NET_CLS 636 help 637 If you say Y here, you will be able to classify packets based on 638 nothing. Every packet will match. 639 640 To compile this code as a module, choose M here: the module will 641 be called cls_matchall. 642 643config NET_EMATCH 644 bool "Extended Matches" 645 select NET_CLS 646 help 647 Say Y here if you want to use extended matches on top of classifiers 648 and select the extended matches below. 649 650 Extended matches are small classification helpers not worth writing 651 a separate classifier for. 652 653 A recent version of the iproute2 package is required to use 654 extended matches. 655 656config NET_EMATCH_STACK 657 int "Stack size" 658 depends on NET_EMATCH 659 default "32" 660 help 661 Size of the local stack variable used while evaluating the tree of 662 ematches. Limits the depth of the tree, i.e. the number of 663 encapsulated precedences. Every level requires 4 bytes of additional 664 stack space. 665 666config NET_EMATCH_CMP 667 tristate "Simple packet data comparison" 668 depends on NET_EMATCH 669 help 670 Say Y here if you want to be able to classify packets based on 671 simple packet data comparisons for 8, 16, and 32bit values. 672 673 To compile this code as a module, choose M here: the 674 module will be called em_cmp. 675 676config NET_EMATCH_NBYTE 677 tristate "Multi byte comparison" 678 depends on NET_EMATCH 679 help 680 Say Y here if you want to be able to classify packets based on 681 multiple byte comparisons mainly useful for IPv6 address comparisons. 682 683 To compile this code as a module, choose M here: the 684 module will be called em_nbyte. 685 686config NET_EMATCH_U32 687 tristate "U32 key" 688 depends on NET_EMATCH 689 help 690 Say Y here if you want to be able to classify packets using 691 the famous u32 key in combination with logic relations. 692 693 To compile this code as a module, choose M here: the 694 module will be called em_u32. 695 696config NET_EMATCH_META 697 tristate "Metadata" 698 depends on NET_EMATCH 699 help 700 Say Y here if you want to be able to classify packets based on 701 metadata such as load average, netfilter attributes, socket 702 attributes and routing decisions. 703 704 To compile this code as a module, choose M here: the 705 module will be called em_meta. 706 707config NET_EMATCH_TEXT 708 tristate "Textsearch" 709 depends on NET_EMATCH 710 select TEXTSEARCH 711 select TEXTSEARCH_KMP 712 select TEXTSEARCH_BM 713 select TEXTSEARCH_FSM 714 help 715 Say Y here if you want to be able to classify packets based on 716 textsearch comparisons. 717 718 To compile this code as a module, choose M here: the 719 module will be called em_text. 720 721config NET_EMATCH_CANID 722 tristate "CAN Identifier" 723 depends on NET_EMATCH && (CAN=y || CAN=m) 724 help 725 Say Y here if you want to be able to classify CAN frames based 726 on CAN Identifier. 727 728 To compile this code as a module, choose M here: the 729 module will be called em_canid. 730 731config NET_EMATCH_IPSET 732 tristate "IPset" 733 depends on NET_EMATCH && IP_SET 734 help 735 Say Y here if you want to be able to classify packets based on 736 ipset membership. 737 738 To compile this code as a module, choose M here: the 739 module will be called em_ipset. 740 741config NET_EMATCH_IPT 742 tristate "IPtables Matches" 743 depends on NET_EMATCH && NETFILTER && NETFILTER_XTABLES 744 help 745 Say Y here to be able to classify packets based on iptables 746 matches. 747 Current supported match is "policy" which allows packet classification 748 based on IPsec policy that was used during decapsulation 749 750 To compile this code as a module, choose M here: the 751 module will be called em_ipt. 752 753config NET_CLS_ACT 754 bool "Actions" 755 select NET_CLS 756 help 757 Say Y here if you want to use traffic control actions. Actions 758 get attached to classifiers and are invoked after a successful 759 classification. They are used to overwrite the classification 760 result, instantly drop or redirect packets, etc. 761 762 A recent version of the iproute2 package is required to use 763 extended matches. 764 765config NET_ACT_POLICE 766 tristate "Traffic Policing" 767 depends on NET_CLS_ACT 768 help 769 Say Y here if you want to do traffic policing, i.e. strict 770 bandwidth limiting. This action replaces the existing policing 771 module. 772 773 To compile this code as a module, choose M here: the 774 module will be called act_police. 775 776config NET_ACT_GACT 777 tristate "Generic actions" 778 depends on NET_CLS_ACT 779 help 780 Say Y here to take generic actions such as dropping and 781 accepting packets. 782 783 To compile this code as a module, choose M here: the 784 module will be called act_gact. 785 786config GACT_PROB 787 bool "Probability support" 788 depends on NET_ACT_GACT 789 help 790 Say Y here to use the generic action randomly or deterministically. 791 792config NET_ACT_MIRRED 793 tristate "Redirecting and Mirroring" 794 depends on NET_CLS_ACT 795 help 796 Say Y here to allow packets to be mirrored or redirected to 797 other devices. 798 799 To compile this code as a module, choose M here: the 800 module will be called act_mirred. 801 802config NET_ACT_SAMPLE 803 tristate "Traffic Sampling" 804 depends on NET_CLS_ACT 805 select PSAMPLE 806 help 807 Say Y here to allow packet sampling tc action. The packet sample 808 action consists of statistically choosing packets and sampling 809 them using the psample module. 810 811 To compile this code as a module, choose M here: the 812 module will be called act_sample. 813 814config NET_ACT_IPT 815 tristate "IPtables targets" 816 depends on NET_CLS_ACT && NETFILTER && NETFILTER_XTABLES 817 help 818 Say Y here to be able to invoke iptables targets after successful 819 classification. 820 821 To compile this code as a module, choose M here: the 822 module will be called act_ipt. 823 824config NET_ACT_NAT 825 tristate "Stateless NAT" 826 depends on NET_CLS_ACT 827 help 828 Say Y here to do stateless NAT on IPv4 packets. You should use 829 netfilter for NAT unless you know what you are doing. 830 831 To compile this code as a module, choose M here: the 832 module will be called act_nat. 833 834config NET_ACT_PEDIT 835 tristate "Packet Editing" 836 depends on NET_CLS_ACT 837 help 838 Say Y here if you want to mangle the content of packets. 839 840 To compile this code as a module, choose M here: the 841 module will be called act_pedit. 842 843config NET_ACT_SIMP 844 tristate "Simple Example (Debug)" 845 depends on NET_CLS_ACT 846 help 847 Say Y here to add a simple action for demonstration purposes. 848 It is meant as an example and for debugging purposes. It will 849 print a configured policy string followed by the packet count 850 to the console for every packet that passes by. 851 852 If unsure, say N. 853 854 To compile this code as a module, choose M here: the 855 module will be called act_simple. 856 857config NET_ACT_SKBEDIT 858 tristate "SKB Editing" 859 depends on NET_CLS_ACT 860 help 861 Say Y here to change skb priority or queue_mapping settings. 862 863 If unsure, say N. 864 865 To compile this code as a module, choose M here: the 866 module will be called act_skbedit. 867 868config NET_ACT_CSUM 869 tristate "Checksum Updating" 870 depends on NET_CLS_ACT && INET 871 select LIBCRC32C 872 help 873 Say Y here to update some common checksum after some direct 874 packet alterations. 875 876 To compile this code as a module, choose M here: the 877 module will be called act_csum. 878 879config NET_ACT_MPLS 880 tristate "MPLS manipulation" 881 depends on NET_CLS_ACT 882 help 883 Say Y here to push or pop MPLS headers. 884 885 If unsure, say N. 886 887 To compile this code as a module, choose M here: the 888 module will be called act_mpls. 889 890config NET_ACT_VLAN 891 tristate "Vlan manipulation" 892 depends on NET_CLS_ACT 893 help 894 Say Y here to push or pop vlan headers. 895 896 If unsure, say N. 897 898 To compile this code as a module, choose M here: the 899 module will be called act_vlan. 900 901config NET_ACT_BPF 902 tristate "BPF based action" 903 depends on NET_CLS_ACT 904 help 905 Say Y here to execute BPF code on packets. The BPF code will decide 906 if the packet should be dropped or not. 907 908 If unsure, say N. 909 910 To compile this code as a module, choose M here: the 911 module will be called act_bpf. 912 913config NET_ACT_CONNMARK 914 tristate "Netfilter Connection Mark Retriever" 915 depends on NET_CLS_ACT && NETFILTER 916 depends on NF_CONNTRACK && NF_CONNTRACK_MARK 917 help 918 Say Y here to allow retrieving of conn mark 919 920 If unsure, say N. 921 922 To compile this code as a module, choose M here: the 923 module will be called act_connmark. 924 925config NET_ACT_CTINFO 926 tristate "Netfilter Connection Mark Actions" 927 depends on NET_CLS_ACT && NETFILTER 928 depends on NF_CONNTRACK && NF_CONNTRACK_MARK 929 help 930 Say Y here to allow transfer of a connmark stored information. 931 Current actions transfer connmark stored DSCP into 932 ipv4/v6 diffserv and/or to transfer connmark to packet 933 mark. Both are useful for restoring egress based marks 934 back onto ingress connections for qdisc priority mapping 935 purposes. 936 937 If unsure, say N. 938 939 To compile this code as a module, choose M here: the 940 module will be called act_ctinfo. 941 942config NET_ACT_SKBMOD 943 tristate "skb data modification action" 944 depends on NET_CLS_ACT 945 help 946 Say Y here to allow modification of skb data 947 948 If unsure, say N. 949 950 To compile this code as a module, choose M here: the 951 module will be called act_skbmod. 952 953config NET_ACT_IFE 954 tristate "Inter-FE action based on IETF ForCES InterFE LFB" 955 depends on NET_CLS_ACT 956 select NET_IFE 957 help 958 Say Y here to allow for sourcing and terminating metadata 959 For details refer to netdev01 paper: 960 "Distributing Linux Traffic Control Classifier-Action Subsystem" 961 Authors: Jamal Hadi Salim and Damascene M. Joachimpillai 962 963 To compile this code as a module, choose M here: the 964 module will be called act_ife. 965 966config NET_ACT_TUNNEL_KEY 967 tristate "IP tunnel metadata manipulation" 968 depends on NET_CLS_ACT 969 help 970 Say Y here to set/release ip tunnel metadata. 971 972 If unsure, say N. 973 974 To compile this code as a module, choose M here: the 975 module will be called act_tunnel_key. 976 977config NET_ACT_CT 978 tristate "connection tracking tc action" 979 depends on NET_CLS_ACT && NF_CONNTRACK && (!NF_NAT || NF_NAT) && NF_FLOW_TABLE 980 select NF_NAT_OVS if NF_NAT 981 help 982 Say Y here to allow sending the packets to conntrack module. 983 984 If unsure, say N. 985 986 To compile this code as a module, choose M here: the 987 module will be called act_ct. 988 989config NET_ACT_GATE 990 tristate "Frame gate entry list control tc action" 991 depends on NET_CLS_ACT 992 help 993 Say Y here to allow to control the ingress flow to be passed at 994 specific time slot and be dropped at other specific time slot by 995 the gate entry list. 996 997 If unsure, say N. 998 To compile this code as a module, choose M here: the 999 module will be called act_gate. 1000 1001config NET_IFE_SKBMARK 1002 tristate "Support to encoding decoding skb mark on IFE action" 1003 depends on NET_ACT_IFE 1004 1005config NET_IFE_SKBPRIO 1006 tristate "Support to encoding decoding skb prio on IFE action" 1007 depends on NET_ACT_IFE 1008 1009config NET_IFE_SKBTCINDEX 1010 tristate "Support to encoding decoding skb tcindex on IFE action" 1011 depends on NET_ACT_IFE 1012 1013config NET_TC_SKB_EXT 1014 bool "TC recirculation support" 1015 depends on NET_CLS_ACT 1016 select SKB_EXTENSIONS 1017 1018 help 1019 Say Y here to allow tc chain misses to continue in OvS datapath in 1020 the correct recirc_id, and hardware chain misses to continue in 1021 the correct chain in tc software datapath. 1022 1023 Say N here if you won't be using tc<->ovs offload or tc chains offload. 1024 1025endif # NET_SCHED 1026 1027config NET_SCH_FIFO 1028 bool 1029