1# 2# Traffic control configuration. 3# 4choice 5 prompt "Packet scheduler clock source" 6 depends on NET_SCHED 7 default NET_SCH_CLK_JIFFIES 8 help 9 Packet schedulers need a monotonic clock that increments at a static 10 rate. The kernel provides several suitable interfaces, each with 11 different properties: 12 13 - high resolution (us or better) 14 - fast to read (minimal locking, no i/o access) 15 - synchronized on all processors 16 - handles cpu clock frequency changes 17 18 but nothing provides all of the above. 19 20config NET_SCH_CLK_JIFFIES 21 bool "Timer interrupt" 22 help 23 Say Y here if you want to use the timer interrupt (jiffies) as clock 24 source. This clock source is fast, synchronized on all processors and 25 handles cpu clock frequency changes, but its resolution is too low 26 for accurate shaping except at very low speed. 27 28config NET_SCH_CLK_GETTIMEOFDAY 29 bool "gettimeofday" 30 help 31 Say Y here if you want to use gettimeofday as clock source. This clock 32 source has high resolution, is synchronized on all processors and 33 handles cpu clock frequency changes, but it is slow. 34 35 Choose this if you need a high resolution clock source but can't use 36 the CPU's cycle counter. 37 38config NET_SCH_CLK_CPU 39 bool "CPU cycle counter" 40 depends on X86_TSC || X86_64 || ALPHA || SPARC64 || PPC64 || IA64 41 help 42 Say Y here if you want to use the CPU's cycle counter as clock source. 43 This is a cheap and high resolution clock source, but on some 44 architectures it is not synchronized on all processors and doesn't 45 handle cpu clock frequency changes. 46 47 The useable cycle counters are: 48 49 x86/x86_64 - Timestamp Counter 50 alpha - Cycle Counter 51 sparc64 - %ticks register 52 ppc64 - Time base 53 ia64 - Interval Time Counter 54 55 Choose this if your CPU's cycle counter is working properly. 56 57endchoice 58 59config NET_SCH_CBQ 60 tristate "CBQ packet scheduler" 61 depends on NET_SCHED 62 ---help--- 63 Say Y here if you want to use the Class-Based Queueing (CBQ) packet 64 scheduling algorithm for some of your network devices. This 65 algorithm classifies the waiting packets into a tree-like hierarchy 66 of classes; the leaves of this tree are in turn scheduled by 67 separate algorithms (called "disciplines" in this context). 68 69 See the top of <file:net/sched/sch_cbq.c> for references about the 70 CBQ algorithm. 71 72 CBQ is a commonly used scheduler, so if you're unsure, you should 73 say Y here. Then say Y to all the queueing algorithms below that you 74 want to use as CBQ disciplines. Then say Y to "Packet classifier 75 API" and say Y to all the classifiers you want to use; a classifier 76 is a routine that allows you to sort your outgoing traffic into 77 classes based on a certain criterion. 78 79 To compile this code as a module, choose M here: the 80 module will be called sch_cbq. 81 82config NET_SCH_HTB 83 tristate "HTB packet scheduler" 84 depends on NET_SCHED 85 ---help--- 86 Say Y here if you want to use the Hierarchical Token Buckets (HTB) 87 packet scheduling algorithm for some of your network devices. See 88 <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and 89 in-depth articles. 90 91 HTB is very similar to the CBQ regarding its goals however is has 92 different properties and different algorithm. 93 94 To compile this code as a module, choose M here: the 95 module will be called sch_htb. 96 97config NET_SCH_HFSC 98 tristate "HFSC packet scheduler" 99 depends on NET_SCHED 100 ---help--- 101 Say Y here if you want to use the Hierarchical Fair Service Curve 102 (HFSC) packet scheduling algorithm for some of your network devices. 103 104 To compile this code as a module, choose M here: the 105 module will be called sch_hfsc. 106 107#tristate ' H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ 108config NET_SCH_ATM 109 tristate "ATM pseudo-scheduler" 110 depends on NET_SCHED && ATM 111 ---help--- 112 Say Y here if you want to use the ATM pseudo-scheduler. This 113 provides a framework for invoking classifiers (aka "filters"), which 114 in turn select classes of this queuing discipline. Each class maps 115 the flow(s) it is handling to a given virtual circuit (see the top of 116 <file:net/sched/sch_atm.c>). 117 118 To compile this code as a module, choose M here: the 119 module will be called sch_atm. 120 121config NET_SCH_PRIO 122 tristate "The simplest PRIO pseudoscheduler" 123 depends on NET_SCHED 124 help 125 Say Y here if you want to use an n-band priority queue packet 126 "scheduler" for some of your network devices or as a leaf discipline 127 for the CBQ scheduling algorithm. If unsure, say Y. 128 129 To compile this code as a module, choose M here: the 130 module will be called sch_prio. 131 132config NET_SCH_RED 133 tristate "RED queue" 134 depends on NET_SCHED 135 help 136 Say Y here if you want to use the Random Early Detection (RED) 137 packet scheduling algorithm for some of your network devices (see 138 the top of <file:net/sched/sch_red.c> for details and references 139 about the algorithm). 140 141 To compile this code as a module, choose M here: the 142 module will be called sch_red. 143 144config NET_SCH_SFQ 145 tristate "SFQ queue" 146 depends on NET_SCHED 147 ---help--- 148 Say Y here if you want to use the Stochastic Fairness Queueing (SFQ) 149 packet scheduling algorithm for some of your network devices or as a 150 leaf discipline for the CBQ scheduling algorithm (see the top of 151 <file:net/sched/sch_sfq.c> for details and references about the SFQ 152 algorithm). 153 154 To compile this code as a module, choose M here: the 155 module will be called sch_sfq. 156 157config NET_SCH_TEQL 158 tristate "TEQL queue" 159 depends on NET_SCHED 160 ---help--- 161 Say Y here if you want to use the True Link Equalizer (TLE) packet 162 scheduling algorithm for some of your network devices or as a leaf 163 discipline for the CBQ scheduling algorithm. This queueing 164 discipline allows the combination of several physical devices into 165 one virtual device. (see the top of <file:net/sched/sch_teql.c> for 166 details). 167 168 To compile this code as a module, choose M here: the 169 module will be called sch_teql. 170 171config NET_SCH_TBF 172 tristate "TBF queue" 173 depends on NET_SCHED 174 help 175 Say Y here if you want to use the Simple Token Bucket Filter (TBF) 176 packet scheduling algorithm for some of your network devices or as a 177 leaf discipline for the CBQ scheduling algorithm (see the top of 178 <file:net/sched/sch_tbf.c> for a description of the TBF algorithm). 179 180 To compile this code as a module, choose M here: the 181 module will be called sch_tbf. 182 183config NET_SCH_GRED 184 tristate "GRED queue" 185 depends on NET_SCHED 186 help 187 Say Y here if you want to use the Generic Random Early Detection 188 (RED) packet scheduling algorithm for some of your network devices 189 (see the top of <file:net/sched/sch_red.c> for details and 190 references about the algorithm). 191 192 To compile this code as a module, choose M here: the 193 module will be called sch_gred. 194 195config NET_SCH_DSMARK 196 tristate "Diffserv field marker" 197 depends on NET_SCHED 198 help 199 Say Y if you want to schedule packets according to the 200 Differentiated Services architecture proposed in RFC 2475. 201 Technical information on this method, with pointers to associated 202 RFCs, is available at <http://www.gta.ufrj.br/diffserv/>. 203 204 To compile this code as a module, choose M here: the 205 module will be called sch_dsmark. 206 207config NET_SCH_NETEM 208 tristate "Network emulator" 209 depends on NET_SCHED 210 help 211 Say Y if you want to emulate network delay, loss, and packet 212 re-ordering. This is often useful to simulate networks when 213 testing applications or protocols. 214 215 To compile this driver as a module, choose M here: the module 216 will be called sch_netem. 217 218 If unsure, say N. 219 220config NET_SCH_INGRESS 221 tristate "Ingress Qdisc" 222 depends on NET_SCHED 223 help 224 If you say Y here, you will be able to police incoming bandwidth 225 and drop packets when this bandwidth exceeds your desired rate. 226 If unsure, say Y. 227 228 To compile this code as a module, choose M here: the 229 module will be called sch_ingress. 230 231config NET_QOS 232 bool "QoS support" 233 depends on NET_SCHED 234 ---help--- 235 Say Y here if you want to include Quality Of Service scheduling 236 features, which means that you will be able to request certain 237 rate-of-flow limits for your network devices. 238 239 This Quality of Service (QoS) support will enable you to use 240 Differentiated Services (diffserv) and Resource Reservation Protocol 241 (RSVP) on your Linux router if you also say Y to "Packet classifier 242 API" and to some classifiers below. Documentation and software is at 243 <http://diffserv.sourceforge.net/>. 244 245 Note that the answer to this question won't directly affect the 246 kernel: saying N will just cause the configurator to skip all 247 the questions about QoS support. 248 249config NET_ESTIMATOR 250 bool "Rate estimator" 251 depends on NET_QOS 252 help 253 In order for Quality of Service scheduling to work, the current 254 rate-of-flow for a network device has to be estimated; if you say Y 255 here, the kernel will do just that. 256 257config NET_CLS 258 bool "Packet classifier API" 259 depends on NET_SCHED 260 ---help--- 261 The CBQ scheduling algorithm requires that network packets which are 262 scheduled to be sent out over a network device be classified 263 according to some criterion. If you say Y here, you will get a 264 choice of several different packet classifiers with the following 265 questions. 266 267 This will enable you to use Differentiated Services (diffserv) and 268 Resource Reservation Protocol (RSVP) on your Linux router. 269 Documentation and software is at 270 <http://diffserv.sourceforge.net/>. 271 272config NET_CLS_TCINDEX 273 tristate "TC index classifier" 274 depends on NET_CLS 275 help 276 If you say Y here, you will be able to classify outgoing packets 277 according to the tc_index field of the skb. You will want this 278 feature if you want to implement Differentiated Services using 279 sch_dsmark. If unsure, say Y. 280 281 To compile this code as a module, choose M here: the 282 module will be called cls_tcindex. 283 284config NET_CLS_ROUTE4 285 tristate "Routing table based classifier" 286 depends on NET_CLS 287 select NET_CLS_ROUTE 288 help 289 If you say Y here, you will be able to classify outgoing packets 290 according to the route table entry they matched. If unsure, say Y. 291 292 To compile this code as a module, choose M here: the 293 module will be called cls_route. 294 295config NET_CLS_ROUTE 296 bool 297 default n 298 299config NET_CLS_FW 300 tristate "Firewall based classifier" 301 depends on NET_CLS 302 help 303 If you say Y here, you will be able to classify outgoing packets 304 according to firewall criteria you specified. 305 306 To compile this code as a module, choose M here: the 307 module will be called cls_fw. 308 309config NET_CLS_U32 310 tristate "U32 classifier" 311 depends on NET_CLS 312 help 313 If you say Y here, you will be able to classify outgoing packets 314 according to their destination address. If unsure, say Y. 315 316 To compile this code as a module, choose M here: the 317 module will be called cls_u32. 318 319config CLS_U32_PERF 320 bool "U32 classifier performance counters" 321 depends on NET_CLS_U32 322 help 323 gathers stats that could be used to tune u32 classifier performance. 324 Requires a new iproute2 325 You MUST NOT turn this on if you dont have an update iproute2. 326 327config NET_CLS_IND 328 bool "classify input device (slows things u32/fw) " 329 depends on NET_CLS_U32 || NET_CLS_FW 330 help 331 This option will be killed eventually when a 332 metadata action appears because it slows things a little 333 Available only for u32 and fw classifiers. 334 Requires a new iproute2 335 You MUST NOT turn this on if you dont have an update iproute2. 336 337config CLS_U32_MARK 338 bool "Use nfmark as a key in U32 classifier" 339 depends on NET_CLS_U32 && NETFILTER 340 help 341 This allows you to match mark in a u32 filter. 342 Example: 343 tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 \ 344 match mark 0x0090 0xffff \ 345 match ip dst 4.4.4.4 \ 346 flowid 1:90 347 You must use a new iproute2 to use this feature. 348 349config NET_CLS_RSVP 350 tristate "Special RSVP classifier" 351 depends on NET_CLS && NET_QOS 352 ---help--- 353 The Resource Reservation Protocol (RSVP) permits end systems to 354 request a minimum and maximum data flow rate for a connection; this 355 is important for real time data such as streaming sound or video. 356 357 Say Y here if you want to be able to classify outgoing packets based 358 on their RSVP requests. 359 360 To compile this code as a module, choose M here: the 361 module will be called cls_rsvp. 362 363config NET_CLS_RSVP6 364 tristate "Special RSVP classifier for IPv6" 365 depends on NET_CLS && NET_QOS 366 ---help--- 367 The Resource Reservation Protocol (RSVP) permits end systems to 368 request a minimum and maximum data flow rate for a connection; this 369 is important for real time data such as streaming sound or video. 370 371 Say Y here if you want to be able to classify outgoing packets based 372 on their RSVP requests and you are using the new Internet Protocol 373 IPv6 as opposed to the older and more common IPv4. 374 375 To compile this code as a module, choose M here: the 376 module will be called cls_rsvp6. 377 378config NET_CLS_ACT 379 bool "Packet ACTION" 380 depends on EXPERIMENTAL && NET_CLS && NET_QOS 381 ---help--- 382 This option requires you have a new iproute2. It enables 383 tc extensions which can be used with tc classifiers. 384 You MUST NOT turn this on if you dont have an update iproute2. 385 386config NET_ACT_POLICE 387 tristate "Policing Actions" 388 depends on NET_CLS_ACT 389 ---help--- 390 If you are using a newer iproute2 select this one, otherwise use one 391 below to select a policer. 392 You MUST NOT turn this on if you dont have an update iproute2. 393 394config NET_ACT_GACT 395 tristate "generic Actions" 396 depends on NET_CLS_ACT 397 ---help--- 398 You must have new iproute2 to use this feature. 399 This adds simple filtering actions like drop, accept etc. 400 401config GACT_PROB 402 bool "generic Actions probability" 403 depends on NET_ACT_GACT 404 ---help--- 405 Allows generic actions to be randomly or deterministically used. 406 407config NET_ACT_MIRRED 408 tristate "Packet In/Egress redirecton/mirror Actions" 409 depends on NET_CLS_ACT 410 ---help--- 411 requires new iproute2 412 This allows packets to be mirrored or redirected to netdevices 413 414config NET_ACT_IPT 415 tristate "iptables Actions" 416 depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES 417 ---help--- 418 requires new iproute2 419 This allows iptables targets to be used by tc filters 420 421config NET_ACT_PEDIT 422 tristate "Generic Packet Editor Actions" 423 depends on NET_CLS_ACT 424 ---help--- 425 requires new iproute2 426 This allows for packets to be generically edited 427 428config NET_CLS_POLICE 429 bool "Traffic policing (needed for in/egress)" 430 depends on NET_CLS && NET_QOS && NET_CLS_ACT!=y 431 help 432 Say Y to support traffic policing (bandwidth limits). Needed for 433 ingress and egress rate limiting. 434 435

