123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569 |
- #
- # Traffic control configuration.
- #
- menuconfig NET_SCHED
- bool "QoS and/or fair queueing"
- ---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 packet
- scheduler, and 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 <ftp://ftp.tux.org/pub/net/ip-routing/>.
- That package also contains some documentation; for more, check out
- <http://snafu.freedom.org/linux2.2/iproute-notes.html>.
- 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 "QoS support",
- "Packet classifier API" and to some 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.
- choice
- prompt "Packet scheduler clock source"
- depends on NET_SCHED
- default NET_SCH_CLK_JIFFIES
- help
- Packet schedulers need a monotonic clock that increments at a static
- rate. The kernel provides several suitable interfaces, each with
- different properties:
-
- - high resolution (us or better)
- - fast to read (minimal locking, no i/o access)
- - synchronized on all processors
- - handles cpu clock frequency changes
- but nothing provides all of the above.
- config NET_SCH_CLK_JIFFIES
- bool "Timer interrupt"
- help
- Say Y here if you want to use the timer interrupt (jiffies) as clock
- source. This clock source is fast, synchronized on all processors and
- handles cpu clock frequency changes, but its resolution is too low
- for accurate shaping except at very low speed.
- config NET_SCH_CLK_GETTIMEOFDAY
- bool "gettimeofday"
- help
- Say Y here if you want to use gettimeofday as clock source. This clock
- source has high resolution, is synchronized on all processors and
- handles cpu clock frequency changes, but it is slow.
- Choose this if you need a high resolution clock source but can't use
- the CPU's cycle counter.
- config NET_SCH_CLK_CPU
- bool "CPU cycle counter"
- depends on X86_TSC || X86_64 || ALPHA || SPARC64 || PPC64 || IA64
- help
- Say Y here if you want to use the CPU's cycle counter as clock source.
- This is a cheap and high resolution clock source, but on some
- architectures it is not synchronized on all processors and doesn't
- handle cpu clock frequency changes.
- The useable cycle counters are:
- x86/x86_64 - Timestamp Counter
- alpha - Cycle Counter
- sparc64 - %ticks register
- ppc64 - Time base
- ia64 - Interval Time Counter
- Choose this if your CPU's cycle counter is working properly.
- endchoice
- config NET_SCH_CBQ
- tristate "CBQ packet scheduler"
- depends on NET_SCHED
- ---help---
- Say Y here if you want to use the Class-Based Queueing (CBQ) packet
- scheduling algorithm for some of your network devices. 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 (called "disciplines" in this context).
- See the top of <file:net/sched/sch_cbq.c> for references about the
- CBQ algorithm.
- 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 CBQ disciplines. Then say Y to "Packet classifier
- API" and say Y to all the classifiers you want to use; a classifier
- is a routine that allows you to sort your outgoing traffic into
- classes based on a certain criterion.
- To compile this code as a module, choose M here: the
- module will be called sch_cbq.
- config NET_SCH_HTB
- tristate "HTB packet scheduler"
- depends on NET_SCHED
- ---help---
- Say Y here if you want to use the Hierarchical Token Buckets (HTB)
- packet scheduling algorithm for some of your network devices. See
- <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
- in-depth articles.
- HTB is very similar to the 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 "HFSC packet scheduler"
- depends on NET_SCHED
- ---help---
- Say Y here if you want to use the Hierarchical Fair Service Curve
- (HFSC) packet scheduling algorithm for some of your network devices.
- To compile this code as a module, choose M here: the
- module will be called sch_hfsc.
- #tristate ' H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ
- config NET_SCH_ATM
- tristate "ATM pseudo-scheduler"
- depends on NET_SCHED && ATM
- ---help---
- Say Y here if you want to use the ATM pseudo-scheduler. This
- provides a framework for invoking classifiers (aka "filters"), 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>).
- To compile this code as a module, choose M here: the
- module will be called sch_atm.
- config NET_SCH_PRIO
- tristate "The simplest PRIO pseudoscheduler"
- depends on NET_SCHED
- help
- Say Y here if you want to use an n-band priority queue packet
- "scheduler" for some of your network devices or as a leaf discipline
- for the CBQ scheduling algorithm. If unsure, say Y.
- To compile this code as a module, choose M here: the
- module will be called sch_prio.
- config NET_SCH_RED
- tristate "RED queue"
- depends on NET_SCHED
- help
- Say Y here if you want to use the Random Early Detection (RED)
- 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_red.
- config NET_SCH_SFQ
- tristate "SFQ queue"
- depends on NET_SCHED
- ---help---
- Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
- packet scheduling algorithm for some of your network devices or as a
- leaf discipline for the CBQ scheduling algorithm (see the top of
- <file:net/sched/sch_sfq.c> for details and references about the SFQ
- algorithm).
- To compile this code as a module, choose M here: the
- module will be called sch_sfq.
- config NET_SCH_TEQL
- tristate "TEQL queue"
- depends on NET_SCHED
- ---help---
- Say Y here if you want to use the True Link Equalizer (TLE) packet
- scheduling algorithm for some of your network devices or as a leaf
- discipline for the CBQ 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
- details).
- To compile this code as a module, choose M here: the
- module will be called sch_teql.
- config NET_SCH_TBF
- tristate "TBF queue"
- depends on NET_SCHED
- help
- Say Y here if you want to use the Simple Token Bucket Filter (TBF)
- packet scheduling algorithm for some of your network devices or as a
- leaf discipline for the CBQ scheduling algorithm (see the top of
- <file:net/sched/sch_tbf.c> for a description of the TBF algorithm).
- To compile this code as a module, choose M here: the
- module will be called sch_tbf.
- config NET_SCH_GRED
- tristate "GRED queue"
- depends on NET_SCHED
- 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 "Diffserv field marker"
- depends on NET_SCHED
- 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"
- depends on NET_SCHED
- 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_INGRESS
- tristate "Ingress Qdisc"
- depends on NET_SCHED
- help
- If you say Y here, you will be able to police incoming bandwidth
- and drop packets when this bandwidth exceeds your desired rate.
- If unsure, say Y.
- To compile this code as a module, choose M here: the
- module will be called sch_ingress.
- config NET_QOS
- bool "QoS support"
- depends on NET_SCHED
- ---help---
- Say Y here if you want to include Quality Of Service scheduling
- features, which means that you will be able to request certain
- rate-of-flow limits for your network devices.
- 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 "Packet classifier
- API" and to some classifiers below. Documentation and software is at
- <http://diffserv.sourceforge.net/>.
- Note that the answer to this question won't directly affect the
- kernel: saying N will just cause the configurator to skip all
- the questions about QoS support.
- config NET_ESTIMATOR
- bool "Rate estimator"
- depends on NET_QOS
- help
- In order for Quality of Service scheduling to work, the current
- rate-of-flow for a network device has to be estimated; if you say Y
- here, the kernel will do just that.
- config NET_CLS
- bool "Packet classifier API"
- depends on NET_SCHED
- ---help---
- The CBQ scheduling algorithm requires that network packets which are
- scheduled to be sent out over a network device be classified
- according to some criterion. If you say Y here, you will get a
- choice of several different packet classifiers with the following
- questions.
- This will enable you to use Differentiated Services (diffserv) and
- Resource Reservation Protocol (RSVP) on your Linux router.
- Documentation and software is at
- <http://diffserv.sourceforge.net/>.
- config NET_CLS_BASIC
- tristate "Basic classifier"
- depends on 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 "TC index classifier"
- depends on NET_CLS
- help
- If you say Y here, you will be able to classify outgoing packets
- according to the tc_index field of the skb. You will want this
- feature if you want to implement Differentiated Services using
- sch_dsmark. If unsure, say Y.
- To compile this code as a module, choose M here: the
- module will be called cls_tcindex.
- config NET_CLS_ROUTE4
- tristate "Routing table based classifier"
- depends on NET_CLS
- select NET_CLS_ROUTE
- help
- If you say Y here, you will be able to classify outgoing packets
- according to the route table entry they matched. If unsure, say Y.
- To compile this code as a module, choose M here: the
- module will be called cls_route.
- config NET_CLS_ROUTE
- bool
- default n
- config NET_CLS_FW
- tristate "Firewall based classifier"
- depends on NET_CLS
- help
- If you say Y here, you will be able to classify outgoing packets
- according to firewall criteria you specified.
- To compile this code as a module, choose M here: the
- module will be called cls_fw.
- config NET_CLS_U32
- tristate "U32 classifier"
- depends on NET_CLS
- help
- If you say Y here, you will be able to classify outgoing packets
- according to their destination address. If unsure, say Y.
- To compile this code as a module, choose M here: the
- module will be called cls_u32.
- config CLS_U32_PERF
- bool "U32 classifier performance counters"
- depends on NET_CLS_U32
- help
- gathers stats that could be used to tune u32 classifier performance.
- Requires a new iproute2
- You MUST NOT turn this on if you dont have an update iproute2.
- config NET_CLS_IND
- bool "classify input device (slows things u32/fw) "
- depends on NET_CLS_U32 || NET_CLS_FW
- help
- This option will be killed eventually when a
- metadata action appears because it slows things a little
- Available only for u32 and fw classifiers.
- Requires a new iproute2
- You MUST NOT turn this on if you dont have an update iproute2.
- config CLS_U32_MARK
- bool "Use nfmark as a key in U32 classifier"
- depends on NET_CLS_U32 && NETFILTER
- help
- This allows you to match mark in a u32 filter.
- Example:
- tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 \
- match mark 0x0090 0xffff \
- match ip dst 4.4.4.4 \
- flowid 1:90
- You must use a new iproute2 to use this feature.
- config NET_CLS_RSVP
- tristate "Special RSVP classifier"
- depends on NET_CLS && NET_QOS
- ---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 "Special RSVP classifier for IPv6"
- depends on NET_CLS && NET_QOS
- ---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 new Internet Protocol
- IPv6 as opposed to the older and more common IPv4.
- To compile this code as a module, choose M here: the
- module will be called cls_rsvp6.
- config NET_EMATCH
- bool "Extended Matches"
- depends on 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.
- You must have a recent version of the iproute2 tools in order 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 hashing 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 ablt 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 ablt 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_CLS_ACT
- bool "Packet ACTION"
- depends on EXPERIMENTAL && NET_CLS && NET_QOS
- ---help---
- This option requires you have a new iproute2. It enables
- tc extensions which can be used with tc classifiers.
- You MUST NOT turn this on if you dont have an update iproute2.
- config NET_ACT_POLICE
- tristate "Policing Actions"
- depends on NET_CLS_ACT
- ---help---
- If you are using a newer iproute2 select this one, otherwise use one
- below to select a policer.
- You MUST NOT turn this on if you dont have an update iproute2.
- config NET_ACT_GACT
- tristate "generic Actions"
- depends on NET_CLS_ACT
- ---help---
- You must have new iproute2 to use this feature.
- This adds simple filtering actions like drop, accept etc.
- config GACT_PROB
- bool "generic Actions probability"
- depends on NET_ACT_GACT
- ---help---
- Allows generic actions to be randomly or deterministically used.
- config NET_ACT_MIRRED
- tristate "Packet In/Egress redirecton/mirror Actions"
- depends on NET_CLS_ACT
- ---help---
- requires new iproute2
- This allows packets to be mirrored or redirected to netdevices
- config NET_ACT_IPT
- tristate "iptables Actions"
- depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
- ---help---
- requires new iproute2
- This allows iptables targets to be used by tc filters
- config NET_ACT_PEDIT
- tristate "Generic Packet Editor Actions"
- depends on NET_CLS_ACT
- ---help---
- requires new iproute2
- This allows for packets to be generically edited
- config NET_CLS_POLICE
- bool "Traffic policing (needed for in/egress)"
- depends on NET_CLS && NET_QOS && NET_CLS_ACT!=y
- help
- Say Y to support traffic policing (bandwidth limits). Needed for
- ingress and egress rate limiting.
- config NET_ACT_SIMP
- tristate "Simple action"
- depends on NET_CLS_ACT
- ---help---
- You must have new iproute2 to use this feature.
- This adds a very simple action for demonstration purposes
- The idea is to give action authors a basic example to look at.
- All this action will do is print on the console the configured
- policy string followed by _ then packet count.
|