linux/net/sched/Kconfig
<<
>>
Prefs
   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://www.linuxfoundation.org/collaborate/workgroups/networking/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_SFB
 130        tristate "Stochastic Fair Blue (SFB)"
 131        ---help---
 132          Say Y here if you want to use the Stochastic Fair Blue (SFB)
 133          packet scheduling algorithm.
 134
 135          See the top of <file:net/sched/sch_sfb.c> for more details.
 136
 137          To compile this code as a module, choose M here: the
 138          module will be called sch_sfb.
 139
 140config NET_SCH_SFQ
 141        tristate "Stochastic Fairness Queueing (SFQ)"
 142        ---help---
 143          Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
 144          packet scheduling algorithm.
 145
 146          See the top of <file:net/sched/sch_sfq.c> for more details.
 147
 148          To compile this code as a module, choose M here: the
 149          module will be called sch_sfq.
 150
 151config NET_SCH_TEQL
 152        tristate "True Link Equalizer (TEQL)"
 153        ---help---
 154          Say Y here if you want to use the True Link Equalizer (TLE) packet
 155          scheduling algorithm. This queueing discipline allows the combination
 156          of several physical devices into one virtual device.
 157
 158          See the top of <file:net/sched/sch_teql.c> for more details.
 159
 160          To compile this code as a module, choose M here: the
 161          module will be called sch_teql.
 162
 163config NET_SCH_TBF
 164        tristate "Token Bucket Filter (TBF)"
 165        ---help---
 166          Say Y here if you want to use the Token Bucket Filter (TBF) packet
 167          scheduling algorithm.
 168
 169          See the top of <file:net/sched/sch_tbf.c> for more details.
 170
 171          To compile this code as a module, choose M here: the
 172          module will be called sch_tbf.
 173
 174config NET_SCH_GRED
 175        tristate "Generic Random Early Detection (GRED)"
 176        ---help---
 177          Say Y here if you want to use the Generic Random Early Detection
 178          (GRED) packet scheduling algorithm for some of your network devices
 179          (see the top of <file:net/sched/sch_red.c> for details and
 180          references about the algorithm).
 181
 182          To compile this code as a module, choose M here: the
 183          module will be called sch_gred.
 184
 185config NET_SCH_DSMARK
 186        tristate "Differentiated Services marker (DSMARK)"
 187        ---help---
 188          Say Y if you want to schedule packets according to the
 189          Differentiated Services architecture proposed in RFC 2475.
 190          Technical information on this method, with pointers to associated
 191          RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
 192
 193          To compile this code as a module, choose M here: the
 194          module will be called sch_dsmark.
 195
 196config NET_SCH_NETEM
 197        tristate "Network emulator (NETEM)"
 198        ---help---
 199          Say Y if you want to emulate network delay, loss, and packet
 200          re-ordering. This is often useful to simulate networks when
 201          testing applications or protocols.
 202
 203          To compile this driver as a module, choose M here: the module
 204          will be called sch_netem.
 205
 206          If unsure, say N.
 207
 208config NET_SCH_DRR
 209        tristate "Deficit Round Robin scheduler (DRR)"
 210        help
 211          Say Y here if you want to use the Deficit Round Robin (DRR) packet
 212          scheduling algorithm.
 213
 214          To compile this driver as a module, choose M here: the module
 215          will be called sch_drr.
 216
 217          If unsure, say N.
 218
 219config NET_SCH_MQPRIO
 220        tristate "Multi-queue priority scheduler (MQPRIO)"
 221        help
 222          Say Y here if you want to use the Multi-queue Priority scheduler.
 223          This scheduler allows QOS to be offloaded on NICs that have support
 224          for offloading QOS schedulers.
 225
 226          To compile this driver as a module, choose M here: the module will
 227          be called sch_mqprio.
 228
 229          If unsure, say N.
 230
 231config NET_SCH_CHOKE
 232        tristate "CHOose and Keep responsive flow scheduler (CHOKE)"
 233        help
 234          Say Y here if you want to use the CHOKe packet scheduler (CHOose
 235          and Keep for responsive flows, CHOose and Kill for unresponsive
 236          flows). This is a variation of RED which trys to penalize flows
 237          that monopolize the queue.
 238
 239          To compile this code as a module, choose M here: the
 240          module will be called sch_choke.
 241
 242config NET_SCH_QFQ
 243        tristate "Quick Fair Queueing scheduler (QFQ)"
 244        help
 245          Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
 246          packet scheduling algorithm.
 247
 248          To compile this driver as a module, choose M here: the module
 249          will be called sch_qfq.
 250
 251          If unsure, say N.
 252
 253config NET_SCH_CODEL
 254        tristate "Controlled Delay AQM (CODEL)"
 255        help
 256          Say Y here if you want to use the Controlled Delay (CODEL)
 257          packet scheduling algorithm.
 258
 259          To compile this driver as a module, choose M here: the module
 260          will be called sch_codel.
 261
 262          If unsure, say N.
 263
 264config NET_SCH_FQ_CODEL
 265        tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)"
 266        help
 267          Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL)
 268          packet scheduling algorithm.
 269
 270          To compile this driver as a module, choose M here: the module
 271          will be called sch_fq_codel.
 272
 273          If unsure, say N.
 274
 275config NET_SCH_INGRESS
 276        tristate "Ingress Qdisc"
 277        depends on NET_CLS_ACT
 278        ---help---
 279          Say Y here if you want to use classifiers for incoming packets.
 280          If unsure, say Y.
 281
 282          To compile this code as a module, choose M here: the
 283          module will be called sch_ingress.
 284
 285config NET_SCH_PLUG
 286        tristate "Plug network traffic until release (PLUG)"
 287        ---help---
 288
 289          This queuing discipline allows userspace to plug/unplug a network
 290          output queue, using the netlink interface.  When it receives an
 291          enqueue command it inserts a plug into the outbound queue that
 292          causes following packets to enqueue until a dequeue command arrives
 293          over netlink, causing the plug to be removed and resuming the normal
 294          packet flow.
 295
 296          This module also provides a generic "network output buffering"
 297          functionality (aka output commit), wherein upon arrival of a dequeue
 298          command, only packets up to the first plug are released for delivery.
 299          The Remus HA project uses this module to enable speculative execution
 300          of virtual machines by allowing the generated network output to be rolled
 301          back if needed.
 302
 303          For more information, please refer to http://wiki.xensource.com/xenwiki/Remus
 304
 305          Say Y here if you are using this kernel for Xen dom0 and
 306          want to protect Xen guests with Remus.
 307
 308          To compile this code as a module, choose M here: the
 309          module will be called sch_plug.
 310
 311comment "Classification"
 312
 313config NET_CLS
 314        boolean
 315
 316config NET_CLS_BASIC
 317        tristate "Elementary classification (BASIC)"
 318        select NET_CLS
 319        ---help---
 320          Say Y here if you want to be able to classify packets using
 321          only extended matches and actions.
 322
 323          To compile this code as a module, choose M here: the
 324          module will be called cls_basic.
 325
 326config NET_CLS_TCINDEX
 327        tristate "Traffic-Control Index (TCINDEX)"
 328        select NET_CLS
 329        ---help---
 330          Say Y here if you want to be able to classify packets based on
 331          traffic control indices. You will want this feature if you want
 332          to implement Differentiated Services together with DSMARK.
 333
 334          To compile this code as a module, choose M here: the
 335          module will be called cls_tcindex.
 336
 337config NET_CLS_ROUTE4
 338        tristate "Routing decision (ROUTE)"
 339        depends on INET
 340        select IP_ROUTE_CLASSID
 341        select NET_CLS
 342        ---help---
 343          If you say Y here, you will be able to classify packets
 344          according to the route table entry they matched.
 345
 346          To compile this code as a module, choose M here: the
 347          module will be called cls_route.
 348
 349config NET_CLS_FW
 350        tristate "Netfilter mark (FW)"
 351        select NET_CLS
 352        ---help---
 353          If you say Y here, you will be able to classify packets
 354          according to netfilter/firewall marks.
 355
 356          To compile this code as a module, choose M here: the
 357          module will be called cls_fw.
 358
 359config NET_CLS_U32
 360        tristate "Universal 32bit comparisons w/ hashing (U32)"
 361        select NET_CLS
 362        ---help---
 363          Say Y here to be able to classify packets using a universal
 364          32bit pieces based comparison scheme.
 365
 366          To compile this code as a module, choose M here: the
 367          module will be called cls_u32.
 368
 369config CLS_U32_PERF
 370        bool "Performance counters support"
 371        depends on NET_CLS_U32
 372        ---help---
 373          Say Y here to make u32 gather additional statistics useful for
 374          fine tuning u32 classifiers.
 375
 376config CLS_U32_MARK
 377        bool "Netfilter marks support"
 378        depends on NET_CLS_U32
 379        ---help---
 380          Say Y here to be able to use netfilter marks as u32 key.
 381
 382config NET_CLS_RSVP
 383        tristate "IPv4 Resource Reservation Protocol (RSVP)"
 384        select NET_CLS
 385        ---help---
 386          The Resource Reservation Protocol (RSVP) permits end systems to
 387          request a minimum and maximum data flow rate for a connection; this
 388          is important for real time data such as streaming sound or video.
 389
 390          Say Y here if you want to be able to classify outgoing packets based
 391          on their RSVP requests.
 392
 393          To compile this code as a module, choose M here: the
 394          module will be called cls_rsvp.
 395
 396config NET_CLS_RSVP6
 397        tristate "IPv6 Resource Reservation Protocol (RSVP6)"
 398        select NET_CLS
 399        ---help---
 400          The Resource Reservation Protocol (RSVP) permits end systems to
 401          request a minimum and maximum data flow rate for a connection; this
 402          is important for real time data such as streaming sound or video.
 403
 404          Say Y here if you want to be able to classify outgoing packets based
 405          on their RSVP requests and you are using the IPv6 protocol.
 406
 407          To compile this code as a module, choose M here: the
 408          module will be called cls_rsvp6.
 409
 410config NET_CLS_FLOW
 411        tristate "Flow classifier"
 412        select NET_CLS
 413        ---help---
 414          If you say Y here, you will be able to classify packets based on
 415          a configurable combination of packet keys. This is mostly useful
 416          in combination with SFQ.
 417
 418          To compile this code as a module, choose M here: the
 419          module will be called cls_flow.
 420
 421config NET_CLS_CGROUP
 422        tristate "Control Group Classifier"
 423        select NET_CLS
 424        depends on CGROUPS
 425        ---help---
 426          Say Y here if you want to classify packets based on the control
 427          cgroup of their process.
 428
 429          To compile this code as a module, choose M here: the
 430          module will be called cls_cgroup.
 431
 432config NET_EMATCH
 433        bool "Extended Matches"
 434        select NET_CLS
 435        ---help---
 436          Say Y here if you want to use extended matches on top of classifiers
 437          and select the extended matches below.
 438
 439          Extended matches are small classification helpers not worth writing
 440          a separate classifier for.
 441
 442          A recent version of the iproute2 package is required to use
 443          extended matches.
 444
 445config NET_EMATCH_STACK
 446        int "Stack size"
 447        depends on NET_EMATCH
 448        default "32"
 449        ---help---
 450          Size of the local stack variable used while evaluating the tree of
 451          ematches. Limits the depth of the tree, i.e. the number of
 452          encapsulated precedences. Every level requires 4 bytes of additional
 453          stack space.
 454
 455config NET_EMATCH_CMP
 456        tristate "Simple packet data comparison"
 457        depends on NET_EMATCH
 458        ---help---
 459          Say Y here if you want to be able to classify packets based on
 460          simple packet data comparisons for 8, 16, and 32bit values.
 461
 462          To compile this code as a module, choose M here: the
 463          module will be called em_cmp.
 464
 465config NET_EMATCH_NBYTE
 466        tristate "Multi byte comparison"
 467        depends on NET_EMATCH
 468        ---help---
 469          Say Y here if you want to be able to classify packets based on
 470          multiple byte comparisons mainly useful for IPv6 address comparisons.
 471
 472          To compile this code as a module, choose M here: the
 473          module will be called em_nbyte.
 474
 475config NET_EMATCH_U32
 476        tristate "U32 key"
 477        depends on NET_EMATCH
 478        ---help---
 479          Say Y here if you want to be able to classify packets using
 480          the famous u32 key in combination with logic relations.
 481
 482          To compile this code as a module, choose M here: the
 483          module will be called em_u32.
 484
 485config NET_EMATCH_META
 486        tristate "Metadata"
 487        depends on NET_EMATCH
 488        ---help---
 489          Say Y here if you want to be able to classify packets based on
 490          metadata such as load average, netfilter attributes, socket
 491          attributes and routing decisions.
 492
 493          To compile this code as a module, choose M here: the
 494          module will be called em_meta.
 495
 496config NET_EMATCH_TEXT
 497        tristate "Textsearch"
 498        depends on NET_EMATCH
 499        select TEXTSEARCH
 500        select TEXTSEARCH_KMP
 501        select TEXTSEARCH_BM
 502        select TEXTSEARCH_FSM
 503        ---help---
 504          Say Y here if you want to be able to classify packets based on
 505          textsearch comparisons.
 506
 507          To compile this code as a module, choose M here: the
 508          module will be called em_text.
 509
 510config NET_EMATCH_CANID
 511        tristate "CAN Identifier"
 512        depends on NET_EMATCH && CAN
 513        ---help---
 514          Say Y here if you want to be able to classify CAN frames based
 515          on CAN Identifier.
 516
 517          To compile this code as a module, choose M here: the
 518          module will be called em_canid.
 519
 520config NET_EMATCH_IPSET
 521        tristate "IPset"
 522        depends on NET_EMATCH && IP_SET
 523        ---help---
 524          Say Y here if you want to be able to classify packets based on
 525          ipset membership.
 526
 527          To compile this code as a module, choose M here: the
 528          module will be called em_ipset.
 529
 530config NET_CLS_ACT
 531        bool "Actions"
 532        ---help---
 533          Say Y here if you want to use traffic control actions. Actions
 534          get attached to classifiers and are invoked after a successful
 535          classification. They are used to overwrite the classification
 536          result, instantly drop or redirect packets, etc.
 537
 538          A recent version of the iproute2 package is required to use
 539          extended matches.
 540
 541config NET_ACT_POLICE
 542        tristate "Traffic Policing"
 543        depends on NET_CLS_ACT 
 544        ---help---
 545          Say Y here if you want to do traffic policing, i.e. strict
 546          bandwidth limiting. This action replaces the existing policing
 547          module.
 548
 549          To compile this code as a module, choose M here: the
 550          module will be called act_police.
 551
 552config NET_ACT_GACT
 553        tristate "Generic actions"
 554        depends on NET_CLS_ACT
 555        ---help---
 556          Say Y here to take generic actions such as dropping and
 557          accepting packets.
 558
 559          To compile this code as a module, choose M here: the
 560          module will be called act_gact.
 561
 562config GACT_PROB
 563        bool "Probability support"
 564        depends on NET_ACT_GACT
 565        ---help---
 566          Say Y here to use the generic action randomly or deterministically.
 567
 568config NET_ACT_MIRRED
 569        tristate "Redirecting and Mirroring"
 570        depends on NET_CLS_ACT
 571        ---help---
 572          Say Y here to allow packets to be mirrored or redirected to
 573          other devices.
 574
 575          To compile this code as a module, choose M here: the
 576          module will be called act_mirred.
 577
 578config NET_ACT_IPT
 579        tristate "IPtables targets"
 580        depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
 581        ---help---
 582          Say Y here to be able to invoke iptables targets after successful
 583          classification.
 584
 585          To compile this code as a module, choose M here: the
 586          module will be called act_ipt.
 587
 588config NET_ACT_NAT
 589        tristate "Stateless NAT"
 590        depends on NET_CLS_ACT
 591        ---help---
 592          Say Y here to do stateless NAT on IPv4 packets.  You should use
 593          netfilter for NAT unless you know what you are doing.
 594
 595          To compile this code as a module, choose M here: the
 596          module will be called act_nat.
 597
 598config NET_ACT_PEDIT
 599        tristate "Packet Editing"
 600        depends on NET_CLS_ACT
 601        ---help---
 602          Say Y here if you want to mangle the content of packets.
 603
 604          To compile this code as a module, choose M here: the
 605          module will be called act_pedit.
 606
 607config NET_ACT_SIMP
 608        tristate "Simple Example (Debug)"
 609        depends on NET_CLS_ACT
 610        ---help---
 611          Say Y here to add a simple action for demonstration purposes.
 612          It is meant as an example and for debugging purposes. It will
 613          print a configured policy string followed by the packet count
 614          to the console for every packet that passes by.
 615
 616          If unsure, say N.
 617
 618          To compile this code as a module, choose M here: the
 619          module will be called act_simple.
 620
 621config NET_ACT_SKBEDIT
 622        tristate "SKB Editing"
 623        depends on NET_CLS_ACT
 624        ---help---
 625          Say Y here to change skb priority or queue_mapping settings.
 626
 627          If unsure, say N.
 628
 629          To compile this code as a module, choose M here: the
 630          module will be called act_skbedit.
 631
 632config NET_ACT_CSUM
 633        tristate "Checksum Updating"
 634        depends on NET_CLS_ACT && INET
 635        ---help---
 636          Say Y here to update some common checksum after some direct
 637          packet alterations.
 638
 639          To compile this code as a module, choose M here: the
 640          module will be called act_csum.
 641
 642config NET_CLS_IND
 643        bool "Incoming device classification"
 644        depends on NET_CLS_U32 || NET_CLS_FW
 645        ---help---
 646          Say Y here to extend the u32 and fw classifier to support
 647          classification based on the incoming device. This option is
 648          likely to disappear in favour of the metadata ematch.
 649
 650endif # NET_SCHED
 651
 652config NET_SCH_FIFO
 653        bool
 654
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.