11da177e4SLinus Torvalds# 21da177e4SLinus Torvalds# IP configuration 31da177e4SLinus Torvalds# 41da177e4SLinus Torvaldsconfig IP_MULTICAST 51da177e4SLinus Torvalds bool "IP: multicasting" 61da177e4SLinus Torvalds depends on INET 71da177e4SLinus Torvalds help 81da177e4SLinus Torvalds This is code for addressing several networked computers at once, 91da177e4SLinus Torvalds enlarging your kernel by about 2 KB. You need multicasting if you 101da177e4SLinus Torvalds intend to participate in the MBONE, a high bandwidth network on top 111da177e4SLinus Torvalds of the Internet which carries audio and video broadcasts. More 121da177e4SLinus Torvalds information about the MBONE is on the WWW at 131da177e4SLinus Torvalds <http://www-itg.lbl.gov/mbone/>. Information about the multicast 141da177e4SLinus Torvalds capabilities of the various network cards is contained in 151da177e4SLinus Torvalds <file:Documentation/networking/multicast.txt>. For most people, it's 161da177e4SLinus Torvalds safe to say N. 171da177e4SLinus Torvalds 181da177e4SLinus Torvaldsconfig IP_ADVANCED_ROUTER 191da177e4SLinus Torvalds bool "IP: advanced router" 201da177e4SLinus Torvalds depends on INET 211da177e4SLinus Torvalds ---help--- 221da177e4SLinus Torvalds If you intend to run your Linux box mostly as a router, i.e. as a 231da177e4SLinus Torvalds computer that forwards and redistributes network packets, say Y; you 241da177e4SLinus Torvalds will then be presented with several options that allow more precise 251da177e4SLinus Torvalds control about the routing process. 261da177e4SLinus Torvalds 271da177e4SLinus Torvalds The answer to this question won't directly affect the kernel: 281da177e4SLinus Torvalds answering N will just cause the configurator to skip all the 291da177e4SLinus Torvalds questions about advanced routing. 301da177e4SLinus Torvalds 311da177e4SLinus Torvalds Note that your box can only act as a router if you enable IP 321da177e4SLinus Torvalds forwarding in your kernel; you can do that by saying Y to "/proc 331da177e4SLinus Torvalds file system support" and "Sysctl support" below and executing the 341da177e4SLinus Torvalds line 351da177e4SLinus Torvalds 361da177e4SLinus Torvalds echo "1" > /proc/sys/net/ipv4/ip_forward 371da177e4SLinus Torvalds 381da177e4SLinus Torvalds at boot time after the /proc file system has been mounted. 391da177e4SLinus Torvalds 401da177e4SLinus Torvalds If you turn on IP forwarding, you will also get the rp_filter, which 411da177e4SLinus Torvalds automatically rejects incoming packets if the routing table entry 421da177e4SLinus Torvalds for their source address doesn't match the network interface they're 431da177e4SLinus Torvalds arriving on. This has security advantages because it prevents the 441da177e4SLinus Torvalds so-called IP spoofing, however it can pose problems if you use 451da177e4SLinus Torvalds asymmetric routing (packets from you to a host take a different path 461da177e4SLinus Torvalds than packets from that host to you) or if you operate a non-routing 471da177e4SLinus Torvalds host which has several IP addresses on different interfaces. To turn 481da177e4SLinus Torvalds rp_filter off use: 491da177e4SLinus Torvalds 501da177e4SLinus Torvalds echo 0 > /proc/sys/net/ipv4/conf/<device>/rp_filter 511da177e4SLinus Torvalds or 521da177e4SLinus Torvalds echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 531da177e4SLinus Torvalds 541da177e4SLinus Torvalds If unsure, say N here. 551da177e4SLinus Torvalds 56bb298ca3SDavid S. Millerchoice 57bb298ca3SDavid S. Miller prompt "Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure)" 58bb298ca3SDavid S. Miller depends on IP_ADVANCED_ROUTER 59bb298ca3SDavid S. Miller default IP_FIB_HASH 60bb298ca3SDavid S. Miller 61bb298ca3SDavid S. Millerconfig IP_FIB_HASH 62bb298ca3SDavid S. Miller bool "FIB_HASH" 63bb298ca3SDavid S. Miller ---help--- 64bb298ca3SDavid S. Miller Current FIB is very proven and good enough for most users. 65bb298ca3SDavid S. Miller 66bb298ca3SDavid S. Millerconfig IP_FIB_TRIE 67bb298ca3SDavid S. Miller bool "FIB_TRIE" 68bb298ca3SDavid S. Miller ---help--- 69bb298ca3SDavid S. Miller Use new experimental LC-trie as FIB lookup algoritm. 70bb298ca3SDavid S. Miller This improves lookup performance if you have a large 71bb298ca3SDavid S. Miller number of routes. 72bb298ca3SDavid S. Miller 73bb298ca3SDavid S. Miller LC-trie is a longest matching prefix lookup algorithm which 74bb298ca3SDavid S. Miller performs better than FIB_HASH for large routing tables. 75bb298ca3SDavid S. Miller But, it consumes more memory and is more complex. 76bb298ca3SDavid S. Miller 77bb298ca3SDavid S. Miller LC-trie is described in: 78bb298ca3SDavid S. Miller 79bb298ca3SDavid S. Miller IP-address lookup using LC-tries. Stefan Nilsson and Gunnar Karlsson 80bb298ca3SDavid S. Miller IEEE Journal on Selected Areas in Communications, 17(6):1083-1092, June 1999 81bb298ca3SDavid S. Miller An experimental study of compression methods for dynamic tries 82bb298ca3SDavid S. Miller Stefan Nilsson and Matti Tikkanen. Algorithmica, 33(1):19-33, 2002. 83bb298ca3SDavid S. Miller http://www.nada.kth.se/~snilsson/public/papers/dyntrie2/ 84bb298ca3SDavid S. Miller 85bb298ca3SDavid S. Millerendchoice 86bb298ca3SDavid S. Miller 87bb298ca3SDavid S. Miller# If the user does not enable advanced routing, he gets the safe 88bb298ca3SDavid S. Miller# default of the fib-hash algorithm. 89bb298ca3SDavid S. Millerconfig IP_FIB_HASH 90bb298ca3SDavid S. Miller bool 91bb298ca3SDavid S. Miller depends on !IP_ADVANCED_ROUTER 92bb298ca3SDavid S. Miller default y 93bb298ca3SDavid S. Miller 941da177e4SLinus Torvaldsconfig IP_MULTIPLE_TABLES 951da177e4SLinus Torvalds bool "IP: policy routing" 961da177e4SLinus Torvalds depends on IP_ADVANCED_ROUTER 971da177e4SLinus Torvalds ---help--- 981da177e4SLinus Torvalds Normally, a router decides what to do with a received packet based 991da177e4SLinus Torvalds solely on the packet's final destination address. If you say Y here, 1001da177e4SLinus Torvalds the Linux router will also be able to take the packet's source 1011da177e4SLinus Torvalds address into account. Furthermore, the TOS (Type-Of-Service) field 1021da177e4SLinus Torvalds of the packet can be used for routing decisions as well. 1031da177e4SLinus Torvalds 1041da177e4SLinus Torvalds If you are interested in this, please see the preliminary 1051da177e4SLinus Torvalds documentation at <http://www.compendium.com.ar/policy-routing.txt> 1061da177e4SLinus Torvalds and <ftp://post.tepkom.ru/pub/vol2/Linux/docs/advanced-routing.tex>. 1071da177e4SLinus Torvalds You will need supporting software from 1081da177e4SLinus Torvalds <ftp://ftp.tux.org/pub/net/ip-routing/>. 1091da177e4SLinus Torvalds 1101da177e4SLinus Torvalds If unsure, say N. 1111da177e4SLinus Torvalds 1121da177e4SLinus Torvaldsconfig IP_ROUTE_FWMARK 1131da177e4SLinus Torvalds bool "IP: use netfilter MARK value as routing key" 1141da177e4SLinus Torvalds depends on IP_MULTIPLE_TABLES && NETFILTER 1151da177e4SLinus Torvalds help 1161da177e4SLinus Torvalds If you say Y here, you will be able to specify different routes for 1171da177e4SLinus Torvalds packets with different mark values (see iptables(8), MARK target). 1181da177e4SLinus Torvalds 1191da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH 1201da177e4SLinus Torvalds bool "IP: equal cost multipath" 1211da177e4SLinus Torvalds depends on IP_ADVANCED_ROUTER 1221da177e4SLinus Torvalds help 1231da177e4SLinus Torvalds Normally, the routing tables specify a single action to be taken in 1241da177e4SLinus Torvalds a deterministic manner for a given packet. If you say Y here 1251da177e4SLinus Torvalds however, it becomes possible to attach several actions to a packet 1261da177e4SLinus Torvalds pattern, in effect specifying several alternative paths to travel 1271da177e4SLinus Torvalds for those packets. The router considers all these paths to be of 1281da177e4SLinus Torvalds equal "cost" and chooses one of them in a non-deterministic fashion 1291da177e4SLinus Torvalds if a matching packet arrives. 1301da177e4SLinus Torvalds 1311da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_CACHED 1321da177e4SLinus Torvalds bool "IP: equal cost multipath with caching support (EXPERIMENTAL)" 1331da177e4SLinus Torvalds depends on: IP_ROUTE_MULTIPATH 1341da177e4SLinus Torvalds help 1351da177e4SLinus Torvalds Normally, equal cost multipath routing is not supported by the 1361da177e4SLinus Torvalds routing cache. If you say Y here, alternative routes are cached 1371da177e4SLinus Torvalds and on cache lookup a route is chosen in a configurable fashion. 1381da177e4SLinus Torvalds 1391da177e4SLinus Torvalds If unsure, say N. 1401da177e4SLinus Torvalds 1411da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_RR 1421da177e4SLinus Torvalds tristate "MULTIPATH: round robin algorithm" 1431da177e4SLinus Torvalds depends on IP_ROUTE_MULTIPATH_CACHED 1441da177e4SLinus Torvalds help 1451da177e4SLinus Torvalds Mulitpath routes are chosen according to Round Robin 1461da177e4SLinus Torvalds 1471da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_RANDOM 1481da177e4SLinus Torvalds tristate "MULTIPATH: random algorithm" 1491da177e4SLinus Torvalds depends on IP_ROUTE_MULTIPATH_CACHED 1501da177e4SLinus Torvalds help 1511da177e4SLinus Torvalds Multipath routes are chosen in a random fashion. Actually, 1521da177e4SLinus Torvalds there is no weight for a route. The advantage of this policy 1531da177e4SLinus Torvalds is that it is implemented stateless and therefore introduces only 1541da177e4SLinus Torvalds a very small delay. 1551da177e4SLinus Torvalds 1561da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_WRANDOM 1571da177e4SLinus Torvalds tristate "MULTIPATH: weighted random algorithm" 1581da177e4SLinus Torvalds depends on IP_ROUTE_MULTIPATH_CACHED 1591da177e4SLinus Torvalds help 1601da177e4SLinus Torvalds Multipath routes are chosen in a weighted random fashion. 1611da177e4SLinus Torvalds The per route weights are the weights visible via ip route 2. As the 1621da177e4SLinus Torvalds corresponding state management introduces some overhead routing delay 1631da177e4SLinus Torvalds is increased. 1641da177e4SLinus Torvalds 1651da177e4SLinus Torvaldsconfig IP_ROUTE_MULTIPATH_DRR 1661da177e4SLinus Torvalds tristate "MULTIPATH: interface round robin algorithm" 1671da177e4SLinus Torvalds depends on IP_ROUTE_MULTIPATH_CACHED 1681da177e4SLinus Torvalds help 1691da177e4SLinus Torvalds Connections are distributed in a round robin fashion over the 1701da177e4SLinus Torvalds available interfaces. This policy makes sense if the connections 1711da177e4SLinus Torvalds should be primarily distributed on interfaces and not on routes. 1721da177e4SLinus Torvalds 1731da177e4SLinus Torvaldsconfig IP_ROUTE_VERBOSE 1741da177e4SLinus Torvalds bool "IP: verbose route monitoring" 1751da177e4SLinus Torvalds depends on IP_ADVANCED_ROUTER 1761da177e4SLinus Torvalds help 1771da177e4SLinus Torvalds If you say Y here, which is recommended, then the kernel will print 1781da177e4SLinus Torvalds verbose messages regarding the routing, for example warnings about 1791da177e4SLinus Torvalds received packets which look strange and could be evidence of an 1801da177e4SLinus Torvalds attack or a misconfigured system somewhere. The information is 1811da177e4SLinus Torvalds handled by the klogd daemon which is responsible for kernel messages 1821da177e4SLinus Torvalds ("man klogd"). 1831da177e4SLinus Torvalds 1841da177e4SLinus Torvaldsconfig IP_PNP 1851da177e4SLinus Torvalds bool "IP: kernel level autoconfiguration" 1861da177e4SLinus Torvalds depends on INET 1871da177e4SLinus Torvalds help 1881da177e4SLinus Torvalds This enables automatic configuration of IP addresses of devices and 1891da177e4SLinus Torvalds of the routing table during kernel boot, based on either information 1901da177e4SLinus Torvalds supplied on the kernel command line or by BOOTP or RARP protocols. 1911da177e4SLinus Torvalds You need to say Y only for diskless machines requiring network 1921da177e4SLinus Torvalds access to boot (in which case you want to say Y to "Root file system 1931da177e4SLinus Torvalds on NFS" as well), because all other machines configure the network 1941da177e4SLinus Torvalds in their startup scripts. 1951da177e4SLinus Torvalds 1961da177e4SLinus Torvaldsconfig IP_PNP_DHCP 1971da177e4SLinus Torvalds bool "IP: DHCP support" 1981da177e4SLinus Torvalds depends on IP_PNP 1991da177e4SLinus Torvalds ---help--- 2001da177e4SLinus Torvalds If you want your Linux box to mount its whole root file system (the 2011da177e4SLinus Torvalds one containing the directory /) from some other computer over the 2021da177e4SLinus Torvalds net via NFS and you want the IP address of your computer to be 2031da177e4SLinus Torvalds discovered automatically at boot time using the DHCP protocol (a 2041da177e4SLinus Torvalds special protocol designed for doing this job), say Y here. In case 2051da177e4SLinus Torvalds the boot ROM of your network card was designed for booting Linux and 2061da177e4SLinus Torvalds does DHCP itself, providing all necessary information on the kernel 2071da177e4SLinus Torvalds command line, you can say N here. 2081da177e4SLinus Torvalds 2091da177e4SLinus Torvalds If unsure, say Y. Note that if you want to use DHCP, a DHCP server 2101da177e4SLinus Torvalds must be operating on your network. Read 2111da177e4SLinus Torvalds <file:Documentation/nfsroot.txt> for details. 2121da177e4SLinus Torvalds 2131da177e4SLinus Torvaldsconfig IP_PNP_BOOTP 2141da177e4SLinus Torvalds bool "IP: BOOTP support" 2151da177e4SLinus Torvalds depends on IP_PNP 2161da177e4SLinus Torvalds ---help--- 2171da177e4SLinus Torvalds If you want your Linux box to mount its whole root file system (the 2181da177e4SLinus Torvalds one containing the directory /) from some other computer over the 2191da177e4SLinus Torvalds net via NFS and you want the IP address of your computer to be 2201da177e4SLinus Torvalds discovered automatically at boot time using the BOOTP protocol (a 2211da177e4SLinus Torvalds special protocol designed for doing this job), say Y here. In case 2221da177e4SLinus Torvalds the boot ROM of your network card was designed for booting Linux and 2231da177e4SLinus Torvalds does BOOTP itself, providing all necessary information on the kernel 2241da177e4SLinus Torvalds command line, you can say N here. If unsure, say Y. Note that if you 2251da177e4SLinus Torvalds want to use BOOTP, a BOOTP server must be operating on your network. 2261da177e4SLinus Torvalds Read <file:Documentation/nfsroot.txt> for details. 2271da177e4SLinus Torvalds 2281da177e4SLinus Torvaldsconfig IP_PNP_RARP 2291da177e4SLinus Torvalds bool "IP: RARP support" 2301da177e4SLinus Torvalds depends on IP_PNP 2311da177e4SLinus Torvalds help 2321da177e4SLinus Torvalds If you want your Linux box to mount its whole root file system (the 2331da177e4SLinus Torvalds one containing the directory /) from some other computer over the 2341da177e4SLinus Torvalds net via NFS and you want the IP address of your computer to be 2351da177e4SLinus Torvalds discovered automatically at boot time using the RARP protocol (an 2361da177e4SLinus Torvalds older protocol which is being obsoleted by BOOTP and DHCP), say Y 2371da177e4SLinus Torvalds here. Note that if you want to use RARP, a RARP server must be 2381da177e4SLinus Torvalds operating on your network. Read <file:Documentation/nfsroot.txt> for 2391da177e4SLinus Torvalds details. 2401da177e4SLinus Torvalds 2411da177e4SLinus Torvalds# not yet ready.. 2421da177e4SLinus Torvalds# bool ' IP: ARP support' CONFIG_IP_PNP_ARP 2431da177e4SLinus Torvaldsconfig NET_IPIP 2441da177e4SLinus Torvalds tristate "IP: tunneling" 2451da177e4SLinus Torvalds depends on INET 2461da177e4SLinus Torvalds select INET_TUNNEL 2471da177e4SLinus Torvalds ---help--- 2481da177e4SLinus Torvalds Tunneling means encapsulating data of one protocol type within 2491da177e4SLinus Torvalds another protocol and sending it over a channel that understands the 2501da177e4SLinus Torvalds encapsulating protocol. This particular tunneling driver implements 2511da177e4SLinus Torvalds encapsulation of IP within IP, which sounds kind of pointless, but 2521da177e4SLinus Torvalds can be useful if you want to make your (or some other) machine 2531da177e4SLinus Torvalds appear on a different network than it physically is, or to use 2541da177e4SLinus Torvalds mobile-IP facilities (allowing laptops to seamlessly move between 2551da177e4SLinus Torvalds networks without changing their IP addresses). 2561da177e4SLinus Torvalds 2571da177e4SLinus Torvalds Saying Y to this option will produce two modules ( = code which can 2581da177e4SLinus Torvalds be inserted in and removed from the running kernel whenever you 2591da177e4SLinus Torvalds want). Most people won't need this and can say N. 2601da177e4SLinus Torvalds 2611da177e4SLinus Torvaldsconfig NET_IPGRE 2621da177e4SLinus Torvalds tristate "IP: GRE tunnels over IP" 2631da177e4SLinus Torvalds depends on INET 2641da177e4SLinus Torvalds select XFRM 2651da177e4SLinus Torvalds help 2661da177e4SLinus Torvalds Tunneling means encapsulating data of one protocol type within 2671da177e4SLinus Torvalds another protocol and sending it over a channel that understands the 2681da177e4SLinus Torvalds encapsulating protocol. This particular tunneling driver implements 2691da177e4SLinus Torvalds GRE (Generic Routing Encapsulation) and at this time allows 2701da177e4SLinus Torvalds encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure. 2711da177e4SLinus Torvalds This driver is useful if the other endpoint is a Cisco router: Cisco 2721da177e4SLinus Torvalds likes GRE much better than the other Linux tunneling driver ("IP 2731da177e4SLinus Torvalds tunneling" above). In addition, GRE allows multicast redistribution 2741da177e4SLinus Torvalds through the tunnel. 2751da177e4SLinus Torvalds 2761da177e4SLinus Torvaldsconfig NET_IPGRE_BROADCAST 2771da177e4SLinus Torvalds bool "IP: broadcast GRE over IP" 2781da177e4SLinus Torvalds depends on IP_MULTICAST && NET_IPGRE 2791da177e4SLinus Torvalds help 2801da177e4SLinus Torvalds One application of GRE/IP is to construct a broadcast WAN (Wide Area 2811da177e4SLinus Torvalds Network), which looks like a normal Ethernet LAN (Local Area 2821da177e4SLinus Torvalds Network), but can be distributed all over the Internet. If you want 2831da177e4SLinus Torvalds to do that, say Y here and to "IP multicast routing" below. 2841da177e4SLinus Torvalds 2851da177e4SLinus Torvaldsconfig IP_MROUTE 2861da177e4SLinus Torvalds bool "IP: multicast routing" 2871da177e4SLinus Torvalds depends on IP_MULTICAST 2881da177e4SLinus Torvalds help 2891da177e4SLinus Torvalds This is used if you want your machine to act as a router for IP 2901da177e4SLinus Torvalds packets that have several destination addresses. It is needed on the 2911da177e4SLinus Torvalds MBONE, a high bandwidth network on top of the Internet which carries 2921da177e4SLinus Torvalds audio and video broadcasts. In order to do that, you would most 2931da177e4SLinus Torvalds likely run the program mrouted. Information about the multicast 2941da177e4SLinus Torvalds capabilities of the various network cards is contained in 2951da177e4SLinus Torvalds <file:Documentation/networking/multicast.txt>. If you haven't heard 2961da177e4SLinus Torvalds about it, you don't need it. 2971da177e4SLinus Torvalds 2981da177e4SLinus Torvaldsconfig IP_PIMSM_V1 2991da177e4SLinus Torvalds bool "IP: PIM-SM version 1 support" 3001da177e4SLinus Torvalds depends on IP_MROUTE 3011da177e4SLinus Torvalds help 3021da177e4SLinus Torvalds Kernel side support for Sparse Mode PIM (Protocol Independent 3031da177e4SLinus Torvalds Multicast) version 1. This multicast routing protocol is used widely 3041da177e4SLinus Torvalds because Cisco supports it. You need special software to use it 3051da177e4SLinus Torvalds (pimd-v1). Please see <http://netweb.usc.edu/pim/> for more 3061da177e4SLinus Torvalds information about PIM. 3071da177e4SLinus Torvalds 3081da177e4SLinus Torvalds Say Y if you want to use PIM-SM v1. Note that you can say N here if 3091da177e4SLinus Torvalds you just want to use Dense Mode PIM. 3101da177e4SLinus Torvalds 3111da177e4SLinus Torvaldsconfig IP_PIMSM_V2 3121da177e4SLinus Torvalds bool "IP: PIM-SM version 2 support" 3131da177e4SLinus Torvalds depends on IP_MROUTE 3141da177e4SLinus Torvalds help 3151da177e4SLinus Torvalds Kernel side support for Sparse Mode PIM version 2. In order to use 3161da177e4SLinus Torvalds this, you need an experimental routing daemon supporting it (pimd or 3171da177e4SLinus Torvalds gated-5). This routing protocol is not used widely, so say N unless 3181da177e4SLinus Torvalds you want to play with it. 3191da177e4SLinus Torvalds 3201da177e4SLinus Torvaldsconfig ARPD 3211da177e4SLinus Torvalds bool "IP: ARP daemon support (EXPERIMENTAL)" 3221da177e4SLinus Torvalds depends on INET && EXPERIMENTAL 3231da177e4SLinus Torvalds ---help--- 3241da177e4SLinus Torvalds Normally, the kernel maintains an internal cache which maps IP 3251da177e4SLinus Torvalds addresses to hardware addresses on the local network, so that 3261da177e4SLinus Torvalds Ethernet/Token Ring/ etc. frames are sent to the proper address on 3271da177e4SLinus Torvalds the physical networking layer. For small networks having a few 3281da177e4SLinus Torvalds hundred directly connected hosts or less, keeping this address 3291da177e4SLinus Torvalds resolution (ARP) cache inside the kernel works well. However, 3301da177e4SLinus Torvalds maintaining an internal ARP cache does not work well for very large 3311da177e4SLinus Torvalds switched networks, and will use a lot of kernel memory if TCP/IP 3321da177e4SLinus Torvalds connections are made to many machines on the network. 3331da177e4SLinus Torvalds 3341da177e4SLinus Torvalds If you say Y here, the kernel's internal ARP cache will never grow 3351da177e4SLinus Torvalds to more than 256 entries (the oldest entries are expired in a LIFO 3361da177e4SLinus Torvalds manner) and communication will be attempted with the user space ARP 3371da177e4SLinus Torvalds daemon arpd. Arpd then answers the address resolution request either 3381da177e4SLinus Torvalds from its own cache or by asking the net. 3391da177e4SLinus Torvalds 3401da177e4SLinus Torvalds This code is experimental and also obsolete. If you want to use it, 3411da177e4SLinus Torvalds you need to find a version of the daemon arpd on the net somewhere, 3421da177e4SLinus Torvalds and you should also say Y to "Kernel/User network link driver", 3431da177e4SLinus Torvalds below. If unsure, say N. 3441da177e4SLinus Torvalds 3451da177e4SLinus Torvaldsconfig SYN_COOKIES 3461da177e4SLinus Torvalds bool "IP: TCP syncookie support (disabled per default)" 3471da177e4SLinus Torvalds depends on INET 3481da177e4SLinus Torvalds ---help--- 3491da177e4SLinus Torvalds Normal TCP/IP networking is open to an attack known as "SYN 3501da177e4SLinus Torvalds flooding". This denial-of-service attack prevents legitimate remote 3511da177e4SLinus Torvalds users from being able to connect to your computer during an ongoing 3521da177e4SLinus Torvalds attack and requires very little work from the attacker, who can 3531da177e4SLinus Torvalds operate from anywhere on the Internet. 3541da177e4SLinus Torvalds 3551da177e4SLinus Torvalds SYN cookies provide protection against this type of attack. If you 3561da177e4SLinus Torvalds say Y here, the TCP/IP stack will use a cryptographic challenge 3571da177e4SLinus Torvalds protocol known as "SYN cookies" to enable legitimate users to 3581da177e4SLinus Torvalds continue to connect, even when your machine is under attack. There 3591da177e4SLinus Torvalds is no need for the legitimate users to change their TCP/IP software; 3601da177e4SLinus Torvalds SYN cookies work transparently to them. For technical information 3611da177e4SLinus Torvalds about SYN cookies, check out <http://cr.yp.to/syncookies.html>. 3621da177e4SLinus Torvalds 3631da177e4SLinus Torvalds If you are SYN flooded, the source address reported by the kernel is 3641da177e4SLinus Torvalds likely to have been forged by the attacker; it is only reported as 3651da177e4SLinus Torvalds an aid in tracing the packets to their actual source and should not 3661da177e4SLinus Torvalds be taken as absolute truth. 3671da177e4SLinus Torvalds 3681da177e4SLinus Torvalds SYN cookies may prevent correct error reporting on clients when the 3691da177e4SLinus Torvalds server is really overloaded. If this happens frequently better turn 3701da177e4SLinus Torvalds them off. 3711da177e4SLinus Torvalds 3721da177e4SLinus Torvalds If you say Y here, note that SYN cookies aren't enabled by default; 3731da177e4SLinus Torvalds you can enable them by saying Y to "/proc file system support" and 3741da177e4SLinus Torvalds "Sysctl support" below and executing the command 3751da177e4SLinus Torvalds 3761da177e4SLinus Torvalds echo 1 >/proc/sys/net/ipv4/tcp_syncookies 3771da177e4SLinus Torvalds 3781da177e4SLinus Torvalds at boot time after the /proc file system has been mounted. 3791da177e4SLinus Torvalds 3801da177e4SLinus Torvalds If unsure, say N. 3811da177e4SLinus Torvalds 3821da177e4SLinus Torvaldsconfig INET_AH 3831da177e4SLinus Torvalds tristate "IP: AH transformation" 3841da177e4SLinus Torvalds depends on INET 3851da177e4SLinus Torvalds select XFRM 3861da177e4SLinus Torvalds select CRYPTO 3871da177e4SLinus Torvalds select CRYPTO_HMAC 3881da177e4SLinus Torvalds select CRYPTO_MD5 3891da177e4SLinus Torvalds select CRYPTO_SHA1 3901da177e4SLinus Torvalds ---help--- 3911da177e4SLinus Torvalds Support for IPsec AH. 3921da177e4SLinus Torvalds 3931da177e4SLinus Torvalds If unsure, say Y. 3941da177e4SLinus Torvalds 3951da177e4SLinus Torvaldsconfig INET_ESP 3961da177e4SLinus Torvalds tristate "IP: ESP transformation" 3971da177e4SLinus Torvalds depends on INET 3981da177e4SLinus Torvalds select XFRM 3991da177e4SLinus Torvalds select CRYPTO 4001da177e4SLinus Torvalds select CRYPTO_HMAC 4011da177e4SLinus Torvalds select CRYPTO_MD5 4021da177e4SLinus Torvalds select CRYPTO_SHA1 4031da177e4SLinus Torvalds select CRYPTO_DES 4041da177e4SLinus Torvalds ---help--- 4051da177e4SLinus Torvalds Support for IPsec ESP. 4061da177e4SLinus Torvalds 4071da177e4SLinus Torvalds If unsure, say Y. 4081da177e4SLinus Torvalds 4091da177e4SLinus Torvaldsconfig INET_IPCOMP 4101da177e4SLinus Torvalds tristate "IP: IPComp transformation" 4111da177e4SLinus Torvalds depends on INET 4121da177e4SLinus Torvalds select XFRM 4131da177e4SLinus Torvalds select INET_TUNNEL 4141da177e4SLinus Torvalds select CRYPTO 4151da177e4SLinus Torvalds select CRYPTO_DEFLATE 4161da177e4SLinus Torvalds ---help--- 4171da177e4SLinus Torvalds Support for IP Payload Compression Protocol (IPComp) (RFC3173), 4181da177e4SLinus Torvalds typically needed for IPsec. 4191da177e4SLinus Torvalds 4201da177e4SLinus Torvalds If unsure, say Y. 4211da177e4SLinus Torvalds 4221da177e4SLinus Torvaldsconfig INET_TUNNEL 4231da177e4SLinus Torvalds tristate "IP: tunnel transformation" 4241da177e4SLinus Torvalds depends on INET 4251da177e4SLinus Torvalds select XFRM 4261da177e4SLinus Torvalds ---help--- 4271da177e4SLinus Torvalds Support for generic IP tunnel transformation, which is required by 4281da177e4SLinus Torvalds the IP tunneling module as well as tunnel mode IPComp. 4291da177e4SLinus Torvalds 4301da177e4SLinus Torvalds If unsure, say Y. 4311da177e4SLinus Torvalds 4321da177e4SLinus Torvaldsconfig IP_TCPDIAG 4331da177e4SLinus Torvalds tristate "IP: TCP socket monitoring interface" 4341da177e4SLinus Torvalds depends on INET 4351da177e4SLinus Torvalds default y 4361da177e4SLinus Torvalds ---help--- 4371da177e4SLinus Torvalds Support for TCP socket monitoring interface used by native Linux 4381da177e4SLinus Torvalds tools such as ss. ss is included in iproute2, currently downloadable 4391da177e4SLinus Torvalds at <http://developer.osdl.org/dev/iproute2>. If you want IPv6 support 4401da177e4SLinus Torvalds and have selected IPv6 as a module, you need to build this as a 4411da177e4SLinus Torvalds module too. 4421da177e4SLinus Torvalds 4431da177e4SLinus Torvalds If unsure, say Y. 4441da177e4SLinus Torvalds 4451da177e4SLinus Torvaldsconfig IP_TCPDIAG_IPV6 4461da177e4SLinus Torvalds def_bool (IP_TCPDIAG=y && IPV6=y) || (IP_TCPDIAG=m && IPV6) 4471da177e4SLinus Torvalds 448*a6484045SDavid S. Millerconfig TCP_CONG_ADVANCED 449*a6484045SDavid S. Miller bool "TCP: advanced congestion control" 450*a6484045SDavid S. Miller depends on INET 451*a6484045SDavid S. Miller default y 452*a6484045SDavid S. Miller ---help--- 453*a6484045SDavid S. Miller Support for selection of various TCP congestion control 454*a6484045SDavid S. Miller modules. 455*a6484045SDavid S. Miller 456*a6484045SDavid S. Miller Nearly all users can safely say no here, and a safe default 457*a6484045SDavid S. Miller selection will be made (BIC-TCP with new Reno as a fallback). 458*a6484045SDavid S. Miller 459*a6484045SDavid S. Miller If unsure, say N. 460*a6484045SDavid S. Miller 46183803034SStephen Hemminger# TCP Reno is builtin (required as fallback) 46283803034SStephen Hemmingermenu "TCP congestion control" 463*a6484045SDavid S. Miller depends on TCP_CONG_ADVANCED 46483803034SStephen Hemminger 46583803034SStephen Hemmingerconfig TCP_CONG_BIC 46683803034SStephen Hemminger tristate "Binary Increase Congestion (BIC) control" 46783803034SStephen Hemminger depends on INET 46883803034SStephen Hemminger default y 46983803034SStephen Hemminger ---help--- 47083803034SStephen Hemminger BIC-TCP is a sender-side only change that ensures a linear RTT 47183803034SStephen Hemminger fairness under large windows while offering both scalability and 47283803034SStephen Hemminger bounded TCP-friendliness. The protocol combines two schemes 47383803034SStephen Hemminger called additive increase and binary search increase. When the 47483803034SStephen Hemminger congestion window is large, additive increase with a large 47583803034SStephen Hemminger increment ensures linear RTT fairness as well as good 47683803034SStephen Hemminger scalability. Under small congestion windows, binary search 47783803034SStephen Hemminger increase provides TCP friendliness. 47883803034SStephen Hemminger See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/ 47983803034SStephen Hemminger 48087270762SStephen Hemmingerconfig TCP_CONG_WESTWOOD 48187270762SStephen Hemminger tristate "TCP Westwood+" 48287270762SStephen Hemminger depends on INET 48387270762SStephen Hemminger default m 48487270762SStephen Hemminger ---help--- 48587270762SStephen Hemminger TCP Westwood+ is a sender-side only modification of the TCP Reno 48687270762SStephen Hemminger protocol stack that optimizes the performance of TCP congestion 48787270762SStephen Hemminger control. It is based on end-to-end bandwidth estimation to set 48887270762SStephen Hemminger congestion window and slow start threshold after a congestion 48987270762SStephen Hemminger episode. Using this estimation, TCP Westwood+ adaptively sets a 49087270762SStephen Hemminger slow start threshold and a congestion window which takes into 49187270762SStephen Hemminger account the bandwidth used at the time congestion is experienced. 49287270762SStephen Hemminger TCP Westwood+ significantly increases fairness wrt TCP Reno in 49387270762SStephen Hemminger wired networks and throughput over wireless links. 49487270762SStephen Hemminger 495a7868ea6SBaruch Evenconfig TCP_CONG_HTCP 496a7868ea6SBaruch Even tristate "H-TCP" 497a7868ea6SBaruch Even depends on INET 498a7868ea6SBaruch Even default m 499a7868ea6SBaruch Even ---help--- 500a7868ea6SBaruch Even H-TCP is a send-side only modifications of the TCP Reno 501a7868ea6SBaruch Even protocol stack that optimizes the performance of TCP 502a7868ea6SBaruch Even congestion control for high speed network links. It uses a 503a7868ea6SBaruch Even modeswitch to change the alpha and beta parameters of TCP Reno 504a7868ea6SBaruch Even based on network conditions and in a way so as to be fair with 505a7868ea6SBaruch Even other Reno and H-TCP flows. 506a7868ea6SBaruch Even 507a628d29bSJohn Heffnerconfig TCP_CONG_HSTCP 508a628d29bSJohn Heffner tristate "High Speed TCP" 509a628d29bSJohn Heffner depends on INET && EXPERIMENTAL 510a628d29bSJohn Heffner default n 511a628d29bSJohn Heffner ---help--- 512a628d29bSJohn Heffner Sally Floyd's High Speed TCP (RFC 3649) congestion control. 513a628d29bSJohn Heffner A modification to TCP's congestion control mechanism for use 514a628d29bSJohn Heffner with large congestion windows. A table indicates how much to 515a628d29bSJohn Heffner increase the congestion window by when an ACK is received. 516a628d29bSJohn Heffner For more detail see http://www.icir.org/floyd/hstcp.html 517a628d29bSJohn Heffner 518835b3f0cSDaniele Lacameraconfig TCP_CONG_HYBLA 519835b3f0cSDaniele Lacamera tristate "TCP-Hybla congestion control algorithm" 520835b3f0cSDaniele Lacamera depends on INET && EXPERIMENTAL 521835b3f0cSDaniele Lacamera default n 522835b3f0cSDaniele Lacamera ---help--- 523835b3f0cSDaniele Lacamera TCP-Hybla is a sender-side only change that eliminates penalization of 524835b3f0cSDaniele Lacamera long-RTT, large-bandwidth connections, like when satellite legs are 525835b3f0cSDaniele Lacamera involved, expecially when sharing a common bottleneck with normal 526835b3f0cSDaniele Lacamera terrestrial connections. 527835b3f0cSDaniele Lacamera 528b87d8561SStephen Hemmingerconfig TCP_CONG_VEGAS 529b87d8561SStephen Hemminger tristate "TCP Vegas" 530b87d8561SStephen Hemminger depends on INET && EXPERIMENTAL 531b87d8561SStephen Hemminger default n 532b87d8561SStephen Hemminger ---help--- 533b87d8561SStephen Hemminger TCP Vegas is a sender-side only change to TCP that anticipates 534b87d8561SStephen Hemminger the onset of congestion by estimating the bandwidth. TCP Vegas 535b87d8561SStephen Hemminger adjusts the sending rate by modifying the congestion 536b87d8561SStephen Hemminger window. TCP Vegas should provide less packet loss, but it is 537b87d8561SStephen Hemminger not as aggressive as TCP Reno. 538b87d8561SStephen Hemminger 5390e57976bSJohn Heffnerconfig TCP_CONG_SCALABLE 5400e57976bSJohn Heffner tristate "Scalable TCP" 5410e57976bSJohn Heffner depends on INET && EXPERIMENTAL 5420e57976bSJohn Heffner default n 5430e57976bSJohn Heffner ---help--- 5440e57976bSJohn Heffner Scalable TCP is a sender-side only change to TCP which uses a 5450e57976bSJohn Heffner MIMD congestion control algorithm which has some nice scaling 5460e57976bSJohn Heffner properties, though is known to have fairness issues. 5470e57976bSJohn Heffner See http://www-lce.eng.cam.ac.uk/~ctk21/scalable/ 548a7868ea6SBaruch Even 54983803034SStephen Hemmingerendmenu 55083803034SStephen Hemminger 551*a6484045SDavid S. Millerconfig TCP_CONG_BIC 552*a6484045SDavid S. Miller boolean 553*a6484045SDavid S. Miller depends on !TCP_CONG_ADVANCED 554*a6484045SDavid S. Miller default y 555*a6484045SDavid S. Miller 5561da177e4SLinus Torvaldssource "net/ipv4/ipvs/Kconfig" 5571da177e4SLinus Torvalds 558