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