xref: /linux/net/ipv4/Kconfig (revision de2fe5e07d58424bc286fff3fd3c1b0bf933cd58)
1#
2# IP configuration
3#
4config IP_MULTICAST
5	bool "IP: multicasting"
6	help
7	  This is code for addressing several networked computers at once,
8	  enlarging your kernel by about 2 KB. You need multicasting if you
9	  intend to participate in the MBONE, a high bandwidth network on top
10	  of the Internet which carries audio and video broadcasts. More
11	  information about the MBONE is on the WWW at
12	  <http://www-itg.lbl.gov/mbone/>. Information about the multicast
13	  capabilities of the various network cards is contained in
14	  <file:Documentation/networking/multicast.txt>. For most people, it's
15	  safe to say N.
16
17config IP_ADVANCED_ROUTER
18	bool "IP: advanced router"
19	---help---
20	  If you intend to run your Linux box mostly as a router, i.e. as a
21	  computer that forwards and redistributes network packets, say Y; you
22	  will then be presented with several options that allow more precise
23	  control about the routing process.
24
25	  The answer to this question won't directly affect the kernel:
26	  answering N will just cause the configurator to skip all the
27	  questions about advanced routing.
28
29	  Note that your box can only act as a router if you enable IP
30	  forwarding in your kernel; you can do that by saying Y to "/proc
31	  file system support" and "Sysctl support" below and executing the
32	  line
33
34	  echo "1" > /proc/sys/net/ipv4/ip_forward
35
36	  at boot time after the /proc file system has been mounted.
37
38	  If you turn on IP forwarding, you will also get the rp_filter, which
39	  automatically rejects incoming packets if the routing table entry
40	  for their source address doesn't match the network interface they're
41	  arriving on. This has security advantages because it prevents the
42	  so-called IP spoofing, however it can pose problems if you use
43	  asymmetric routing (packets from you to a host take a different path
44	  than packets from that host to you) or if you operate a non-routing
45	  host which has several IP addresses on different interfaces. To turn
46	  rp_filter off use:
47
48	  echo 0 > /proc/sys/net/ipv4/conf/<device>/rp_filter
49	  or
50	  echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
51
52	  If unsure, say N here.
53
54choice
55	prompt "Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure)"
56	depends on IP_ADVANCED_ROUTER
57	default ASK_IP_FIB_HASH
58
59config ASK_IP_FIB_HASH
60	bool "FIB_HASH"
61	---help---
62	Current FIB is very proven and good enough for most users.
63
64config IP_FIB_TRIE
65	bool "FIB_TRIE"
66	---help---
67	Use new experimental LC-trie as FIB lookup algoritm.
68        This improves lookup performance if you have a large
69	number of routes.
70
71	LC-trie is a longest matching prefix lookup algorithm which
72	performs better than FIB_HASH for large routing tables.
73	But, it consumes more memory and is more complex.
74
75	LC-trie is described in:
76
77 	IP-address lookup using LC-tries. Stefan Nilsson and Gunnar Karlsson
78 	IEEE Journal on Selected Areas in Communications, 17(6):1083-1092, June 1999
79	An experimental study of compression methods for dynamic tries
80 	Stefan Nilsson and Matti Tikkanen. Algorithmica, 33(1):19-33, 2002.
81 	http://www.nada.kth.se/~snilsson/public/papers/dyntrie2/
82
83endchoice
84
85config IP_FIB_HASH
86	def_bool ASK_IP_FIB_HASH || !IP_ADVANCED_ROUTER
87
88config IP_MULTIPLE_TABLES
89	bool "IP: policy routing"
90	depends on IP_ADVANCED_ROUTER
91	---help---
92	  Normally, a router decides what to do with a received packet based
93	  solely on the packet's final destination address. If you say Y here,
94	  the Linux router will also be able to take the packet's source
95	  address into account. Furthermore, the TOS (Type-Of-Service) field
96	  of the packet can be used for routing decisions as well.
97
98	  If you are interested in this, please see the preliminary
99	  documentation at <http://www.compendium.com.ar/policy-routing.txt>
100	  and <ftp://post.tepkom.ru/pub/vol2/Linux/docs/advanced-routing.tex>.
101	  You will need supporting software from
102	  <ftp://ftp.tux.org/pub/net/ip-routing/>.
103
104	  If unsure, say N.
105
106config IP_ROUTE_FWMARK
107	bool "IP: use netfilter MARK value as routing key"
108	depends on IP_MULTIPLE_TABLES && NETFILTER
109	help
110	  If you say Y here, you will be able to specify different routes for
111	  packets with different mark values (see iptables(8), MARK target).
112
113config IP_ROUTE_MULTIPATH
114	bool "IP: equal cost multipath"
115	depends on IP_ADVANCED_ROUTER
116	help
117	  Normally, the routing tables specify a single action to be taken in
118	  a deterministic manner for a given packet. If you say Y here
119	  however, it becomes possible to attach several actions to a packet
120	  pattern, in effect specifying several alternative paths to travel
121	  for those packets. The router considers all these paths to be of
122	  equal "cost" and chooses one of them in a non-deterministic fashion
123	  if a matching packet arrives.
124
125config IP_ROUTE_MULTIPATH_CACHED
126	bool "IP: equal cost multipath with caching support (EXPERIMENTAL)"
127	depends on IP_ROUTE_MULTIPATH
128	help
129	  Normally, equal cost multipath routing is not supported by the
130	  routing cache. If you say Y here, alternative routes are cached
131	  and on cache lookup a route is chosen in a configurable fashion.
132
133	  If unsure, say N.
134
135config IP_ROUTE_MULTIPATH_RR
136	tristate "MULTIPATH: round robin algorithm"
137	depends on IP_ROUTE_MULTIPATH_CACHED
138	help
139	  Mulitpath routes are chosen according to Round Robin
140
141config IP_ROUTE_MULTIPATH_RANDOM
142	tristate "MULTIPATH: random algorithm"
143	depends on IP_ROUTE_MULTIPATH_CACHED
144	help
145	  Multipath routes are chosen in a random fashion. Actually,
146	  there is no weight for a route. The advantage of this policy
147	  is that it is implemented stateless and therefore introduces only
148	  a very small delay.
149
150config IP_ROUTE_MULTIPATH_WRANDOM
151	tristate "MULTIPATH: weighted random algorithm"
152	depends on IP_ROUTE_MULTIPATH_CACHED
153	help
154	  Multipath routes are chosen in a weighted random fashion.
155	  The per route weights are the weights visible via ip route 2. As the
156	  corresponding state management introduces some overhead routing delay
157	  is increased.
158
159config IP_ROUTE_MULTIPATH_DRR
160	tristate "MULTIPATH: interface round robin algorithm"
161	depends on IP_ROUTE_MULTIPATH_CACHED
162	help
163	  Connections are distributed in a round robin fashion over the
164	  available interfaces. This policy makes sense if the connections
165	  should be primarily distributed on interfaces and not on routes.
166
167config IP_ROUTE_VERBOSE
168	bool "IP: verbose route monitoring"
169	depends on IP_ADVANCED_ROUTER
170	help
171	  If you say Y here, which is recommended, then the kernel will print
172	  verbose messages regarding the routing, for example warnings about
173	  received packets which look strange and could be evidence of an
174	  attack or a misconfigured system somewhere. The information is
175	  handled by the klogd daemon which is responsible for kernel messages
176	  ("man klogd").
177
178config IP_PNP
179	bool "IP: kernel level autoconfiguration"
180	help
181	  This enables automatic configuration of IP addresses of devices and
182	  of the routing table during kernel boot, based on either information
183	  supplied on the kernel command line or by BOOTP or RARP protocols.
184	  You need to say Y only for diskless machines requiring network
185	  access to boot (in which case you want to say Y to "Root file system
186	  on NFS" as well), because all other machines configure the network
187	  in their startup scripts.
188
189config IP_PNP_DHCP
190	bool "IP: DHCP support"
191	depends on IP_PNP
192	---help---
193	  If you want your Linux box to mount its whole root file system (the
194	  one containing the directory /) from some other computer over the
195	  net via NFS and you want the IP address of your computer to be
196	  discovered automatically at boot time using the DHCP protocol (a
197	  special protocol designed for doing this job), say Y here. In case
198	  the boot ROM of your network card was designed for booting Linux and
199	  does DHCP itself, providing all necessary information on the kernel
200	  command line, you can say N here.
201
202	  If unsure, say Y. Note that if you want to use DHCP, a DHCP server
203	  must be operating on your network.  Read
204	  <file:Documentation/nfsroot.txt> for details.
205
206config IP_PNP_BOOTP
207	bool "IP: BOOTP support"
208	depends on IP_PNP
209	---help---
210	  If you want your Linux box to mount its whole root file system (the
211	  one containing the directory /) from some other computer over the
212	  net via NFS and you want the IP address of your computer to be
213	  discovered automatically at boot time using the BOOTP protocol (a
214	  special protocol designed for doing this job), say Y here. In case
215	  the boot ROM of your network card was designed for booting Linux and
216	  does BOOTP itself, providing all necessary information on the kernel
217	  command line, you can say N here. If unsure, say Y. Note that if you
218	  want to use BOOTP, a BOOTP server must be operating on your network.
219	  Read <file:Documentation/nfsroot.txt> for details.
220
221config IP_PNP_RARP
222	bool "IP: RARP support"
223	depends on IP_PNP
224	help
225	  If you want your Linux box to mount its whole root file system (the
226	  one containing the directory /) from some other computer over the
227	  net via NFS and you want the IP address of your computer to be
228	  discovered automatically at boot time using the RARP protocol (an
229	  older protocol which is being obsoleted by BOOTP and DHCP), say Y
230	  here. Note that if you want to use RARP, a RARP server must be
231	  operating on your network. Read <file:Documentation/nfsroot.txt> for
232	  details.
233
234# not yet ready..
235#   bool '    IP: ARP support' CONFIG_IP_PNP_ARP
236config NET_IPIP
237	tristate "IP: tunneling"
238	select INET_TUNNEL
239	---help---
240	  Tunneling means encapsulating data of one protocol type within
241	  another protocol and sending it over a channel that understands the
242	  encapsulating protocol. This particular tunneling driver implements
243	  encapsulation of IP within IP, which sounds kind of pointless, but
244	  can be useful if you want to make your (or some other) machine
245	  appear on a different network than it physically is, or to use
246	  mobile-IP facilities (allowing laptops to seamlessly move between
247	  networks without changing their IP addresses).
248
249	  Saying Y to this option will produce two modules ( = code which can
250	  be inserted in and removed from the running kernel whenever you
251	  want). Most people won't need this and can say N.
252
253config NET_IPGRE
254	tristate "IP: GRE tunnels over IP"
255	help
256	  Tunneling means encapsulating data of one protocol type within
257	  another protocol and sending it over a channel that understands the
258	  encapsulating protocol. This particular tunneling driver implements
259	  GRE (Generic Routing Encapsulation) and at this time allows
260	  encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure.
261	  This driver is useful if the other endpoint is a Cisco router: Cisco
262	  likes GRE much better than the other Linux tunneling driver ("IP
263	  tunneling" above). In addition, GRE allows multicast redistribution
264	  through the tunnel.
265
266config NET_IPGRE_BROADCAST
267	bool "IP: broadcast GRE over IP"
268	depends on IP_MULTICAST && NET_IPGRE
269	help
270	  One application of GRE/IP is to construct a broadcast WAN (Wide Area
271	  Network), which looks like a normal Ethernet LAN (Local Area
272	  Network), but can be distributed all over the Internet. If you want
273	  to do that, say Y here and to "IP multicast routing" below.
274
275config IP_MROUTE
276	bool "IP: multicast routing"
277	depends on IP_MULTICAST
278	help
279	  This is used if you want your machine to act as a router for IP
280	  packets that have several destination addresses. It is needed on the
281	  MBONE, a high bandwidth network on top of the Internet which carries
282	  audio and video broadcasts. In order to do that, you would most
283	  likely run the program mrouted. Information about the multicast
284	  capabilities of the various network cards is contained in
285	  <file:Documentation/networking/multicast.txt>. If you haven't heard
286	  about it, you don't need it.
287
288config IP_PIMSM_V1
289	bool "IP: PIM-SM version 1 support"
290	depends on IP_MROUTE
291	help
292	  Kernel side support for Sparse Mode PIM (Protocol Independent
293	  Multicast) version 1. This multicast routing protocol is used widely
294	  because Cisco supports it. You need special software to use it
295	  (pimd-v1). Please see <http://netweb.usc.edu/pim/> for more
296	  information about PIM.
297
298	  Say Y if you want to use PIM-SM v1. Note that you can say N here if
299	  you just want to use Dense Mode PIM.
300
301config IP_PIMSM_V2
302	bool "IP: PIM-SM version 2 support"
303	depends on IP_MROUTE
304	help
305	  Kernel side support for Sparse Mode PIM version 2. In order to use
306	  this, you need an experimental routing daemon supporting it (pimd or
307	  gated-5). This routing protocol is not used widely, so say N unless
308	  you want to play with it.
309
310config ARPD
311	bool "IP: ARP daemon support (EXPERIMENTAL)"
312	depends on EXPERIMENTAL
313	---help---
314	  Normally, the kernel maintains an internal cache which maps IP
315	  addresses to hardware addresses on the local network, so that
316	  Ethernet/Token Ring/ etc. frames are sent to the proper address on
317	  the physical networking layer. For small networks having a few
318	  hundred directly connected hosts or less, keeping this address
319	  resolution (ARP) cache inside the kernel works well. However,
320	  maintaining an internal ARP cache does not work well for very large
321	  switched networks, and will use a lot of kernel memory if TCP/IP
322	  connections are made to many machines on the network.
323
324	  If you say Y here, the kernel's internal ARP cache will never grow
325	  to more than 256 entries (the oldest entries are expired in a LIFO
326	  manner) and communication will be attempted with the user space ARP
327	  daemon arpd. Arpd then answers the address resolution request either
328	  from its own cache or by asking the net.
329
330	  This code is experimental and also obsolete. If you want to use it,
331	  you need to find a version of the daemon arpd on the net somewhere,
332	  and you should also say Y to "Kernel/User network link driver",
333	  below. If unsure, say N.
334
335config SYN_COOKIES
336	bool "IP: TCP syncookie support (disabled per default)"
337	---help---
338	  Normal TCP/IP networking is open to an attack known as "SYN
339	  flooding". This denial-of-service attack prevents legitimate remote
340	  users from being able to connect to your computer during an ongoing
341	  attack and requires very little work from the attacker, who can
342	  operate from anywhere on the Internet.
343
344	  SYN cookies provide protection against this type of attack. If you
345	  say Y here, the TCP/IP stack will use a cryptographic challenge
346	  protocol known as "SYN cookies" to enable legitimate users to
347	  continue to connect, even when your machine is under attack. There
348	  is no need for the legitimate users to change their TCP/IP software;
349	  SYN cookies work transparently to them. For technical information
350	  about SYN cookies, check out <http://cr.yp.to/syncookies.html>.
351
352	  If you are SYN flooded, the source address reported by the kernel is
353	  likely to have been forged by the attacker; it is only reported as
354	  an aid in tracing the packets to their actual source and should not
355	  be taken as absolute truth.
356
357	  SYN cookies may prevent correct error reporting on clients when the
358	  server is really overloaded. If this happens frequently better turn
359	  them off.
360
361	  If you say Y here, note that SYN cookies aren't enabled by default;
362	  you can enable them by saying Y to "/proc file system support" and
363	  "Sysctl support" below and executing the command
364
365	  echo 1 >/proc/sys/net/ipv4/tcp_syncookies
366
367	  at boot time after the /proc file system has been mounted.
368
369	  If unsure, say N.
370
371config INET_AH
372	tristate "IP: AH transformation"
373	select XFRM
374	select CRYPTO
375	select CRYPTO_HMAC
376	select CRYPTO_MD5
377	select CRYPTO_SHA1
378	---help---
379	  Support for IPsec AH.
380
381	  If unsure, say Y.
382
383config INET_ESP
384	tristate "IP: ESP transformation"
385	select XFRM
386	select CRYPTO
387	select CRYPTO_HMAC
388	select CRYPTO_MD5
389	select CRYPTO_SHA1
390	select CRYPTO_DES
391	---help---
392	  Support for IPsec ESP.
393
394	  If unsure, say Y.
395
396config INET_IPCOMP
397	tristate "IP: IPComp transformation"
398	select XFRM
399	select INET_XFRM_TUNNEL
400	select CRYPTO
401	select CRYPTO_DEFLATE
402	---help---
403	  Support for IP Payload Compression Protocol (IPComp) (RFC3173),
404	  typically needed for IPsec.
405
406	  If unsure, say Y.
407
408config INET_XFRM_TUNNEL
409	tristate
410	select INET_TUNNEL
411	default n
412
413config INET_TUNNEL
414	tristate
415	default n
416
417config INET_DIAG
418	tristate "INET: socket monitoring interface"
419	default y
420	---help---
421	  Support for INET (TCP, DCCP, etc) socket monitoring interface used by
422	  native Linux tools such as ss. ss is included in iproute2, currently
423	  downloadable at <http://developer.osdl.org/dev/iproute2>.
424
425	  If unsure, say Y.
426
427config INET_TCP_DIAG
428	depends on INET_DIAG
429	def_tristate INET_DIAG
430
431config TCP_CONG_ADVANCED
432	bool "TCP: advanced congestion control"
433	---help---
434	  Support for selection of various TCP congestion control
435	  modules.
436
437	  Nearly all users can safely say no here, and a safe default
438	  selection will be made (BIC-TCP with new Reno as a fallback).
439
440	  If unsure, say N.
441
442# TCP Reno is builtin (required as fallback)
443menu "TCP congestion control"
444	depends on TCP_CONG_ADVANCED
445
446config TCP_CONG_BIC
447	tristate "Binary Increase Congestion (BIC) control"
448	default y
449	---help---
450	BIC-TCP is a sender-side only change that ensures a linear RTT
451	fairness under large windows while offering both scalability and
452	bounded TCP-friendliness. The protocol combines two schemes
453	called additive increase and binary search increase. When the
454	congestion window is large, additive increase with a large
455	increment ensures linear RTT fairness as well as good
456	scalability. Under small congestion windows, binary search
457	increase provides TCP friendliness.
458	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
459
460config TCP_CONG_CUBIC
461	tristate "CUBIC TCP"
462	default m
463	---help---
464	This is version 2.0 of BIC-TCP which uses a cubic growth function
465	among other techniques.
466	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
467
468config TCP_CONG_WESTWOOD
469	tristate "TCP Westwood+"
470	default m
471	---help---
472	TCP Westwood+ is a sender-side only modification of the TCP Reno
473	protocol stack that optimizes the performance of TCP congestion
474	control. It is based on end-to-end bandwidth estimation to set
475	congestion window and slow start threshold after a congestion
476	episode. Using this estimation, TCP Westwood+ adaptively sets a
477	slow start threshold and a congestion window which takes into
478	account the bandwidth used  at the time congestion is experienced.
479	TCP Westwood+ significantly increases fairness wrt TCP Reno in
480	wired networks and throughput over wireless links.
481
482config TCP_CONG_HTCP
483        tristate "H-TCP"
484        default m
485	---help---
486	H-TCP is a send-side only modifications of the TCP Reno
487	protocol stack that optimizes the performance of TCP
488	congestion control for high speed network links. It uses a
489	modeswitch to change the alpha and beta parameters of TCP Reno
490	based on network conditions and in a way so as to be fair with
491	other Reno and H-TCP flows.
492
493config TCP_CONG_HSTCP
494	tristate "High Speed TCP"
495	depends on EXPERIMENTAL
496	default n
497	---help---
498	Sally Floyd's High Speed TCP (RFC 3649) congestion control.
499	A modification to TCP's congestion control mechanism for use
500	with large congestion windows. A table indicates how much to
501	increase the congestion window by when an ACK is received.
502 	For more detail	see http://www.icir.org/floyd/hstcp.html
503
504config TCP_CONG_HYBLA
505	tristate "TCP-Hybla congestion control algorithm"
506	depends on EXPERIMENTAL
507	default n
508	---help---
509	TCP-Hybla is a sender-side only change that eliminates penalization of
510	long-RTT, large-bandwidth connections, like when satellite legs are
511	involved, expecially when sharing a common bottleneck with normal
512	terrestrial connections.
513
514config TCP_CONG_VEGAS
515	tristate "TCP Vegas"
516	depends on EXPERIMENTAL
517	default n
518	---help---
519	TCP Vegas is a sender-side only change to TCP that anticipates
520	the onset of congestion by estimating the bandwidth. TCP Vegas
521	adjusts the sending rate by modifying the congestion
522	window. TCP Vegas should provide less packet loss, but it is
523	not as aggressive as TCP Reno.
524
525config TCP_CONG_SCALABLE
526	tristate "Scalable TCP"
527	depends on EXPERIMENTAL
528	default n
529	---help---
530	Scalable TCP is a sender-side only change to TCP which uses a
531	MIMD congestion control algorithm which has some nice scaling
532	properties, though is known to have fairness issues.
533	See http://www-lce.eng.cam.ac.uk/~ctk21/scalable/
534
535endmenu
536
537config TCP_CONG_BIC
538	tristate
539	depends on !TCP_CONG_ADVANCED
540	default y
541
542source "net/ipv4/ipvs/Kconfig"
543
544