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