Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # IP configuration
0004 #
0005 config IP_MULTICAST
0006         bool "IP: multicasting"
0007         help
0008           This is code for addressing several networked computers at once,
0009           enlarging your kernel by about 2 KB. You need multicasting if you
0010           intend to participate in the MBONE, a high bandwidth network on top
0011           of the Internet which carries audio and video broadcasts. More
0012           information about the MBONE is on the WWW at
0013           <https://www.savetz.com/mbone/>. For most people, it's safe to say N.
0014 
0015 config IP_ADVANCED_ROUTER
0016         bool "IP: advanced router"
0017         help
0018           If you intend to run your Linux box mostly as a router, i.e. as a
0019           computer that forwards and redistributes network packets, say Y; you
0020           will then be presented with several options that allow more precise
0021           control about the routing process.
0022 
0023           The answer to this question won't directly affect the kernel:
0024           answering N will just cause the configurator to skip all the
0025           questions about advanced routing.
0026 
0027           Note that your box can only act as a router if you enable IP
0028           forwarding in your kernel; you can do that by saying Y to "/proc
0029           file system support" and "Sysctl support" below and executing the
0030           line
0031 
0032           echo "1" > /proc/sys/net/ipv4/ip_forward
0033 
0034           at boot time after the /proc file system has been mounted.
0035 
0036           If you turn on IP forwarding, you should consider the rp_filter, which
0037           automatically rejects incoming packets if the routing table entry
0038           for their source address doesn't match the network interface they're
0039           arriving on. This has security advantages because it prevents the
0040           so-called IP spoofing, however it can pose problems if you use
0041           asymmetric routing (packets from you to a host take a different path
0042           than packets from that host to you) or if you operate a non-routing
0043           host which has several IP addresses on different interfaces. To turn
0044           rp_filter on use:
0045 
0046           echo 1 > /proc/sys/net/ipv4/conf/<device>/rp_filter
0047            or
0048           echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
0049 
0050           Note that some distributions enable it in startup scripts.
0051           For details about rp_filter strict and loose mode read
0052           <file:Documentation/networking/ip-sysctl.rst>.
0053 
0054           If unsure, say N here.
0055 
0056 config IP_FIB_TRIE_STATS
0057         bool "FIB TRIE statistics"
0058         depends on IP_ADVANCED_ROUTER
0059         help
0060           Keep track of statistics on structure of FIB TRIE table.
0061           Useful for testing and measuring TRIE performance.
0062 
0063 config IP_MULTIPLE_TABLES
0064         bool "IP: policy routing"
0065         depends on IP_ADVANCED_ROUTER
0066         select FIB_RULES
0067         help
0068           Normally, a router decides what to do with a received packet based
0069           solely on the packet's final destination address. If you say Y here,
0070           the Linux router will also be able to take the packet's source
0071           address into account. Furthermore, the TOS (Type-Of-Service) field
0072           of the packet can be used for routing decisions as well.
0073 
0074           If you need more information, see the Linux Advanced
0075           Routing and Traffic Control documentation at
0076           <https://lartc.org/howto/lartc.rpdb.html>
0077 
0078           If unsure, say N.
0079 
0080 config IP_ROUTE_MULTIPATH
0081         bool "IP: equal cost multipath"
0082         depends on IP_ADVANCED_ROUTER
0083         help
0084           Normally, the routing tables specify a single action to be taken in
0085           a deterministic manner for a given packet. If you say Y here
0086           however, it becomes possible to attach several actions to a packet
0087           pattern, in effect specifying several alternative paths to travel
0088           for those packets. The router considers all these paths to be of
0089           equal "cost" and chooses one of them in a non-deterministic fashion
0090           if a matching packet arrives.
0091 
0092 config IP_ROUTE_VERBOSE
0093         bool "IP: verbose route monitoring"
0094         depends on IP_ADVANCED_ROUTER
0095         help
0096           If you say Y here, which is recommended, then the kernel will print
0097           verbose messages regarding the routing, for example warnings about
0098           received packets which look strange and could be evidence of an
0099           attack or a misconfigured system somewhere. The information is
0100           handled by the klogd daemon which is responsible for kernel messages
0101           ("man klogd").
0102 
0103 config IP_ROUTE_CLASSID
0104         bool
0105 
0106 config IP_PNP
0107         bool "IP: kernel level autoconfiguration"
0108         help
0109           This enables automatic configuration of IP addresses of devices and
0110           of the routing table during kernel boot, based on either information
0111           supplied on the kernel command line or by BOOTP or RARP protocols.
0112           You need to say Y only for diskless machines requiring network
0113           access to boot (in which case you want to say Y to "Root file system
0114           on NFS" as well), because all other machines configure the network
0115           in their startup scripts.
0116 
0117 config IP_PNP_DHCP
0118         bool "IP: DHCP support"
0119         depends on IP_PNP
0120         help
0121           If you want your Linux box to mount its whole root file system (the
0122           one containing the directory /) from some other computer over the
0123           net via NFS and you want the IP address of your computer to be
0124           discovered automatically at boot time using the DHCP protocol (a
0125           special protocol designed for doing this job), say Y here. In case
0126           the boot ROM of your network card was designed for booting Linux and
0127           does DHCP itself, providing all necessary information on the kernel
0128           command line, you can say N here.
0129 
0130           If unsure, say Y. Note that if you want to use DHCP, a DHCP server
0131           must be operating on your network.  Read
0132           <file:Documentation/admin-guide/nfs/nfsroot.rst> for details.
0133 
0134 config IP_PNP_BOOTP
0135         bool "IP: BOOTP support"
0136         depends on IP_PNP
0137         help
0138           If you want your Linux box to mount its whole root file system (the
0139           one containing the directory /) from some other computer over the
0140           net via NFS and you want the IP address of your computer to be
0141           discovered automatically at boot time using the BOOTP protocol (a
0142           special protocol designed for doing this job), say Y here. In case
0143           the boot ROM of your network card was designed for booting Linux and
0144           does BOOTP itself, providing all necessary information on the kernel
0145           command line, you can say N here. If unsure, say Y. Note that if you
0146           want to use BOOTP, a BOOTP server must be operating on your network.
0147           Read <file:Documentation/admin-guide/nfs/nfsroot.rst> for details.
0148 
0149 config IP_PNP_RARP
0150         bool "IP: RARP support"
0151         depends on IP_PNP
0152         help
0153           If you want your Linux box to mount its whole root file system (the
0154           one containing the directory /) from some other computer over the
0155           net via NFS and you want the IP address of your computer to be
0156           discovered automatically at boot time using the RARP protocol (an
0157           older protocol which is being obsoleted by BOOTP and DHCP), say Y
0158           here. Note that if you want to use RARP, a RARP server must be
0159           operating on your network. Read
0160           <file:Documentation/admin-guide/nfs/nfsroot.rst> for details.
0161 
0162 config NET_IPIP
0163         tristate "IP: tunneling"
0164         select INET_TUNNEL
0165         select NET_IP_TUNNEL
0166         help
0167           Tunneling means encapsulating data of one protocol type within
0168           another protocol and sending it over a channel that understands the
0169           encapsulating protocol. This particular tunneling driver implements
0170           encapsulation of IP within IP, which sounds kind of pointless, but
0171           can be useful if you want to make your (or some other) machine
0172           appear on a different network than it physically is, or to use
0173           mobile-IP facilities (allowing laptops to seamlessly move between
0174           networks without changing their IP addresses).
0175 
0176           Saying Y to this option will produce two modules ( = code which can
0177           be inserted in and removed from the running kernel whenever you
0178           want). Most people won't need this and can say N.
0179 
0180 config NET_IPGRE_DEMUX
0181         tristate "IP: GRE demultiplexer"
0182         help
0183           This is helper module to demultiplex GRE packets on GRE version field criteria.
0184           Required by ip_gre and pptp modules.
0185 
0186 config NET_IP_TUNNEL
0187         tristate
0188         select DST_CACHE
0189         select GRO_CELLS
0190         default n
0191 
0192 config NET_IPGRE
0193         tristate "IP: GRE tunnels over IP"
0194         depends on (IPV6 || IPV6=n) && NET_IPGRE_DEMUX
0195         select NET_IP_TUNNEL
0196         help
0197           Tunneling means encapsulating data of one protocol type within
0198           another protocol and sending it over a channel that understands the
0199           encapsulating protocol. This particular tunneling driver implements
0200           GRE (Generic Routing Encapsulation) and at this time allows
0201           encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure.
0202           This driver is useful if the other endpoint is a Cisco router: Cisco
0203           likes GRE much better than the other Linux tunneling driver ("IP
0204           tunneling" above). In addition, GRE allows multicast redistribution
0205           through the tunnel.
0206 
0207 config NET_IPGRE_BROADCAST
0208         bool "IP: broadcast GRE over IP"
0209         depends on IP_MULTICAST && NET_IPGRE
0210         help
0211           One application of GRE/IP is to construct a broadcast WAN (Wide Area
0212           Network), which looks like a normal Ethernet LAN (Local Area
0213           Network), but can be distributed all over the Internet. If you want
0214           to do that, say Y here and to "IP multicast routing" below.
0215 
0216 config IP_MROUTE_COMMON
0217         bool
0218         depends on IP_MROUTE || IPV6_MROUTE
0219 
0220 config IP_MROUTE
0221         bool "IP: multicast routing"
0222         depends on IP_MULTICAST
0223         select IP_MROUTE_COMMON
0224         help
0225           This is used if you want your machine to act as a router for IP
0226           packets that have several destination addresses. It is needed on the
0227           MBONE, a high bandwidth network on top of the Internet which carries
0228           audio and video broadcasts. In order to do that, you would most
0229           likely run the program mrouted. If you haven't heard about it, you
0230           don't need it.
0231 
0232 config IP_MROUTE_MULTIPLE_TABLES
0233         bool "IP: multicast policy routing"
0234         depends on IP_MROUTE && IP_ADVANCED_ROUTER
0235         select FIB_RULES
0236         help
0237           Normally, a multicast router runs a userspace daemon and decides
0238           what to do with a multicast packet based on the source and
0239           destination addresses. If you say Y here, the multicast router
0240           will also be able to take interfaces and packet marks into
0241           account and run multiple instances of userspace daemons
0242           simultaneously, each one handling a single table.
0243 
0244           If unsure, say N.
0245 
0246 config IP_PIMSM_V1
0247         bool "IP: PIM-SM version 1 support"
0248         depends on IP_MROUTE
0249         help
0250           Kernel side support for Sparse Mode PIM (Protocol Independent
0251           Multicast) version 1. This multicast routing protocol is used widely
0252           because Cisco supports it. You need special software to use it
0253           (pimd-v1). Please see <http://netweb.usc.edu/pim/> for more
0254           information about PIM.
0255 
0256           Say Y if you want to use PIM-SM v1. Note that you can say N here if
0257           you just want to use Dense Mode PIM.
0258 
0259 config IP_PIMSM_V2
0260         bool "IP: PIM-SM version 2 support"
0261         depends on IP_MROUTE
0262         help
0263           Kernel side support for Sparse Mode PIM version 2. In order to use
0264           this, you need an experimental routing daemon supporting it (pimd or
0265           gated-5). This routing protocol is not used widely, so say N unless
0266           you want to play with it.
0267 
0268 config SYN_COOKIES
0269         bool "IP: TCP syncookie support"
0270         help
0271           Normal TCP/IP networking is open to an attack known as "SYN
0272           flooding". This denial-of-service attack prevents legitimate remote
0273           users from being able to connect to your computer during an ongoing
0274           attack and requires very little work from the attacker, who can
0275           operate from anywhere on the Internet.
0276 
0277           SYN cookies provide protection against this type of attack. If you
0278           say Y here, the TCP/IP stack will use a cryptographic challenge
0279           protocol known as "SYN cookies" to enable legitimate users to
0280           continue to connect, even when your machine is under attack. There
0281           is no need for the legitimate users to change their TCP/IP software;
0282           SYN cookies work transparently to them. For technical information
0283           about SYN cookies, check out <https://cr.yp.to/syncookies.html>.
0284 
0285           If you are SYN flooded, the source address reported by the kernel is
0286           likely to have been forged by the attacker; it is only reported as
0287           an aid in tracing the packets to their actual source and should not
0288           be taken as absolute truth.
0289 
0290           SYN cookies may prevent correct error reporting on clients when the
0291           server is really overloaded. If this happens frequently better turn
0292           them off.
0293 
0294           If you say Y here, you can disable SYN cookies at run time by
0295           saying Y to "/proc file system support" and
0296           "Sysctl support" below and executing the command
0297 
0298           echo 0 > /proc/sys/net/ipv4/tcp_syncookies
0299 
0300           after the /proc file system has been mounted.
0301 
0302           If unsure, say N.
0303 
0304 config NET_IPVTI
0305         tristate "Virtual (secure) IP: tunneling"
0306         depends on IPV6 || IPV6=n
0307         select INET_TUNNEL
0308         select NET_IP_TUNNEL
0309         select XFRM
0310         help
0311           Tunneling means encapsulating data of one protocol type within
0312           another protocol and sending it over a channel that understands the
0313           encapsulating protocol. This can be used with xfrm mode tunnel to give
0314           the notion of a secure tunnel for IPSEC and then use routing protocol
0315           on top.
0316 
0317 config NET_UDP_TUNNEL
0318         tristate
0319         select NET_IP_TUNNEL
0320         default n
0321 
0322 config NET_FOU
0323         tristate "IP: Foo (IP protocols) over UDP"
0324         select NET_UDP_TUNNEL
0325         help
0326           Foo over UDP allows any IP protocol to be directly encapsulated
0327           over UDP include tunnels (IPIP, GRE, SIT). By encapsulating in UDP
0328           network mechanisms and optimizations for UDP (such as ECMP
0329           and RSS) can be leveraged to provide better service.
0330 
0331 config NET_FOU_IP_TUNNELS
0332         bool "IP: FOU encapsulation of IP tunnels"
0333         depends on NET_IPIP || NET_IPGRE || IPV6_SIT
0334         select NET_FOU
0335         help
0336           Allow configuration of FOU or GUE encapsulation for IP tunnels.
0337           When this option is enabled IP tunnels can be configured to use
0338           FOU or GUE encapsulation.
0339 
0340 config INET_AH
0341         tristate "IP: AH transformation"
0342         select XFRM_AH
0343         help
0344           Support for IPsec AH (Authentication Header).
0345 
0346           AH can be used with various authentication algorithms.  Besides
0347           enabling AH support itself, this option enables the generic
0348           implementations of the algorithms that RFC 8221 lists as MUST be
0349           implemented.  If you need any other algorithms, you'll need to enable
0350           them in the crypto API.  You should also enable accelerated
0351           implementations of any needed algorithms when available.
0352 
0353           If unsure, say Y.
0354 
0355 config INET_ESP
0356         tristate "IP: ESP transformation"
0357         select XFRM_ESP
0358         help
0359           Support for IPsec ESP (Encapsulating Security Payload).
0360 
0361           ESP can be used with various encryption and authentication algorithms.
0362           Besides enabling ESP support itself, this option enables the generic
0363           implementations of the algorithms that RFC 8221 lists as MUST be
0364           implemented.  If you need any other algorithms, you'll need to enable
0365           them in the crypto API.  You should also enable accelerated
0366           implementations of any needed algorithms when available.
0367 
0368           If unsure, say Y.
0369 
0370 config INET_ESP_OFFLOAD
0371         tristate "IP: ESP transformation offload"
0372         depends on INET_ESP
0373         select XFRM_OFFLOAD
0374         default n
0375         help
0376           Support for ESP transformation offload. This makes sense
0377           only if this system really does IPsec and want to do it
0378           with high throughput. A typical desktop system does not
0379           need it, even if it does IPsec.
0380 
0381           If unsure, say N.
0382 
0383 config INET_ESPINTCP
0384         bool "IP: ESP in TCP encapsulation (RFC 8229)"
0385         depends on XFRM && INET_ESP
0386         select STREAM_PARSER
0387         select NET_SOCK_MSG
0388         select XFRM_ESPINTCP
0389         help
0390           Support for RFC 8229 encapsulation of ESP and IKE over
0391           TCP/IPv4 sockets.
0392 
0393           If unsure, say N.
0394 
0395 config INET_IPCOMP
0396         tristate "IP: IPComp transformation"
0397         select INET_XFRM_TUNNEL
0398         select XFRM_IPCOMP
0399         help
0400           Support for IP Payload Compression Protocol (IPComp) (RFC3173),
0401           typically needed for IPsec.
0402 
0403           If unsure, say Y.
0404 
0405 config INET_XFRM_TUNNEL
0406         tristate
0407         select INET_TUNNEL
0408         default n
0409 
0410 config INET_TUNNEL
0411         tristate
0412         default n
0413 
0414 config INET_DIAG
0415         tristate "INET: socket monitoring interface"
0416         default y
0417         help
0418           Support for INET (TCP, DCCP, etc) socket monitoring interface used by
0419           native Linux tools such as ss. ss is included in iproute2, currently
0420           downloadable at:
0421 
0422             http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
0423 
0424           If unsure, say Y.
0425 
0426 config INET_TCP_DIAG
0427         depends on INET_DIAG
0428         def_tristate INET_DIAG
0429 
0430 config INET_UDP_DIAG
0431         tristate "UDP: socket monitoring interface"
0432         depends on INET_DIAG && (IPV6 || IPV6=n)
0433         default n
0434         help
0435           Support for UDP socket monitoring interface used by the ss tool.
0436           If unsure, say Y.
0437 
0438 config INET_RAW_DIAG
0439         tristate "RAW: socket monitoring interface"
0440         depends on INET_DIAG && (IPV6 || IPV6=n)
0441         default n
0442         help
0443           Support for RAW socket monitoring interface used by the ss tool.
0444           If unsure, say Y.
0445 
0446 config INET_DIAG_DESTROY
0447         bool "INET: allow privileged process to administratively close sockets"
0448         depends on INET_DIAG
0449         default n
0450         help
0451           Provides a SOCK_DESTROY operation that allows privileged processes
0452           (e.g., a connection manager or a network administration tool such as
0453           ss) to close sockets opened by other processes. Closing a socket in
0454           this way interrupts any blocking read/write/connect operations on
0455           the socket and causes future socket calls to behave as if the socket
0456           had been disconnected.
0457           If unsure, say N.
0458 
0459 menuconfig TCP_CONG_ADVANCED
0460         bool "TCP: advanced congestion control"
0461         help
0462           Support for selection of various TCP congestion control
0463           modules.
0464 
0465           Nearly all users can safely say no here, and a safe default
0466           selection will be made (CUBIC with new Reno as a fallback).
0467 
0468           If unsure, say N.
0469 
0470 if TCP_CONG_ADVANCED
0471 
0472 config TCP_CONG_BIC
0473         tristate "Binary Increase Congestion (BIC) control"
0474         default m
0475         help
0476           BIC-TCP is a sender-side only change that ensures a linear RTT
0477           fairness under large windows while offering both scalability and
0478           bounded TCP-friendliness. The protocol combines two schemes
0479           called additive increase and binary search increase. When the
0480           congestion window is large, additive increase with a large
0481           increment ensures linear RTT fairness as well as good
0482           scalability. Under small congestion windows, binary search
0483           increase provides TCP friendliness.
0484           See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
0485 
0486 config TCP_CONG_CUBIC
0487         tristate "CUBIC TCP"
0488         default y
0489         help
0490           This is version 2.0 of BIC-TCP which uses a cubic growth function
0491           among other techniques.
0492           See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
0493 
0494 config TCP_CONG_WESTWOOD
0495         tristate "TCP Westwood+"
0496         default m
0497         help
0498           TCP Westwood+ is a sender-side only modification of the TCP Reno
0499           protocol stack that optimizes the performance of TCP congestion
0500           control. It is based on end-to-end bandwidth estimation to set
0501           congestion window and slow start threshold after a congestion
0502           episode. Using this estimation, TCP Westwood+ adaptively sets a
0503           slow start threshold and a congestion window which takes into
0504           account the bandwidth used  at the time congestion is experienced.
0505           TCP Westwood+ significantly increases fairness wrt TCP Reno in
0506           wired networks and throughput over wireless links.
0507 
0508 config TCP_CONG_HTCP
0509         tristate "H-TCP"
0510         default m
0511         help
0512           H-TCP is a send-side only modifications of the TCP Reno
0513           protocol stack that optimizes the performance of TCP
0514           congestion control for high speed network links. It uses a
0515           modeswitch to change the alpha and beta parameters of TCP Reno
0516           based on network conditions and in a way so as to be fair with
0517           other Reno and H-TCP flows.
0518 
0519 config TCP_CONG_HSTCP
0520         tristate "High Speed TCP"
0521         default n
0522         help
0523           Sally Floyd's High Speed TCP (RFC 3649) congestion control.
0524           A modification to TCP's congestion control mechanism for use
0525           with large congestion windows. A table indicates how much to
0526           increase the congestion window by when an ACK is received.
0527           For more detail see https://www.icir.org/floyd/hstcp.html
0528 
0529 config TCP_CONG_HYBLA
0530         tristate "TCP-Hybla congestion control algorithm"
0531         default n
0532         help
0533           TCP-Hybla is a sender-side only change that eliminates penalization of
0534           long-RTT, large-bandwidth connections, like when satellite legs are
0535           involved, especially when sharing a common bottleneck with normal
0536           terrestrial connections.
0537 
0538 config TCP_CONG_VEGAS
0539         tristate "TCP Vegas"
0540         default n
0541         help
0542           TCP Vegas is a sender-side only change to TCP that anticipates
0543           the onset of congestion by estimating the bandwidth. TCP Vegas
0544           adjusts the sending rate by modifying the congestion
0545           window. TCP Vegas should provide less packet loss, but it is
0546           not as aggressive as TCP Reno.
0547 
0548 config TCP_CONG_NV
0549         tristate "TCP NV"
0550         default n
0551         help
0552           TCP NV is a follow up to TCP Vegas. It has been modified to deal with
0553           10G networks, measurement noise introduced by LRO, GRO and interrupt
0554           coalescence. In addition, it will decrease its cwnd multiplicatively
0555           instead of linearly.
0556 
0557           Note that in general congestion avoidance (cwnd decreased when # packets
0558           queued grows) cannot coexist with congestion control (cwnd decreased only
0559           when there is packet loss) due to fairness issues. One scenario when they
0560           can coexist safely is when the CA flows have RTTs << CC flows RTTs.
0561 
0562           For further details see http://www.brakmo.org/networking/tcp-nv/
0563 
0564 config TCP_CONG_SCALABLE
0565         tristate "Scalable TCP"
0566         default n
0567         help
0568           Scalable TCP is a sender-side only change to TCP which uses a
0569           MIMD congestion control algorithm which has some nice scaling
0570           properties, though is known to have fairness issues.
0571           See http://www.deneholme.net/tom/scalable/
0572 
0573 config TCP_CONG_LP
0574         tristate "TCP Low Priority"
0575         default n
0576         help
0577           TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
0578           to utilize only the excess network bandwidth as compared to the
0579           ``fair share`` of bandwidth as targeted by TCP.
0580           See http://www-ece.rice.edu/networks/TCP-LP/
0581 
0582 config TCP_CONG_VENO
0583         tristate "TCP Veno"
0584         default n
0585         help
0586           TCP Veno is a sender-side only enhancement of TCP to obtain better
0587           throughput over wireless networks. TCP Veno makes use of state
0588           distinguishing to circumvent the difficult judgment of the packet loss
0589           type. TCP Veno cuts down less congestion window in response to random
0590           loss packets.
0591           See <http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1177186>
0592 
0593 config TCP_CONG_YEAH
0594         tristate "YeAH TCP"
0595         select TCP_CONG_VEGAS
0596         default n
0597         help
0598           YeAH-TCP is a sender-side high-speed enabled TCP congestion control
0599           algorithm, which uses a mixed loss/delay approach to compute the
0600           congestion window. It's design goals target high efficiency,
0601           internal, RTT and Reno fairness, resilience to link loss while
0602           keeping network elements load as low as possible.
0603 
0604           For further details look here:
0605             http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf
0606 
0607 config TCP_CONG_ILLINOIS
0608         tristate "TCP Illinois"
0609         default n
0610         help
0611           TCP-Illinois is a sender-side modification of TCP Reno for
0612           high speed long delay links. It uses round-trip-time to
0613           adjust the alpha and beta parameters to achieve a higher average
0614           throughput and maintain fairness.
0615 
0616           For further details see:
0617             http://www.ews.uiuc.edu/~shaoliu/tcpillinois/index.html
0618 
0619 config TCP_CONG_DCTCP
0620         tristate "DataCenter TCP (DCTCP)"
0621         default n
0622         help
0623           DCTCP leverages Explicit Congestion Notification (ECN) in the network to
0624           provide multi-bit feedback to the end hosts. It is designed to provide:
0625 
0626           - High burst tolerance (incast due to partition/aggregate),
0627           - Low latency (short flows, queries),
0628           - High throughput (continuous data updates, large file transfers) with
0629             commodity, shallow-buffered switches.
0630 
0631           All switches in the data center network running DCTCP must support
0632           ECN marking and be configured for marking when reaching defined switch
0633           buffer thresholds. The default ECN marking threshold heuristic for
0634           DCTCP on switches is 20 packets (30KB) at 1Gbps, and 65 packets
0635           (~100KB) at 10Gbps, but might need further careful tweaking.
0636 
0637           For further details see:
0638             http://simula.stanford.edu/~alizade/Site/DCTCP_files/dctcp-final.pdf
0639 
0640 config TCP_CONG_CDG
0641         tristate "CAIA Delay-Gradient (CDG)"
0642         default n
0643         help
0644           CAIA Delay-Gradient (CDG) is a TCP congestion control that modifies
0645           the TCP sender in order to:
0646 
0647           o Use the delay gradient as a congestion signal.
0648           o Back off with an average probability that is independent of the RTT.
0649           o Coexist with flows that use loss-based congestion control.
0650           o Tolerate packet loss unrelated to congestion.
0651 
0652           For further details see:
0653             D.A. Hayes and G. Armitage. "Revisiting TCP congestion control using
0654             delay gradients." In Networking 2011. Preprint: http://goo.gl/No3vdg
0655 
0656 config TCP_CONG_BBR
0657         tristate "BBR TCP"
0658         default n
0659         help
0660 
0661           BBR (Bottleneck Bandwidth and RTT) TCP congestion control aims to
0662           maximize network utilization and minimize queues. It builds an explicit
0663           model of the bottleneck delivery rate and path round-trip propagation
0664           delay. It tolerates packet loss and delay unrelated to congestion. It
0665           can operate over LAN, WAN, cellular, wifi, or cable modem links. It can
0666           coexist with flows that use loss-based congestion control, and can
0667           operate with shallow buffers, deep buffers, bufferbloat, policers, or
0668           AQM schemes that do not provide a delay signal. It requires the fq
0669           ("Fair Queue") pacing packet scheduler.
0670 
0671 choice
0672         prompt "Default TCP congestion control"
0673         default DEFAULT_CUBIC
0674         help
0675           Select the TCP congestion control that will be used by default
0676           for all connections.
0677 
0678         config DEFAULT_BIC
0679                 bool "Bic" if TCP_CONG_BIC=y
0680 
0681         config DEFAULT_CUBIC
0682                 bool "Cubic" if TCP_CONG_CUBIC=y
0683 
0684         config DEFAULT_HTCP
0685                 bool "Htcp" if TCP_CONG_HTCP=y
0686 
0687         config DEFAULT_HYBLA
0688                 bool "Hybla" if TCP_CONG_HYBLA=y
0689 
0690         config DEFAULT_VEGAS
0691                 bool "Vegas" if TCP_CONG_VEGAS=y
0692 
0693         config DEFAULT_VENO
0694                 bool "Veno" if TCP_CONG_VENO=y
0695 
0696         config DEFAULT_WESTWOOD
0697                 bool "Westwood" if TCP_CONG_WESTWOOD=y
0698 
0699         config DEFAULT_DCTCP
0700                 bool "DCTCP" if TCP_CONG_DCTCP=y
0701 
0702         config DEFAULT_CDG
0703                 bool "CDG" if TCP_CONG_CDG=y
0704 
0705         config DEFAULT_BBR
0706                 bool "BBR" if TCP_CONG_BBR=y
0707 
0708         config DEFAULT_RENO
0709                 bool "Reno"
0710 endchoice
0711 
0712 endif
0713 
0714 config TCP_CONG_CUBIC
0715         tristate
0716         depends on !TCP_CONG_ADVANCED
0717         default y
0718 
0719 config DEFAULT_TCP_CONG
0720         string
0721         default "bic" if DEFAULT_BIC
0722         default "cubic" if DEFAULT_CUBIC
0723         default "htcp" if DEFAULT_HTCP
0724         default "hybla" if DEFAULT_HYBLA
0725         default "vegas" if DEFAULT_VEGAS
0726         default "westwood" if DEFAULT_WESTWOOD
0727         default "veno" if DEFAULT_VENO
0728         default "reno" if DEFAULT_RENO
0729         default "dctcp" if DEFAULT_DCTCP
0730         default "cdg" if DEFAULT_CDG
0731         default "bbr" if DEFAULT_BBR
0732         default "cubic"
0733 
0734 config TCP_MD5SIG
0735         bool "TCP: MD5 Signature Option support (RFC2385)"
0736         select CRYPTO
0737         select CRYPTO_MD5
0738         help
0739           RFC2385 specifies a method of giving MD5 protection to TCP sessions.
0740           Its main (only?) use is to protect BGP sessions between core routers
0741           on the Internet.
0742 
0743           If unsure, say N.