Kconfig 17 KB

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