xref: /openbmc/linux/net/ipv4/Kconfig (revision 44c09201)
11da177e4SLinus Torvalds#
21da177e4SLinus Torvalds# IP configuration
31da177e4SLinus Torvalds#
41da177e4SLinus Torvaldsconfig IP_MULTICAST
51da177e4SLinus Torvalds	bool "IP: multicasting"
61da177e4SLinus Torvalds	help
71da177e4SLinus Torvalds	  This is code for addressing several networked computers at once,
81da177e4SLinus Torvalds	  enlarging your kernel by about 2 KB. You need multicasting if you
91da177e4SLinus Torvalds	  intend to participate in the MBONE, a high bandwidth network on top
101da177e4SLinus Torvalds	  of the Internet which carries audio and video broadcasts. More
111da177e4SLinus Torvalds	  information about the MBONE is on the WWW at
121da177e4SLinus Torvalds	  <http://www-itg.lbl.gov/mbone/>. Information about the multicast
131da177e4SLinus Torvalds	  capabilities of the various network cards is contained in
141da177e4SLinus Torvalds	  <file:Documentation/networking/multicast.txt>. For most people, it's
151da177e4SLinus Torvalds	  safe to say N.
161da177e4SLinus Torvalds
171da177e4SLinus Torvaldsconfig IP_ADVANCED_ROUTER
181da177e4SLinus Torvalds	bool "IP: advanced router"
191da177e4SLinus Torvalds	---help---
201da177e4SLinus Torvalds	  If you intend to run your Linux box mostly as a router, i.e. as a
211da177e4SLinus Torvalds	  computer that forwards and redistributes network packets, say Y; you
221da177e4SLinus Torvalds	  will then be presented with several options that allow more precise
231da177e4SLinus Torvalds	  control about the routing process.
241da177e4SLinus Torvalds
251da177e4SLinus Torvalds	  The answer to this question won't directly affect the kernel:
261da177e4SLinus Torvalds	  answering N will just cause the configurator to skip all the
271da177e4SLinus Torvalds	  questions about advanced routing.
281da177e4SLinus Torvalds
291da177e4SLinus Torvalds	  Note that your box can only act as a router if you enable IP
301da177e4SLinus Torvalds	  forwarding in your kernel; you can do that by saying Y to "/proc
311da177e4SLinus Torvalds	  file system support" and "Sysctl support" below and executing the
321da177e4SLinus Torvalds	  line
331da177e4SLinus Torvalds
341da177e4SLinus Torvalds	  echo "1" > /proc/sys/net/ipv4/ip_forward
351da177e4SLinus Torvalds
361da177e4SLinus Torvalds	  at boot time after the /proc file system has been mounted.
371da177e4SLinus Torvalds
381da177e4SLinus Torvalds	  If you turn on IP forwarding, you will also get the rp_filter, which
391da177e4SLinus Torvalds	  automatically rejects incoming packets if the routing table entry
401da177e4SLinus Torvalds	  for their source address doesn't match the network interface they're
411da177e4SLinus Torvalds	  arriving on. This has security advantages because it prevents the
421da177e4SLinus Torvalds	  so-called IP spoofing, however it can pose problems if you use
431da177e4SLinus Torvalds	  asymmetric routing (packets from you to a host take a different path
441da177e4SLinus Torvalds	  than packets from that host to you) or if you operate a non-routing
451da177e4SLinus Torvalds	  host which has several IP addresses on different interfaces. To turn
461da177e4SLinus Torvalds	  rp_filter off use:
471da177e4SLinus Torvalds
481da177e4SLinus Torvalds	  echo 0 > /proc/sys/net/ipv4/conf/<device>/rp_filter
491da177e4SLinus Torvalds	  or
501da177e4SLinus Torvalds	  echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
511da177e4SLinus Torvalds
521da177e4SLinus Torvalds	  If unsure, say N here.
531da177e4SLinus Torvalds
54bb298ca3SDavid S. Millerchoice
55bb298ca3SDavid S. Miller	prompt "Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure)"
56bb298ca3SDavid S. Miller	depends on IP_ADVANCED_ROUTER
576876f95fSAdrian Bunk	default ASK_IP_FIB_HASH
58bb298ca3SDavid S. Miller
596876f95fSAdrian Bunkconfig ASK_IP_FIB_HASH
60bb298ca3SDavid S. Miller	bool "FIB_HASH"
61bb298ca3SDavid S. Miller	---help---
62bb298ca3SDavid S. Miller	Current FIB is very proven and good enough for most users.
63bb298ca3SDavid S. Miller
64bb298ca3SDavid S. Millerconfig IP_FIB_TRIE
65bb298ca3SDavid S. Miller	bool "FIB_TRIE"
66bb298ca3SDavid S. Miller	---help---
6744c09201SMatt LaPlante	Use new experimental LC-trie as FIB lookup algorithm.
68bb298ca3SDavid S. Miller        This improves lookup performance if you have a large
69bb298ca3SDavid S. Miller	number of routes.
70bb298ca3SDavid S. Miller
71bb298ca3SDavid S. Miller	LC-trie is a longest matching prefix lookup algorithm which
72bb298ca3SDavid S. Miller	performs better than FIB_HASH for large routing tables.
73bb298ca3SDavid S. Miller	But, it consumes more memory and is more complex.
74bb298ca3SDavid S. Miller
75bb298ca3SDavid S. Miller	LC-trie is described in:
76bb298ca3SDavid S. Miller
77bb298ca3SDavid S. Miller 	IP-address lookup using LC-tries. Stefan Nilsson and Gunnar Karlsson
78bb298ca3SDavid S. Miller 	IEEE Journal on Selected Areas in Communications, 17(6):1083-1092, June 1999
79bb298ca3SDavid S. Miller	An experimental study of compression methods for dynamic tries
80bb298ca3SDavid S. Miller 	Stefan Nilsson and Matti Tikkanen. Algorithmica, 33(1):19-33, 2002.
81bb298ca3SDavid S. Miller 	http://www.nada.kth.se/~snilsson/public/papers/dyntrie2/
82bb298ca3SDavid S. Miller
83bb298ca3SDavid S. Millerendchoice
84bb298ca3SDavid S. Miller
85bb298ca3SDavid S. Millerconfig IP_FIB_HASH
866876f95fSAdrian Bunk	def_bool ASK_IP_FIB_HASH || !IP_ADVANCED_ROUTER
87bb298ca3SDavid S. Miller
881da177e4SLinus Torvaldsconfig IP_MULTIPLE_TABLES
891da177e4SLinus Torvalds	bool "IP: policy routing"
901da177e4SLinus Torvalds	depends on IP_ADVANCED_ROUTER
91e1ef4bf2SThomas Graf	select FIB_RULES
921da177e4SLinus Torvalds	---help---
931da177e4SLinus Torvalds	  Normally, a router decides what to do with a received packet based
941da177e4SLinus Torvalds	  solely on the packet's final destination address. If you say Y here,
951da177e4SLinus Torvalds	  the Linux router will also be able to take the packet's source
961da177e4SLinus Torvalds	  address into account. Furthermore, the TOS (Type-Of-Service) field
971da177e4SLinus Torvalds	  of the packet can be used for routing decisions as well.
981da177e4SLinus Torvalds
991da177e4SLinus Torvalds	  If you are interested in this, please see the preliminary
1001da177e4SLinus Torvalds	  documentation at <http://www.compendium.com.ar/policy-routing.txt>
1011da177e4SLinus Torvalds	  and <ftp://post.tepkom.ru/pub/vol2/Linux/docs/advanced-routing.tex>.
1021da177e4SLinus Torvalds	  You will need supporting software from
1031da177e4SLinus Torvalds	  <ftp://ftp.tux.org/pub/net/ip-routing/>.
1041da177e4SLinus Torvalds
1051da177e4SLinus Torvalds	  If unsure, say N.
1061da177e4SLinus Torvalds
1071da177e4SLinus Torvaldsconfig IP_ROUTE_FWMARK
1081da177e4SLinus Torvalds	bool "IP: use netfilter MARK value as routing key"
1091da177e4SLinus Torvalds	depends on IP_MULTIPLE_TABLES && NETFILTER
1101da177e4SLinus Torvalds	help
1111da177e4SLinus Torvalds	  If you say Y here, you will be able to specify different routes for
1121da177e4SLinus Torvalds	  packets with different mark values (see iptables(8), MARK target).
1131da177e4SLinus Torvalds
1141da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH
1151da177e4SLinus Torvalds	bool "IP: equal cost multipath"
1161da177e4SLinus Torvalds	depends on IP_ADVANCED_ROUTER
1171da177e4SLinus Torvalds	help
1181da177e4SLinus Torvalds	  Normally, the routing tables specify a single action to be taken in
1191da177e4SLinus Torvalds	  a deterministic manner for a given packet. If you say Y here
1201da177e4SLinus Torvalds	  however, it becomes possible to attach several actions to a packet
1211da177e4SLinus Torvalds	  pattern, in effect specifying several alternative paths to travel
1221da177e4SLinus Torvalds	  for those packets. The router considers all these paths to be of
1231da177e4SLinus Torvalds	  equal "cost" and chooses one of them in a non-deterministic fashion
1241da177e4SLinus Torvalds	  if a matching packet arrives.
1251da177e4SLinus Torvalds
1261da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_CACHED
1271da177e4SLinus Torvalds	bool "IP: equal cost multipath with caching support (EXPERIMENTAL)"
128eaa1c5d0SHans-Juergen Tappe (SYSGO AG)	depends on IP_ROUTE_MULTIPATH
1291da177e4SLinus Torvalds	help
1301da177e4SLinus Torvalds	  Normally, equal cost multipath routing is not supported by the
1311da177e4SLinus Torvalds	  routing cache. If you say Y here, alternative routes are cached
1321da177e4SLinus Torvalds	  and on cache lookup a route is chosen in a configurable fashion.
1331da177e4SLinus Torvalds
1341da177e4SLinus Torvalds	  If unsure, say N.
1351da177e4SLinus Torvalds
1361da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_RR
1371da177e4SLinus Torvalds	tristate "MULTIPATH: round robin algorithm"
1381da177e4SLinus Torvalds	depends on IP_ROUTE_MULTIPATH_CACHED
1391da177e4SLinus Torvalds	help
1401da177e4SLinus Torvalds	  Mulitpath routes are chosen according to Round Robin
1411da177e4SLinus Torvalds
1421da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_RANDOM
1431da177e4SLinus Torvalds	tristate "MULTIPATH: random algorithm"
1441da177e4SLinus Torvalds	depends on IP_ROUTE_MULTIPATH_CACHED
1451da177e4SLinus Torvalds	help
1461da177e4SLinus Torvalds	  Multipath routes are chosen in a random fashion. Actually,
1471da177e4SLinus Torvalds	  there is no weight for a route. The advantage of this policy
1481da177e4SLinus Torvalds	  is that it is implemented stateless and therefore introduces only
1491da177e4SLinus Torvalds	  a very small delay.
1501da177e4SLinus Torvalds
1511da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_WRANDOM
1521da177e4SLinus Torvalds	tristate "MULTIPATH: weighted random algorithm"
1531da177e4SLinus Torvalds	depends on IP_ROUTE_MULTIPATH_CACHED
1541da177e4SLinus Torvalds	help
1551da177e4SLinus Torvalds	  Multipath routes are chosen in a weighted random fashion.
1561da177e4SLinus Torvalds	  The per route weights are the weights visible via ip route 2. As the
1571da177e4SLinus Torvalds	  corresponding state management introduces some overhead routing delay
1581da177e4SLinus Torvalds	  is increased.
1591da177e4SLinus Torvalds
1601da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_DRR
1611da177e4SLinus Torvalds	tristate "MULTIPATH: interface round robin algorithm"
1621da177e4SLinus Torvalds	depends on IP_ROUTE_MULTIPATH_CACHED
1631da177e4SLinus Torvalds	help
1641da177e4SLinus Torvalds	  Connections are distributed in a round robin fashion over the
1651da177e4SLinus Torvalds	  available interfaces. This policy makes sense if the connections
1661da177e4SLinus Torvalds	  should be primarily distributed on interfaces and not on routes.
1671da177e4SLinus Torvalds
1681da177e4SLinus Torvaldsconfig IP_ROUTE_VERBOSE
1691da177e4SLinus Torvalds	bool "IP: verbose route monitoring"
1701da177e4SLinus Torvalds	depends on IP_ADVANCED_ROUTER
1711da177e4SLinus Torvalds	help
1721da177e4SLinus Torvalds	  If you say Y here, which is recommended, then the kernel will print
1731da177e4SLinus Torvalds	  verbose messages regarding the routing, for example warnings about
1741da177e4SLinus Torvalds	  received packets which look strange and could be evidence of an
1751da177e4SLinus Torvalds	  attack or a misconfigured system somewhere. The information is
1761da177e4SLinus Torvalds	  handled by the klogd daemon which is responsible for kernel messages
1771da177e4SLinus Torvalds	  ("man klogd").
1781da177e4SLinus Torvalds
1791da177e4SLinus Torvaldsconfig IP_PNP
1801da177e4SLinus Torvalds	bool "IP: kernel level autoconfiguration"
1811da177e4SLinus Torvalds	help
1821da177e4SLinus Torvalds	  This enables automatic configuration of IP addresses of devices and
1831da177e4SLinus Torvalds	  of the routing table during kernel boot, based on either information
1841da177e4SLinus Torvalds	  supplied on the kernel command line or by BOOTP or RARP protocols.
1851da177e4SLinus Torvalds	  You need to say Y only for diskless machines requiring network
1861da177e4SLinus Torvalds	  access to boot (in which case you want to say Y to "Root file system
1871da177e4SLinus Torvalds	  on NFS" as well), because all other machines configure the network
1881da177e4SLinus Torvalds	  in their startup scripts.
1891da177e4SLinus Torvalds
1901da177e4SLinus Torvaldsconfig IP_PNP_DHCP
1911da177e4SLinus Torvalds	bool "IP: DHCP support"
1921da177e4SLinus Torvalds	depends on IP_PNP
1931da177e4SLinus Torvalds	---help---
1941da177e4SLinus Torvalds	  If you want your Linux box to mount its whole root file system (the
1951da177e4SLinus Torvalds	  one containing the directory /) from some other computer over the
1961da177e4SLinus Torvalds	  net via NFS and you want the IP address of your computer to be
1971da177e4SLinus Torvalds	  discovered automatically at boot time using the DHCP protocol (a
1981da177e4SLinus Torvalds	  special protocol designed for doing this job), say Y here. In case
1991da177e4SLinus Torvalds	  the boot ROM of your network card was designed for booting Linux and
2001da177e4SLinus Torvalds	  does DHCP itself, providing all necessary information on the kernel
2011da177e4SLinus Torvalds	  command line, you can say N here.
2021da177e4SLinus Torvalds
2031da177e4SLinus Torvalds	  If unsure, say Y. Note that if you want to use DHCP, a DHCP server
2041da177e4SLinus Torvalds	  must be operating on your network.  Read
2051da177e4SLinus Torvalds	  <file:Documentation/nfsroot.txt> for details.
2061da177e4SLinus Torvalds
2071da177e4SLinus Torvaldsconfig IP_PNP_BOOTP
2081da177e4SLinus Torvalds	bool "IP: BOOTP support"
2091da177e4SLinus Torvalds	depends on IP_PNP
2101da177e4SLinus Torvalds	---help---
2111da177e4SLinus Torvalds	  If you want your Linux box to mount its whole root file system (the
2121da177e4SLinus Torvalds	  one containing the directory /) from some other computer over the
2131da177e4SLinus Torvalds	  net via NFS and you want the IP address of your computer to be
2141da177e4SLinus Torvalds	  discovered automatically at boot time using the BOOTP protocol (a
2151da177e4SLinus Torvalds	  special protocol designed for doing this job), say Y here. In case
2161da177e4SLinus Torvalds	  the boot ROM of your network card was designed for booting Linux and
2171da177e4SLinus Torvalds	  does BOOTP itself, providing all necessary information on the kernel
2181da177e4SLinus Torvalds	  command line, you can say N here. If unsure, say Y. Note that if you
2191da177e4SLinus Torvalds	  want to use BOOTP, a BOOTP server must be operating on your network.
2201da177e4SLinus Torvalds	  Read <file:Documentation/nfsroot.txt> for details.
2211da177e4SLinus Torvalds
2221da177e4SLinus Torvaldsconfig IP_PNP_RARP
2231da177e4SLinus Torvalds	bool "IP: RARP support"
2241da177e4SLinus Torvalds	depends on IP_PNP
2251da177e4SLinus Torvalds	help
2261da177e4SLinus Torvalds	  If you want your Linux box to mount its whole root file system (the
2271da177e4SLinus Torvalds	  one containing the directory /) from some other computer over the
2281da177e4SLinus Torvalds	  net via NFS and you want the IP address of your computer to be
2291da177e4SLinus Torvalds	  discovered automatically at boot time using the RARP protocol (an
2301da177e4SLinus Torvalds	  older protocol which is being obsoleted by BOOTP and DHCP), say Y
2311da177e4SLinus Torvalds	  here. Note that if you want to use RARP, a RARP server must be
2321da177e4SLinus Torvalds	  operating on your network. Read <file:Documentation/nfsroot.txt> for
2331da177e4SLinus Torvalds	  details.
2341da177e4SLinus Torvalds
2351da177e4SLinus Torvalds# not yet ready..
2361da177e4SLinus Torvalds#   bool '    IP: ARP support' CONFIG_IP_PNP_ARP
2371da177e4SLinus Torvaldsconfig NET_IPIP
2381da177e4SLinus Torvalds	tristate "IP: tunneling"
239d2acc347SHerbert Xu	select INET_TUNNEL
2401da177e4SLinus Torvalds	---help---
2411da177e4SLinus Torvalds	  Tunneling means encapsulating data of one protocol type within
2421da177e4SLinus Torvalds	  another protocol and sending it over a channel that understands the
2431da177e4SLinus Torvalds	  encapsulating protocol. This particular tunneling driver implements
2441da177e4SLinus Torvalds	  encapsulation of IP within IP, which sounds kind of pointless, but
2451da177e4SLinus Torvalds	  can be useful if you want to make your (or some other) machine
2461da177e4SLinus Torvalds	  appear on a different network than it physically is, or to use
2471da177e4SLinus Torvalds	  mobile-IP facilities (allowing laptops to seamlessly move between
2481da177e4SLinus Torvalds	  networks without changing their IP addresses).
2491da177e4SLinus Torvalds
2501da177e4SLinus Torvalds	  Saying Y to this option will produce two modules ( = code which can
2511da177e4SLinus Torvalds	  be inserted in and removed from the running kernel whenever you
2521da177e4SLinus Torvalds	  want). Most people won't need this and can say N.
2531da177e4SLinus Torvalds
2541da177e4SLinus Torvaldsconfig NET_IPGRE
2551da177e4SLinus Torvalds	tristate "IP: GRE tunnels over IP"
2561da177e4SLinus Torvalds	help
2571da177e4SLinus Torvalds	  Tunneling means encapsulating data of one protocol type within
2581da177e4SLinus Torvalds	  another protocol and sending it over a channel that understands the
2591da177e4SLinus Torvalds	  encapsulating protocol. This particular tunneling driver implements
2601da177e4SLinus Torvalds	  GRE (Generic Routing Encapsulation) and at this time allows
2611da177e4SLinus Torvalds	  encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure.
2621da177e4SLinus Torvalds	  This driver is useful if the other endpoint is a Cisco router: Cisco
2631da177e4SLinus Torvalds	  likes GRE much better than the other Linux tunneling driver ("IP
2641da177e4SLinus Torvalds	  tunneling" above). In addition, GRE allows multicast redistribution
2651da177e4SLinus Torvalds	  through the tunnel.
2661da177e4SLinus Torvalds
2671da177e4SLinus Torvaldsconfig NET_IPGRE_BROADCAST
2681da177e4SLinus Torvalds	bool "IP: broadcast GRE over IP"
2691da177e4SLinus Torvalds	depends on IP_MULTICAST && NET_IPGRE
2701da177e4SLinus Torvalds	help
2711da177e4SLinus Torvalds	  One application of GRE/IP is to construct a broadcast WAN (Wide Area
2721da177e4SLinus Torvalds	  Network), which looks like a normal Ethernet LAN (Local Area
2731da177e4SLinus Torvalds	  Network), but can be distributed all over the Internet. If you want
2741da177e4SLinus Torvalds	  to do that, say Y here and to "IP multicast routing" below.
2751da177e4SLinus Torvalds
2761da177e4SLinus Torvaldsconfig IP_MROUTE
2771da177e4SLinus Torvalds	bool "IP: multicast routing"
2781da177e4SLinus Torvalds	depends on IP_MULTICAST
2791da177e4SLinus Torvalds	help
2801da177e4SLinus Torvalds	  This is used if you want your machine to act as a router for IP
2811da177e4SLinus Torvalds	  packets that have several destination addresses. It is needed on the
2821da177e4SLinus Torvalds	  MBONE, a high bandwidth network on top of the Internet which carries
2831da177e4SLinus Torvalds	  audio and video broadcasts. In order to do that, you would most
2841da177e4SLinus Torvalds	  likely run the program mrouted. Information about the multicast
2851da177e4SLinus Torvalds	  capabilities of the various network cards is contained in
2861da177e4SLinus Torvalds	  <file:Documentation/networking/multicast.txt>. If you haven't heard
2871da177e4SLinus Torvalds	  about it, you don't need it.
2881da177e4SLinus Torvalds
2891da177e4SLinus Torvaldsconfig IP_PIMSM_V1
2901da177e4SLinus Torvalds	bool "IP: PIM-SM version 1 support"
2911da177e4SLinus Torvalds	depends on IP_MROUTE
2921da177e4SLinus Torvalds	help
2931da177e4SLinus Torvalds	  Kernel side support for Sparse Mode PIM (Protocol Independent
2941da177e4SLinus Torvalds	  Multicast) version 1. This multicast routing protocol is used widely
2951da177e4SLinus Torvalds	  because Cisco supports it. You need special software to use it
2961da177e4SLinus Torvalds	  (pimd-v1). Please see <http://netweb.usc.edu/pim/> for more
2971da177e4SLinus Torvalds	  information about PIM.
2981da177e4SLinus Torvalds
2991da177e4SLinus Torvalds	  Say Y if you want to use PIM-SM v1. Note that you can say N here if
3001da177e4SLinus Torvalds	  you just want to use Dense Mode PIM.
3011da177e4SLinus Torvalds
3021da177e4SLinus Torvaldsconfig IP_PIMSM_V2
3031da177e4SLinus Torvalds	bool "IP: PIM-SM version 2 support"
3041da177e4SLinus Torvalds	depends on IP_MROUTE
3051da177e4SLinus Torvalds	help
3061da177e4SLinus Torvalds	  Kernel side support for Sparse Mode PIM version 2. In order to use
3071da177e4SLinus Torvalds	  this, you need an experimental routing daemon supporting it (pimd or
3081da177e4SLinus Torvalds	  gated-5). This routing protocol is not used widely, so say N unless
3091da177e4SLinus Torvalds	  you want to play with it.
3101da177e4SLinus Torvalds
3111da177e4SLinus Torvaldsconfig ARPD
3121da177e4SLinus Torvalds	bool "IP: ARP daemon support (EXPERIMENTAL)"
3136a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
3141da177e4SLinus Torvalds	---help---
3151da177e4SLinus Torvalds	  Normally, the kernel maintains an internal cache which maps IP
3161da177e4SLinus Torvalds	  addresses to hardware addresses on the local network, so that
3171da177e4SLinus Torvalds	  Ethernet/Token Ring/ etc. frames are sent to the proper address on
3181da177e4SLinus Torvalds	  the physical networking layer. For small networks having a few
3191da177e4SLinus Torvalds	  hundred directly connected hosts or less, keeping this address
3201da177e4SLinus Torvalds	  resolution (ARP) cache inside the kernel works well. However,
3211da177e4SLinus Torvalds	  maintaining an internal ARP cache does not work well for very large
3221da177e4SLinus Torvalds	  switched networks, and will use a lot of kernel memory if TCP/IP
3231da177e4SLinus Torvalds	  connections are made to many machines on the network.
3241da177e4SLinus Torvalds
3251da177e4SLinus Torvalds	  If you say Y here, the kernel's internal ARP cache will never grow
3261da177e4SLinus Torvalds	  to more than 256 entries (the oldest entries are expired in a LIFO
3271da177e4SLinus Torvalds	  manner) and communication will be attempted with the user space ARP
3281da177e4SLinus Torvalds	  daemon arpd. Arpd then answers the address resolution request either
3291da177e4SLinus Torvalds	  from its own cache or by asking the net.
3301da177e4SLinus Torvalds
3311da177e4SLinus Torvalds	  This code is experimental and also obsolete. If you want to use it,
3321da177e4SLinus Torvalds	  you need to find a version of the daemon arpd on the net somewhere,
3331da177e4SLinus Torvalds	  and you should also say Y to "Kernel/User network link driver",
3341da177e4SLinus Torvalds	  below. If unsure, say N.
3351da177e4SLinus Torvalds
3361da177e4SLinus Torvaldsconfig SYN_COOKIES
3371da177e4SLinus Torvalds	bool "IP: TCP syncookie support (disabled per default)"
3381da177e4SLinus Torvalds	---help---
3391da177e4SLinus Torvalds	  Normal TCP/IP networking is open to an attack known as "SYN
3401da177e4SLinus Torvalds	  flooding". This denial-of-service attack prevents legitimate remote
3411da177e4SLinus Torvalds	  users from being able to connect to your computer during an ongoing
3421da177e4SLinus Torvalds	  attack and requires very little work from the attacker, who can
3431da177e4SLinus Torvalds	  operate from anywhere on the Internet.
3441da177e4SLinus Torvalds
3451da177e4SLinus Torvalds	  SYN cookies provide protection against this type of attack. If you
3461da177e4SLinus Torvalds	  say Y here, the TCP/IP stack will use a cryptographic challenge
3471da177e4SLinus Torvalds	  protocol known as "SYN cookies" to enable legitimate users to
3481da177e4SLinus Torvalds	  continue to connect, even when your machine is under attack. There
3491da177e4SLinus Torvalds	  is no need for the legitimate users to change their TCP/IP software;
3501da177e4SLinus Torvalds	  SYN cookies work transparently to them. For technical information
3511da177e4SLinus Torvalds	  about SYN cookies, check out <http://cr.yp.to/syncookies.html>.
3521da177e4SLinus Torvalds
3531da177e4SLinus Torvalds	  If you are SYN flooded, the source address reported by the kernel is
3541da177e4SLinus Torvalds	  likely to have been forged by the attacker; it is only reported as
3551da177e4SLinus Torvalds	  an aid in tracing the packets to their actual source and should not
3561da177e4SLinus Torvalds	  be taken as absolute truth.
3571da177e4SLinus Torvalds
3581da177e4SLinus Torvalds	  SYN cookies may prevent correct error reporting on clients when the
3591da177e4SLinus Torvalds	  server is really overloaded. If this happens frequently better turn
3601da177e4SLinus Torvalds	  them off.
3611da177e4SLinus Torvalds
3621da177e4SLinus Torvalds	  If you say Y here, note that SYN cookies aren't enabled by default;
3631da177e4SLinus Torvalds	  you can enable them by saying Y to "/proc file system support" and
3641da177e4SLinus Torvalds	  "Sysctl support" below and executing the command
3651da177e4SLinus Torvalds
3661da177e4SLinus Torvalds	  echo 1 >/proc/sys/net/ipv4/tcp_syncookies
3671da177e4SLinus Torvalds
3681da177e4SLinus Torvalds	  at boot time after the /proc file system has been mounted.
3691da177e4SLinus Torvalds
3701da177e4SLinus Torvalds	  If unsure, say N.
3711da177e4SLinus Torvalds
3721da177e4SLinus Torvaldsconfig INET_AH
3731da177e4SLinus Torvalds	tristate "IP: AH transformation"
3741da177e4SLinus Torvalds	select XFRM
3751da177e4SLinus Torvalds	select CRYPTO
3761da177e4SLinus Torvalds	select CRYPTO_HMAC
3771da177e4SLinus Torvalds	select CRYPTO_MD5
3781da177e4SLinus Torvalds	select CRYPTO_SHA1
3791da177e4SLinus Torvalds	---help---
3801da177e4SLinus Torvalds	  Support for IPsec AH.
3811da177e4SLinus Torvalds
3821da177e4SLinus Torvalds	  If unsure, say Y.
3831da177e4SLinus Torvalds
3841da177e4SLinus Torvaldsconfig INET_ESP
3851da177e4SLinus Torvalds	tristate "IP: ESP transformation"
3861da177e4SLinus Torvalds	select XFRM
3871da177e4SLinus Torvalds	select CRYPTO
3881da177e4SLinus Torvalds	select CRYPTO_HMAC
3891da177e4SLinus Torvalds	select CRYPTO_MD5
3906b7326c8SHerbert Xu	select CRYPTO_CBC
3911da177e4SLinus Torvalds	select CRYPTO_SHA1
3921da177e4SLinus Torvalds	select CRYPTO_DES
3931da177e4SLinus Torvalds	---help---
3941da177e4SLinus Torvalds	  Support for IPsec ESP.
3951da177e4SLinus Torvalds
3961da177e4SLinus Torvalds	  If unsure, say Y.
3971da177e4SLinus Torvalds
3981da177e4SLinus Torvaldsconfig INET_IPCOMP
3991da177e4SLinus Torvalds	tristate "IP: IPComp transformation"
4001da177e4SLinus Torvalds	select XFRM
401d2acc347SHerbert Xu	select INET_XFRM_TUNNEL
4021da177e4SLinus Torvalds	select CRYPTO
4031da177e4SLinus Torvalds	select CRYPTO_DEFLATE
4041da177e4SLinus Torvalds	---help---
4051da177e4SLinus Torvalds	  Support for IP Payload Compression Protocol (IPComp) (RFC3173),
4061da177e4SLinus Torvalds	  typically needed for IPsec.
4071da177e4SLinus Torvalds
4081da177e4SLinus Torvalds	  If unsure, say Y.
4091da177e4SLinus Torvalds
410d2acc347SHerbert Xuconfig INET_XFRM_TUNNEL
411d2acc347SHerbert Xu	tristate
412d2acc347SHerbert Xu	select INET_TUNNEL
413d2acc347SHerbert Xu	default n
4141da177e4SLinus Torvalds
415d2acc347SHerbert Xuconfig INET_TUNNEL
416d2acc347SHerbert Xu	tristate
417d2acc347SHerbert Xu	default n
4181da177e4SLinus Torvalds
419b59f45d0SHerbert Xuconfig INET_XFRM_MODE_TRANSPORT
420b59f45d0SHerbert Xu	tristate "IP: IPsec transport mode"
421b59f45d0SHerbert Xu	default y
422b59f45d0SHerbert Xu	select XFRM
423b59f45d0SHerbert Xu	---help---
424b59f45d0SHerbert Xu	  Support for IPsec transport mode.
425b59f45d0SHerbert Xu
426b59f45d0SHerbert Xu	  If unsure, say Y.
427b59f45d0SHerbert Xu
428b59f45d0SHerbert Xuconfig INET_XFRM_MODE_TUNNEL
429b59f45d0SHerbert Xu	tristate "IP: IPsec tunnel mode"
430b59f45d0SHerbert Xu	default y
431b59f45d0SHerbert Xu	select XFRM
432b59f45d0SHerbert Xu	---help---
433b59f45d0SHerbert Xu	  Support for IPsec tunnel mode.
434b59f45d0SHerbert Xu
435b59f45d0SHerbert Xu	  If unsure, say Y.
436b59f45d0SHerbert Xu
43717b085eaSArnaldo Carvalho de Meloconfig INET_DIAG
43817b085eaSArnaldo Carvalho de Melo	tristate "INET: socket monitoring interface"
4391da177e4SLinus Torvalds	default y
4401da177e4SLinus Torvalds	---help---
44173c1f4a0SArnaldo Carvalho de Melo	  Support for INET (TCP, DCCP, etc) socket monitoring interface used by
44273c1f4a0SArnaldo Carvalho de Melo	  native Linux tools such as ss. ss is included in iproute2, currently
44373c1f4a0SArnaldo Carvalho de Melo	  downloadable at <http://developer.osdl.org/dev/iproute2>.
4441da177e4SLinus Torvalds
4451da177e4SLinus Torvalds	  If unsure, say Y.
4461da177e4SLinus Torvalds
44717b085eaSArnaldo Carvalho de Meloconfig INET_TCP_DIAG
44817b085eaSArnaldo Carvalho de Melo	depends on INET_DIAG
44917b085eaSArnaldo Carvalho de Melo	def_tristate INET_DIAG
45017b085eaSArnaldo Carvalho de Melo
4513d2573f7SStephen Hemmingermenuconfig TCP_CONG_ADVANCED
452a6484045SDavid S. Miller	bool "TCP: advanced congestion control"
453a6484045SDavid S. Miller	---help---
454a6484045SDavid S. Miller	  Support for selection of various TCP congestion control
455a6484045SDavid S. Miller	  modules.
456a6484045SDavid S. Miller
457a6484045SDavid S. Miller	  Nearly all users can safely say no here, and a safe default
458597811ecSStephen Hemminger	  selection will be made (CUBIC with new Reno as a fallback).
459a6484045SDavid S. Miller
460a6484045SDavid S. Miller	  If unsure, say N.
461a6484045SDavid S. Miller
4623d2573f7SStephen Hemmingerif TCP_CONG_ADVANCED
46383803034SStephen Hemminger
46483803034SStephen Hemmingerconfig TCP_CONG_BIC
46583803034SStephen Hemminger	tristate "Binary Increase Congestion (BIC) control"
466597811ecSStephen Hemminger	default m
46783803034SStephen Hemminger	---help---
46883803034SStephen Hemminger	BIC-TCP is a sender-side only change that ensures a linear RTT
46983803034SStephen Hemminger	fairness under large windows while offering both scalability and
47083803034SStephen Hemminger	bounded TCP-friendliness. The protocol combines two schemes
47183803034SStephen Hemminger	called additive increase and binary search increase. When the
47283803034SStephen Hemminger	congestion window is large, additive increase with a large
47383803034SStephen Hemminger	increment ensures linear RTT fairness as well as good
47483803034SStephen Hemminger	scalability. Under small congestion windows, binary search
47583803034SStephen Hemminger	increase provides TCP friendliness.
47683803034SStephen Hemminger	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
47783803034SStephen Hemminger
478df3271f3SStephen Hemmingerconfig TCP_CONG_CUBIC
479df3271f3SStephen Hemminger	tristate "CUBIC TCP"
480597811ecSStephen Hemminger	default y
481df3271f3SStephen Hemminger	---help---
482df3271f3SStephen Hemminger	This is version 2.0 of BIC-TCP which uses a cubic growth function
483df3271f3SStephen Hemminger	among other techniques.
484df3271f3SStephen Hemminger	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
485df3271f3SStephen Hemminger
48687270762SStephen Hemmingerconfig TCP_CONG_WESTWOOD
48787270762SStephen Hemminger	tristate "TCP Westwood+"
48887270762SStephen Hemminger	default m
48987270762SStephen Hemminger	---help---
49087270762SStephen Hemminger	TCP Westwood+ is a sender-side only modification of the TCP Reno
49187270762SStephen Hemminger	protocol stack that optimizes the performance of TCP congestion
49287270762SStephen Hemminger	control. It is based on end-to-end bandwidth estimation to set
49387270762SStephen Hemminger	congestion window and slow start threshold after a congestion
49487270762SStephen Hemminger	episode. Using this estimation, TCP Westwood+ adaptively sets a
49587270762SStephen Hemminger	slow start threshold and a congestion window which takes into
49687270762SStephen Hemminger	account the bandwidth used  at the time congestion is experienced.
49787270762SStephen Hemminger	TCP Westwood+ significantly increases fairness wrt TCP Reno in
49887270762SStephen Hemminger	wired networks and throughput over wireless links.
49987270762SStephen Hemminger
500a7868ea6SBaruch Evenconfig TCP_CONG_HTCP
501a7868ea6SBaruch Even        tristate "H-TCP"
502a7868ea6SBaruch Even        default m
503a7868ea6SBaruch Even	---help---
504a7868ea6SBaruch Even	H-TCP is a send-side only modifications of the TCP Reno
505a7868ea6SBaruch Even	protocol stack that optimizes the performance of TCP
506a7868ea6SBaruch Even	congestion control for high speed network links. It uses a
507a7868ea6SBaruch Even	modeswitch to change the alpha and beta parameters of TCP Reno
508a7868ea6SBaruch Even	based on network conditions and in a way so as to be fair with
509a7868ea6SBaruch Even	other Reno and H-TCP flows.
510a7868ea6SBaruch Even
511a628d29bSJohn Heffnerconfig TCP_CONG_HSTCP
512a628d29bSJohn Heffner	tristate "High Speed TCP"
5136a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
514a628d29bSJohn Heffner	default n
515a628d29bSJohn Heffner	---help---
516a628d29bSJohn Heffner	Sally Floyd's High Speed TCP (RFC 3649) congestion control.
517a628d29bSJohn Heffner	A modification to TCP's congestion control mechanism for use
518a628d29bSJohn Heffner	with large congestion windows. A table indicates how much to
519a628d29bSJohn Heffner	increase the congestion window by when an ACK is received.
520a628d29bSJohn Heffner 	For more detail	see http://www.icir.org/floyd/hstcp.html
521a628d29bSJohn Heffner
522835b3f0cSDaniele Lacameraconfig TCP_CONG_HYBLA
523835b3f0cSDaniele Lacamera	tristate "TCP-Hybla congestion control algorithm"
5246a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
525835b3f0cSDaniele Lacamera	default n
526835b3f0cSDaniele Lacamera	---help---
527835b3f0cSDaniele Lacamera	TCP-Hybla is a sender-side only change that eliminates penalization of
528835b3f0cSDaniele Lacamera	long-RTT, large-bandwidth connections, like when satellite legs are
52944c09201SMatt LaPlante	involved, especially when sharing a common bottleneck with normal
530835b3f0cSDaniele Lacamera	terrestrial connections.
531835b3f0cSDaniele Lacamera
532b87d8561SStephen Hemmingerconfig TCP_CONG_VEGAS
533b87d8561SStephen Hemminger	tristate "TCP Vegas"
5346a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
535b87d8561SStephen Hemminger	default n
536b87d8561SStephen Hemminger	---help---
537b87d8561SStephen Hemminger	TCP Vegas is a sender-side only change to TCP that anticipates
538b87d8561SStephen Hemminger	the onset of congestion by estimating the bandwidth. TCP Vegas
539b87d8561SStephen Hemminger	adjusts the sending rate by modifying the congestion
540b87d8561SStephen Hemminger	window. TCP Vegas should provide less packet loss, but it is
541b87d8561SStephen Hemminger	not as aggressive as TCP Reno.
542b87d8561SStephen Hemminger
5430e57976bSJohn Heffnerconfig TCP_CONG_SCALABLE
5440e57976bSJohn Heffner	tristate "Scalable TCP"
5456a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
5460e57976bSJohn Heffner	default n
5470e57976bSJohn Heffner	---help---
5480e57976bSJohn Heffner	Scalable TCP is a sender-side only change to TCP which uses a
5490e57976bSJohn Heffner	MIMD congestion control algorithm which has some nice scaling
5500e57976bSJohn Heffner	properties, though is known to have fairness issues.
5510e57976bSJohn Heffner	See http://www-lce.eng.cam.ac.uk/~ctk21/scalable/
552a7868ea6SBaruch Even
5537c106d7eSWong Hoi Sing Edisonconfig TCP_CONG_LP
5547c106d7eSWong Hoi Sing Edison	tristate "TCP Low Priority"
5557c106d7eSWong Hoi Sing Edison	depends on EXPERIMENTAL
5567c106d7eSWong Hoi Sing Edison	default n
5577c106d7eSWong Hoi Sing Edison	---help---
5587c106d7eSWong Hoi Sing Edison	TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
5597c106d7eSWong Hoi Sing Edison	to utiliza only the excess network bandwidth as compared to the
5607c106d7eSWong Hoi Sing Edison	``fair share`` of bandwidth as targeted by TCP.
5617c106d7eSWong Hoi Sing Edison	See http://www-ece.rice.edu/networks/TCP-LP/
5627c106d7eSWong Hoi Sing Edison
56376f10177SBin Zhouconfig TCP_CONG_VENO
56476f10177SBin Zhou	tristate "TCP Veno"
56576f10177SBin Zhou	depends on EXPERIMENTAL
56676f10177SBin Zhou	default n
56776f10177SBin Zhou	---help---
56876f10177SBin Zhou	TCP Veno is a sender-side only enhancement of TCP to obtain better
56976f10177SBin Zhou	throughput over wireless networks. TCP Veno makes use of state
57076f10177SBin Zhou	distinguishing to circumvent the difficult judgment of the packet loss
57176f10177SBin Zhou	type. TCP Veno cuts down less congestion window in response to random
57276f10177SBin Zhou	loss packets.
57376f10177SBin Zhou	See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf
57476f10177SBin Zhou
5753d2573f7SStephen Hemmingerchoice
5763d2573f7SStephen Hemminger	prompt "Default TCP congestion control"
577597811ecSStephen Hemminger	default DEFAULT_CUBIC
5783d2573f7SStephen Hemminger	help
5793d2573f7SStephen Hemminger	  Select the TCP congestion control that will be used by default
5803d2573f7SStephen Hemminger	  for all connections.
5813d2573f7SStephen Hemminger
5823d2573f7SStephen Hemminger	config DEFAULT_BIC
5833d2573f7SStephen Hemminger		bool "Bic" if TCP_CONG_BIC=y
5843d2573f7SStephen Hemminger
5853d2573f7SStephen Hemminger	config DEFAULT_CUBIC
5863d2573f7SStephen Hemminger		bool "Cubic" if TCP_CONG_CUBIC=y
5873d2573f7SStephen Hemminger
5883d2573f7SStephen Hemminger	config DEFAULT_HTCP
5893d2573f7SStephen Hemminger		bool "Htcp" if TCP_CONG_HTCP=y
5903d2573f7SStephen Hemminger
5913d2573f7SStephen Hemminger	config DEFAULT_VEGAS
5923d2573f7SStephen Hemminger		bool "Vegas" if TCP_CONG_VEGAS=y
5933d2573f7SStephen Hemminger
5943d2573f7SStephen Hemminger	config DEFAULT_WESTWOOD
5953d2573f7SStephen Hemminger		bool "Westwood" if TCP_CONG_WESTWOOD=y
5963d2573f7SStephen Hemminger
5973d2573f7SStephen Hemminger	config DEFAULT_RENO
5983d2573f7SStephen Hemminger		bool "Reno"
5993d2573f7SStephen Hemminger
6003d2573f7SStephen Hemmingerendchoice
6013d2573f7SStephen Hemminger
6023d2573f7SStephen Hemmingerendif
60383803034SStephen Hemminger
604597811ecSStephen Hemmingerconfig TCP_CONG_CUBIC
6056c360767SDavid S. Miller	tristate
606a6484045SDavid S. Miller	depends on !TCP_CONG_ADVANCED
607a6484045SDavid S. Miller	default y
608a6484045SDavid S. Miller
6093d2573f7SStephen Hemmingerconfig DEFAULT_TCP_CONG
6103d2573f7SStephen Hemminger	string
6113d2573f7SStephen Hemminger	default "bic" if DEFAULT_BIC
6123d2573f7SStephen Hemminger	default "cubic" if DEFAULT_CUBIC
6133d2573f7SStephen Hemminger	default "htcp" if DEFAULT_HTCP
6143d2573f7SStephen Hemminger	default "vegas" if DEFAULT_VEGAS
6153d2573f7SStephen Hemminger	default "westwood" if DEFAULT_WESTWOOD
6163d2573f7SStephen Hemminger	default "reno" if DEFAULT_RENO
617597811ecSStephen Hemminger	default "cubic"
6183d2573f7SStephen Hemminger
6191da177e4SLinus Torvaldssource "net/ipv4/ipvs/Kconfig"
6201da177e4SLinus Torvalds
621