18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci#
38c2ecf20Sopenharmony_ci# IP configuration
48c2ecf20Sopenharmony_ci#
58c2ecf20Sopenharmony_ciconfig IP_MULTICAST
68c2ecf20Sopenharmony_ci	bool "IP: multicasting"
78c2ecf20Sopenharmony_ci	help
88c2ecf20Sopenharmony_ci	  This is code for addressing several networked computers at once,
98c2ecf20Sopenharmony_ci	  enlarging your kernel by about 2 KB. You need multicasting if you
108c2ecf20Sopenharmony_ci	  intend to participate in the MBONE, a high bandwidth network on top
118c2ecf20Sopenharmony_ci	  of the Internet which carries audio and video broadcasts. More
128c2ecf20Sopenharmony_ci	  information about the MBONE is on the WWW at
138c2ecf20Sopenharmony_ci	  <https://www.savetz.com/mbone/>. For most people, it's safe to say N.
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciconfig IP_ADVANCED_ROUTER
168c2ecf20Sopenharmony_ci	bool "IP: advanced router"
178c2ecf20Sopenharmony_ci	help
188c2ecf20Sopenharmony_ci	  If you intend to run your Linux box mostly as a router, i.e. as a
198c2ecf20Sopenharmony_ci	  computer that forwards and redistributes network packets, say Y; you
208c2ecf20Sopenharmony_ci	  will then be presented with several options that allow more precise
218c2ecf20Sopenharmony_ci	  control about the routing process.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci	  The answer to this question won't directly affect the kernel:
248c2ecf20Sopenharmony_ci	  answering N will just cause the configurator to skip all the
258c2ecf20Sopenharmony_ci	  questions about advanced routing.
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci	  Note that your box can only act as a router if you enable IP
288c2ecf20Sopenharmony_ci	  forwarding in your kernel; you can do that by saying Y to "/proc
298c2ecf20Sopenharmony_ci	  file system support" and "Sysctl support" below and executing the
308c2ecf20Sopenharmony_ci	  line
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci	  echo "1" > /proc/sys/net/ipv4/ip_forward
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci	  at boot time after the /proc file system has been mounted.
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci	  If you turn on IP forwarding, you should consider the rp_filter, which
378c2ecf20Sopenharmony_ci	  automatically rejects incoming packets if the routing table entry
388c2ecf20Sopenharmony_ci	  for their source address doesn't match the network interface they're
398c2ecf20Sopenharmony_ci	  arriving on. This has security advantages because it prevents the
408c2ecf20Sopenharmony_ci	  so-called IP spoofing, however it can pose problems if you use
418c2ecf20Sopenharmony_ci	  asymmetric routing (packets from you to a host take a different path
428c2ecf20Sopenharmony_ci	  than packets from that host to you) or if you operate a non-routing
438c2ecf20Sopenharmony_ci	  host which has several IP addresses on different interfaces. To turn
448c2ecf20Sopenharmony_ci	  rp_filter on use:
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci	  echo 1 > /proc/sys/net/ipv4/conf/<device>/rp_filter
478c2ecf20Sopenharmony_ci	   or
488c2ecf20Sopenharmony_ci	  echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci	  Note that some distributions enable it in startup scripts.
518c2ecf20Sopenharmony_ci	  For details about rp_filter strict and loose mode read
528c2ecf20Sopenharmony_ci	  <file:Documentation/networking/ip-sysctl.rst>.
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci	  If unsure, say N here.
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciconfig IP_FIB_TRIE_STATS
578c2ecf20Sopenharmony_ci	bool "FIB TRIE statistics"
588c2ecf20Sopenharmony_ci	depends on IP_ADVANCED_ROUTER
598c2ecf20Sopenharmony_ci	help
608c2ecf20Sopenharmony_ci	  Keep track of statistics on structure of FIB TRIE table.
618c2ecf20Sopenharmony_ci	  Useful for testing and measuring TRIE performance.
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ciconfig IP_MULTIPLE_TABLES
648c2ecf20Sopenharmony_ci	bool "IP: policy routing"
658c2ecf20Sopenharmony_ci	depends on IP_ADVANCED_ROUTER
668c2ecf20Sopenharmony_ci	select FIB_RULES
678c2ecf20Sopenharmony_ci	help
688c2ecf20Sopenharmony_ci	  Normally, a router decides what to do with a received packet based
698c2ecf20Sopenharmony_ci	  solely on the packet's final destination address. If you say Y here,
708c2ecf20Sopenharmony_ci	  the Linux router will also be able to take the packet's source
718c2ecf20Sopenharmony_ci	  address into account. Furthermore, the TOS (Type-Of-Service) field
728c2ecf20Sopenharmony_ci	  of the packet can be used for routing decisions as well.
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci	  If you need more information, see the Linux Advanced
758c2ecf20Sopenharmony_ci	  Routing and Traffic Control documentation at
768c2ecf20Sopenharmony_ci	  <https://lartc.org/howto/lartc.rpdb.html>
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci	  If unsure, say N.
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ciconfig IP_ROUTE_MULTIPATH
818c2ecf20Sopenharmony_ci	bool "IP: equal cost multipath"
828c2ecf20Sopenharmony_ci	depends on IP_ADVANCED_ROUTER
838c2ecf20Sopenharmony_ci	help
848c2ecf20Sopenharmony_ci	  Normally, the routing tables specify a single action to be taken in
858c2ecf20Sopenharmony_ci	  a deterministic manner for a given packet. If you say Y here
868c2ecf20Sopenharmony_ci	  however, it becomes possible to attach several actions to a packet
878c2ecf20Sopenharmony_ci	  pattern, in effect specifying several alternative paths to travel
888c2ecf20Sopenharmony_ci	  for those packets. The router considers all these paths to be of
898c2ecf20Sopenharmony_ci	  equal "cost" and chooses one of them in a non-deterministic fashion
908c2ecf20Sopenharmony_ci	  if a matching packet arrives.
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ciconfig IP_ROUTE_VERBOSE
938c2ecf20Sopenharmony_ci	bool "IP: verbose route monitoring"
948c2ecf20Sopenharmony_ci	depends on IP_ADVANCED_ROUTER
958c2ecf20Sopenharmony_ci	help
968c2ecf20Sopenharmony_ci	  If you say Y here, which is recommended, then the kernel will print
978c2ecf20Sopenharmony_ci	  verbose messages regarding the routing, for example warnings about
988c2ecf20Sopenharmony_ci	  received packets which look strange and could be evidence of an
998c2ecf20Sopenharmony_ci	  attack or a misconfigured system somewhere. The information is
1008c2ecf20Sopenharmony_ci	  handled by the klogd daemon which is responsible for kernel messages
1018c2ecf20Sopenharmony_ci	  ("man klogd").
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ciconfig IP_ROUTE_CLASSID
1048c2ecf20Sopenharmony_ci	bool
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ciconfig IP_PNP
1078c2ecf20Sopenharmony_ci	bool "IP: kernel level autoconfiguration"
1088c2ecf20Sopenharmony_ci	help
1098c2ecf20Sopenharmony_ci	  This enables automatic configuration of IP addresses of devices and
1108c2ecf20Sopenharmony_ci	  of the routing table during kernel boot, based on either information
1118c2ecf20Sopenharmony_ci	  supplied on the kernel command line or by BOOTP or RARP protocols.
1128c2ecf20Sopenharmony_ci	  You need to say Y only for diskless machines requiring network
1138c2ecf20Sopenharmony_ci	  access to boot (in which case you want to say Y to "Root file system
1148c2ecf20Sopenharmony_ci	  on NFS" as well), because all other machines configure the network
1158c2ecf20Sopenharmony_ci	  in their startup scripts.
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ciconfig IP_PNP_DHCP
1188c2ecf20Sopenharmony_ci	bool "IP: DHCP support"
1198c2ecf20Sopenharmony_ci	depends on IP_PNP
1208c2ecf20Sopenharmony_ci	help
1218c2ecf20Sopenharmony_ci	  If you want your Linux box to mount its whole root file system (the
1228c2ecf20Sopenharmony_ci	  one containing the directory /) from some other computer over the
1238c2ecf20Sopenharmony_ci	  net via NFS and you want the IP address of your computer to be
1248c2ecf20Sopenharmony_ci	  discovered automatically at boot time using the DHCP protocol (a
1258c2ecf20Sopenharmony_ci	  special protocol designed for doing this job), say Y here. In case
1268c2ecf20Sopenharmony_ci	  the boot ROM of your network card was designed for booting Linux and
1278c2ecf20Sopenharmony_ci	  does DHCP itself, providing all necessary information on the kernel
1288c2ecf20Sopenharmony_ci	  command line, you can say N here.
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci	  If unsure, say Y. Note that if you want to use DHCP, a DHCP server
1318c2ecf20Sopenharmony_ci	  must be operating on your network.  Read
1328c2ecf20Sopenharmony_ci	  <file:Documentation/admin-guide/nfs/nfsroot.rst> for details.
1338c2ecf20Sopenharmony_ci
1348c2ecf20Sopenharmony_ciconfig IP_PNP_BOOTP
1358c2ecf20Sopenharmony_ci	bool "IP: BOOTP support"
1368c2ecf20Sopenharmony_ci	depends on IP_PNP
1378c2ecf20Sopenharmony_ci	help
1388c2ecf20Sopenharmony_ci	  If you want your Linux box to mount its whole root file system (the
1398c2ecf20Sopenharmony_ci	  one containing the directory /) from some other computer over the
1408c2ecf20Sopenharmony_ci	  net via NFS and you want the IP address of your computer to be
1418c2ecf20Sopenharmony_ci	  discovered automatically at boot time using the BOOTP protocol (a
1428c2ecf20Sopenharmony_ci	  special protocol designed for doing this job), say Y here. In case
1438c2ecf20Sopenharmony_ci	  the boot ROM of your network card was designed for booting Linux and
1448c2ecf20Sopenharmony_ci	  does BOOTP itself, providing all necessary information on the kernel
1458c2ecf20Sopenharmony_ci	  command line, you can say N here. If unsure, say Y. Note that if you
1468c2ecf20Sopenharmony_ci	  want to use BOOTP, a BOOTP server must be operating on your network.
1478c2ecf20Sopenharmony_ci	  Read <file:Documentation/admin-guide/nfs/nfsroot.rst> for details.
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ciconfig IP_PNP_RARP
1508c2ecf20Sopenharmony_ci	bool "IP: RARP support"
1518c2ecf20Sopenharmony_ci	depends on IP_PNP
1528c2ecf20Sopenharmony_ci	help
1538c2ecf20Sopenharmony_ci	  If you want your Linux box to mount its whole root file system (the
1548c2ecf20Sopenharmony_ci	  one containing the directory /) from some other computer over the
1558c2ecf20Sopenharmony_ci	  net via NFS and you want the IP address of your computer to be
1568c2ecf20Sopenharmony_ci	  discovered automatically at boot time using the RARP protocol (an
1578c2ecf20Sopenharmony_ci	  older protocol which is being obsoleted by BOOTP and DHCP), say Y
1588c2ecf20Sopenharmony_ci	  here. Note that if you want to use RARP, a RARP server must be
1598c2ecf20Sopenharmony_ci	  operating on your network. Read
1608c2ecf20Sopenharmony_ci	  <file:Documentation/admin-guide/nfs/nfsroot.rst> for details.
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_ciconfig NET_IPIP
1638c2ecf20Sopenharmony_ci	tristate "IP: tunneling"
1648c2ecf20Sopenharmony_ci	select INET_TUNNEL
1658c2ecf20Sopenharmony_ci	select NET_IP_TUNNEL
1668c2ecf20Sopenharmony_ci	help
1678c2ecf20Sopenharmony_ci	  Tunneling means encapsulating data of one protocol type within
1688c2ecf20Sopenharmony_ci	  another protocol and sending it over a channel that understands the
1698c2ecf20Sopenharmony_ci	  encapsulating protocol. This particular tunneling driver implements
1708c2ecf20Sopenharmony_ci	  encapsulation of IP within IP, which sounds kind of pointless, but
1718c2ecf20Sopenharmony_ci	  can be useful if you want to make your (or some other) machine
1728c2ecf20Sopenharmony_ci	  appear on a different network than it physically is, or to use
1738c2ecf20Sopenharmony_ci	  mobile-IP facilities (allowing laptops to seamlessly move between
1748c2ecf20Sopenharmony_ci	  networks without changing their IP addresses).
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci	  Saying Y to this option will produce two modules ( = code which can
1778c2ecf20Sopenharmony_ci	  be inserted in and removed from the running kernel whenever you
1788c2ecf20Sopenharmony_ci	  want). Most people won't need this and can say N.
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ciconfig NET_IPGRE_DEMUX
1818c2ecf20Sopenharmony_ci	tristate "IP: GRE demultiplexer"
1828c2ecf20Sopenharmony_ci	help
1838c2ecf20Sopenharmony_ci	  This is helper module to demultiplex GRE packets on GRE version field criteria.
1848c2ecf20Sopenharmony_ci	  Required by ip_gre and pptp modules.
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ciconfig NET_IP_TUNNEL
1878c2ecf20Sopenharmony_ci	tristate
1888c2ecf20Sopenharmony_ci	select DST_CACHE
1898c2ecf20Sopenharmony_ci	select GRO_CELLS
1908c2ecf20Sopenharmony_ci	default n
1918c2ecf20Sopenharmony_ci
1928c2ecf20Sopenharmony_ciconfig NET_IPGRE
1938c2ecf20Sopenharmony_ci	tristate "IP: GRE tunnels over IP"
1948c2ecf20Sopenharmony_ci	depends on (IPV6 || IPV6=n) && NET_IPGRE_DEMUX
1958c2ecf20Sopenharmony_ci	select NET_IP_TUNNEL
1968c2ecf20Sopenharmony_ci	help
1978c2ecf20Sopenharmony_ci	  Tunneling means encapsulating data of one protocol type within
1988c2ecf20Sopenharmony_ci	  another protocol and sending it over a channel that understands the
1998c2ecf20Sopenharmony_ci	  encapsulating protocol. This particular tunneling driver implements
2008c2ecf20Sopenharmony_ci	  GRE (Generic Routing Encapsulation) and at this time allows
2018c2ecf20Sopenharmony_ci	  encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure.
2028c2ecf20Sopenharmony_ci	  This driver is useful if the other endpoint is a Cisco router: Cisco
2038c2ecf20Sopenharmony_ci	  likes GRE much better than the other Linux tunneling driver ("IP
2048c2ecf20Sopenharmony_ci	  tunneling" above). In addition, GRE allows multicast redistribution
2058c2ecf20Sopenharmony_ci	  through the tunnel.
2068c2ecf20Sopenharmony_ci
2078c2ecf20Sopenharmony_ciconfig NET_IPGRE_BROADCAST
2088c2ecf20Sopenharmony_ci	bool "IP: broadcast GRE over IP"
2098c2ecf20Sopenharmony_ci	depends on IP_MULTICAST && NET_IPGRE
2108c2ecf20Sopenharmony_ci	help
2118c2ecf20Sopenharmony_ci	  One application of GRE/IP is to construct a broadcast WAN (Wide Area
2128c2ecf20Sopenharmony_ci	  Network), which looks like a normal Ethernet LAN (Local Area
2138c2ecf20Sopenharmony_ci	  Network), but can be distributed all over the Internet. If you want
2148c2ecf20Sopenharmony_ci	  to do that, say Y here and to "IP multicast routing" below.
2158c2ecf20Sopenharmony_ci
2168c2ecf20Sopenharmony_ciconfig IP_MROUTE_COMMON
2178c2ecf20Sopenharmony_ci	bool
2188c2ecf20Sopenharmony_ci	depends on IP_MROUTE || IPV6_MROUTE
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_ciconfig IP_MROUTE
2218c2ecf20Sopenharmony_ci	bool "IP: multicast routing"
2228c2ecf20Sopenharmony_ci	depends on IP_MULTICAST
2238c2ecf20Sopenharmony_ci	select IP_MROUTE_COMMON
2248c2ecf20Sopenharmony_ci	help
2258c2ecf20Sopenharmony_ci	  This is used if you want your machine to act as a router for IP
2268c2ecf20Sopenharmony_ci	  packets that have several destination addresses. It is needed on the
2278c2ecf20Sopenharmony_ci	  MBONE, a high bandwidth network on top of the Internet which carries
2288c2ecf20Sopenharmony_ci	  audio and video broadcasts. In order to do that, you would most
2298c2ecf20Sopenharmony_ci	  likely run the program mrouted. If you haven't heard about it, you
2308c2ecf20Sopenharmony_ci	  don't need it.
2318c2ecf20Sopenharmony_ci
2328c2ecf20Sopenharmony_ciconfig IP_MROUTE_MULTIPLE_TABLES
2338c2ecf20Sopenharmony_ci	bool "IP: multicast policy routing"
2348c2ecf20Sopenharmony_ci	depends on IP_MROUTE && IP_ADVANCED_ROUTER
2358c2ecf20Sopenharmony_ci	select FIB_RULES
2368c2ecf20Sopenharmony_ci	help
2378c2ecf20Sopenharmony_ci	  Normally, a multicast router runs a userspace daemon and decides
2388c2ecf20Sopenharmony_ci	  what to do with a multicast packet based on the source and
2398c2ecf20Sopenharmony_ci	  destination addresses. If you say Y here, the multicast router
2408c2ecf20Sopenharmony_ci	  will also be able to take interfaces and packet marks into
2418c2ecf20Sopenharmony_ci	  account and run multiple instances of userspace daemons
2428c2ecf20Sopenharmony_ci	  simultaneously, each one handling a single table.
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_ci	  If unsure, say N.
2458c2ecf20Sopenharmony_ci
2468c2ecf20Sopenharmony_ciconfig IP_PIMSM_V1
2478c2ecf20Sopenharmony_ci	bool "IP: PIM-SM version 1 support"
2488c2ecf20Sopenharmony_ci	depends on IP_MROUTE
2498c2ecf20Sopenharmony_ci	help
2508c2ecf20Sopenharmony_ci	  Kernel side support for Sparse Mode PIM (Protocol Independent
2518c2ecf20Sopenharmony_ci	  Multicast) version 1. This multicast routing protocol is used widely
2528c2ecf20Sopenharmony_ci	  because Cisco supports it. You need special software to use it
2538c2ecf20Sopenharmony_ci	  (pimd-v1). Please see <http://netweb.usc.edu/pim/> for more
2548c2ecf20Sopenharmony_ci	  information about PIM.
2558c2ecf20Sopenharmony_ci
2568c2ecf20Sopenharmony_ci	  Say Y if you want to use PIM-SM v1. Note that you can say N here if
2578c2ecf20Sopenharmony_ci	  you just want to use Dense Mode PIM.
2588c2ecf20Sopenharmony_ci
2598c2ecf20Sopenharmony_ciconfig IP_PIMSM_V2
2608c2ecf20Sopenharmony_ci	bool "IP: PIM-SM version 2 support"
2618c2ecf20Sopenharmony_ci	depends on IP_MROUTE
2628c2ecf20Sopenharmony_ci	help
2638c2ecf20Sopenharmony_ci	  Kernel side support for Sparse Mode PIM version 2. In order to use
2648c2ecf20Sopenharmony_ci	  this, you need an experimental routing daemon supporting it (pimd or
2658c2ecf20Sopenharmony_ci	  gated-5). This routing protocol is not used widely, so say N unless
2668c2ecf20Sopenharmony_ci	  you want to play with it.
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_ciconfig SYN_COOKIES
2698c2ecf20Sopenharmony_ci	bool "IP: TCP syncookie support"
2708c2ecf20Sopenharmony_ci	help
2718c2ecf20Sopenharmony_ci	  Normal TCP/IP networking is open to an attack known as "SYN
2728c2ecf20Sopenharmony_ci	  flooding". This denial-of-service attack prevents legitimate remote
2738c2ecf20Sopenharmony_ci	  users from being able to connect to your computer during an ongoing
2748c2ecf20Sopenharmony_ci	  attack and requires very little work from the attacker, who can
2758c2ecf20Sopenharmony_ci	  operate from anywhere on the Internet.
2768c2ecf20Sopenharmony_ci
2778c2ecf20Sopenharmony_ci	  SYN cookies provide protection against this type of attack. If you
2788c2ecf20Sopenharmony_ci	  say Y here, the TCP/IP stack will use a cryptographic challenge
2798c2ecf20Sopenharmony_ci	  protocol known as "SYN cookies" to enable legitimate users to
2808c2ecf20Sopenharmony_ci	  continue to connect, even when your machine is under attack. There
2818c2ecf20Sopenharmony_ci	  is no need for the legitimate users to change their TCP/IP software;
2828c2ecf20Sopenharmony_ci	  SYN cookies work transparently to them. For technical information
2838c2ecf20Sopenharmony_ci	  about SYN cookies, check out <https://cr.yp.to/syncookies.html>.
2848c2ecf20Sopenharmony_ci
2858c2ecf20Sopenharmony_ci	  If you are SYN flooded, the source address reported by the kernel is
2868c2ecf20Sopenharmony_ci	  likely to have been forged by the attacker; it is only reported as
2878c2ecf20Sopenharmony_ci	  an aid in tracing the packets to their actual source and should not
2888c2ecf20Sopenharmony_ci	  be taken as absolute truth.
2898c2ecf20Sopenharmony_ci
2908c2ecf20Sopenharmony_ci	  SYN cookies may prevent correct error reporting on clients when the
2918c2ecf20Sopenharmony_ci	  server is really overloaded. If this happens frequently better turn
2928c2ecf20Sopenharmony_ci	  them off.
2938c2ecf20Sopenharmony_ci
2948c2ecf20Sopenharmony_ci	  If you say Y here, you can disable SYN cookies at run time by
2958c2ecf20Sopenharmony_ci	  saying Y to "/proc file system support" and
2968c2ecf20Sopenharmony_ci	  "Sysctl support" below and executing the command
2978c2ecf20Sopenharmony_ci
2988c2ecf20Sopenharmony_ci	  echo 0 > /proc/sys/net/ipv4/tcp_syncookies
2998c2ecf20Sopenharmony_ci
3008c2ecf20Sopenharmony_ci	  after the /proc file system has been mounted.
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ci	  If unsure, say N.
3038c2ecf20Sopenharmony_ci
3048c2ecf20Sopenharmony_ciconfig NET_IPVTI
3058c2ecf20Sopenharmony_ci	tristate "Virtual (secure) IP: tunneling"
3068c2ecf20Sopenharmony_ci	depends on IPV6 || IPV6=n
3078c2ecf20Sopenharmony_ci	select INET_TUNNEL
3088c2ecf20Sopenharmony_ci	select NET_IP_TUNNEL
3098c2ecf20Sopenharmony_ci	select XFRM
3108c2ecf20Sopenharmony_ci	help
3118c2ecf20Sopenharmony_ci	  Tunneling means encapsulating data of one protocol type within
3128c2ecf20Sopenharmony_ci	  another protocol and sending it over a channel that understands the
3138c2ecf20Sopenharmony_ci	  encapsulating protocol. This can be used with xfrm mode tunnel to give
3148c2ecf20Sopenharmony_ci	  the notion of a secure tunnel for IPSEC and then use routing protocol
3158c2ecf20Sopenharmony_ci	  on top.
3168c2ecf20Sopenharmony_ci
3178c2ecf20Sopenharmony_ciconfig NET_UDP_TUNNEL
3188c2ecf20Sopenharmony_ci	tristate
3198c2ecf20Sopenharmony_ci	select NET_IP_TUNNEL
3208c2ecf20Sopenharmony_ci	default n
3218c2ecf20Sopenharmony_ci
3228c2ecf20Sopenharmony_ciconfig NET_FOU
3238c2ecf20Sopenharmony_ci	tristate "IP: Foo (IP protocols) over UDP"
3248c2ecf20Sopenharmony_ci	select XFRM
3258c2ecf20Sopenharmony_ci	select NET_UDP_TUNNEL
3268c2ecf20Sopenharmony_ci	help
3278c2ecf20Sopenharmony_ci	  Foo over UDP allows any IP protocol to be directly encapsulated
3288c2ecf20Sopenharmony_ci	  over UDP include tunnels (IPIP, GRE, SIT). By encapsulating in UDP
3298c2ecf20Sopenharmony_ci	  network mechanisms and optimizations for UDP (such as ECMP
3308c2ecf20Sopenharmony_ci	  and RSS) can be leveraged to provide better service.
3318c2ecf20Sopenharmony_ci
3328c2ecf20Sopenharmony_ciconfig NET_FOU_IP_TUNNELS
3338c2ecf20Sopenharmony_ci	bool "IP: FOU encapsulation of IP tunnels"
3348c2ecf20Sopenharmony_ci	depends on NET_IPIP || NET_IPGRE || IPV6_SIT
3358c2ecf20Sopenharmony_ci	select NET_FOU
3368c2ecf20Sopenharmony_ci	help
3378c2ecf20Sopenharmony_ci	  Allow configuration of FOU or GUE encapsulation for IP tunnels.
3388c2ecf20Sopenharmony_ci	  When this option is enabled IP tunnels can be configured to use
3398c2ecf20Sopenharmony_ci	  FOU or GUE encapsulation.
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_ciconfig INET_AH
3428c2ecf20Sopenharmony_ci	tristate "IP: AH transformation"
3438c2ecf20Sopenharmony_ci	select XFRM_AH
3448c2ecf20Sopenharmony_ci	help
3458c2ecf20Sopenharmony_ci	  Support for IPsec AH (Authentication Header).
3468c2ecf20Sopenharmony_ci
3478c2ecf20Sopenharmony_ci	  AH can be used with various authentication algorithms.  Besides
3488c2ecf20Sopenharmony_ci	  enabling AH support itself, this option enables the generic
3498c2ecf20Sopenharmony_ci	  implementations of the algorithms that RFC 8221 lists as MUST be
3508c2ecf20Sopenharmony_ci	  implemented.  If you need any other algorithms, you'll need to enable
3518c2ecf20Sopenharmony_ci	  them in the crypto API.  You should also enable accelerated
3528c2ecf20Sopenharmony_ci	  implementations of any needed algorithms when available.
3538c2ecf20Sopenharmony_ci
3548c2ecf20Sopenharmony_ci	  If unsure, say Y.
3558c2ecf20Sopenharmony_ci
3568c2ecf20Sopenharmony_ciconfig INET_ESP
3578c2ecf20Sopenharmony_ci	tristate "IP: ESP transformation"
3588c2ecf20Sopenharmony_ci	select XFRM_ESP
3598c2ecf20Sopenharmony_ci	help
3608c2ecf20Sopenharmony_ci	  Support for IPsec ESP (Encapsulating Security Payload).
3618c2ecf20Sopenharmony_ci
3628c2ecf20Sopenharmony_ci	  ESP can be used with various encryption and authentication algorithms.
3638c2ecf20Sopenharmony_ci	  Besides enabling ESP support itself, this option enables the generic
3648c2ecf20Sopenharmony_ci	  implementations of the algorithms that RFC 8221 lists as MUST be
3658c2ecf20Sopenharmony_ci	  implemented.  If you need any other algorithms, you'll need to enable
3668c2ecf20Sopenharmony_ci	  them in the crypto API.  You should also enable accelerated
3678c2ecf20Sopenharmony_ci	  implementations of any needed algorithms when available.
3688c2ecf20Sopenharmony_ci
3698c2ecf20Sopenharmony_ci	  If unsure, say Y.
3708c2ecf20Sopenharmony_ci
3718c2ecf20Sopenharmony_ciconfig INET_ESP_OFFLOAD
3728c2ecf20Sopenharmony_ci	tristate "IP: ESP transformation offload"
3738c2ecf20Sopenharmony_ci	depends on INET_ESP
3748c2ecf20Sopenharmony_ci	select XFRM_OFFLOAD
3758c2ecf20Sopenharmony_ci	default n
3768c2ecf20Sopenharmony_ci	help
3778c2ecf20Sopenharmony_ci	  Support for ESP transformation offload. This makes sense
3788c2ecf20Sopenharmony_ci	  only if this system really does IPsec and want to do it
3798c2ecf20Sopenharmony_ci	  with high throughput. A typical desktop system does not
3808c2ecf20Sopenharmony_ci	  need it, even if it does IPsec.
3818c2ecf20Sopenharmony_ci
3828c2ecf20Sopenharmony_ci	  If unsure, say N.
3838c2ecf20Sopenharmony_ci
3848c2ecf20Sopenharmony_ciconfig INET_ESPINTCP
3858c2ecf20Sopenharmony_ci	bool "IP: ESP in TCP encapsulation (RFC 8229)"
3868c2ecf20Sopenharmony_ci	depends on XFRM && INET_ESP
3878c2ecf20Sopenharmony_ci	select STREAM_PARSER
3888c2ecf20Sopenharmony_ci	select NET_SOCK_MSG
3898c2ecf20Sopenharmony_ci	select XFRM_ESPINTCP
3908c2ecf20Sopenharmony_ci	help
3918c2ecf20Sopenharmony_ci	  Support for RFC 8229 encapsulation of ESP and IKE over
3928c2ecf20Sopenharmony_ci	  TCP/IPv4 sockets.
3938c2ecf20Sopenharmony_ci
3948c2ecf20Sopenharmony_ci	  If unsure, say N.
3958c2ecf20Sopenharmony_ci
3968c2ecf20Sopenharmony_ciconfig INET_IPCOMP
3978c2ecf20Sopenharmony_ci	tristate "IP: IPComp transformation"
3988c2ecf20Sopenharmony_ci	select INET_XFRM_TUNNEL
3998c2ecf20Sopenharmony_ci	select XFRM_IPCOMP
4008c2ecf20Sopenharmony_ci	help
4018c2ecf20Sopenharmony_ci	  Support for IP Payload Compression Protocol (IPComp) (RFC3173),
4028c2ecf20Sopenharmony_ci	  typically needed for IPsec.
4038c2ecf20Sopenharmony_ci
4048c2ecf20Sopenharmony_ci	  If unsure, say Y.
4058c2ecf20Sopenharmony_ci
4068c2ecf20Sopenharmony_ciconfig INET_TABLE_PERTURB_ORDER
4078c2ecf20Sopenharmony_ci	int "INET: Source port perturbation table size (as power of 2)" if EXPERT
4088c2ecf20Sopenharmony_ci	default 16
4098c2ecf20Sopenharmony_ci	help
4108c2ecf20Sopenharmony_ci	  Source port perturbation table size (as power of 2) for
4118c2ecf20Sopenharmony_ci	  RFC 6056 3.3.4.  Algorithm 4: Double-Hash Port Selection Algorithm.
4128c2ecf20Sopenharmony_ci
4138c2ecf20Sopenharmony_ci	  The default is almost always what you want.
4148c2ecf20Sopenharmony_ci	  Only change this if you know what you are doing.
4158c2ecf20Sopenharmony_ci
4168c2ecf20Sopenharmony_ciconfig INET_XFRM_TUNNEL
4178c2ecf20Sopenharmony_ci	tristate
4188c2ecf20Sopenharmony_ci	select INET_TUNNEL
4198c2ecf20Sopenharmony_ci	default n
4208c2ecf20Sopenharmony_ci
4218c2ecf20Sopenharmony_ciconfig INET_TUNNEL
4228c2ecf20Sopenharmony_ci	tristate
4238c2ecf20Sopenharmony_ci	default n
4248c2ecf20Sopenharmony_ci
4258c2ecf20Sopenharmony_ciconfig INET_DIAG
4268c2ecf20Sopenharmony_ci	tristate "INET: socket monitoring interface"
4278c2ecf20Sopenharmony_ci	default y
4288c2ecf20Sopenharmony_ci	help
4298c2ecf20Sopenharmony_ci	  Support for INET (TCP, DCCP, etc) socket monitoring interface used by
4308c2ecf20Sopenharmony_ci	  native Linux tools such as ss. ss is included in iproute2, currently
4318c2ecf20Sopenharmony_ci	  downloadable at:
4328c2ecf20Sopenharmony_ci
4338c2ecf20Sopenharmony_ci	    http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
4348c2ecf20Sopenharmony_ci
4358c2ecf20Sopenharmony_ci	  If unsure, say Y.
4368c2ecf20Sopenharmony_ci
4378c2ecf20Sopenharmony_ciconfig INET_TCP_DIAG
4388c2ecf20Sopenharmony_ci	depends on INET_DIAG
4398c2ecf20Sopenharmony_ci	def_tristate INET_DIAG
4408c2ecf20Sopenharmony_ci
4418c2ecf20Sopenharmony_ciconfig INET_UDP_DIAG
4428c2ecf20Sopenharmony_ci	tristate "UDP: socket monitoring interface"
4438c2ecf20Sopenharmony_ci	depends on INET_DIAG && (IPV6 || IPV6=n)
4448c2ecf20Sopenharmony_ci	default n
4458c2ecf20Sopenharmony_ci	help
4468c2ecf20Sopenharmony_ci	  Support for UDP socket monitoring interface used by the ss tool.
4478c2ecf20Sopenharmony_ci	  If unsure, say Y.
4488c2ecf20Sopenharmony_ci
4498c2ecf20Sopenharmony_ciconfig INET_RAW_DIAG
4508c2ecf20Sopenharmony_ci	tristate "RAW: socket monitoring interface"
4518c2ecf20Sopenharmony_ci	depends on INET_DIAG && (IPV6 || IPV6=n)
4528c2ecf20Sopenharmony_ci	default n
4538c2ecf20Sopenharmony_ci	help
4548c2ecf20Sopenharmony_ci	  Support for RAW socket monitoring interface used by the ss tool.
4558c2ecf20Sopenharmony_ci	  If unsure, say Y.
4568c2ecf20Sopenharmony_ci
4578c2ecf20Sopenharmony_ciconfig INET_DIAG_DESTROY
4588c2ecf20Sopenharmony_ci	bool "INET: allow privileged process to administratively close sockets"
4598c2ecf20Sopenharmony_ci	depends on INET_DIAG
4608c2ecf20Sopenharmony_ci	default n
4618c2ecf20Sopenharmony_ci	help
4628c2ecf20Sopenharmony_ci	  Provides a SOCK_DESTROY operation that allows privileged processes
4638c2ecf20Sopenharmony_ci	  (e.g., a connection manager or a network administration tool such as
4648c2ecf20Sopenharmony_ci	  ss) to close sockets opened by other processes. Closing a socket in
4658c2ecf20Sopenharmony_ci	  this way interrupts any blocking read/write/connect operations on
4668c2ecf20Sopenharmony_ci	  the socket and causes future socket calls to behave as if the socket
4678c2ecf20Sopenharmony_ci	  had been disconnected.
4688c2ecf20Sopenharmony_ci	  If unsure, say N.
4698c2ecf20Sopenharmony_ci
4708c2ecf20Sopenharmony_cimenuconfig TCP_CONG_ADVANCED
4718c2ecf20Sopenharmony_ci	bool "TCP: advanced congestion control"
4728c2ecf20Sopenharmony_ci	help
4738c2ecf20Sopenharmony_ci	  Support for selection of various TCP congestion control
4748c2ecf20Sopenharmony_ci	  modules.
4758c2ecf20Sopenharmony_ci
4768c2ecf20Sopenharmony_ci	  Nearly all users can safely say no here, and a safe default
4778c2ecf20Sopenharmony_ci	  selection will be made (CUBIC with new Reno as a fallback).
4788c2ecf20Sopenharmony_ci
4798c2ecf20Sopenharmony_ci	  If unsure, say N.
4808c2ecf20Sopenharmony_ci
4818c2ecf20Sopenharmony_ciif TCP_CONG_ADVANCED
4828c2ecf20Sopenharmony_ci
4838c2ecf20Sopenharmony_ciconfig TCP_CONG_BIC
4848c2ecf20Sopenharmony_ci	tristate "Binary Increase Congestion (BIC) control"
4858c2ecf20Sopenharmony_ci	default m
4868c2ecf20Sopenharmony_ci	help
4878c2ecf20Sopenharmony_ci	  BIC-TCP is a sender-side only change that ensures a linear RTT
4888c2ecf20Sopenharmony_ci	  fairness under large windows while offering both scalability and
4898c2ecf20Sopenharmony_ci	  bounded TCP-friendliness. The protocol combines two schemes
4908c2ecf20Sopenharmony_ci	  called additive increase and binary search increase. When the
4918c2ecf20Sopenharmony_ci	  congestion window is large, additive increase with a large
4928c2ecf20Sopenharmony_ci	  increment ensures linear RTT fairness as well as good
4938c2ecf20Sopenharmony_ci	  scalability. Under small congestion windows, binary search
4948c2ecf20Sopenharmony_ci	  increase provides TCP friendliness.
4958c2ecf20Sopenharmony_ci	  See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
4968c2ecf20Sopenharmony_ci
4978c2ecf20Sopenharmony_ciconfig TCP_CONG_CUBIC
4988c2ecf20Sopenharmony_ci	tristate "CUBIC TCP"
4998c2ecf20Sopenharmony_ci	default y
5008c2ecf20Sopenharmony_ci	help
5018c2ecf20Sopenharmony_ci	  This is version 2.0 of BIC-TCP which uses a cubic growth function
5028c2ecf20Sopenharmony_ci	  among other techniques.
5038c2ecf20Sopenharmony_ci	  See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
5048c2ecf20Sopenharmony_ci
5058c2ecf20Sopenharmony_ciconfig TCP_CONG_WESTWOOD
5068c2ecf20Sopenharmony_ci	tristate "TCP Westwood+"
5078c2ecf20Sopenharmony_ci	default m
5088c2ecf20Sopenharmony_ci	help
5098c2ecf20Sopenharmony_ci	  TCP Westwood+ is a sender-side only modification of the TCP Reno
5108c2ecf20Sopenharmony_ci	  protocol stack that optimizes the performance of TCP congestion
5118c2ecf20Sopenharmony_ci	  control. It is based on end-to-end bandwidth estimation to set
5128c2ecf20Sopenharmony_ci	  congestion window and slow start threshold after a congestion
5138c2ecf20Sopenharmony_ci	  episode. Using this estimation, TCP Westwood+ adaptively sets a
5148c2ecf20Sopenharmony_ci	  slow start threshold and a congestion window which takes into
5158c2ecf20Sopenharmony_ci	  account the bandwidth used  at the time congestion is experienced.
5168c2ecf20Sopenharmony_ci	  TCP Westwood+ significantly increases fairness wrt TCP Reno in
5178c2ecf20Sopenharmony_ci	  wired networks and throughput over wireless links.
5188c2ecf20Sopenharmony_ci
5198c2ecf20Sopenharmony_ciconfig TCP_CONG_HTCP
5208c2ecf20Sopenharmony_ci	tristate "H-TCP"
5218c2ecf20Sopenharmony_ci	default m
5228c2ecf20Sopenharmony_ci	help
5238c2ecf20Sopenharmony_ci	  H-TCP is a send-side only modifications of the TCP Reno
5248c2ecf20Sopenharmony_ci	  protocol stack that optimizes the performance of TCP
5258c2ecf20Sopenharmony_ci	  congestion control for high speed network links. It uses a
5268c2ecf20Sopenharmony_ci	  modeswitch to change the alpha and beta parameters of TCP Reno
5278c2ecf20Sopenharmony_ci	  based on network conditions and in a way so as to be fair with
5288c2ecf20Sopenharmony_ci	  other Reno and H-TCP flows.
5298c2ecf20Sopenharmony_ci
5308c2ecf20Sopenharmony_ciconfig TCP_CONG_HSTCP
5318c2ecf20Sopenharmony_ci	tristate "High Speed TCP"
5328c2ecf20Sopenharmony_ci	default n
5338c2ecf20Sopenharmony_ci	help
5348c2ecf20Sopenharmony_ci	  Sally Floyd's High Speed TCP (RFC 3649) congestion control.
5358c2ecf20Sopenharmony_ci	  A modification to TCP's congestion control mechanism for use
5368c2ecf20Sopenharmony_ci	  with large congestion windows. A table indicates how much to
5378c2ecf20Sopenharmony_ci	  increase the congestion window by when an ACK is received.
5388c2ecf20Sopenharmony_ci	  For more detail see https://www.icir.org/floyd/hstcp.html
5398c2ecf20Sopenharmony_ci
5408c2ecf20Sopenharmony_ciconfig TCP_CONG_HYBLA
5418c2ecf20Sopenharmony_ci	tristate "TCP-Hybla congestion control algorithm"
5428c2ecf20Sopenharmony_ci	default n
5438c2ecf20Sopenharmony_ci	help
5448c2ecf20Sopenharmony_ci	  TCP-Hybla is a sender-side only change that eliminates penalization of
5458c2ecf20Sopenharmony_ci	  long-RTT, large-bandwidth connections, like when satellite legs are
5468c2ecf20Sopenharmony_ci	  involved, especially when sharing a common bottleneck with normal
5478c2ecf20Sopenharmony_ci	  terrestrial connections.
5488c2ecf20Sopenharmony_ci
5498c2ecf20Sopenharmony_ciconfig TCP_CONG_VEGAS
5508c2ecf20Sopenharmony_ci	tristate "TCP Vegas"
5518c2ecf20Sopenharmony_ci	default n
5528c2ecf20Sopenharmony_ci	help
5538c2ecf20Sopenharmony_ci	  TCP Vegas is a sender-side only change to TCP that anticipates
5548c2ecf20Sopenharmony_ci	  the onset of congestion by estimating the bandwidth. TCP Vegas
5558c2ecf20Sopenharmony_ci	  adjusts the sending rate by modifying the congestion
5568c2ecf20Sopenharmony_ci	  window. TCP Vegas should provide less packet loss, but it is
5578c2ecf20Sopenharmony_ci	  not as aggressive as TCP Reno.
5588c2ecf20Sopenharmony_ci
5598c2ecf20Sopenharmony_ciconfig TCP_CONG_NV
5608c2ecf20Sopenharmony_ci	tristate "TCP NV"
5618c2ecf20Sopenharmony_ci	default n
5628c2ecf20Sopenharmony_ci	help
5638c2ecf20Sopenharmony_ci	  TCP NV is a follow up to TCP Vegas. It has been modified to deal with
5648c2ecf20Sopenharmony_ci	  10G networks, measurement noise introduced by LRO, GRO and interrupt
5658c2ecf20Sopenharmony_ci	  coalescence. In addition, it will decrease its cwnd multiplicatively
5668c2ecf20Sopenharmony_ci	  instead of linearly.
5678c2ecf20Sopenharmony_ci
5688c2ecf20Sopenharmony_ci	  Note that in general congestion avoidance (cwnd decreased when # packets
5698c2ecf20Sopenharmony_ci	  queued grows) cannot coexist with congestion control (cwnd decreased only
5708c2ecf20Sopenharmony_ci	  when there is packet loss) due to fairness issues. One scenario when they
5718c2ecf20Sopenharmony_ci	  can coexist safely is when the CA flows have RTTs << CC flows RTTs.
5728c2ecf20Sopenharmony_ci
5738c2ecf20Sopenharmony_ci	  For further details see http://www.brakmo.org/networking/tcp-nv/
5748c2ecf20Sopenharmony_ci
5758c2ecf20Sopenharmony_ciconfig TCP_CONG_SCALABLE
5768c2ecf20Sopenharmony_ci	tristate "Scalable TCP"
5778c2ecf20Sopenharmony_ci	default n
5788c2ecf20Sopenharmony_ci	help
5798c2ecf20Sopenharmony_ci	  Scalable TCP is a sender-side only change to TCP which uses a
5808c2ecf20Sopenharmony_ci	  MIMD congestion control algorithm which has some nice scaling
5818c2ecf20Sopenharmony_ci	  properties, though is known to have fairness issues.
5828c2ecf20Sopenharmony_ci	  See http://www.deneholme.net/tom/scalable/
5838c2ecf20Sopenharmony_ci
5848c2ecf20Sopenharmony_ciconfig TCP_CONG_LP
5858c2ecf20Sopenharmony_ci	tristate "TCP Low Priority"
5868c2ecf20Sopenharmony_ci	default n
5878c2ecf20Sopenharmony_ci	help
5888c2ecf20Sopenharmony_ci	  TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
5898c2ecf20Sopenharmony_ci	  to utilize only the excess network bandwidth as compared to the
5908c2ecf20Sopenharmony_ci	  ``fair share`` of bandwidth as targeted by TCP.
5918c2ecf20Sopenharmony_ci	  See http://www-ece.rice.edu/networks/TCP-LP/
5928c2ecf20Sopenharmony_ci
5938c2ecf20Sopenharmony_ciconfig TCP_CONG_VENO
5948c2ecf20Sopenharmony_ci	tristate "TCP Veno"
5958c2ecf20Sopenharmony_ci	default n
5968c2ecf20Sopenharmony_ci	help
5978c2ecf20Sopenharmony_ci	  TCP Veno is a sender-side only enhancement of TCP to obtain better
5988c2ecf20Sopenharmony_ci	  throughput over wireless networks. TCP Veno makes use of state
5998c2ecf20Sopenharmony_ci	  distinguishing to circumvent the difficult judgment of the packet loss
6008c2ecf20Sopenharmony_ci	  type. TCP Veno cuts down less congestion window in response to random
6018c2ecf20Sopenharmony_ci	  loss packets.
6028c2ecf20Sopenharmony_ci	  See <http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1177186>
6038c2ecf20Sopenharmony_ci
6048c2ecf20Sopenharmony_ciconfig TCP_CONG_YEAH
6058c2ecf20Sopenharmony_ci	tristate "YeAH TCP"
6068c2ecf20Sopenharmony_ci	select TCP_CONG_VEGAS
6078c2ecf20Sopenharmony_ci	default n
6088c2ecf20Sopenharmony_ci	help
6098c2ecf20Sopenharmony_ci	  YeAH-TCP is a sender-side high-speed enabled TCP congestion control
6108c2ecf20Sopenharmony_ci	  algorithm, which uses a mixed loss/delay approach to compute the
6118c2ecf20Sopenharmony_ci	  congestion window. It's design goals target high efficiency,
6128c2ecf20Sopenharmony_ci	  internal, RTT and Reno fairness, resilience to link loss while
6138c2ecf20Sopenharmony_ci	  keeping network elements load as low as possible.
6148c2ecf20Sopenharmony_ci
6158c2ecf20Sopenharmony_ci	  For further details look here:
6168c2ecf20Sopenharmony_ci	    http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf
6178c2ecf20Sopenharmony_ci
6188c2ecf20Sopenharmony_ciconfig TCP_CONG_ILLINOIS
6198c2ecf20Sopenharmony_ci	tristate "TCP Illinois"
6208c2ecf20Sopenharmony_ci	default n
6218c2ecf20Sopenharmony_ci	help
6228c2ecf20Sopenharmony_ci	  TCP-Illinois is a sender-side modification of TCP Reno for
6238c2ecf20Sopenharmony_ci	  high speed long delay links. It uses round-trip-time to
6248c2ecf20Sopenharmony_ci	  adjust the alpha and beta parameters to achieve a higher average
6258c2ecf20Sopenharmony_ci	  throughput and maintain fairness.
6268c2ecf20Sopenharmony_ci
6278c2ecf20Sopenharmony_ci	  For further details see:
6288c2ecf20Sopenharmony_ci	    http://www.ews.uiuc.edu/~shaoliu/tcpillinois/index.html
6298c2ecf20Sopenharmony_ci
6308c2ecf20Sopenharmony_ciconfig TCP_CONG_DCTCP
6318c2ecf20Sopenharmony_ci	tristate "DataCenter TCP (DCTCP)"
6328c2ecf20Sopenharmony_ci	default n
6338c2ecf20Sopenharmony_ci	help
6348c2ecf20Sopenharmony_ci	  DCTCP leverages Explicit Congestion Notification (ECN) in the network to
6358c2ecf20Sopenharmony_ci	  provide multi-bit feedback to the end hosts. It is designed to provide:
6368c2ecf20Sopenharmony_ci
6378c2ecf20Sopenharmony_ci	  - High burst tolerance (incast due to partition/aggregate),
6388c2ecf20Sopenharmony_ci	  - Low latency (short flows, queries),
6398c2ecf20Sopenharmony_ci	  - High throughput (continuous data updates, large file transfers) with
6408c2ecf20Sopenharmony_ci	    commodity, shallow-buffered switches.
6418c2ecf20Sopenharmony_ci
6428c2ecf20Sopenharmony_ci	  All switches in the data center network running DCTCP must support
6438c2ecf20Sopenharmony_ci	  ECN marking and be configured for marking when reaching defined switch
6448c2ecf20Sopenharmony_ci	  buffer thresholds. The default ECN marking threshold heuristic for
6458c2ecf20Sopenharmony_ci	  DCTCP on switches is 20 packets (30KB) at 1Gbps, and 65 packets
6468c2ecf20Sopenharmony_ci	  (~100KB) at 10Gbps, but might need further careful tweaking.
6478c2ecf20Sopenharmony_ci
6488c2ecf20Sopenharmony_ci	  For further details see:
6498c2ecf20Sopenharmony_ci	    http://simula.stanford.edu/~alizade/Site/DCTCP_files/dctcp-final.pdf
6508c2ecf20Sopenharmony_ci
6518c2ecf20Sopenharmony_ciconfig TCP_CONG_CDG
6528c2ecf20Sopenharmony_ci	tristate "CAIA Delay-Gradient (CDG)"
6538c2ecf20Sopenharmony_ci	default n
6548c2ecf20Sopenharmony_ci	help
6558c2ecf20Sopenharmony_ci	  CAIA Delay-Gradient (CDG) is a TCP congestion control that modifies
6568c2ecf20Sopenharmony_ci	  the TCP sender in order to:
6578c2ecf20Sopenharmony_ci
6588c2ecf20Sopenharmony_ci	  o Use the delay gradient as a congestion signal.
6598c2ecf20Sopenharmony_ci	  o Back off with an average probability that is independent of the RTT.
6608c2ecf20Sopenharmony_ci	  o Coexist with flows that use loss-based congestion control.
6618c2ecf20Sopenharmony_ci	  o Tolerate packet loss unrelated to congestion.
6628c2ecf20Sopenharmony_ci
6638c2ecf20Sopenharmony_ci	  For further details see:
6648c2ecf20Sopenharmony_ci	    D.A. Hayes and G. Armitage. "Revisiting TCP congestion control using
6658c2ecf20Sopenharmony_ci	    delay gradients." In Networking 2011. Preprint: http://goo.gl/No3vdg
6668c2ecf20Sopenharmony_ci
6678c2ecf20Sopenharmony_ciconfig TCP_CONG_BBR
6688c2ecf20Sopenharmony_ci	tristate "BBR TCP"
6698c2ecf20Sopenharmony_ci	default n
6708c2ecf20Sopenharmony_ci	help
6718c2ecf20Sopenharmony_ci
6728c2ecf20Sopenharmony_ci	  BBR (Bottleneck Bandwidth and RTT) TCP congestion control aims to
6738c2ecf20Sopenharmony_ci	  maximize network utilization and minimize queues. It builds an explicit
6748c2ecf20Sopenharmony_ci	  model of the bottleneck delivery rate and path round-trip propagation
6758c2ecf20Sopenharmony_ci	  delay. It tolerates packet loss and delay unrelated to congestion. It
6768c2ecf20Sopenharmony_ci	  can operate over LAN, WAN, cellular, wifi, or cable modem links. It can
6778c2ecf20Sopenharmony_ci	  coexist with flows that use loss-based congestion control, and can
6788c2ecf20Sopenharmony_ci	  operate with shallow buffers, deep buffers, bufferbloat, policers, or
6798c2ecf20Sopenharmony_ci	  AQM schemes that do not provide a delay signal. It requires the fq
6808c2ecf20Sopenharmony_ci	  ("Fair Queue") pacing packet scheduler.
6818c2ecf20Sopenharmony_ci
6828c2ecf20Sopenharmony_cichoice
6838c2ecf20Sopenharmony_ci	prompt "Default TCP congestion control"
6848c2ecf20Sopenharmony_ci	default DEFAULT_CUBIC
6858c2ecf20Sopenharmony_ci	help
6868c2ecf20Sopenharmony_ci	  Select the TCP congestion control that will be used by default
6878c2ecf20Sopenharmony_ci	  for all connections.
6888c2ecf20Sopenharmony_ci
6898c2ecf20Sopenharmony_ci	config DEFAULT_BIC
6908c2ecf20Sopenharmony_ci		bool "Bic" if TCP_CONG_BIC=y
6918c2ecf20Sopenharmony_ci
6928c2ecf20Sopenharmony_ci	config DEFAULT_CUBIC
6938c2ecf20Sopenharmony_ci		bool "Cubic" if TCP_CONG_CUBIC=y
6948c2ecf20Sopenharmony_ci
6958c2ecf20Sopenharmony_ci	config DEFAULT_HTCP
6968c2ecf20Sopenharmony_ci		bool "Htcp" if TCP_CONG_HTCP=y
6978c2ecf20Sopenharmony_ci
6988c2ecf20Sopenharmony_ci	config DEFAULT_HYBLA
6998c2ecf20Sopenharmony_ci		bool "Hybla" if TCP_CONG_HYBLA=y
7008c2ecf20Sopenharmony_ci
7018c2ecf20Sopenharmony_ci	config DEFAULT_VEGAS
7028c2ecf20Sopenharmony_ci		bool "Vegas" if TCP_CONG_VEGAS=y
7038c2ecf20Sopenharmony_ci
7048c2ecf20Sopenharmony_ci	config DEFAULT_VENO
7058c2ecf20Sopenharmony_ci		bool "Veno" if TCP_CONG_VENO=y
7068c2ecf20Sopenharmony_ci
7078c2ecf20Sopenharmony_ci	config DEFAULT_WESTWOOD
7088c2ecf20Sopenharmony_ci		bool "Westwood" if TCP_CONG_WESTWOOD=y
7098c2ecf20Sopenharmony_ci
7108c2ecf20Sopenharmony_ci	config DEFAULT_DCTCP
7118c2ecf20Sopenharmony_ci		bool "DCTCP" if TCP_CONG_DCTCP=y
7128c2ecf20Sopenharmony_ci
7138c2ecf20Sopenharmony_ci	config DEFAULT_CDG
7148c2ecf20Sopenharmony_ci		bool "CDG" if TCP_CONG_CDG=y
7158c2ecf20Sopenharmony_ci
7168c2ecf20Sopenharmony_ci	config DEFAULT_BBR
7178c2ecf20Sopenharmony_ci		bool "BBR" if TCP_CONG_BBR=y
7188c2ecf20Sopenharmony_ci
7198c2ecf20Sopenharmony_ci	config DEFAULT_RENO
7208c2ecf20Sopenharmony_ci		bool "Reno"
7218c2ecf20Sopenharmony_ciendchoice
7228c2ecf20Sopenharmony_ci
7238c2ecf20Sopenharmony_ciendif
7248c2ecf20Sopenharmony_ci
7258c2ecf20Sopenharmony_ciconfig TCP_CONG_CUBIC
7268c2ecf20Sopenharmony_ci	tristate
7278c2ecf20Sopenharmony_ci	depends on !TCP_CONG_ADVANCED
7288c2ecf20Sopenharmony_ci	default y
7298c2ecf20Sopenharmony_ci
7308c2ecf20Sopenharmony_ciconfig DEFAULT_TCP_CONG
7318c2ecf20Sopenharmony_ci	string
7328c2ecf20Sopenharmony_ci	default "bic" if DEFAULT_BIC
7338c2ecf20Sopenharmony_ci	default "cubic" if DEFAULT_CUBIC
7348c2ecf20Sopenharmony_ci	default "htcp" if DEFAULT_HTCP
7358c2ecf20Sopenharmony_ci	default "hybla" if DEFAULT_HYBLA
7368c2ecf20Sopenharmony_ci	default "vegas" if DEFAULT_VEGAS
7378c2ecf20Sopenharmony_ci	default "westwood" if DEFAULT_WESTWOOD
7388c2ecf20Sopenharmony_ci	default "veno" if DEFAULT_VENO
7398c2ecf20Sopenharmony_ci	default "reno" if DEFAULT_RENO
7408c2ecf20Sopenharmony_ci	default "dctcp" if DEFAULT_DCTCP
7418c2ecf20Sopenharmony_ci	default "cdg" if DEFAULT_CDG
7428c2ecf20Sopenharmony_ci	default "bbr" if DEFAULT_BBR
7438c2ecf20Sopenharmony_ci	default "cubic"
7448c2ecf20Sopenharmony_ci
7458c2ecf20Sopenharmony_ciconfig TCP_MD5SIG
7468c2ecf20Sopenharmony_ci	bool "TCP: MD5 Signature Option support (RFC2385)"
7478c2ecf20Sopenharmony_ci	select CRYPTO
7488c2ecf20Sopenharmony_ci	select CRYPTO_MD5
7498c2ecf20Sopenharmony_ci	help
7508c2ecf20Sopenharmony_ci	  RFC2385 specifies a method of giving MD5 protection to TCP sessions.
7518c2ecf20Sopenharmony_ci	  Its main (only?) use is to protect BGP sessions between core routers
7528c2ecf20Sopenharmony_ci	  on the Internet.
7538c2ecf20Sopenharmony_ci
7548c2ecf20Sopenharmony_ci	  If unsure, say N.
755