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://linux-net.osdl.org/index.php/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_RR 110 tristate "Multi Band Round Robin Queuing (RR)" 111 select NET_SCH_PRIO 112 ---help--- 113 Say Y here if you want to use an n-band round robin packet 114 scheduler. 115 116 The module uses sch_prio for its framework and is aliased as 117 sch_rr, so it will load sch_prio, although it is referred 118 to using sch_rr. 119 120config NET_SCH_RED 121 tristate "Random Early Detection (RED)" 122 ---help--- 123 Say Y here if you want to use the Random Early Detection (RED) 124 packet scheduling algorithm. 125 126 See the top of <file:net/sched/sch_red.c> for more details. 127 128 To compile this code as a module, choose M here: the 129 module will be called sch_red. 130 131config NET_SCH_SFQ 132 tristate "Stochastic Fairness Queueing (SFQ)" 133 ---help--- 134 Say Y here if you want to use the Stochastic Fairness Queueing (SFQ) 135 packet scheduling algorithm. 136 137 See the top of <file:net/sched/sch_sfq.c> for more details. 138 139 To compile this code as a module, choose M here: the 140 module will be called sch_sfq. 141 142config NET_SCH_TEQL 143 tristate "True Link Equalizer (TEQL)" 144 ---help--- 145 Say Y here if you want to use the True Link Equalizer (TLE) packet 146 scheduling algorithm. This queueing discipline allows the combination 147 of several physical devices into one virtual device. 148 149 See the top of <file:net/sched/sch_teql.c> for more details. 150 151 To compile this code as a module, choose M here: the 152 module will be called sch_teql. 153 154config NET_SCH_TBF 155 tristate "Token Bucket Filter (TBF)" 156 ---help--- 157 Say Y here if you want to use the Token Bucket Filter (TBF) packet 158 scheduling algorithm. 159 160 See the top of <file:net/sched/sch_tbf.c> for more details. 161 162 To compile this code as a module, choose M here: the 163 module will be called sch_tbf. 164 165config NET_SCH_GRED 166 tristate "Generic Random Early Detection (GRED)" 167 ---help--- 168 Say Y here if you want to use the Generic Random Early Detection 169 (GRED) packet scheduling algorithm for some of your network devices 170 (see the top of <file:net/sched/sch_red.c> for details and 171 references about the algorithm). 172 173 To compile this code as a module, choose M here: the 174 module will be called sch_gred. 175 176config NET_SCH_DSMARK 177 tristate "Differentiated Services marker (DSMARK)" 178 ---help--- 179 Say Y if you want to schedule packets according to the 180 Differentiated Services architecture proposed in RFC 2475. 181 Technical information on this method, with pointers to associated 182 RFCs, is available at <http://www.gta.ufrj.br/diffserv/>. 183 184 To compile this code as a module, choose M here: the 185 module will be called sch_dsmark. 186 187config NET_SCH_NETEM 188 tristate "Network emulator (NETEM)" 189 ---help--- 190 Say Y if you want to emulate network delay, loss, and packet 191 re-ordering. This is often useful to simulate networks when 192 testing applications or protocols. 193 194 To compile this driver as a module, choose M here: the module 195 will be called sch_netem. 196 197 If unsure, say N. 198 199config NET_SCH_INGRESS 200 tristate "Ingress Qdisc" 201 depends on NET_CLS_ACT 202 ---help--- 203 Say Y here if you want to use classifiers for incoming packets. 204 If unsure, say Y. 205 206 To compile this code as a module, choose M here: the 207 module will be called sch_ingress. 208 209comment "Classification" 210 211config NET_CLS 212 boolean 213 214config NET_CLS_BASIC 215 tristate "Elementary classification (BASIC)" 216 select NET_CLS 217 ---help--- 218 Say Y here if you want to be able to classify packets using 219 only extended matches and actions. 220 221 To compile this code as a module, choose M here: the 222 module will be called cls_basic. 223 224config NET_CLS_TCINDEX 225 tristate "Traffic-Control Index (TCINDEX)" 226 select NET_CLS 227 ---help--- 228 Say Y here if you want to be able to classify packets based on 229 traffic control indices. You will want this feature if you want 230 to implement Differentiated Services together with DSMARK. 231 232 To compile this code as a module, choose M here: the 233 module will be called cls_tcindex. 234 235config NET_CLS_ROUTE4 236 tristate "Routing decision (ROUTE)" 237 select NET_CLS_ROUTE 238 select NET_CLS 239 ---help--- 240 If you say Y here, you will be able to classify packets 241 according to the route table entry they matched. 242 243 To compile this code as a module, choose M here: the 244 module will be called cls_route. 245 246config NET_CLS_ROUTE 247 bool 248 249config NET_CLS_FW 250 tristate "Netfilter mark (FW)" 251 select NET_CLS 252 ---help--- 253 If you say Y here, you will be able to classify packets 254 according to netfilter/firewall marks. 255 256 To compile this code as a module, choose M here: the 257 module will be called cls_fw. 258 259config NET_CLS_U32 260 tristate "Universal 32bit comparisons w/ hashing (U32)" 261 select NET_CLS 262 ---help--- 263 Say Y here to be able to classify packets using a universal 264 32bit pieces based comparison scheme. 265 266 To compile this code as a module, choose M here: the 267 module will be called cls_u32. 268 269config CLS_U32_PERF 270 bool "Performance counters support" 271 depends on NET_CLS_U32 272 ---help--- 273 Say Y here to make u32 gather additional statistics useful for 274 fine tuning u32 classifiers. 275 276config CLS_U32_MARK 277 bool "Netfilter marks support" 278 depends on NET_CLS_U32 279 ---help--- 280 Say Y here to be able to use netfilter marks as u32 key. 281 282config NET_CLS_RSVP 283 tristate "IPv4 Resource Reservation Protocol (RSVP)" 284 select NET_CLS 285 ---help--- 286 The Resource Reservation Protocol (RSVP) permits end systems to 287 request a minimum and maximum data flow rate for a connection; this 288 is important for real time data such as streaming sound or video. 289 290 Say Y here if you want to be able to classify outgoing packets based 291 on their RSVP requests. 292 293 To compile this code as a module, choose M here: the 294 module will be called cls_rsvp. 295 296config NET_CLS_RSVP6 297 tristate "IPv6 Resource Reservation Protocol (RSVP6)" 298 select NET_CLS 299 ---help--- 300 The Resource Reservation Protocol (RSVP) permits end systems to 301 request a minimum and maximum data flow rate for a connection; this 302 is important for real time data such as streaming sound or video. 303 304 Say Y here if you want to be able to classify outgoing packets based 305 on their RSVP requests and you are using the IPv6 protocol. 306 307 To compile this code as a module, choose M here: the 308 module will be called cls_rsvp6. 309 310config NET_CLS_FLOW 311 tristate "Flow classifier" 312 select NET_CLS 313 ---help--- 314 If you say Y here, you will be able to classify packets based on 315 a configurable combination of packet keys. This is mostly useful 316 in combination with SFQ. 317 318 To compile this code as a module, choose M here: the 319 module will be called cls_flow. 320 321config NET_EMATCH 322 bool "Extended Matches" 323 select NET_CLS 324 ---help--- 325 Say Y here if you want to use extended matches on top of classifiers 326 and select the extended matches below. 327 328 Extended matches are small classification helpers not worth writing 329 a separate classifier for. 330 331 A recent version of the iproute2 package is required to use 332 extended matches. 333 334config NET_EMATCH_STACK 335 int "Stack size" 336 depends on NET_EMATCH 337 default "32" 338 ---help--- 339 Size of the local stack variable used while evaluating the tree of 340 ematches. Limits the depth of the tree, i.e. the number of 341 encapsulated precedences. Every level requires 4 bytes of additional 342 stack space. 343 344config NET_EMATCH_CMP 345 tristate "Simple packet data comparison" 346 depends on NET_EMATCH 347 ---help--- 348 Say Y here if you want to be able to classify packets based on 349 simple packet data comparisons for 8, 16, and 32bit values. 350 351 To compile this code as a module, choose M here: the 352 module will be called em_cmp. 353 354config NET_EMATCH_NBYTE 355 tristate "Multi byte comparison" 356 depends on NET_EMATCH 357 ---help--- 358 Say Y here if you want to be able to classify packets based on 359 multiple byte comparisons mainly useful for IPv6 address comparisons. 360 361 To compile this code as a module, choose M here: the 362 module will be called em_nbyte. 363 364config NET_EMATCH_U32 365 tristate "U32 key" 366 depends on NET_EMATCH 367 ---help--- 368 Say Y here if you want to be able to classify packets using 369 the famous u32 key in combination with logic relations. 370 371 To compile this code as a module, choose M here: the 372 module will be called em_u32. 373 374config NET_EMATCH_META 375 tristate "Metadata" 376 depends on NET_EMATCH 377 ---help--- 378 Say Y here if you want to be able to classify packets based on 379 metadata such as load average, netfilter attributes, socket 380 attributes and routing decisions. 381 382 To compile this code as a module, choose M here: the 383 module will be called em_meta. 384 385config NET_EMATCH_TEXT 386 tristate "Textsearch" 387 depends on NET_EMATCH 388 select TEXTSEARCH 389 select TEXTSEARCH_KMP 390 select TEXTSEARCH_BM 391 select TEXTSEARCH_FSM 392 ---help--- 393 Say Y here if you want to be able to classify packets based on 394 textsearch comparisons. 395 396 To compile this code as a module, choose M here: the 397 module will be called em_text. 398 399config NET_CLS_ACT 400 bool "Actions" 401 ---help--- 402 Say Y here if you want to use traffic control actions. Actions 403 get attached to classifiers and are invoked after a successful 404 classification. They are used to overwrite the classification 405 result, instantly drop or redirect packets, etc. 406 407 A recent version of the iproute2 package is required to use 408 extended matches. 409 410config NET_ACT_POLICE 411 tristate "Traffic Policing" 412 depends on NET_CLS_ACT 413 ---help--- 414 Say Y here if you want to do traffic policing, i.e. strict 415 bandwidth limiting. This action replaces the existing policing 416 module. 417 418 To compile this code as a module, choose M here: the 419 module will be called police. 420 421config NET_ACT_GACT 422 tristate "Generic actions" 423 depends on NET_CLS_ACT 424 ---help--- 425 Say Y here to take generic actions such as dropping and 426 accepting packets. 427 428 To compile this code as a module, choose M here: the 429 module will be called gact. 430 431config GACT_PROB 432 bool "Probability support" 433 depends on NET_ACT_GACT 434 ---help--- 435 Say Y here to use the generic action randomly or deterministically. 436 437config NET_ACT_MIRRED 438 tristate "Redirecting and Mirroring" 439 depends on NET_CLS_ACT 440 ---help--- 441 Say Y here to allow packets to be mirrored or redirected to 442 other devices. 443 444 To compile this code as a module, choose M here: the 445 module will be called mirred. 446 447config NET_ACT_IPT 448 tristate "IPtables targets" 449 depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES 450 ---help--- 451 Say Y here to be able to invoke iptables targets after successful 452 classification. 453 454 To compile this code as a module, choose M here: the 455 module will be called ipt. 456 457config NET_ACT_NAT 458 tristate "Stateless NAT" 459 depends on NET_CLS_ACT 460 ---help--- 461 Say Y here to do stateless NAT on IPv4 packets. You should use 462 netfilter for NAT unless you know what you are doing. 463 464 To compile this code as a module, choose M here: the 465 module will be called nat. 466 467config NET_ACT_PEDIT 468 tristate "Packet Editing" 469 depends on NET_CLS_ACT 470 ---help--- 471 Say Y here if you want to mangle the content of packets. 472 473 To compile this code as a module, choose M here: the 474 module will be called pedit. 475 476config NET_ACT_SIMP 477 tristate "Simple Example (Debug)" 478 depends on NET_CLS_ACT 479 ---help--- 480 Say Y here to add a simple action for demonstration purposes. 481 It is meant as an example and for debugging purposes. It will 482 print a configured policy string followed by the packet count 483 to the console for every packet that passes by. 484 485 If unsure, say N. 486 487 To compile this code as a module, choose M here: the 488 module will be called simple. 489 490config NET_CLS_IND 491 bool "Incoming device classification" 492 depends on NET_CLS_U32 || NET_CLS_FW 493 ---help--- 494 Say Y here to extend the u32 and fw classifier to support 495 classification based on the incoming device. This option is 496 likely to disappear in favour of the metadata ematch. 497 498endif # NET_SCHED 499 500config NET_SCH_FIFO 501 bool 502