123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748 |
- #
- # Traffic control configuration.
- #
- menuconfig NET_SCHED
- bool "QoS and/or fair queueing"
- select NET_SCH_FIFO
- ---help---
- When the kernel has several packets to send out over a network
- device, it has to decide which ones to send first, which ones to
- delay, and which ones to drop. This is the job of the queueing
- disciplines, several different algorithms for how to do this
- "fairly" have been proposed.
- If you say N here, you will get the standard packet scheduler, which
- is a FIFO (first come, first served). If you say Y here, you will be
- able to choose from among several alternative algorithms which can
- then be attached to different network devices. This is useful for
- example if some of your network devices are real time devices that
- need a certain minimum data flow rate, or if you need to limit the
- maximum data flow rate for traffic which matches specified criteria.
- This code is considered to be experimental.
- To administer these schedulers, you'll need the user-level utilities
- from the package iproute2+tc at
- <https://www.kernel.org/pub/linux/utils/net/iproute2/>. That package
- also contains some documentation; for more, check out
- <http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>.
- This Quality of Service (QoS) support will enable you to use
- Differentiated Services (diffserv) and Resource Reservation Protocol
- (RSVP) on your Linux router if you also say Y to the corresponding
- classifiers below. Documentation and software is at
- <http://diffserv.sourceforge.net/>.
- If you say Y here and to "/proc file system" below, you will be able
- to read status information about packet schedulers from the file
- /proc/net/psched.
- The available schedulers are listed in the following questions; you
- can say Y to as many as you like. If unsure, say N now.
- if NET_SCHED
- comment "Queueing/Scheduling"
- config NET_SCH_CBQ
- tristate "Class Based Queueing (CBQ)"
- ---help---
- Say Y here if you want to use the Class-Based Queueing (CBQ) packet
- scheduling algorithm. This algorithm classifies the waiting packets
- into a tree-like hierarchy of classes; the leaves of this tree are
- in turn scheduled by separate algorithms.
- See the top of <file:net/sched/sch_cbq.c> for more details.
- CBQ is a commonly used scheduler, so if you're unsure, you should
- say Y here. Then say Y to all the queueing algorithms below that you
- want to use as leaf disciplines.
- To compile this code as a module, choose M here: the
- module will be called sch_cbq.
- config NET_SCH_HTB
- tristate "Hierarchical Token Bucket (HTB)"
- ---help---
- Say Y here if you want to use the Hierarchical Token Buckets (HTB)
- packet scheduling algorithm. See
- <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
- in-depth articles.
- HTB is very similar to CBQ regarding its goals however is has
- different properties and different algorithm.
- To compile this code as a module, choose M here: the
- module will be called sch_htb.
- config NET_SCH_HFSC
- tristate "Hierarchical Fair Service Curve (HFSC)"
- ---help---
- Say Y here if you want to use the Hierarchical Fair Service Curve
- (HFSC) packet scheduling algorithm.
- To compile this code as a module, choose M here: the
- module will be called sch_hfsc.
- config NET_SCH_ATM
- tristate "ATM Virtual Circuits (ATM)"
- depends on ATM
- ---help---
- Say Y here if you want to use the ATM pseudo-scheduler. This
- provides a framework for invoking classifiers, which in turn
- select classes of this queuing discipline. Each class maps
- the flow(s) it is handling to a given virtual circuit.
- See the top of <file:net/sched/sch_atm.c> for more details.
- To compile this code as a module, choose M here: the
- module will be called sch_atm.
- config NET_SCH_PRIO
- tristate "Multi Band Priority Queueing (PRIO)"
- ---help---
- Say Y here if you want to use an n-band priority queue packet
- scheduler.
- To compile this code as a module, choose M here: the
- module will be called sch_prio.
- config NET_SCH_MULTIQ
- tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
- ---help---
- Say Y here if you want to use an n-band queue packet scheduler
- to support devices that have multiple hardware transmit queues.
- To compile this code as a module, choose M here: the
- module will be called sch_multiq.
- config NET_SCH_RED
- tristate "Random Early Detection (RED)"
- ---help---
- Say Y here if you want to use the Random Early Detection (RED)
- packet scheduling algorithm.
- See the top of <file:net/sched/sch_red.c> for more details.
- To compile this code as a module, choose M here: the
- module will be called sch_red.
- config NET_SCH_SFB
- tristate "Stochastic Fair Blue (SFB)"
- ---help---
- Say Y here if you want to use the Stochastic Fair Blue (SFB)
- packet scheduling algorithm.
- See the top of <file:net/sched/sch_sfb.c> for more details.
- To compile this code as a module, choose M here: the
- module will be called sch_sfb.
- config NET_SCH_SFQ
- tristate "Stochastic Fairness Queueing (SFQ)"
- ---help---
- Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
- packet scheduling algorithm.
- See the top of <file:net/sched/sch_sfq.c> for more details.
- To compile this code as a module, choose M here: the
- module will be called sch_sfq.
- config NET_SCH_TEQL
- tristate "True Link Equalizer (TEQL)"
- ---help---
- Say Y here if you want to use the True Link Equalizer (TLE) packet
- scheduling algorithm. This queueing discipline allows the combination
- of several physical devices into one virtual device.
- See the top of <file:net/sched/sch_teql.c> for more details.
- To compile this code as a module, choose M here: the
- module will be called sch_teql.
- config NET_SCH_TBF
- tristate "Token Bucket Filter (TBF)"
- ---help---
- Say Y here if you want to use the Token Bucket Filter (TBF) packet
- scheduling algorithm.
- See the top of <file:net/sched/sch_tbf.c> for more details.
- To compile this code as a module, choose M here: the
- module will be called sch_tbf.
- config NET_SCH_GRED
- tristate "Generic Random Early Detection (GRED)"
- ---help---
- Say Y here if you want to use the Generic Random Early Detection
- (GRED) packet scheduling algorithm for some of your network devices
- (see the top of <file:net/sched/sch_red.c> for details and
- references about the algorithm).
- To compile this code as a module, choose M here: the
- module will be called sch_gred.
- config NET_SCH_DSMARK
- tristate "Differentiated Services marker (DSMARK)"
- ---help---
- Say Y if you want to schedule packets according to the
- Differentiated Services architecture proposed in RFC 2475.
- Technical information on this method, with pointers to associated
- RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
- To compile this code as a module, choose M here: the
- module will be called sch_dsmark.
- config NET_SCH_NETEM
- tristate "Network emulator (NETEM)"
- ---help---
- Say Y if you want to emulate network delay, loss, and packet
- re-ordering. This is often useful to simulate networks when
- testing applications or protocols.
- To compile this driver as a module, choose M here: the module
- will be called sch_netem.
- If unsure, say N.
- config NET_SCH_DRR
- tristate "Deficit Round Robin scheduler (DRR)"
- help
- Say Y here if you want to use the Deficit Round Robin (DRR) packet
- scheduling algorithm.
- To compile this driver as a module, choose M here: the module
- will be called sch_drr.
- If unsure, say N.
- config NET_SCH_MQPRIO
- tristate "Multi-queue priority scheduler (MQPRIO)"
- help
- Say Y here if you want to use the Multi-queue Priority scheduler.
- This scheduler allows QOS to be offloaded on NICs that have support
- for offloading QOS schedulers.
- To compile this driver as a module, choose M here: the module will
- be called sch_mqprio.
- If unsure, say N.
- config NET_SCH_CHOKE
- tristate "CHOose and Keep responsive flow scheduler (CHOKE)"
- help
- Say Y here if you want to use the CHOKe packet scheduler (CHOose
- and Keep for responsive flows, CHOose and Kill for unresponsive
- flows). This is a variation of RED which trys to penalize flows
- that monopolize the queue.
- To compile this code as a module, choose M here: the
- module will be called sch_choke.
- config NET_SCH_QFQ
- tristate "Quick Fair Queueing scheduler (QFQ)"
- help
- Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
- packet scheduling algorithm.
- To compile this driver as a module, choose M here: the module
- will be called sch_qfq.
- If unsure, say N.
- config NET_SCH_CODEL
- tristate "Controlled Delay AQM (CODEL)"
- help
- Say Y here if you want to use the Controlled Delay (CODEL)
- packet scheduling algorithm.
- To compile this driver as a module, choose M here: the module
- will be called sch_codel.
- If unsure, say N.
- config NET_SCH_FQ_CODEL
- tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)"
- help
- Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL)
- packet scheduling algorithm.
- To compile this driver as a module, choose M here: the module
- will be called sch_fq_codel.
- If unsure, say N.
- config NET_SCH_FQ
- tristate "Fair Queue"
- help
- Say Y here if you want to use the FQ packet scheduling algorithm.
- FQ does flow separation, and is able to respect pacing requirements
- set by TCP stack into sk->sk_pacing_rate (for localy generated
- traffic)
- To compile this driver as a module, choose M here: the module
- will be called sch_fq.
- If unsure, say N.
- config NET_SCH_HHF
- tristate "Heavy-Hitter Filter (HHF)"
- help
- Say Y here if you want to use the Heavy-Hitter Filter (HHF)
- packet scheduling algorithm.
- To compile this driver as a module, choose M here: the module
- will be called sch_hhf.
- config NET_SCH_PIE
- tristate "Proportional Integral controller Enhanced (PIE) scheduler"
- help
- Say Y here if you want to use the Proportional Integral controller
- Enhanced scheduler packet scheduling algorithm.
- For more information, please see
- http://tools.ietf.org/html/draft-pan-tsvwg-pie-00
- To compile this driver as a module, choose M here: the module
- will be called sch_pie.
- If unsure, say N.
- config NET_SCH_INGRESS
- tristate "Ingress Qdisc"
- depends on NET_CLS_ACT
- select NET_INGRESS
- ---help---
- Say Y here if you want to use classifiers for incoming packets.
- If unsure, say Y.
- To compile this code as a module, choose M here: the
- module will be called sch_ingress.
- config NET_SCH_PLUG
- tristate "Plug network traffic until release (PLUG)"
- ---help---
- This queuing discipline allows userspace to plug/unplug a network
- output queue, using the netlink interface. When it receives an
- enqueue command it inserts a plug into the outbound queue that
- causes following packets to enqueue until a dequeue command arrives
- over netlink, causing the plug to be removed and resuming the normal
- packet flow.
- This module also provides a generic "network output buffering"
- functionality (aka output commit), wherein upon arrival of a dequeue
- command, only packets up to the first plug are released for delivery.
- The Remus HA project uses this module to enable speculative execution
- of virtual machines by allowing the generated network output to be rolled
- back if needed.
- For more information, please refer to <http://wiki.xenproject.org/wiki/Remus>
- Say Y here if you are using this kernel for Xen dom0 and
- want to protect Xen guests with Remus.
- To compile this code as a module, choose M here: the
- module will be called sch_plug.
- comment "Classification"
- config NET_CLS
- bool
- config NET_CLS_BASIC
- tristate "Elementary classification (BASIC)"
- select NET_CLS
- ---help---
- Say Y here if you want to be able to classify packets using
- only extended matches and actions.
- To compile this code as a module, choose M here: the
- module will be called cls_basic.
- config NET_CLS_TCINDEX
- tristate "Traffic-Control Index (TCINDEX)"
- select NET_CLS
- ---help---
- Say Y here if you want to be able to classify packets based on
- traffic control indices. You will want this feature if you want
- to implement Differentiated Services together with DSMARK.
- To compile this code as a module, choose M here: the
- module will be called cls_tcindex.
- config NET_CLS_ROUTE4
- tristate "Routing decision (ROUTE)"
- depends on INET
- select IP_ROUTE_CLASSID
- select NET_CLS
- ---help---
- If you say Y here, you will be able to classify packets
- according to the route table entry they matched.
- To compile this code as a module, choose M here: the
- module will be called cls_route.
- config NET_CLS_FW
- tristate "Netfilter mark (FW)"
- select NET_CLS
- ---help---
- If you say Y here, you will be able to classify packets
- according to netfilter/firewall marks.
- To compile this code as a module, choose M here: the
- module will be called cls_fw.
- config NET_CLS_U32
- tristate "Universal 32bit comparisons w/ hashing (U32)"
- select NET_CLS
- ---help---
- Say Y here to be able to classify packets using a universal
- 32bit pieces based comparison scheme.
- To compile this code as a module, choose M here: the
- module will be called cls_u32.
- config CLS_U32_PERF
- bool "Performance counters support"
- depends on NET_CLS_U32
- ---help---
- Say Y here to make u32 gather additional statistics useful for
- fine tuning u32 classifiers.
- config CLS_U32_MARK
- bool "Netfilter marks support"
- depends on NET_CLS_U32
- ---help---
- Say Y here to be able to use netfilter marks as u32 key.
- config NET_CLS_RSVP
- tristate "IPv4 Resource Reservation Protocol (RSVP)"
- select NET_CLS
- ---help---
- The Resource Reservation Protocol (RSVP) permits end systems to
- request a minimum and maximum data flow rate for a connection; this
- is important for real time data such as streaming sound or video.
- Say Y here if you want to be able to classify outgoing packets based
- on their RSVP requests.
- To compile this code as a module, choose M here: the
- module will be called cls_rsvp.
- config NET_CLS_RSVP6
- tristate "IPv6 Resource Reservation Protocol (RSVP6)"
- select NET_CLS
- ---help---
- The Resource Reservation Protocol (RSVP) permits end systems to
- request a minimum and maximum data flow rate for a connection; this
- is important for real time data such as streaming sound or video.
- Say Y here if you want to be able to classify outgoing packets based
- on their RSVP requests and you are using the IPv6 protocol.
- To compile this code as a module, choose M here: the
- module will be called cls_rsvp6.
- config NET_CLS_FLOW
- tristate "Flow classifier"
- select NET_CLS
- ---help---
- If you say Y here, you will be able to classify packets based on
- a configurable combination of packet keys. This is mostly useful
- in combination with SFQ.
- To compile this code as a module, choose M here: the
- module will be called cls_flow.
- config NET_CLS_CGROUP
- tristate "Control Group Classifier"
- select NET_CLS
- select CGROUP_NET_CLASSID
- depends on CGROUPS
- ---help---
- Say Y here if you want to classify packets based on the control
- cgroup of their process.
- To compile this code as a module, choose M here: the
- module will be called cls_cgroup.
- config NET_CLS_BPF
- tristate "BPF-based classifier"
- select NET_CLS
- ---help---
- If you say Y here, you will be able to classify packets based on
- programmable BPF (JIT'ed) filters as an alternative to ematches.
- To compile this code as a module, choose M here: the module will
- be called cls_bpf.
- config NET_CLS_FLOWER
- tristate "Flower classifier"
- select NET_CLS
- ---help---
- If you say Y here, you will be able to classify packets based on
- a configurable combination of packet keys and masks.
- To compile this code as a module, choose M here: the module will
- be called cls_flower.
- config NET_EMATCH
- bool "Extended Matches"
- select NET_CLS
- ---help---
- Say Y here if you want to use extended matches on top of classifiers
- and select the extended matches below.
- Extended matches are small classification helpers not worth writing
- a separate classifier for.
- A recent version of the iproute2 package is required to use
- extended matches.
- config NET_EMATCH_STACK
- int "Stack size"
- depends on NET_EMATCH
- default "32"
- ---help---
- Size of the local stack variable used while evaluating the tree of
- ematches. Limits the depth of the tree, i.e. the number of
- encapsulated precedences. Every level requires 4 bytes of additional
- stack space.
- config NET_EMATCH_CMP
- tristate "Simple packet data comparison"
- depends on NET_EMATCH
- ---help---
- Say Y here if you want to be able to classify packets based on
- simple packet data comparisons for 8, 16, and 32bit values.
- To compile this code as a module, choose M here: the
- module will be called em_cmp.
- config NET_EMATCH_NBYTE
- tristate "Multi byte comparison"
- depends on NET_EMATCH
- ---help---
- Say Y here if you want to be able to classify packets based on
- multiple byte comparisons mainly useful for IPv6 address comparisons.
- To compile this code as a module, choose M here: the
- module will be called em_nbyte.
- config NET_EMATCH_U32
- tristate "U32 key"
- depends on NET_EMATCH
- ---help---
- Say Y here if you want to be able to classify packets using
- the famous u32 key in combination with logic relations.
- To compile this code as a module, choose M here: the
- module will be called em_u32.
- config NET_EMATCH_META
- tristate "Metadata"
- depends on NET_EMATCH
- ---help---
- Say Y here if you want to be able to classify packets based on
- metadata such as load average, netfilter attributes, socket
- attributes and routing decisions.
- To compile this code as a module, choose M here: the
- module will be called em_meta.
- config NET_EMATCH_TEXT
- tristate "Textsearch"
- depends on NET_EMATCH
- select TEXTSEARCH
- select TEXTSEARCH_KMP
- select TEXTSEARCH_BM
- select TEXTSEARCH_FSM
- ---help---
- Say Y here if you want to be able to classify packets based on
- textsearch comparisons.
- To compile this code as a module, choose M here: the
- module will be called em_text.
- config NET_EMATCH_CANID
- tristate "CAN Identifier"
- depends on NET_EMATCH && (CAN=y || CAN=m)
- ---help---
- Say Y here if you want to be able to classify CAN frames based
- on CAN Identifier.
- To compile this code as a module, choose M here: the
- module will be called em_canid.
- config NET_EMATCH_IPSET
- tristate "IPset"
- depends on NET_EMATCH && IP_SET
- ---help---
- Say Y here if you want to be able to classify packets based on
- ipset membership.
- To compile this code as a module, choose M here: the
- module will be called em_ipset.
- config NET_CLS_ACT
- bool "Actions"
- ---help---
- Say Y here if you want to use traffic control actions. Actions
- get attached to classifiers and are invoked after a successful
- classification. They are used to overwrite the classification
- result, instantly drop or redirect packets, etc.
- A recent version of the iproute2 package is required to use
- extended matches.
- config NET_ACT_POLICE
- tristate "Traffic Policing"
- depends on NET_CLS_ACT
- ---help---
- Say Y here if you want to do traffic policing, i.e. strict
- bandwidth limiting. This action replaces the existing policing
- module.
- To compile this code as a module, choose M here: the
- module will be called act_police.
- config NET_ACT_GACT
- tristate "Generic actions"
- depends on NET_CLS_ACT
- ---help---
- Say Y here to take generic actions such as dropping and
- accepting packets.
- To compile this code as a module, choose M here: the
- module will be called act_gact.
- config GACT_PROB
- bool "Probability support"
- depends on NET_ACT_GACT
- ---help---
- Say Y here to use the generic action randomly or deterministically.
- config NET_ACT_MIRRED
- tristate "Redirecting and Mirroring"
- depends on NET_CLS_ACT
- ---help---
- Say Y here to allow packets to be mirrored or redirected to
- other devices.
- To compile this code as a module, choose M here: the
- module will be called act_mirred.
- config NET_ACT_IPT
- tristate "IPtables targets"
- depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
- ---help---
- Say Y here to be able to invoke iptables targets after successful
- classification.
- To compile this code as a module, choose M here: the
- module will be called act_ipt.
- config NET_ACT_NAT
- tristate "Stateless NAT"
- depends on NET_CLS_ACT
- ---help---
- Say Y here to do stateless NAT on IPv4 packets. You should use
- netfilter for NAT unless you know what you are doing.
- To compile this code as a module, choose M here: the
- module will be called act_nat.
- config NET_ACT_PEDIT
- tristate "Packet Editing"
- depends on NET_CLS_ACT
- ---help---
- Say Y here if you want to mangle the content of packets.
- To compile this code as a module, choose M here: the
- module will be called act_pedit.
- config NET_ACT_SIMP
- tristate "Simple Example (Debug)"
- depends on NET_CLS_ACT
- ---help---
- Say Y here to add a simple action for demonstration purposes.
- It is meant as an example and for debugging purposes. It will
- print a configured policy string followed by the packet count
- to the console for every packet that passes by.
- If unsure, say N.
- To compile this code as a module, choose M here: the
- module will be called act_simple.
- config NET_ACT_SKBEDIT
- tristate "SKB Editing"
- depends on NET_CLS_ACT
- ---help---
- Say Y here to change skb priority or queue_mapping settings.
- If unsure, say N.
- To compile this code as a module, choose M here: the
- module will be called act_skbedit.
- config NET_ACT_CSUM
- tristate "Checksum Updating"
- depends on NET_CLS_ACT && INET
- ---help---
- Say Y here to update some common checksum after some direct
- packet alterations.
- To compile this code as a module, choose M here: the
- module will be called act_csum.
- config NET_ACT_VLAN
- tristate "Vlan manipulation"
- depends on NET_CLS_ACT
- ---help---
- Say Y here to push or pop vlan headers.
- If unsure, say N.
- To compile this code as a module, choose M here: the
- module will be called act_vlan.
- config NET_ACT_BPF
- tristate "BPF based action"
- depends on NET_CLS_ACT
- ---help---
- Say Y here to execute BPF code on packets. The BPF code will decide
- if the packet should be dropped or not.
- If unsure, say N.
- To compile this code as a module, choose M here: the
- module will be called act_bpf.
- config NET_ACT_CONNMARK
- tristate "Netfilter Connection Mark Retriever"
- depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
- depends on NF_CONNTRACK && NF_CONNTRACK_MARK
- ---help---
- Say Y here to allow retrieving of conn mark
- If unsure, say N.
- To compile this code as a module, choose M here: the
- module will be called act_connmark.
- config NET_CLS_IND
- bool "Incoming device classification"
- depends on NET_CLS_U32 || NET_CLS_FW
- ---help---
- Say Y here to extend the u32 and fw classifier to support
- classification based on the incoming device. This option is
- likely to disappear in favour of the metadata ematch.
- endif # NET_SCHED
- config NET_SCH_FIFO
- bool
|