xref: /linux/net/ipv4/Kconfig (revision f24e9f586b377749dff37554696cf3a105540c94)
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_CBC
390	select CRYPTO_SHA1
391	select CRYPTO_DES
392	---help---
393	  Support for IPsec ESP.
394
395	  If unsure, say Y.
396
397config INET_IPCOMP
398	tristate "IP: IPComp transformation"
399	select XFRM
400	select INET_XFRM_TUNNEL
401	select CRYPTO
402	select CRYPTO_DEFLATE
403	---help---
404	  Support for IP Payload Compression Protocol (IPComp) (RFC3173),
405	  typically needed for IPsec.
406
407	  If unsure, say Y.
408
409config INET_XFRM_TUNNEL
410	tristate
411	select INET_TUNNEL
412	default n
413
414config INET_TUNNEL
415	tristate
416	default n
417
418config INET_XFRM_MODE_TRANSPORT
419	tristate "IP: IPsec transport mode"
420	default y
421	select XFRM
422	---help---
423	  Support for IPsec transport mode.
424
425	  If unsure, say Y.
426
427config INET_XFRM_MODE_TUNNEL
428	tristate "IP: IPsec tunnel mode"
429	default y
430	select XFRM
431	---help---
432	  Support for IPsec tunnel mode.
433
434	  If unsure, say Y.
435
436config INET_DIAG
437	tristate "INET: socket monitoring interface"
438	default y
439	---help---
440	  Support for INET (TCP, DCCP, etc) socket monitoring interface used by
441	  native Linux tools such as ss. ss is included in iproute2, currently
442	  downloadable at <http://developer.osdl.org/dev/iproute2>.
443
444	  If unsure, say Y.
445
446config INET_TCP_DIAG
447	depends on INET_DIAG
448	def_tristate INET_DIAG
449
450config TCP_CONG_ADVANCED
451	bool "TCP: advanced congestion control"
452	---help---
453	  Support for selection of various TCP congestion control
454	  modules.
455
456	  Nearly all users can safely say no here, and a safe default
457	  selection will be made (BIC-TCP with new Reno as a fallback).
458
459	  If unsure, say N.
460
461# TCP Reno is builtin (required as fallback)
462menu "TCP congestion control"
463	depends on TCP_CONG_ADVANCED
464
465config TCP_CONG_BIC
466	tristate "Binary Increase Congestion (BIC) control"
467	default y
468	---help---
469	BIC-TCP is a sender-side only change that ensures a linear RTT
470	fairness under large windows while offering both scalability and
471	bounded TCP-friendliness. The protocol combines two schemes
472	called additive increase and binary search increase. When the
473	congestion window is large, additive increase with a large
474	increment ensures linear RTT fairness as well as good
475	scalability. Under small congestion windows, binary search
476	increase provides TCP friendliness.
477	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
478
479config TCP_CONG_CUBIC
480	tristate "CUBIC TCP"
481	default m
482	---help---
483	This is version 2.0 of BIC-TCP which uses a cubic growth function
484	among other techniques.
485	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
486
487config TCP_CONG_WESTWOOD
488	tristate "TCP Westwood+"
489	default m
490	---help---
491	TCP Westwood+ is a sender-side only modification of the TCP Reno
492	protocol stack that optimizes the performance of TCP congestion
493	control. It is based on end-to-end bandwidth estimation to set
494	congestion window and slow start threshold after a congestion
495	episode. Using this estimation, TCP Westwood+ adaptively sets a
496	slow start threshold and a congestion window which takes into
497	account the bandwidth used  at the time congestion is experienced.
498	TCP Westwood+ significantly increases fairness wrt TCP Reno in
499	wired networks and throughput over wireless links.
500
501config TCP_CONG_HTCP
502        tristate "H-TCP"
503        default m
504	---help---
505	H-TCP is a send-side only modifications of the TCP Reno
506	protocol stack that optimizes the performance of TCP
507	congestion control for high speed network links. It uses a
508	modeswitch to change the alpha and beta parameters of TCP Reno
509	based on network conditions and in a way so as to be fair with
510	other Reno and H-TCP flows.
511
512config TCP_CONG_HSTCP
513	tristate "High Speed TCP"
514	depends on EXPERIMENTAL
515	default n
516	---help---
517	Sally Floyd's High Speed TCP (RFC 3649) congestion control.
518	A modification to TCP's congestion control mechanism for use
519	with large congestion windows. A table indicates how much to
520	increase the congestion window by when an ACK is received.
521 	For more detail	see http://www.icir.org/floyd/hstcp.html
522
523config TCP_CONG_HYBLA
524	tristate "TCP-Hybla congestion control algorithm"
525	depends on EXPERIMENTAL
526	default n
527	---help---
528	TCP-Hybla is a sender-side only change that eliminates penalization of
529	long-RTT, large-bandwidth connections, like when satellite legs are
530	involved, expecially when sharing a common bottleneck with normal
531	terrestrial connections.
532
533config TCP_CONG_VEGAS
534	tristate "TCP Vegas"
535	depends on EXPERIMENTAL
536	default n
537	---help---
538	TCP Vegas is a sender-side only change to TCP that anticipates
539	the onset of congestion by estimating the bandwidth. TCP Vegas
540	adjusts the sending rate by modifying the congestion
541	window. TCP Vegas should provide less packet loss, but it is
542	not as aggressive as TCP Reno.
543
544config TCP_CONG_SCALABLE
545	tristate "Scalable TCP"
546	depends on EXPERIMENTAL
547	default n
548	---help---
549	Scalable TCP is a sender-side only change to TCP which uses a
550	MIMD congestion control algorithm which has some nice scaling
551	properties, though is known to have fairness issues.
552	See http://www-lce.eng.cam.ac.uk/~ctk21/scalable/
553
554config TCP_CONG_LP
555	tristate "TCP Low Priority"
556	depends on EXPERIMENTAL
557	default n
558	---help---
559	TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
560	to utiliza only the excess network bandwidth as compared to the
561	``fair share`` of bandwidth as targeted by TCP.
562	See http://www-ece.rice.edu/networks/TCP-LP/
563
564config TCP_CONG_VENO
565	tristate "TCP Veno"
566	depends on EXPERIMENTAL
567	default n
568	---help---
569	TCP Veno is a sender-side only enhancement of TCP to obtain better
570	throughput over wireless networks. TCP Veno makes use of state
571	distinguishing to circumvent the difficult judgment of the packet loss
572	type. TCP Veno cuts down less congestion window in response to random
573	loss packets.
574	See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf
575
576endmenu
577
578config TCP_CONG_BIC
579	tristate
580	depends on !TCP_CONG_ADVANCED
581	default y
582
583source "net/ipv4/ipvs/Kconfig"
584
585