11da177e4SLinus Torvalds# 21da177e4SLinus Torvalds# Traffic control configuration. 31da177e4SLinus Torvalds# 4*6a2e9b73SSam Ravnborg 5*6a2e9b73SSam Ravnborgmenuconfig NET_SCHED 6*6a2e9b73SSam Ravnborg bool "QoS and/or fair queueing" 7*6a2e9b73SSam Ravnborg ---help--- 8*6a2e9b73SSam Ravnborg When the kernel has several packets to send out over a network 9*6a2e9b73SSam Ravnborg device, it has to decide which ones to send first, which ones to 10*6a2e9b73SSam Ravnborg delay, and which ones to drop. This is the job of the packet 11*6a2e9b73SSam Ravnborg scheduler, and several different algorithms for how to do this 12*6a2e9b73SSam Ravnborg "fairly" have been proposed. 13*6a2e9b73SSam Ravnborg 14*6a2e9b73SSam Ravnborg If you say N here, you will get the standard packet scheduler, which 15*6a2e9b73SSam Ravnborg is a FIFO (first come, first served). If you say Y here, you will be 16*6a2e9b73SSam Ravnborg able to choose from among several alternative algorithms which can 17*6a2e9b73SSam Ravnborg then be attached to different network devices. This is useful for 18*6a2e9b73SSam Ravnborg example if some of your network devices are real time devices that 19*6a2e9b73SSam Ravnborg need a certain minimum data flow rate, or if you need to limit the 20*6a2e9b73SSam Ravnborg maximum data flow rate for traffic which matches specified criteria. 21*6a2e9b73SSam Ravnborg This code is considered to be experimental. 22*6a2e9b73SSam Ravnborg 23*6a2e9b73SSam Ravnborg To administer these schedulers, you'll need the user-level utilities 24*6a2e9b73SSam Ravnborg from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>. 25*6a2e9b73SSam Ravnborg That package also contains some documentation; for more, check out 26*6a2e9b73SSam Ravnborg <http://snafu.freedom.org/linux2.2/iproute-notes.html>. 27*6a2e9b73SSam Ravnborg 28*6a2e9b73SSam Ravnborg This Quality of Service (QoS) support will enable you to use 29*6a2e9b73SSam Ravnborg Differentiated Services (diffserv) and Resource Reservation Protocol 30*6a2e9b73SSam Ravnborg (RSVP) on your Linux router if you also say Y to "QoS support", 31*6a2e9b73SSam Ravnborg "Packet classifier API" and to some classifiers below. Documentation 32*6a2e9b73SSam Ravnborg and software is at <http://diffserv.sourceforge.net/>. 33*6a2e9b73SSam Ravnborg 34*6a2e9b73SSam Ravnborg If you say Y here and to "/proc file system" below, you will be able 35*6a2e9b73SSam Ravnborg to read status information about packet schedulers from the file 36*6a2e9b73SSam Ravnborg /proc/net/psched. 37*6a2e9b73SSam Ravnborg 38*6a2e9b73SSam Ravnborg The available schedulers are listed in the following questions; you 39*6a2e9b73SSam Ravnborg can say Y to as many as you like. If unsure, say N now. 40*6a2e9b73SSam Ravnborg 411da177e4SLinus Torvaldschoice 421da177e4SLinus Torvalds prompt "Packet scheduler clock source" 431da177e4SLinus Torvalds depends on NET_SCHED 441da177e4SLinus Torvalds default NET_SCH_CLK_JIFFIES 451da177e4SLinus Torvalds help 461da177e4SLinus Torvalds Packet schedulers need a monotonic clock that increments at a static 471da177e4SLinus Torvalds rate. The kernel provides several suitable interfaces, each with 481da177e4SLinus Torvalds different properties: 491da177e4SLinus Torvalds 501da177e4SLinus Torvalds - high resolution (us or better) 511da177e4SLinus Torvalds - fast to read (minimal locking, no i/o access) 521da177e4SLinus Torvalds - synchronized on all processors 531da177e4SLinus Torvalds - handles cpu clock frequency changes 541da177e4SLinus Torvalds 551da177e4SLinus Torvalds but nothing provides all of the above. 561da177e4SLinus Torvalds 571da177e4SLinus Torvaldsconfig NET_SCH_CLK_JIFFIES 581da177e4SLinus Torvalds bool "Timer interrupt" 591da177e4SLinus Torvalds help 601da177e4SLinus Torvalds Say Y here if you want to use the timer interrupt (jiffies) as clock 611da177e4SLinus Torvalds source. This clock source is fast, synchronized on all processors and 621da177e4SLinus Torvalds handles cpu clock frequency changes, but its resolution is too low 631da177e4SLinus Torvalds for accurate shaping except at very low speed. 641da177e4SLinus Torvalds 651da177e4SLinus Torvaldsconfig NET_SCH_CLK_GETTIMEOFDAY 661da177e4SLinus Torvalds bool "gettimeofday" 671da177e4SLinus Torvalds help 681da177e4SLinus Torvalds Say Y here if you want to use gettimeofday as clock source. This clock 691da177e4SLinus Torvalds source has high resolution, is synchronized on all processors and 701da177e4SLinus Torvalds handles cpu clock frequency changes, but it is slow. 711da177e4SLinus Torvalds 721da177e4SLinus Torvalds Choose this if you need a high resolution clock source but can't use 731da177e4SLinus Torvalds the CPU's cycle counter. 741da177e4SLinus Torvalds 751da177e4SLinus Torvaldsconfig NET_SCH_CLK_CPU 761da177e4SLinus Torvalds bool "CPU cycle counter" 771da177e4SLinus Torvalds depends on X86_TSC || X86_64 || ALPHA || SPARC64 || PPC64 || IA64 781da177e4SLinus Torvalds help 791da177e4SLinus Torvalds Say Y here if you want to use the CPU's cycle counter as clock source. 801da177e4SLinus Torvalds This is a cheap and high resolution clock source, but on some 811da177e4SLinus Torvalds architectures it is not synchronized on all processors and doesn't 821da177e4SLinus Torvalds handle cpu clock frequency changes. 831da177e4SLinus Torvalds 841da177e4SLinus Torvalds The useable cycle counters are: 851da177e4SLinus Torvalds 861da177e4SLinus Torvalds x86/x86_64 - Timestamp Counter 871da177e4SLinus Torvalds alpha - Cycle Counter 881da177e4SLinus Torvalds sparc64 - %ticks register 891da177e4SLinus Torvalds ppc64 - Time base 901da177e4SLinus Torvalds ia64 - Interval Time Counter 911da177e4SLinus Torvalds 921da177e4SLinus Torvalds Choose this if your CPU's cycle counter is working properly. 931da177e4SLinus Torvalds 941da177e4SLinus Torvaldsendchoice 951da177e4SLinus Torvalds 961da177e4SLinus Torvaldsconfig NET_SCH_CBQ 971da177e4SLinus Torvalds tristate "CBQ packet scheduler" 981da177e4SLinus Torvalds depends on NET_SCHED 991da177e4SLinus Torvalds ---help--- 1001da177e4SLinus Torvalds Say Y here if you want to use the Class-Based Queueing (CBQ) packet 1011da177e4SLinus Torvalds scheduling algorithm for some of your network devices. This 1021da177e4SLinus Torvalds algorithm classifies the waiting packets into a tree-like hierarchy 1031da177e4SLinus Torvalds of classes; the leaves of this tree are in turn scheduled by 1041da177e4SLinus Torvalds separate algorithms (called "disciplines" in this context). 1051da177e4SLinus Torvalds 1061da177e4SLinus Torvalds See the top of <file:net/sched/sch_cbq.c> for references about the 1071da177e4SLinus Torvalds CBQ algorithm. 1081da177e4SLinus Torvalds 1091da177e4SLinus Torvalds CBQ is a commonly used scheduler, so if you're unsure, you should 1101da177e4SLinus Torvalds say Y here. Then say Y to all the queueing algorithms below that you 1111da177e4SLinus Torvalds want to use as CBQ disciplines. Then say Y to "Packet classifier 1121da177e4SLinus Torvalds API" and say Y to all the classifiers you want to use; a classifier 1131da177e4SLinus Torvalds is a routine that allows you to sort your outgoing traffic into 1141da177e4SLinus Torvalds classes based on a certain criterion. 1151da177e4SLinus Torvalds 1161da177e4SLinus Torvalds To compile this code as a module, choose M here: the 1171da177e4SLinus Torvalds module will be called sch_cbq. 1181da177e4SLinus Torvalds 1191da177e4SLinus Torvaldsconfig NET_SCH_HTB 1201da177e4SLinus Torvalds tristate "HTB packet scheduler" 1211da177e4SLinus Torvalds depends on NET_SCHED 1221da177e4SLinus Torvalds ---help--- 1231da177e4SLinus Torvalds Say Y here if you want to use the Hierarchical Token Buckets (HTB) 1241da177e4SLinus Torvalds packet scheduling algorithm for some of your network devices. See 1251da177e4SLinus Torvalds <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and 1261da177e4SLinus Torvalds in-depth articles. 1271da177e4SLinus Torvalds 1281da177e4SLinus Torvalds HTB is very similar to the CBQ regarding its goals however is has 1291da177e4SLinus Torvalds different properties and different algorithm. 1301da177e4SLinus Torvalds 1311da177e4SLinus Torvalds To compile this code as a module, choose M here: the 1321da177e4SLinus Torvalds module will be called sch_htb. 1331da177e4SLinus Torvalds 1341da177e4SLinus Torvaldsconfig NET_SCH_HFSC 1351da177e4SLinus Torvalds tristate "HFSC packet scheduler" 1361da177e4SLinus Torvalds depends on NET_SCHED 1371da177e4SLinus Torvalds ---help--- 1381da177e4SLinus Torvalds Say Y here if you want to use the Hierarchical Fair Service Curve 1391da177e4SLinus Torvalds (HFSC) packet scheduling algorithm for some of your network devices. 1401da177e4SLinus Torvalds 1411da177e4SLinus Torvalds To compile this code as a module, choose M here: the 1421da177e4SLinus Torvalds module will be called sch_hfsc. 1431da177e4SLinus Torvalds 1441da177e4SLinus Torvalds#tristate ' H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ 1451da177e4SLinus Torvaldsconfig NET_SCH_ATM 1461da177e4SLinus Torvalds tristate "ATM pseudo-scheduler" 1471da177e4SLinus Torvalds depends on NET_SCHED && ATM 1481da177e4SLinus Torvalds ---help--- 1491da177e4SLinus Torvalds Say Y here if you want to use the ATM pseudo-scheduler. This 1501da177e4SLinus Torvalds provides a framework for invoking classifiers (aka "filters"), which 1511da177e4SLinus Torvalds in turn select classes of this queuing discipline. Each class maps 1521da177e4SLinus Torvalds the flow(s) it is handling to a given virtual circuit (see the top of 1531da177e4SLinus Torvalds <file:net/sched/sch_atm.c>). 1541da177e4SLinus Torvalds 1551da177e4SLinus Torvalds To compile this code as a module, choose M here: the 1561da177e4SLinus Torvalds module will be called sch_atm. 1571da177e4SLinus Torvalds 1581da177e4SLinus Torvaldsconfig NET_SCH_PRIO 1591da177e4SLinus Torvalds tristate "The simplest PRIO pseudoscheduler" 1601da177e4SLinus Torvalds depends on NET_SCHED 1611da177e4SLinus Torvalds help 1621da177e4SLinus Torvalds Say Y here if you want to use an n-band priority queue packet 1631da177e4SLinus Torvalds "scheduler" for some of your network devices or as a leaf discipline 1641da177e4SLinus Torvalds for the CBQ scheduling algorithm. If unsure, say Y. 1651da177e4SLinus Torvalds 1661da177e4SLinus Torvalds To compile this code as a module, choose M here: the 1671da177e4SLinus Torvalds module will be called sch_prio. 1681da177e4SLinus Torvalds 1691da177e4SLinus Torvaldsconfig NET_SCH_RED 1701da177e4SLinus Torvalds tristate "RED queue" 1711da177e4SLinus Torvalds depends on NET_SCHED 1721da177e4SLinus Torvalds help 1731da177e4SLinus Torvalds Say Y here if you want to use the Random Early Detection (RED) 1741da177e4SLinus Torvalds packet scheduling algorithm for some of your network devices (see 1751da177e4SLinus Torvalds the top of <file:net/sched/sch_red.c> for details and references 1761da177e4SLinus Torvalds about the algorithm). 1771da177e4SLinus Torvalds 1781da177e4SLinus Torvalds To compile this code as a module, choose M here: the 1791da177e4SLinus Torvalds module will be called sch_red. 1801da177e4SLinus Torvalds 1811da177e4SLinus Torvaldsconfig NET_SCH_SFQ 1821da177e4SLinus Torvalds tristate "SFQ queue" 1831da177e4SLinus Torvalds depends on NET_SCHED 1841da177e4SLinus Torvalds ---help--- 1851da177e4SLinus Torvalds Say Y here if you want to use the Stochastic Fairness Queueing (SFQ) 1861da177e4SLinus Torvalds packet scheduling algorithm for some of your network devices or as a 1871da177e4SLinus Torvalds leaf discipline for the CBQ scheduling algorithm (see the top of 1881da177e4SLinus Torvalds <file:net/sched/sch_sfq.c> for details and references about the SFQ 1891da177e4SLinus Torvalds algorithm). 1901da177e4SLinus Torvalds 1911da177e4SLinus Torvalds To compile this code as a module, choose M here: the 1921da177e4SLinus Torvalds module will be called sch_sfq. 1931da177e4SLinus Torvalds 1941da177e4SLinus Torvaldsconfig NET_SCH_TEQL 1951da177e4SLinus Torvalds tristate "TEQL queue" 1961da177e4SLinus Torvalds depends on NET_SCHED 1971da177e4SLinus Torvalds ---help--- 1981da177e4SLinus Torvalds Say Y here if you want to use the True Link Equalizer (TLE) packet 1991da177e4SLinus Torvalds scheduling algorithm for some of your network devices or as a leaf 2001da177e4SLinus Torvalds discipline for the CBQ scheduling algorithm. This queueing 2011da177e4SLinus Torvalds discipline allows the combination of several physical devices into 2021da177e4SLinus Torvalds one virtual device. (see the top of <file:net/sched/sch_teql.c> for 2031da177e4SLinus Torvalds details). 2041da177e4SLinus Torvalds 2051da177e4SLinus Torvalds To compile this code as a module, choose M here: the 2061da177e4SLinus Torvalds module will be called sch_teql. 2071da177e4SLinus Torvalds 2081da177e4SLinus Torvaldsconfig NET_SCH_TBF 2091da177e4SLinus Torvalds tristate "TBF queue" 2101da177e4SLinus Torvalds depends on NET_SCHED 2111da177e4SLinus Torvalds help 2121da177e4SLinus Torvalds Say Y here if you want to use the Simple Token Bucket Filter (TBF) 2131da177e4SLinus Torvalds packet scheduling algorithm for some of your network devices or as a 2141da177e4SLinus Torvalds leaf discipline for the CBQ scheduling algorithm (see the top of 2151da177e4SLinus Torvalds <file:net/sched/sch_tbf.c> for a description of the TBF algorithm). 2161da177e4SLinus Torvalds 2171da177e4SLinus Torvalds To compile this code as a module, choose M here: the 2181da177e4SLinus Torvalds module will be called sch_tbf. 2191da177e4SLinus Torvalds 2201da177e4SLinus Torvaldsconfig NET_SCH_GRED 2211da177e4SLinus Torvalds tristate "GRED queue" 2221da177e4SLinus Torvalds depends on NET_SCHED 2231da177e4SLinus Torvalds help 2241da177e4SLinus Torvalds Say Y here if you want to use the Generic Random Early Detection 22520cc6befSLucas Correia Villa Real (GRED) packet scheduling algorithm for some of your network devices 2261da177e4SLinus Torvalds (see the top of <file:net/sched/sch_red.c> for details and 2271da177e4SLinus Torvalds references about the algorithm). 2281da177e4SLinus Torvalds 2291da177e4SLinus Torvalds To compile this code as a module, choose M here: the 2301da177e4SLinus Torvalds module will be called sch_gred. 2311da177e4SLinus Torvalds 2321da177e4SLinus Torvaldsconfig NET_SCH_DSMARK 2331da177e4SLinus Torvalds tristate "Diffserv field marker" 2341da177e4SLinus Torvalds depends on NET_SCHED 2351da177e4SLinus Torvalds help 2361da177e4SLinus Torvalds Say Y if you want to schedule packets according to the 2371da177e4SLinus Torvalds Differentiated Services architecture proposed in RFC 2475. 2381da177e4SLinus Torvalds Technical information on this method, with pointers to associated 2391da177e4SLinus Torvalds RFCs, is available at <http://www.gta.ufrj.br/diffserv/>. 2401da177e4SLinus Torvalds 2411da177e4SLinus Torvalds To compile this code as a module, choose M here: the 2421da177e4SLinus Torvalds module will be called sch_dsmark. 2431da177e4SLinus Torvalds 2441da177e4SLinus Torvaldsconfig NET_SCH_NETEM 2451da177e4SLinus Torvalds tristate "Network emulator" 2461da177e4SLinus Torvalds depends on NET_SCHED 2471da177e4SLinus Torvalds help 2481da177e4SLinus Torvalds Say Y if you want to emulate network delay, loss, and packet 2491da177e4SLinus Torvalds re-ordering. This is often useful to simulate networks when 2501da177e4SLinus Torvalds testing applications or protocols. 2511da177e4SLinus Torvalds 2521da177e4SLinus Torvalds To compile this driver as a module, choose M here: the module 2531da177e4SLinus Torvalds will be called sch_netem. 2541da177e4SLinus Torvalds 2551da177e4SLinus Torvalds If unsure, say N. 2561da177e4SLinus Torvalds 2571da177e4SLinus Torvaldsconfig NET_SCH_INGRESS 2581da177e4SLinus Torvalds tristate "Ingress Qdisc" 2591da177e4SLinus Torvalds depends on NET_SCHED 2601da177e4SLinus Torvalds help 2611da177e4SLinus Torvalds If you say Y here, you will be able to police incoming bandwidth 2621da177e4SLinus Torvalds and drop packets when this bandwidth exceeds your desired rate. 2631da177e4SLinus Torvalds If unsure, say Y. 2641da177e4SLinus Torvalds 2651da177e4SLinus Torvalds To compile this code as a module, choose M here: the 2661da177e4SLinus Torvalds module will be called sch_ingress. 2671da177e4SLinus Torvalds 2681da177e4SLinus Torvaldsconfig NET_QOS 2691da177e4SLinus Torvalds bool "QoS support" 2701da177e4SLinus Torvalds depends on NET_SCHED 2711da177e4SLinus Torvalds ---help--- 2721da177e4SLinus Torvalds Say Y here if you want to include Quality Of Service scheduling 2731da177e4SLinus Torvalds features, which means that you will be able to request certain 2741da177e4SLinus Torvalds rate-of-flow limits for your network devices. 2751da177e4SLinus Torvalds 2761da177e4SLinus Torvalds This Quality of Service (QoS) support will enable you to use 2771da177e4SLinus Torvalds Differentiated Services (diffserv) and Resource Reservation Protocol 2781da177e4SLinus Torvalds (RSVP) on your Linux router if you also say Y to "Packet classifier 2791da177e4SLinus Torvalds API" and to some classifiers below. Documentation and software is at 2801da177e4SLinus Torvalds <http://diffserv.sourceforge.net/>. 2811da177e4SLinus Torvalds 2821da177e4SLinus Torvalds Note that the answer to this question won't directly affect the 2831da177e4SLinus Torvalds kernel: saying N will just cause the configurator to skip all 2841da177e4SLinus Torvalds the questions about QoS support. 2851da177e4SLinus Torvalds 2861da177e4SLinus Torvaldsconfig NET_ESTIMATOR 2871da177e4SLinus Torvalds bool "Rate estimator" 2881da177e4SLinus Torvalds depends on NET_QOS 2891da177e4SLinus Torvalds help 2901da177e4SLinus Torvalds In order for Quality of Service scheduling to work, the current 2911da177e4SLinus Torvalds rate-of-flow for a network device has to be estimated; if you say Y 2921da177e4SLinus Torvalds here, the kernel will do just that. 2931da177e4SLinus Torvalds 2941da177e4SLinus Torvaldsconfig NET_CLS 2951da177e4SLinus Torvalds bool "Packet classifier API" 2961da177e4SLinus Torvalds depends on NET_SCHED 2971da177e4SLinus Torvalds ---help--- 2981da177e4SLinus Torvalds The CBQ scheduling algorithm requires that network packets which are 2991da177e4SLinus Torvalds scheduled to be sent out over a network device be classified 3001da177e4SLinus Torvalds according to some criterion. If you say Y here, you will get a 3011da177e4SLinus Torvalds choice of several different packet classifiers with the following 3021da177e4SLinus Torvalds questions. 3031da177e4SLinus Torvalds 3041da177e4SLinus Torvalds This will enable you to use Differentiated Services (diffserv) and 3051da177e4SLinus Torvalds Resource Reservation Protocol (RSVP) on your Linux router. 3061da177e4SLinus Torvalds Documentation and software is at 3071da177e4SLinus Torvalds <http://diffserv.sourceforge.net/>. 3081da177e4SLinus Torvalds 3091da177e4SLinus Torvaldsconfig NET_CLS_BASIC 3101da177e4SLinus Torvalds tristate "Basic classifier" 3111da177e4SLinus Torvalds depends on NET_CLS 3121da177e4SLinus Torvalds ---help--- 3131da177e4SLinus Torvalds Say Y here if you want to be able to classify packets using 3141da177e4SLinus Torvalds only extended matches and actions. 3151da177e4SLinus Torvalds 3161da177e4SLinus Torvalds To compile this code as a module, choose M here: the 3171da177e4SLinus Torvalds module will be called cls_basic. 3181da177e4SLinus Torvalds 3191da177e4SLinus Torvaldsconfig NET_CLS_TCINDEX 3201da177e4SLinus Torvalds tristate "TC index classifier" 3211da177e4SLinus Torvalds depends on NET_CLS 3221da177e4SLinus Torvalds help 3231da177e4SLinus Torvalds If you say Y here, you will be able to classify outgoing packets 3241da177e4SLinus Torvalds according to the tc_index field of the skb. You will want this 3251da177e4SLinus Torvalds feature if you want to implement Differentiated Services using 3261da177e4SLinus Torvalds sch_dsmark. If unsure, say Y. 3271da177e4SLinus Torvalds 3281da177e4SLinus Torvalds To compile this code as a module, choose M here: the 3291da177e4SLinus Torvalds module will be called cls_tcindex. 3301da177e4SLinus Torvalds 3311da177e4SLinus Torvaldsconfig NET_CLS_ROUTE4 3321da177e4SLinus Torvalds tristate "Routing table based classifier" 3331da177e4SLinus Torvalds depends on NET_CLS 3341da177e4SLinus Torvalds select NET_CLS_ROUTE 3351da177e4SLinus Torvalds help 3361da177e4SLinus Torvalds If you say Y here, you will be able to classify outgoing packets 3371da177e4SLinus Torvalds according to the route table entry they matched. If unsure, say Y. 3381da177e4SLinus Torvalds 3391da177e4SLinus Torvalds To compile this code as a module, choose M here: the 3401da177e4SLinus Torvalds module will be called cls_route. 3411da177e4SLinus Torvalds 3421da177e4SLinus Torvaldsconfig NET_CLS_ROUTE 3431da177e4SLinus Torvalds bool 3441da177e4SLinus Torvalds default n 3451da177e4SLinus Torvalds 3461da177e4SLinus Torvaldsconfig NET_CLS_FW 3471da177e4SLinus Torvalds tristate "Firewall based classifier" 3481da177e4SLinus Torvalds depends on NET_CLS 3491da177e4SLinus Torvalds help 3501da177e4SLinus Torvalds If you say Y here, you will be able to classify outgoing packets 3511da177e4SLinus Torvalds according to firewall criteria you specified. 3521da177e4SLinus Torvalds 3531da177e4SLinus Torvalds To compile this code as a module, choose M here: the 3541da177e4SLinus Torvalds module will be called cls_fw. 3551da177e4SLinus Torvalds 3561da177e4SLinus Torvaldsconfig NET_CLS_U32 3571da177e4SLinus Torvalds tristate "U32 classifier" 3581da177e4SLinus Torvalds depends on NET_CLS 3591da177e4SLinus Torvalds help 3601da177e4SLinus Torvalds If you say Y here, you will be able to classify outgoing packets 3611da177e4SLinus Torvalds according to their destination address. If unsure, say Y. 3621da177e4SLinus Torvalds 3631da177e4SLinus Torvalds To compile this code as a module, choose M here: the 3641da177e4SLinus Torvalds module will be called cls_u32. 3651da177e4SLinus Torvalds 3661da177e4SLinus Torvaldsconfig CLS_U32_PERF 3671da177e4SLinus Torvalds bool "U32 classifier performance counters" 3681da177e4SLinus Torvalds depends on NET_CLS_U32 3691da177e4SLinus Torvalds help 3701da177e4SLinus Torvalds gathers stats that could be used to tune u32 classifier performance. 3711da177e4SLinus Torvalds Requires a new iproute2 3721da177e4SLinus Torvalds You MUST NOT turn this on if you dont have an update iproute2. 3731da177e4SLinus Torvalds 3741da177e4SLinus Torvaldsconfig NET_CLS_IND 3751da177e4SLinus Torvalds bool "classify input device (slows things u32/fw) " 3761da177e4SLinus Torvalds depends on NET_CLS_U32 || NET_CLS_FW 3771da177e4SLinus Torvalds help 3781da177e4SLinus Torvalds This option will be killed eventually when a 3791da177e4SLinus Torvalds metadata action appears because it slows things a little 3801da177e4SLinus Torvalds Available only for u32 and fw classifiers. 3811da177e4SLinus Torvalds Requires a new iproute2 3821da177e4SLinus Torvalds You MUST NOT turn this on if you dont have an update iproute2. 3831da177e4SLinus Torvalds 3841da177e4SLinus Torvaldsconfig CLS_U32_MARK 3851da177e4SLinus Torvalds bool "Use nfmark as a key in U32 classifier" 3861da177e4SLinus Torvalds depends on NET_CLS_U32 && NETFILTER 3871da177e4SLinus Torvalds help 3881da177e4SLinus Torvalds This allows you to match mark in a u32 filter. 3891da177e4SLinus Torvalds Example: 3901da177e4SLinus Torvalds tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 \ 3911da177e4SLinus Torvalds match mark 0x0090 0xffff \ 3921da177e4SLinus Torvalds match ip dst 4.4.4.4 \ 3931da177e4SLinus Torvalds flowid 1:90 3941da177e4SLinus Torvalds You must use a new iproute2 to use this feature. 3951da177e4SLinus Torvalds 3961da177e4SLinus Torvaldsconfig NET_CLS_RSVP 3971da177e4SLinus Torvalds tristate "Special RSVP classifier" 3981da177e4SLinus Torvalds depends on NET_CLS && NET_QOS 3991da177e4SLinus Torvalds ---help--- 4001da177e4SLinus Torvalds The Resource Reservation Protocol (RSVP) permits end systems to 4011da177e4SLinus Torvalds request a minimum and maximum data flow rate for a connection; this 4021da177e4SLinus Torvalds is important for real time data such as streaming sound or video. 4031da177e4SLinus Torvalds 4041da177e4SLinus Torvalds Say Y here if you want to be able to classify outgoing packets based 4051da177e4SLinus Torvalds on their RSVP requests. 4061da177e4SLinus Torvalds 4071da177e4SLinus Torvalds To compile this code as a module, choose M here: the 4081da177e4SLinus Torvalds module will be called cls_rsvp. 4091da177e4SLinus Torvalds 4101da177e4SLinus Torvaldsconfig NET_CLS_RSVP6 4111da177e4SLinus Torvalds tristate "Special RSVP classifier for IPv6" 4121da177e4SLinus Torvalds depends on NET_CLS && NET_QOS 4131da177e4SLinus Torvalds ---help--- 4141da177e4SLinus Torvalds The Resource Reservation Protocol (RSVP) permits end systems to 4151da177e4SLinus Torvalds request a minimum and maximum data flow rate for a connection; this 4161da177e4SLinus Torvalds is important for real time data such as streaming sound or video. 4171da177e4SLinus Torvalds 4181da177e4SLinus Torvalds Say Y here if you want to be able to classify outgoing packets based 4191da177e4SLinus Torvalds on their RSVP requests and you are using the new Internet Protocol 4201da177e4SLinus Torvalds IPv6 as opposed to the older and more common IPv4. 4211da177e4SLinus Torvalds 4221da177e4SLinus Torvalds To compile this code as a module, choose M here: the 4231da177e4SLinus Torvalds module will be called cls_rsvp6. 4241da177e4SLinus Torvalds 4251da177e4SLinus Torvaldsconfig NET_EMATCH 4261da177e4SLinus Torvalds bool "Extended Matches" 4271da177e4SLinus Torvalds depends on NET_CLS 4281da177e4SLinus Torvalds ---help--- 4291da177e4SLinus Torvalds Say Y here if you want to use extended matches on top of classifiers 4301da177e4SLinus Torvalds and select the extended matches below. 4311da177e4SLinus Torvalds 4321da177e4SLinus Torvalds Extended matches are small classification helpers not worth writing 4331da177e4SLinus Torvalds a separate classifier. 4341da177e4SLinus Torvalds 4351da177e4SLinus Torvalds You must have a recent version of the iproute2 tools in order to use 4361da177e4SLinus Torvalds extended matches. 4371da177e4SLinus Torvalds 4381da177e4SLinus Torvaldsconfig NET_EMATCH_STACK 4391da177e4SLinus Torvalds int "Stack size" 4401da177e4SLinus Torvalds depends on NET_EMATCH 4411da177e4SLinus Torvalds default "32" 4421da177e4SLinus Torvalds ---help--- 4431da177e4SLinus Torvalds Size of the local stack variable used while evaluating the tree of 4441da177e4SLinus Torvalds ematches. Limits the depth of the tree, i.e. the number of 445b824979aSThomas Graf encapsulated precedences. Every level requires 4 bytes of additional 4461da177e4SLinus Torvalds stack space. 4471da177e4SLinus Torvalds 4481da177e4SLinus Torvaldsconfig NET_EMATCH_CMP 4491da177e4SLinus Torvalds tristate "Simple packet data comparison" 4501da177e4SLinus Torvalds depends on NET_EMATCH 4511da177e4SLinus Torvalds ---help--- 4521da177e4SLinus Torvalds Say Y here if you want to be able to classify packets based on 4531da177e4SLinus Torvalds simple packet data comparisons for 8, 16, and 32bit values. 4541da177e4SLinus Torvalds 4551da177e4SLinus Torvalds To compile this code as a module, choose M here: the 4561da177e4SLinus Torvalds module will be called em_cmp. 4571da177e4SLinus Torvalds 4581da177e4SLinus Torvaldsconfig NET_EMATCH_NBYTE 4591da177e4SLinus Torvalds tristate "Multi byte comparison" 4601da177e4SLinus Torvalds depends on NET_EMATCH 4611da177e4SLinus Torvalds ---help--- 4621da177e4SLinus Torvalds Say Y here if you want to be able to classify packets based on 4631da177e4SLinus Torvalds multiple byte comparisons mainly useful for IPv6 address comparisons. 4641da177e4SLinus Torvalds 4651da177e4SLinus Torvalds To compile this code as a module, choose M here: the 4661da177e4SLinus Torvalds module will be called em_nbyte. 4671da177e4SLinus Torvalds 4681da177e4SLinus Torvaldsconfig NET_EMATCH_U32 4691da177e4SLinus Torvalds tristate "U32 hashing key" 4701da177e4SLinus Torvalds depends on NET_EMATCH 4711da177e4SLinus Torvalds ---help--- 4721da177e4SLinus Torvalds Say Y here if you want to be able to classify packets using 4731da177e4SLinus Torvalds the famous u32 key in combination with logic relations. 4741da177e4SLinus Torvalds 4751da177e4SLinus Torvalds To compile this code as a module, choose M here: the 4761da177e4SLinus Torvalds module will be called em_u32. 4771da177e4SLinus Torvalds 4781da177e4SLinus Torvaldsconfig NET_EMATCH_META 4791da177e4SLinus Torvalds tristate "Metadata" 4801da177e4SLinus Torvalds depends on NET_EMATCH 4811da177e4SLinus Torvalds ---help--- 4821da177e4SLinus Torvalds Say Y here if you want to be ablt to classify packets based on 4831da177e4SLinus Torvalds metadata such as load average, netfilter attributes, socket 4841da177e4SLinus Torvalds attributes and routing decisions. 4851da177e4SLinus Torvalds 4861da177e4SLinus Torvalds To compile this code as a module, choose M here: the 4871da177e4SLinus Torvalds module will be called em_meta. 4881da177e4SLinus Torvalds 489d675c989SThomas Grafconfig NET_EMATCH_TEXT 490d675c989SThomas Graf tristate "Textsearch" 491d675c989SThomas Graf depends on NET_EMATCH 492f2d368faSDavid S. Miller select TEXTSEARCH 493f7704347SDavid S. Miller select TEXTSEARCH_KMP 494f7704347SDavid S. Miller select TEXTSEARCH_FSM 495d675c989SThomas Graf ---help--- 496d675c989SThomas Graf Say Y here if you want to be ablt to classify packets based on 497f7704347SDavid S. Miller textsearch comparisons. 498d675c989SThomas Graf 499d675c989SThomas Graf To compile this code as a module, choose M here: the 500d675c989SThomas Graf module will be called em_text. 501d675c989SThomas Graf 5021da177e4SLinus Torvaldsconfig NET_CLS_ACT 5031da177e4SLinus Torvalds bool "Packet ACTION" 5041da177e4SLinus Torvalds depends on EXPERIMENTAL && NET_CLS && NET_QOS 5051da177e4SLinus Torvalds ---help--- 5061da177e4SLinus Torvalds This option requires you have a new iproute2. It enables 5071da177e4SLinus Torvalds tc extensions which can be used with tc classifiers. 5081da177e4SLinus Torvalds You MUST NOT turn this on if you dont have an update iproute2. 5091da177e4SLinus Torvalds 5101da177e4SLinus Torvaldsconfig NET_ACT_POLICE 5111da177e4SLinus Torvalds tristate "Policing Actions" 5121da177e4SLinus Torvalds depends on NET_CLS_ACT 5131da177e4SLinus Torvalds ---help--- 5141da177e4SLinus Torvalds If you are using a newer iproute2 select this one, otherwise use one 5151da177e4SLinus Torvalds below to select a policer. 5161da177e4SLinus Torvalds You MUST NOT turn this on if you dont have an update iproute2. 5171da177e4SLinus Torvalds 5181da177e4SLinus Torvaldsconfig NET_ACT_GACT 5191da177e4SLinus Torvalds tristate "generic Actions" 5201da177e4SLinus Torvalds depends on NET_CLS_ACT 5211da177e4SLinus Torvalds ---help--- 5221da177e4SLinus Torvalds You must have new iproute2 to use this feature. 5231da177e4SLinus Torvalds This adds simple filtering actions like drop, accept etc. 5241da177e4SLinus Torvalds 5251da177e4SLinus Torvaldsconfig GACT_PROB 5261da177e4SLinus Torvalds bool "generic Actions probability" 5271da177e4SLinus Torvalds depends on NET_ACT_GACT 5281da177e4SLinus Torvalds ---help--- 5291da177e4SLinus Torvalds Allows generic actions to be randomly or deterministically used. 5301da177e4SLinus Torvalds 5311da177e4SLinus Torvaldsconfig NET_ACT_MIRRED 5321da177e4SLinus Torvalds tristate "Packet In/Egress redirecton/mirror Actions" 5331da177e4SLinus Torvalds depends on NET_CLS_ACT 5341da177e4SLinus Torvalds ---help--- 5351da177e4SLinus Torvalds requires new iproute2 5361da177e4SLinus Torvalds This allows packets to be mirrored or redirected to netdevices 5371da177e4SLinus Torvalds 5381da177e4SLinus Torvaldsconfig NET_ACT_IPT 5391da177e4SLinus Torvalds tristate "iptables Actions" 5401da177e4SLinus Torvalds depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES 5411da177e4SLinus Torvalds ---help--- 5421da177e4SLinus Torvalds requires new iproute2 5431da177e4SLinus Torvalds This allows iptables targets to be used by tc filters 5441da177e4SLinus Torvalds 5451da177e4SLinus Torvaldsconfig NET_ACT_PEDIT 5461da177e4SLinus Torvalds tristate "Generic Packet Editor Actions" 5471da177e4SLinus Torvalds depends on NET_CLS_ACT 5481da177e4SLinus Torvalds ---help--- 5491da177e4SLinus Torvalds requires new iproute2 5501da177e4SLinus Torvalds This allows for packets to be generically edited 5511da177e4SLinus Torvalds 5521da177e4SLinus Torvaldsconfig NET_CLS_POLICE 5531da177e4SLinus Torvalds bool "Traffic policing (needed for in/egress)" 5541da177e4SLinus Torvalds depends on NET_CLS && NET_QOS && NET_CLS_ACT!=y 5551da177e4SLinus Torvalds help 5561da177e4SLinus Torvalds Say Y to support traffic policing (bandwidth limits). Needed for 5571da177e4SLinus Torvalds ingress and egress rate limiting. 5581da177e4SLinus Torvalds 559db753079SJamal Hadi Salimconfig NET_ACT_SIMP 560db753079SJamal Hadi Salim tristate "Simple action" 561db753079SJamal Hadi Salim depends on NET_CLS_ACT 562db753079SJamal Hadi Salim ---help--- 563db753079SJamal Hadi Salim You must have new iproute2 to use this feature. 564db753079SJamal Hadi Salim This adds a very simple action for demonstration purposes 565db753079SJamal Hadi Salim The idea is to give action authors a basic example to look at. 566db753079SJamal Hadi Salim All this action will do is print on the console the configured 567db753079SJamal Hadi Salim policy string followed by _ then packet count. 568db753079SJamal Hadi Salim 569