1 # This file is part of the OpenADK project. OpenADK is copyrighted
2 # material, please see the LICENCE file in the top-level directory.
4 menu "QoS and/or fair queueing"
6 config ADK_LINUX_KERNEL_NET_SCH_CSZ
9 config ADK_LINUX_KERNEL_NET_SCH_NETEM
12 config ADK_LINUX_KERNEL_NET_QOS
15 config ADK_LINUX_KERNEL_NET_ESTIMATOR
18 config ADK_LINUX_KERNEL_NET_SCHED
21 When the kernel has several packets to send out over a network
22 device, it has to decide which ones to send first, which ones to
23 delay, and which ones to drop. This is the job of the queueing
24 disciplines, several different algorithms for how to do this
25 "fairly" have been proposed.
27 If you say N here, you will get the standard packet scheduler, which
28 is a FIFO (first come, first served). If you say Y here, you will be
29 able to choose from among several alternative algorithms which can
30 then be attached to different network devices. This is useful for
31 example if some of your network devices are real time devices that
32 need a certain minimum data flow rate, or if you need to limit the
33 maximum data flow rate for traffic which matches specified criteria.
34 This code is considered to be experimental.
36 To administer these schedulers, you'll need the user-level utilities
37 from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>.
38 That package also contains some documentation; for more, check out
39 <http://linux-net.osdl.org/index.php/Iproute2>.
41 This Quality of Service (QoS) support will enable you to use
42 Differentiated Services (diffserv) and Resource Reservation Protocol
43 (RSVP) on your Linux router if you also say Y to the corresponding
44 classifiers below. Documentation and software is at
45 <http://diffserv.sourceforge.net/>.
47 comment "Queueing/Scheduling"
49 config ADK_LINUX_KERNEL_NET_SCH_CBQ
50 tristate "Class Based Queueing (CBQ)"
51 select ADK_LINUX_KERNEL_NET_SCHED
54 Say Y here if you want to use the Class-Based Queueing (CBQ) packet
55 scheduling algorithm. This algorithm classifies the waiting packets
56 into a tree-like hierarchy of classes; the leaves of this tree are
57 in turn scheduled by separate algorithms.
59 See the top of <file:net/sched/sch_cbq.c> for more details.
61 CBQ is a commonly used scheduler, so if you're unsure, you should
62 say Y here. Then say Y to all the queueing algorithms below that you
63 want to use as leaf disciplines.
65 config ADK_LINUX_KERNEL_NET_SCH_HTB
66 tristate "Hierarchical Token Bucket (HTB)"
67 select ADK_LINUX_KERNEL_NET_SCHED
70 Say Y here if you want to use the Hierarchical Token Buckets (HTB)
71 packet scheduling algorithm. See
72 <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
75 HTB is very similar to CBQ regarding its goals however is has
76 different properties and different algorithm.
78 config ADK_LINUX_KERNEL_NET_SCH_HFSC
79 tristate "Hierarchical Fair Service Curve (HFSC)"
80 select ADK_LINUX_KERNEL_NET_SCHED
83 Say Y here if you want to use the Hierarchical Fair Service Curve
84 (HFSC) packet scheduling algorithm.
86 config ADK_LINUX_KERNEL_NET_SCH_ATM
87 tristate "ATM Virtual Circuits (ATM)"
88 depends on ADK_LINUX_KERNEL_ATM
89 select ADK_LINUX_KERNEL_NET_SCHED
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.
97 See the top of <file:net/sched/sch_atm.c>) for more details.
99 config ADK_LINUX_KERNEL_NET_SCH_PRIO
100 tristate "Multi Band Priority Queueing (PRIO)"
101 select ADK_LINUX_KERNEL_NET_SCHED
104 Say Y here if you want to use an n-band priority queue packet
107 config ADK_LINUX_KERNEL_NET_SCH_RED
108 tristate "Random Early Detection (RED)"
109 select ADK_LINUX_KERNEL_NET_SCHED
112 Say Y here if you want to use the Random Early Detection (RED)
113 packet scheduling algorithm.
115 See the top of <file:net/sched/sch_red.c> for more details.
117 config ADK_LINUX_KERNEL_NET_SCH_SFQ
118 tristate "Stochastic Fairness Queueing (SFQ)"
119 select ADK_LINUX_KERNEL_NET_SCHED
122 Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
123 packet scheduling algorithm .
125 See the top of <file:net/sched/sch_sfq.c> for more details.
127 config ADK_LINUX_KERNEL_NET_SCH_TBF
128 tristate "Token Bucket Filter (TBF)"
129 select ADK_LINUX_KERNEL_NET_SCHED
132 Say Y here if you want to use the Token Bucket Filter (TBF) packet
133 scheduling algorithm.
135 See the top of <file:net/sched/sch_tbf.c> for more details.
137 config ADK_LINUX_KERNEL_NET_SCH_GRED
138 tristate "Generic Random Early Detection (GRED)"
139 select ADK_LINUX_KERNEL_NET_SCHED
142 Say Y here if you want to use the Generic Random Early Detection
143 (GRED) packet scheduling algorithm for some of your network devices
144 (see the top of <file:net/sched/sch_red.c> for details and
145 references about the algorithm).
147 config ADK_LINUX_KERNEL_NET_SCH_DSMARK
148 tristate "Differentiated Services marker (DSMARK)"
149 select ADK_LINUX_KERNEL_NET_SCHED
152 Say Y if you want to schedule packets according to the
153 Differentiated Services architecture proposed in RFC 2475.
154 Technical information on this method, with pointers to associated
155 RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
157 config ADK_LINUX_KERNEL_NET_SCH_INGRESS
158 tristate "Ingress Qdisc"
159 select ADK_LINUX_KERNEL_NET_SCHED
160 select ADK_LINUX_KERNEL_NETFILTER
161 select ADK_LINUX_KERNEL_NET_CLS_ACT
164 Say Y here if you want to use classifiers for incoming packets.
167 comment "Classification"
169 config ADK_LINUX_KERNEL_NET_CLS
171 select ADK_LINUX_KERNEL_NET_SCHED
174 config ADK_LINUX_KERNEL_NET_CLS_BASIC
175 tristate "Elementary classification (BASIC)"
176 select ADK_LINUX_KERNEL_NET_CLS
179 Say Y here if you want to be able to classify packets using
180 only extended matches and actions.
182 config ADK_LINUX_KERNEL_NET_CLS_TCINDEX
183 tristate "Traffic-Control Index (TCINDEX)"
184 select ADK_LINUX_KERNEL_NET_CLS
187 Say Y here if you want to be able to classify packets based on
188 traffic control indices. You will want this feature if you want
189 to implement Differentiated Services together with DSMARK.
191 config ADK_LINUX_KERNEL_NET_CLS_ROUTE4
192 tristate "Routing decision (ROUTE)"
193 select ADK_LINUX_KERNEL_NET_CLS
196 If you say Y here, you will be able to classify packets
197 according to the route table entry they matched.
199 config ADK_LINUX_KERNEL_NET_CLS_FW
200 tristate "Netfilter mark (FW)"
201 select ADK_LINUX_KERNEL_NET_CLS
204 If you say Y here, you will be able to classify packets
205 according to netfilter/firewall marks.
207 config ADK_LINUX_KERNEL_NET_CLS_U32
208 tristate "Universal 32bit comparisons w/ hashing (U32)"
209 select ADK_LINUX_KERNEL_NET_CLS
212 Say Y here to be able to classify packets using a universal
213 32bit pieces based comparison scheme.
215 config ADK_LINUX_KERNEL_NET_CLS_U32_PERF
216 bool "Performance counters support"
217 select ADK_LINUX_KERNEL_NET_CLS
218 depends on ADK_LINUX_KERNEL_NET_CLS_U32
221 Say Y here to make u32 gather additional statistics useful for
222 fine tuning u32 classifiers.
224 config ADK_LINUX_KERNEL_NET_CLS_U32_MARK
225 bool "Netfilter marks support"
226 select ADK_LINUX_KERNEL_NET_CLS
227 depends on ADK_LINUX_KERNEL_NET_CLS_U32
228 depends on ADK_LINUX_KERNEL_NET_CLS_FW
231 Say Y here to be able to use netfilter marks as u32 key.
235 config ADK_LINUX_KERNEL_NET_CLS_ACT
237 select ADK_LINUX_KERNEL_NET_SCHED
238 select ADK_LINUX_KERNEL_NET_ESTIMATOR
241 config ADK_LINUX_KERNEL_NET_ACT_POLICE
242 tristate "Traffic Policing"
243 select ADK_LINUX_KERNEL_NET_CLS_ACT
246 Say Y here if you want to do traffic policing, i.e. strict
247 bandwidth limiting. This action replaces the existing policing
250 config ADK_LINUX_KERNEL_NET_ACT_GACT
251 tristate "Generic actions"
252 select ADK_LINUX_KERNEL_NET_CLS_ACT
255 Say Y here to take generic actions such as dropping and
258 config ADK_LINUX_KERNEL_NET_ACT_MIRRED
259 tristate "Redirecting and Mirroring"
260 select ADK_LINUX_KERNEL_NET_CLS_ACT
263 Say Y here to allow packets to be mirrored or redirected to
266 config ADK_LINUX_KERNEL_NET_ACT_IPT
267 tristate "IPtables targets"
268 select ADK_LINUX_KERNEL_NET_CLS_ACT
269 select ADK_LINUX_KERNEL_IP_NF_IPTABLES
272 Say Y here to be able to invoke iptables targets after successful
275 config ADK_LINUX_KERNEL_NET_ACT_PEDIT
276 tristate "Packet Editing"
277 select ADK_LINUX_KERNEL_NET_CLS_ACT
280 Say Y here if you want to mangle the content of packets.