xref: /openbmc/linux/net/ipv4/Kconfig (revision c5d35571)
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
12936bb14cSAdrian Bunk	  <http://www.savetz.com/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
38b2cc46a8SJesper Dangaard Brouer	  If you turn on IP forwarding, you should consider 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
46d7394372SDave Jones	  rp_filter on use:
471da177e4SLinus Torvalds
48d7394372SDave Jones	  echo 1 > /proc/sys/net/ipv4/conf/<device>/rp_filter
49750e9fadSNicolas Dichtel	   or
50d7394372SDave Jones	  echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
511da177e4SLinus Torvalds
52b2cc46a8SJesper Dangaard Brouer	  Note that some distributions enable it in startup scripts.
53d18921a0SJesper Dangaard Brouer	  For details about rp_filter strict and loose mode read
54d18921a0SJesper Dangaard Brouer	  <file:Documentation/networking/ip-sysctl.txt>.
55b2cc46a8SJesper Dangaard Brouer
561da177e4SLinus Torvalds	  If unsure, say N here.
571da177e4SLinus Torvalds
58bb298ca3SDavid S. Millerchoice
59bb298ca3SDavid S. Miller	prompt "Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure)"
60bb298ca3SDavid S. Miller	depends on IP_ADVANCED_ROUTER
616876f95fSAdrian Bunk	default ASK_IP_FIB_HASH
62bb298ca3SDavid S. Miller
636876f95fSAdrian Bunkconfig ASK_IP_FIB_HASH
64bb298ca3SDavid S. Miller	bool "FIB_HASH"
65bb298ca3SDavid S. Miller	---help---
66bb298ca3SDavid S. Miller	  Current FIB is very proven and good enough for most users.
67bb298ca3SDavid S. Miller
68bb298ca3SDavid S. Millerconfig IP_FIB_TRIE
69bb298ca3SDavid S. Miller	bool "FIB_TRIE"
70bb298ca3SDavid S. Miller	---help---
7144c09201SMatt LaPlante	  Use new experimental LC-trie as FIB lookup algorithm.
72bb298ca3SDavid S. Miller	  This improves lookup performance if you have a large
73bb298ca3SDavid S. Miller	  number of routes.
74bb298ca3SDavid S. Miller
75bb298ca3SDavid S. Miller	  LC-trie is a longest matching prefix lookup algorithm which
76bb298ca3SDavid S. Miller	  performs better than FIB_HASH for large routing tables.
77bb298ca3SDavid S. Miller	  But, it consumes more memory and is more complex.
78bb298ca3SDavid S. Miller
79bb298ca3SDavid S. Miller	  LC-trie is described in:
80bb298ca3SDavid S. Miller
81bb298ca3SDavid S. Miller	  IP-address lookup using LC-tries. Stefan Nilsson and Gunnar Karlsson
82a6e8f27fSJesper Dangaard Brouer	  IEEE Journal on Selected Areas in Communications, 17(6):1083-1092,
83a6e8f27fSJesper Dangaard Brouer	  June 1999
84a6e8f27fSJesper Dangaard Brouer
85bb298ca3SDavid S. Miller	  An experimental study of compression methods for dynamic tries
86bb298ca3SDavid S. Miller	  Stefan Nilsson and Matti Tikkanen. Algorithmica, 33(1):19-33, 2002.
87bb298ca3SDavid S. Miller	  http://www.nada.kth.se/~snilsson/public/papers/dyntrie2/
88bb298ca3SDavid S. Miller
89bb298ca3SDavid S. Millerendchoice
90bb298ca3SDavid S. Miller
91bb298ca3SDavid S. Millerconfig IP_FIB_HASH
926876f95fSAdrian Bunk	def_bool ASK_IP_FIB_HASH || !IP_ADVANCED_ROUTER
93bb298ca3SDavid S. Miller
9466a2f7fdSStephen Hemmingerconfig IP_FIB_TRIE_STATS
9566a2f7fdSStephen Hemminger	bool "FIB TRIE statistics"
9666a2f7fdSStephen Hemminger	depends on IP_FIB_TRIE
9766a2f7fdSStephen Hemminger	---help---
9866a2f7fdSStephen Hemminger	  Keep track of statistics on structure of FIB TRIE table.
9966a2f7fdSStephen Hemminger	  Useful for testing and measuring TRIE performance.
10066a2f7fdSStephen Hemminger
1011da177e4SLinus Torvaldsconfig IP_MULTIPLE_TABLES
1021da177e4SLinus Torvalds	bool "IP: policy routing"
1031da177e4SLinus Torvalds	depends on IP_ADVANCED_ROUTER
104e1ef4bf2SThomas Graf	select FIB_RULES
1051da177e4SLinus Torvalds	---help---
1061da177e4SLinus Torvalds	  Normally, a router decides what to do with a received packet based
1071da177e4SLinus Torvalds	  solely on the packet's final destination address. If you say Y here,
1081da177e4SLinus Torvalds	  the Linux router will also be able to take the packet's source
1091da177e4SLinus Torvalds	  address into account. Furthermore, the TOS (Type-Of-Service) field
1101da177e4SLinus Torvalds	  of the packet can be used for routing decisions as well.
1111da177e4SLinus Torvalds
1121da177e4SLinus Torvalds	  If you are interested in this, please see the preliminary
1131da177e4SLinus Torvalds	  documentation at <http://www.compendium.com.ar/policy-routing.txt>
1141da177e4SLinus Torvalds	  and <ftp://post.tepkom.ru/pub/vol2/Linux/docs/advanced-routing.tex>.
1151da177e4SLinus Torvalds	  You will need supporting software from
1161da177e4SLinus Torvalds	  <ftp://ftp.tux.org/pub/net/ip-routing/>.
1171da177e4SLinus Torvalds
1181da177e4SLinus Torvalds	  If unsure, say N.
1191da177e4SLinus Torvalds
1201da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH
1211da177e4SLinus Torvalds	bool "IP: equal cost multipath"
1221da177e4SLinus Torvalds	depends on IP_ADVANCED_ROUTER
1231da177e4SLinus Torvalds	help
1241da177e4SLinus Torvalds	  Normally, the routing tables specify a single action to be taken in
1251da177e4SLinus Torvalds	  a deterministic manner for a given packet. If you say Y here
1261da177e4SLinus Torvalds	  however, it becomes possible to attach several actions to a packet
1271da177e4SLinus Torvalds	  pattern, in effect specifying several alternative paths to travel
1281da177e4SLinus Torvalds	  for those packets. The router considers all these paths to be of
1291da177e4SLinus Torvalds	  equal "cost" and chooses one of them in a non-deterministic fashion
1301da177e4SLinus Torvalds	  if a matching packet arrives.
1311da177e4SLinus Torvalds
1321da177e4SLinus Torvaldsconfig IP_ROUTE_VERBOSE
1331da177e4SLinus Torvalds	bool "IP: verbose route monitoring"
1341da177e4SLinus Torvalds	depends on IP_ADVANCED_ROUTER
1351da177e4SLinus Torvalds	help
1361da177e4SLinus Torvalds	  If you say Y here, which is recommended, then the kernel will print
1371da177e4SLinus Torvalds	  verbose messages regarding the routing, for example warnings about
1381da177e4SLinus Torvalds	  received packets which look strange and could be evidence of an
1391da177e4SLinus Torvalds	  attack or a misconfigured system somewhere. The information is
1401da177e4SLinus Torvalds	  handled by the klogd daemon which is responsible for kernel messages
1411da177e4SLinus Torvalds	  ("man klogd").
1421da177e4SLinus Torvalds
1431da177e4SLinus Torvaldsconfig IP_PNP
1441da177e4SLinus Torvalds	bool "IP: kernel level autoconfiguration"
1451da177e4SLinus Torvalds	help
1461da177e4SLinus Torvalds	  This enables automatic configuration of IP addresses of devices and
1471da177e4SLinus Torvalds	  of the routing table during kernel boot, based on either information
1481da177e4SLinus Torvalds	  supplied on the kernel command line or by BOOTP or RARP protocols.
1491da177e4SLinus Torvalds	  You need to say Y only for diskless machines requiring network
1501da177e4SLinus Torvalds	  access to boot (in which case you want to say Y to "Root file system
1511da177e4SLinus Torvalds	  on NFS" as well), because all other machines configure the network
1521da177e4SLinus Torvalds	  in their startup scripts.
1531da177e4SLinus Torvalds
1541da177e4SLinus Torvaldsconfig IP_PNP_DHCP
1551da177e4SLinus Torvalds	bool "IP: DHCP support"
1561da177e4SLinus Torvalds	depends on IP_PNP
1571da177e4SLinus Torvalds	---help---
1581da177e4SLinus Torvalds	  If you want your Linux box to mount its whole root file system (the
1591da177e4SLinus Torvalds	  one containing the directory /) from some other computer over the
1601da177e4SLinus Torvalds	  net via NFS and you want the IP address of your computer to be
1611da177e4SLinus Torvalds	  discovered automatically at boot time using the DHCP protocol (a
1621da177e4SLinus Torvalds	  special protocol designed for doing this job), say Y here. In case
1631da177e4SLinus Torvalds	  the boot ROM of your network card was designed for booting Linux and
1641da177e4SLinus Torvalds	  does DHCP itself, providing all necessary information on the kernel
1651da177e4SLinus Torvalds	  command line, you can say N here.
1661da177e4SLinus Torvalds
1671da177e4SLinus Torvalds	  If unsure, say Y. Note that if you want to use DHCP, a DHCP server
1681da177e4SLinus Torvalds	  must be operating on your network.  Read
169dc7a0816SJ. Bruce Fields	  <file:Documentation/filesystems/nfs/nfsroot.txt> for details.
1701da177e4SLinus Torvalds
1711da177e4SLinus Torvaldsconfig IP_PNP_BOOTP
1721da177e4SLinus Torvalds	bool "IP: BOOTP support"
1731da177e4SLinus Torvalds	depends on IP_PNP
1741da177e4SLinus Torvalds	---help---
1751da177e4SLinus Torvalds	  If you want your Linux box to mount its whole root file system (the
1761da177e4SLinus Torvalds	  one containing the directory /) from some other computer over the
1771da177e4SLinus Torvalds	  net via NFS and you want the IP address of your computer to be
1781da177e4SLinus Torvalds	  discovered automatically at boot time using the BOOTP protocol (a
1791da177e4SLinus Torvalds	  special protocol designed for doing this job), say Y here. In case
1801da177e4SLinus Torvalds	  the boot ROM of your network card was designed for booting Linux and
1811da177e4SLinus Torvalds	  does BOOTP itself, providing all necessary information on the kernel
1821da177e4SLinus Torvalds	  command line, you can say N here. If unsure, say Y. Note that if you
1831da177e4SLinus Torvalds	  want to use BOOTP, a BOOTP server must be operating on your network.
184dc7a0816SJ. Bruce Fields	  Read <file:Documentation/filesystems/nfs/nfsroot.txt> for details.
1851da177e4SLinus Torvalds
1861da177e4SLinus Torvaldsconfig IP_PNP_RARP
1871da177e4SLinus Torvalds	bool "IP: RARP support"
1881da177e4SLinus Torvalds	depends on IP_PNP
1891da177e4SLinus Torvalds	help
1901da177e4SLinus Torvalds	  If you want your Linux box to mount its whole root file system (the
1911da177e4SLinus Torvalds	  one containing the directory /) from some other computer over the
1921da177e4SLinus Torvalds	  net via NFS and you want the IP address of your computer to be
1931da177e4SLinus Torvalds	  discovered automatically at boot time using the RARP protocol (an
1941da177e4SLinus Torvalds	  older protocol which is being obsoleted by BOOTP and DHCP), say Y
1951da177e4SLinus Torvalds	  here. Note that if you want to use RARP, a RARP server must be
1966ded55daSJ. Bruce Fields	  operating on your network. Read
197dc7a0816SJ. Bruce Fields	  <file:Documentation/filesystems/nfs/nfsroot.txt> for details.
1981da177e4SLinus Torvalds
1991da177e4SLinus Torvalds# not yet ready..
2001da177e4SLinus Torvalds#   bool '    IP: ARP support' CONFIG_IP_PNP_ARP
2011da177e4SLinus Torvaldsconfig NET_IPIP
2021da177e4SLinus Torvalds	tristate "IP: tunneling"
203d2acc347SHerbert Xu	select INET_TUNNEL
2041da177e4SLinus Torvalds	---help---
2051da177e4SLinus Torvalds	  Tunneling means encapsulating data of one protocol type within
2061da177e4SLinus Torvalds	  another protocol and sending it over a channel that understands the
2071da177e4SLinus Torvalds	  encapsulating protocol. This particular tunneling driver implements
2081da177e4SLinus Torvalds	  encapsulation of IP within IP, which sounds kind of pointless, but
2091da177e4SLinus Torvalds	  can be useful if you want to make your (or some other) machine
2101da177e4SLinus Torvalds	  appear on a different network than it physically is, or to use
2111da177e4SLinus Torvalds	  mobile-IP facilities (allowing laptops to seamlessly move between
2121da177e4SLinus Torvalds	  networks without changing their IP addresses).
2131da177e4SLinus Torvalds
2141da177e4SLinus Torvalds	  Saying Y to this option will produce two modules ( = code which can
2151da177e4SLinus Torvalds	  be inserted in and removed from the running kernel whenever you
2161da177e4SLinus Torvalds	  want). Most people won't need this and can say N.
2171da177e4SLinus Torvalds
2181da177e4SLinus Torvaldsconfig NET_IPGRE
2191da177e4SLinus Torvalds	tristate "IP: GRE tunnels over IP"
22068c1f3a9SDavid S. Miller	depends on IPV6 || IPV6=n
2211da177e4SLinus Torvalds	help
2221da177e4SLinus Torvalds	  Tunneling means encapsulating data of one protocol type within
2231da177e4SLinus Torvalds	  another protocol and sending it over a channel that understands the
2241da177e4SLinus Torvalds	  encapsulating protocol. This particular tunneling driver implements
2251da177e4SLinus Torvalds	  GRE (Generic Routing Encapsulation) and at this time allows
2261da177e4SLinus Torvalds	  encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure.
2271da177e4SLinus Torvalds	  This driver is useful if the other endpoint is a Cisco router: Cisco
2281da177e4SLinus Torvalds	  likes GRE much better than the other Linux tunneling driver ("IP
2291da177e4SLinus Torvalds	  tunneling" above). In addition, GRE allows multicast redistribution
2301da177e4SLinus Torvalds	  through the tunnel.
2311da177e4SLinus Torvalds
2321da177e4SLinus Torvaldsconfig NET_IPGRE_BROADCAST
2331da177e4SLinus Torvalds	bool "IP: broadcast GRE over IP"
2341da177e4SLinus Torvalds	depends on IP_MULTICAST && NET_IPGRE
2351da177e4SLinus Torvalds	help
2361da177e4SLinus Torvalds	  One application of GRE/IP is to construct a broadcast WAN (Wide Area
2371da177e4SLinus Torvalds	  Network), which looks like a normal Ethernet LAN (Local Area
2381da177e4SLinus Torvalds	  Network), but can be distributed all over the Internet. If you want
2391da177e4SLinus Torvalds	  to do that, say Y here and to "IP multicast routing" below.
2401da177e4SLinus Torvalds
2411da177e4SLinus Torvaldsconfig IP_MROUTE
2421da177e4SLinus Torvalds	bool "IP: multicast routing"
2431da177e4SLinus Torvalds	depends on IP_MULTICAST
2441da177e4SLinus Torvalds	help
2451da177e4SLinus Torvalds	  This is used if you want your machine to act as a router for IP
2461da177e4SLinus Torvalds	  packets that have several destination addresses. It is needed on the
2471da177e4SLinus Torvalds	  MBONE, a high bandwidth network on top of the Internet which carries
2481da177e4SLinus Torvalds	  audio and video broadcasts. In order to do that, you would most
2491da177e4SLinus Torvalds	  likely run the program mrouted. Information about the multicast
2501da177e4SLinus Torvalds	  capabilities of the various network cards is contained in
2511da177e4SLinus Torvalds	  <file:Documentation/networking/multicast.txt>. If you haven't heard
2521da177e4SLinus Torvalds	  about it, you don't need it.
2531da177e4SLinus Torvalds
254f0ad0860SPatrick McHardyconfig IP_MROUTE_MULTIPLE_TABLES
255f0ad0860SPatrick McHardy	bool "IP: multicast policy routing"
25666496d49SPatrick McHardy	depends on IP_MROUTE && IP_ADVANCED_ROUTER
257f0ad0860SPatrick McHardy	select FIB_RULES
258f0ad0860SPatrick McHardy	help
259f0ad0860SPatrick McHardy	  Normally, a multicast router runs a userspace daemon and decides
260f0ad0860SPatrick McHardy	  what to do with a multicast packet based on the source and
261f0ad0860SPatrick McHardy	  destination addresses. If you say Y here, the multicast router
262f0ad0860SPatrick McHardy	  will also be able to take interfaces and packet marks into
263f0ad0860SPatrick McHardy	  account and run multiple instances of userspace daemons
264f0ad0860SPatrick McHardy	  simultaneously, each one handling a single table.
265f0ad0860SPatrick McHardy
266f0ad0860SPatrick McHardy	  If unsure, say N.
267f0ad0860SPatrick McHardy
2681da177e4SLinus Torvaldsconfig IP_PIMSM_V1
2691da177e4SLinus Torvalds	bool "IP: PIM-SM version 1 support"
2701da177e4SLinus Torvalds	depends on IP_MROUTE
2711da177e4SLinus Torvalds	help
2721da177e4SLinus Torvalds	  Kernel side support for Sparse Mode PIM (Protocol Independent
2731da177e4SLinus Torvalds	  Multicast) version 1. This multicast routing protocol is used widely
2741da177e4SLinus Torvalds	  because Cisco supports it. You need special software to use it
2751da177e4SLinus Torvalds	  (pimd-v1). Please see <http://netweb.usc.edu/pim/> for more
2761da177e4SLinus Torvalds	  information about PIM.
2771da177e4SLinus Torvalds
2781da177e4SLinus Torvalds	  Say Y if you want to use PIM-SM v1. Note that you can say N here if
2791da177e4SLinus Torvalds	  you just want to use Dense Mode PIM.
2801da177e4SLinus Torvalds
2811da177e4SLinus Torvaldsconfig IP_PIMSM_V2
2821da177e4SLinus Torvalds	bool "IP: PIM-SM version 2 support"
2831da177e4SLinus Torvalds	depends on IP_MROUTE
2841da177e4SLinus Torvalds	help
2851da177e4SLinus Torvalds	  Kernel side support for Sparse Mode PIM version 2. In order to use
2861da177e4SLinus Torvalds	  this, you need an experimental routing daemon supporting it (pimd or
2871da177e4SLinus Torvalds	  gated-5). This routing protocol is not used widely, so say N unless
2881da177e4SLinus Torvalds	  you want to play with it.
2891da177e4SLinus Torvalds
2901da177e4SLinus Torvaldsconfig ARPD
291e61a4b63STimo Teräs	bool "IP: ARP daemon support"
2921da177e4SLinus Torvalds	---help---
293e61a4b63STimo Teräs	  The kernel maintains an internal cache which maps IP addresses to
294e61a4b63STimo Teräs	  hardware addresses on the local network, so that Ethernet/Token Ring/
295e61a4b63STimo Teräs	  etc. frames are sent to the proper address on the physical networking
296e61a4b63STimo Teräs	  layer. Normally, kernel uses the ARP protocol to resolve these
297e61a4b63STimo Teräs	  mappings.
2981da177e4SLinus Torvalds
299e61a4b63STimo Teräs	  Saying Y here adds support to have an user space daemon to do this
300e61a4b63STimo Teräs	  resolution instead. This is useful for implementing an alternate
301e61a4b63STimo Teräs	  address resolution protocol (e.g. NHRP on mGRE tunnels) and also for
302e61a4b63STimo Teräs	  testing purposes.
3031da177e4SLinus Torvalds
304e61a4b63STimo Teräs	  If unsure, say N.
3051da177e4SLinus Torvalds
3061da177e4SLinus Torvaldsconfig SYN_COOKIES
30757f1553eSFlorian Westphal	bool "IP: TCP syncookie support"
3081da177e4SLinus Torvalds	---help---
3091da177e4SLinus Torvalds	  Normal TCP/IP networking is open to an attack known as "SYN
3101da177e4SLinus Torvalds	  flooding". This denial-of-service attack prevents legitimate remote
3111da177e4SLinus Torvalds	  users from being able to connect to your computer during an ongoing
3121da177e4SLinus Torvalds	  attack and requires very little work from the attacker, who can
3131da177e4SLinus Torvalds	  operate from anywhere on the Internet.
3141da177e4SLinus Torvalds
3151da177e4SLinus Torvalds	  SYN cookies provide protection against this type of attack. If you
3161da177e4SLinus Torvalds	  say Y here, the TCP/IP stack will use a cryptographic challenge
3171da177e4SLinus Torvalds	  protocol known as "SYN cookies" to enable legitimate users to
3181da177e4SLinus Torvalds	  continue to connect, even when your machine is under attack. There
3191da177e4SLinus Torvalds	  is no need for the legitimate users to change their TCP/IP software;
3201da177e4SLinus Torvalds	  SYN cookies work transparently to them. For technical information
3211da177e4SLinus Torvalds	  about SYN cookies, check out <http://cr.yp.to/syncookies.html>.
3221da177e4SLinus Torvalds
3231da177e4SLinus Torvalds	  If you are SYN flooded, the source address reported by the kernel is
3241da177e4SLinus Torvalds	  likely to have been forged by the attacker; it is only reported as
3251da177e4SLinus Torvalds	  an aid in tracing the packets to their actual source and should not
3261da177e4SLinus Torvalds	  be taken as absolute truth.
3271da177e4SLinus Torvalds
3281da177e4SLinus Torvalds	  SYN cookies may prevent correct error reporting on clients when the
3291da177e4SLinus Torvalds	  server is really overloaded. If this happens frequently better turn
3301da177e4SLinus Torvalds	  them off.
3311da177e4SLinus Torvalds
33257f1553eSFlorian Westphal	  If you say Y here, you can disable SYN cookies at run time by
33357f1553eSFlorian Westphal	  saying Y to "/proc file system support" and
3341da177e4SLinus Torvalds	  "Sysctl support" below and executing the command
3351da177e4SLinus Torvalds
33657f1553eSFlorian Westphal	  echo 0 > /proc/sys/net/ipv4/tcp_syncookies
3371da177e4SLinus Torvalds
33857f1553eSFlorian Westphal	  after the /proc file system has been mounted.
3391da177e4SLinus Torvalds
3401da177e4SLinus Torvalds	  If unsure, say N.
3411da177e4SLinus Torvalds
3421da177e4SLinus Torvaldsconfig INET_AH
3431da177e4SLinus Torvalds	tristate "IP: AH transformation"
3441da177e4SLinus Torvalds	select XFRM
3451da177e4SLinus Torvalds	select CRYPTO
3461da177e4SLinus Torvalds	select CRYPTO_HMAC
3471da177e4SLinus Torvalds	select CRYPTO_MD5
3481da177e4SLinus Torvalds	select CRYPTO_SHA1
3491da177e4SLinus Torvalds	---help---
3501da177e4SLinus Torvalds	  Support for IPsec AH.
3511da177e4SLinus Torvalds
3521da177e4SLinus Torvalds	  If unsure, say Y.
3531da177e4SLinus Torvalds
3541da177e4SLinus Torvaldsconfig INET_ESP
3551da177e4SLinus Torvalds	tristate "IP: ESP transformation"
3561da177e4SLinus Torvalds	select XFRM
3571da177e4SLinus Torvalds	select CRYPTO
358ed58dd41SHerbert Xu	select CRYPTO_AUTHENC
3591da177e4SLinus Torvalds	select CRYPTO_HMAC
3601da177e4SLinus Torvalds	select CRYPTO_MD5
3616b7326c8SHerbert Xu	select CRYPTO_CBC
3621da177e4SLinus Torvalds	select CRYPTO_SHA1
3631da177e4SLinus Torvalds	select CRYPTO_DES
3641da177e4SLinus Torvalds	---help---
3651da177e4SLinus Torvalds	  Support for IPsec ESP.
3661da177e4SLinus Torvalds
3671da177e4SLinus Torvalds	  If unsure, say Y.
3681da177e4SLinus Torvalds
3691da177e4SLinus Torvaldsconfig INET_IPCOMP
3701da177e4SLinus Torvalds	tristate "IP: IPComp transformation"
371d2acc347SHerbert Xu	select INET_XFRM_TUNNEL
3726fccab67SHerbert Xu	select XFRM_IPCOMP
3731da177e4SLinus Torvalds	---help---
3741da177e4SLinus Torvalds	  Support for IP Payload Compression Protocol (IPComp) (RFC3173),
3751da177e4SLinus Torvalds	  typically needed for IPsec.
3761da177e4SLinus Torvalds
3771da177e4SLinus Torvalds	  If unsure, say Y.
3781da177e4SLinus Torvalds
379d2acc347SHerbert Xuconfig INET_XFRM_TUNNEL
380d2acc347SHerbert Xu	tristate
381d2acc347SHerbert Xu	select INET_TUNNEL
382d2acc347SHerbert Xu	default n
3831da177e4SLinus Torvalds
384d2acc347SHerbert Xuconfig INET_TUNNEL
385d2acc347SHerbert Xu	tristate
386d2acc347SHerbert Xu	default n
3871da177e4SLinus Torvalds
388b59f45d0SHerbert Xuconfig INET_XFRM_MODE_TRANSPORT
389b59f45d0SHerbert Xu	tristate "IP: IPsec transport mode"
390b59f45d0SHerbert Xu	default y
391b59f45d0SHerbert Xu	select XFRM
392b59f45d0SHerbert Xu	---help---
393b59f45d0SHerbert Xu	  Support for IPsec transport mode.
394b59f45d0SHerbert Xu
395b59f45d0SHerbert Xu	  If unsure, say Y.
396b59f45d0SHerbert Xu
397b59f45d0SHerbert Xuconfig INET_XFRM_MODE_TUNNEL
398b59f45d0SHerbert Xu	tristate "IP: IPsec tunnel mode"
399b59f45d0SHerbert Xu	default y
400b59f45d0SHerbert Xu	select XFRM
401b59f45d0SHerbert Xu	---help---
402b59f45d0SHerbert Xu	  Support for IPsec tunnel mode.
403b59f45d0SHerbert Xu
404b59f45d0SHerbert Xu	  If unsure, say Y.
405b59f45d0SHerbert Xu
4060a69452cSDiego Beltramiconfig INET_XFRM_MODE_BEET
4070a69452cSDiego Beltrami	tristate "IP: IPsec BEET mode"
4080a69452cSDiego Beltrami	default y
4090a69452cSDiego Beltrami	select XFRM
4100a69452cSDiego Beltrami	---help---
4110a69452cSDiego Beltrami	  Support for IPsec BEET mode.
4120a69452cSDiego Beltrami
4130a69452cSDiego Beltrami	  If unsure, say Y.
4140a69452cSDiego Beltrami
41571c87e0cSJan-Bernd Themannconfig INET_LRO
416c5d35571SBen Hutchings	tristate "Large Receive Offload (ipv4/tcp)"
417bc8a5397SFrans Pop	default y
41871c87e0cSJan-Bernd Themann	---help---
41971c87e0cSJan-Bernd Themann	  Support for Large Receive Offload (ipv4/tcp).
42071c87e0cSJan-Bernd Themann
42171c87e0cSJan-Bernd Themann	  If unsure, say Y.
42271c87e0cSJan-Bernd Themann
42317b085eaSArnaldo Carvalho de Meloconfig INET_DIAG
42417b085eaSArnaldo Carvalho de Melo	tristate "INET: socket monitoring interface"
4251da177e4SLinus Torvalds	default y
4261da177e4SLinus Torvalds	---help---
42773c1f4a0SArnaldo Carvalho de Melo	  Support for INET (TCP, DCCP, etc) socket monitoring interface used by
42873c1f4a0SArnaldo Carvalho de Melo	  native Linux tools such as ss. ss is included in iproute2, currently
429f4b9479dSBaruch Even	  downloadable at <http://linux-net.osdl.org/index.php/Iproute2>.
4301da177e4SLinus Torvalds
4311da177e4SLinus Torvalds	  If unsure, say Y.
4321da177e4SLinus Torvalds
43317b085eaSArnaldo Carvalho de Meloconfig INET_TCP_DIAG
43417b085eaSArnaldo Carvalho de Melo	depends on INET_DIAG
43517b085eaSArnaldo Carvalho de Melo	def_tristate INET_DIAG
43617b085eaSArnaldo Carvalho de Melo
4373d2573f7SStephen Hemmingermenuconfig TCP_CONG_ADVANCED
438a6484045SDavid S. Miller	bool "TCP: advanced congestion control"
439a6484045SDavid S. Miller	---help---
440a6484045SDavid S. Miller	  Support for selection of various TCP congestion control
441a6484045SDavid S. Miller	  modules.
442a6484045SDavid S. Miller
443a6484045SDavid S. Miller	  Nearly all users can safely say no here, and a safe default
444597811ecSStephen Hemminger	  selection will be made (CUBIC with new Reno as a fallback).
445a6484045SDavid S. Miller
446a6484045SDavid S. Miller	  If unsure, say N.
447a6484045SDavid S. Miller
4483d2573f7SStephen Hemmingerif TCP_CONG_ADVANCED
44983803034SStephen Hemminger
45083803034SStephen Hemmingerconfig TCP_CONG_BIC
45183803034SStephen Hemminger	tristate "Binary Increase Congestion (BIC) control"
452597811ecSStephen Hemminger	default m
45383803034SStephen Hemminger	---help---
45483803034SStephen Hemminger	BIC-TCP is a sender-side only change that ensures a linear RTT
45583803034SStephen Hemminger	fairness under large windows while offering both scalability and
45683803034SStephen Hemminger	bounded TCP-friendliness. The protocol combines two schemes
45783803034SStephen Hemminger	called additive increase and binary search increase. When the
45883803034SStephen Hemminger	congestion window is large, additive increase with a large
45983803034SStephen Hemminger	increment ensures linear RTT fairness as well as good
46083803034SStephen Hemminger	scalability. Under small congestion windows, binary search
46183803034SStephen Hemminger	increase provides TCP friendliness.
46283803034SStephen Hemminger	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
46383803034SStephen Hemminger
464df3271f3SStephen Hemmingerconfig TCP_CONG_CUBIC
465df3271f3SStephen Hemminger	tristate "CUBIC TCP"
466597811ecSStephen Hemminger	default y
467df3271f3SStephen Hemminger	---help---
468df3271f3SStephen Hemminger	This is version 2.0 of BIC-TCP which uses a cubic growth function
469df3271f3SStephen Hemminger	among other techniques.
470df3271f3SStephen Hemminger	See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
471df3271f3SStephen Hemminger
47287270762SStephen Hemmingerconfig TCP_CONG_WESTWOOD
47387270762SStephen Hemminger	tristate "TCP Westwood+"
47487270762SStephen Hemminger	default m
47587270762SStephen Hemminger	---help---
47687270762SStephen Hemminger	TCP Westwood+ is a sender-side only modification of the TCP Reno
47787270762SStephen Hemminger	protocol stack that optimizes the performance of TCP congestion
47887270762SStephen Hemminger	control. It is based on end-to-end bandwidth estimation to set
47987270762SStephen Hemminger	congestion window and slow start threshold after a congestion
48087270762SStephen Hemminger	episode. Using this estimation, TCP Westwood+ adaptively sets a
48187270762SStephen Hemminger	slow start threshold and a congestion window which takes into
48287270762SStephen Hemminger	account the bandwidth used  at the time congestion is experienced.
48387270762SStephen Hemminger	TCP Westwood+ significantly increases fairness wrt TCP Reno in
48487270762SStephen Hemminger	wired networks and throughput over wireless links.
48587270762SStephen Hemminger
486a7868ea6SBaruch Evenconfig TCP_CONG_HTCP
487a7868ea6SBaruch Even        tristate "H-TCP"
488a7868ea6SBaruch Even        default m
489a7868ea6SBaruch Even	---help---
490a7868ea6SBaruch Even	H-TCP is a send-side only modifications of the TCP Reno
491a7868ea6SBaruch Even	protocol stack that optimizes the performance of TCP
492a7868ea6SBaruch Even	congestion control for high speed network links. It uses a
493a7868ea6SBaruch Even	modeswitch to change the alpha and beta parameters of TCP Reno
494a7868ea6SBaruch Even	based on network conditions and in a way so as to be fair with
495a7868ea6SBaruch Even	other Reno and H-TCP flows.
496a7868ea6SBaruch Even
497a628d29bSJohn Heffnerconfig TCP_CONG_HSTCP
498a628d29bSJohn Heffner	tristate "High Speed TCP"
4996a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
500a628d29bSJohn Heffner	default n
501a628d29bSJohn Heffner	---help---
502a628d29bSJohn Heffner	Sally Floyd's High Speed TCP (RFC 3649) congestion control.
503a628d29bSJohn Heffner	A modification to TCP's congestion control mechanism for use
504a628d29bSJohn Heffner	with large congestion windows. A table indicates how much to
505a628d29bSJohn Heffner	increase the congestion window by when an ACK is received.
506a628d29bSJohn Heffner 	For more detail	see http://www.icir.org/floyd/hstcp.html
507a628d29bSJohn Heffner
508835b3f0cSDaniele Lacameraconfig TCP_CONG_HYBLA
509835b3f0cSDaniele Lacamera	tristate "TCP-Hybla congestion control algorithm"
5106a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
511835b3f0cSDaniele Lacamera	default n
512835b3f0cSDaniele Lacamera	---help---
513835b3f0cSDaniele Lacamera	TCP-Hybla is a sender-side only change that eliminates penalization of
514835b3f0cSDaniele Lacamera	long-RTT, large-bandwidth connections, like when satellite legs are
51544c09201SMatt LaPlante	involved, especially when sharing a common bottleneck with normal
516835b3f0cSDaniele Lacamera	terrestrial connections.
517835b3f0cSDaniele Lacamera
518b87d8561SStephen Hemmingerconfig TCP_CONG_VEGAS
519b87d8561SStephen Hemminger	tristate "TCP Vegas"
5206a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
521b87d8561SStephen Hemminger	default n
522b87d8561SStephen Hemminger	---help---
523b87d8561SStephen Hemminger	TCP Vegas is a sender-side only change to TCP that anticipates
524b87d8561SStephen Hemminger	the onset of congestion by estimating the bandwidth. TCP Vegas
525b87d8561SStephen Hemminger	adjusts the sending rate by modifying the congestion
526b87d8561SStephen Hemminger	window. TCP Vegas should provide less packet loss, but it is
527b87d8561SStephen Hemminger	not as aggressive as TCP Reno.
528b87d8561SStephen Hemminger
5290e57976bSJohn Heffnerconfig TCP_CONG_SCALABLE
5300e57976bSJohn Heffner	tristate "Scalable TCP"
5316a2e9b73SSam Ravnborg	depends on EXPERIMENTAL
5320e57976bSJohn Heffner	default n
5330e57976bSJohn Heffner	---help---
5340e57976bSJohn Heffner	Scalable TCP is a sender-side only change to TCP which uses a
5350e57976bSJohn Heffner	MIMD congestion control algorithm which has some nice scaling
5360e57976bSJohn Heffner	properties, though is known to have fairness issues.
537f4b9479dSBaruch Even	See http://www.deneholme.net/tom/scalable/
538a7868ea6SBaruch Even
5397c106d7eSWong Hoi Sing Edisonconfig TCP_CONG_LP
5407c106d7eSWong Hoi Sing Edison	tristate "TCP Low Priority"
5417c106d7eSWong Hoi Sing Edison	depends on EXPERIMENTAL
5427c106d7eSWong Hoi Sing Edison	default n
5437c106d7eSWong Hoi Sing Edison	---help---
5447c106d7eSWong Hoi Sing Edison	TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
545cab00891SMatt LaPlante	to utilize only the excess network bandwidth as compared to the
5467c106d7eSWong Hoi Sing Edison	``fair share`` of bandwidth as targeted by TCP.
5477c106d7eSWong Hoi Sing Edison	See http://www-ece.rice.edu/networks/TCP-LP/
5487c106d7eSWong Hoi Sing Edison
54976f10177SBin Zhouconfig TCP_CONG_VENO
55076f10177SBin Zhou	tristate "TCP Veno"
55176f10177SBin Zhou	depends on EXPERIMENTAL
55276f10177SBin Zhou	default n
55376f10177SBin Zhou	---help---
55476f10177SBin Zhou	TCP Veno is a sender-side only enhancement of TCP to obtain better
55576f10177SBin Zhou	throughput over wireless networks. TCP Veno makes use of state
55676f10177SBin Zhou	distinguishing to circumvent the difficult judgment of the packet loss
55776f10177SBin Zhou	type. TCP Veno cuts down less congestion window in response to random
55876f10177SBin Zhou	loss packets.
55976f10177SBin Zhou	See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf
56076f10177SBin Zhou
5615ef81475SAngelo P. Castellaniconfig TCP_CONG_YEAH
5625ef81475SAngelo P. Castellani	tristate "YeAH TCP"
5635ef81475SAngelo P. Castellani	depends on EXPERIMENTAL
5642ff011efSDavid S. Miller	select TCP_CONG_VEGAS
5655ef81475SAngelo P. Castellani	default n
5665ef81475SAngelo P. Castellani	---help---
5675ef81475SAngelo P. Castellani	YeAH-TCP is a sender-side high-speed enabled TCP congestion control
5685ef81475SAngelo P. Castellani	algorithm, which uses a mixed loss/delay approach to compute the
5695ef81475SAngelo P. Castellani	congestion window. It's design goals target high efficiency,
5705ef81475SAngelo P. Castellani	internal, RTT and Reno fairness, resilience to link loss while
5715ef81475SAngelo P. Castellani	keeping network elements load as low as possible.
5725ef81475SAngelo P. Castellani
5735ef81475SAngelo P. Castellani	For further details look here:
5745ef81475SAngelo P. Castellani	  http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf
5755ef81475SAngelo P. Castellani
576c462238dSStephen Hemmingerconfig TCP_CONG_ILLINOIS
577c462238dSStephen Hemminger	tristate "TCP Illinois"
578c462238dSStephen Hemminger	depends on EXPERIMENTAL
579c462238dSStephen Hemminger	default n
580c462238dSStephen Hemminger	---help---
58101dd2fbfSMatt LaPlante	TCP-Illinois is a sender-side modification of TCP Reno for
582c462238dSStephen Hemminger	high speed long delay links. It uses round-trip-time to
583c462238dSStephen Hemminger	adjust the alpha and beta parameters to achieve a higher average
584c462238dSStephen Hemminger	throughput and maintain fairness.
585c462238dSStephen Hemminger
586c462238dSStephen Hemminger	For further details see:
587c462238dSStephen Hemminger	  http://www.ews.uiuc.edu/~shaoliu/tcpillinois/index.html
588c462238dSStephen Hemminger
5893d2573f7SStephen Hemmingerchoice
5903d2573f7SStephen Hemminger	prompt "Default TCP congestion control"
591597811ecSStephen Hemminger	default DEFAULT_CUBIC
5923d2573f7SStephen Hemminger	help
5933d2573f7SStephen Hemminger	  Select the TCP congestion control that will be used by default
5943d2573f7SStephen Hemminger	  for all connections.
5953d2573f7SStephen Hemminger
5963d2573f7SStephen Hemminger	config DEFAULT_BIC
5973d2573f7SStephen Hemminger		bool "Bic" if TCP_CONG_BIC=y
5983d2573f7SStephen Hemminger
5993d2573f7SStephen Hemminger	config DEFAULT_CUBIC
6003d2573f7SStephen Hemminger		bool "Cubic" if TCP_CONG_CUBIC=y
6013d2573f7SStephen Hemminger
6023d2573f7SStephen Hemminger	config DEFAULT_HTCP
6033d2573f7SStephen Hemminger		bool "Htcp" if TCP_CONG_HTCP=y
6043d2573f7SStephen Hemminger
605dd2acaa7SJan Engelhardt	config DEFAULT_HYBLA
606dd2acaa7SJan Engelhardt		bool "Hybla" if TCP_CONG_HYBLA=y
607dd2acaa7SJan Engelhardt
6083d2573f7SStephen Hemminger	config DEFAULT_VEGAS
6093d2573f7SStephen Hemminger		bool "Vegas" if TCP_CONG_VEGAS=y
6103d2573f7SStephen Hemminger
6116ce1a6dfSJan Engelhardt	config DEFAULT_VENO
6126ce1a6dfSJan Engelhardt		bool "Veno" if TCP_CONG_VENO=y
6136ce1a6dfSJan Engelhardt
6143d2573f7SStephen Hemminger	config DEFAULT_WESTWOOD
6153d2573f7SStephen Hemminger		bool "Westwood" if TCP_CONG_WESTWOOD=y
6163d2573f7SStephen Hemminger
6173d2573f7SStephen Hemminger	config DEFAULT_RENO
6183d2573f7SStephen Hemminger		bool "Reno"
6193d2573f7SStephen Hemminger
6203d2573f7SStephen Hemmingerendchoice
6213d2573f7SStephen Hemminger
6223d2573f7SStephen Hemmingerendif
62383803034SStephen Hemminger
624597811ecSStephen Hemmingerconfig TCP_CONG_CUBIC
6256c360767SDavid S. Miller	tristate
626a6484045SDavid S. Miller	depends on !TCP_CONG_ADVANCED
627a6484045SDavid S. Miller	default y
628a6484045SDavid S. Miller
6293d2573f7SStephen Hemmingerconfig DEFAULT_TCP_CONG
6303d2573f7SStephen Hemminger	string
6313d2573f7SStephen Hemminger	default "bic" if DEFAULT_BIC
6323d2573f7SStephen Hemminger	default "cubic" if DEFAULT_CUBIC
6333d2573f7SStephen Hemminger	default "htcp" if DEFAULT_HTCP
634dd2acaa7SJan Engelhardt	default "hybla" if DEFAULT_HYBLA
6353d2573f7SStephen Hemminger	default "vegas" if DEFAULT_VEGAS
6363d2573f7SStephen Hemminger	default "westwood" if DEFAULT_WESTWOOD
6376ce1a6dfSJan Engelhardt	default "veno" if DEFAULT_VENO
6383d2573f7SStephen Hemminger	default "reno" if DEFAULT_RENO
639597811ecSStephen Hemminger	default "cubic"
6403d2573f7SStephen Hemminger
641cfb6eeb4SYOSHIFUJI Hideakiconfig TCP_MD5SIG
642cfb6eeb4SYOSHIFUJI Hideaki	bool "TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)"
643cfb6eeb4SYOSHIFUJI Hideaki	depends on EXPERIMENTAL
644cfb6eeb4SYOSHIFUJI Hideaki	select CRYPTO
645cfb6eeb4SYOSHIFUJI Hideaki	select CRYPTO_MD5
646cfb6eeb4SYOSHIFUJI Hideaki	---help---
6473dde6ad8SDavid Sterba	  RFC2385 specifies a method of giving MD5 protection to TCP sessions.
648cfb6eeb4SYOSHIFUJI Hideaki	  Its main (only?) use is to protect BGP sessions between core routers
649cfb6eeb4SYOSHIFUJI Hideaki	  on the Internet.
650cfb6eeb4SYOSHIFUJI Hideaki
651cfb6eeb4SYOSHIFUJI Hideaki	  If unsure, say N.
652cfb6eeb4SYOSHIFUJI Hideaki
653