| # SPDX-License-Identifier: GPL-2.0-only |
| # |
| # IP configuration |
| # |
| config IP_MULTICAST |
| bool "IP: multicasting" |
| help |
| This is code for addressing several networked computers at once, |
| enlarging your kernel by about 2 KB. You need multicasting if you |
| intend to participate in the MBONE, a high bandwidth network on top |
| of the Internet which carries audio and video broadcasts. More |
| information about the MBONE is on the WWW at |
| <https://www.savetz.com/mbone/>. For most people, it's safe to say N. |
| |
| config IP_ADVANCED_ROUTER |
| bool "IP: advanced router" |
| help |
| If you intend to run your Linux box mostly as a router, i.e. as a |
| computer that forwards and redistributes network packets, say Y; you |
| will then be presented with several options that allow more precise |
| control about the routing process. |
| |
| The answer to this question won't directly affect the kernel: |
| answering N will just cause the configurator to skip all the |
| questions about advanced routing. |
| |
| Note that your box can only act as a router if you enable IP |
| forwarding in your kernel; you can do that by saying Y to "/proc |
| file system support" and "Sysctl support" below and executing the |
| line |
| |
| echo "1" > /proc/sys/net/ipv4/ip_forward |
| |
| at boot time after the /proc file system has been mounted. |
| |
| If you turn on IP forwarding, you should consider the rp_filter, which |
| automatically rejects incoming packets if the routing table entry |
| for their source address doesn't match the network interface they're |
| arriving on. This has security advantages because it prevents the |
| so-called IP spoofing, however it can pose problems if you use |
| asymmetric routing (packets from you to a host take a different path |
| than packets from that host to you) or if you operate a non-routing |
| host which has several IP addresses on different interfaces. To turn |
| rp_filter on use: |
| |
| echo 1 > /proc/sys/net/ipv4/conf/<device>/rp_filter |
| or |
| echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter |
| |
| Note that some distributions enable it in startup scripts. |
| For details about rp_filter strict and loose mode read |
| <file:Documentation/networking/ip-sysctl.rst>. |
| |
| If unsure, say N here. |
| |
| config IP_FIB_TRIE_STATS |
| bool "FIB TRIE statistics" |
| depends on IP_ADVANCED_ROUTER |
| help |
| Keep track of statistics on structure of FIB TRIE table. |
| Useful for testing and measuring TRIE performance. |
| |
| config IP_MULTIPLE_TABLES |
| bool "IP: policy routing" |
| depends on IP_ADVANCED_ROUTER |
| select FIB_RULES |
| help |
| Normally, a router decides what to do with a received packet based |
| solely on the packet's final destination address. If you say Y here, |
| the Linux router will also be able to take the packet's source |
| address into account. Furthermore, the TOS (Type-Of-Service) field |
| of the packet can be used for routing decisions as well. |
| |
| If you need more information, see the Linux Advanced |
| Routing and Traffic Control documentation at |
| <https://lartc.org/howto/lartc.rpdb.html> |
| |
| If unsure, say N. |
| |
| config IP_ROUTE_MULTIPATH |
| bool "IP: equal cost multipath" |
| depends on IP_ADVANCED_ROUTER |
| help |
| Normally, the routing tables specify a single action to be taken in |
| a deterministic manner for a given packet. If you say Y here |
| however, it becomes possible to attach several actions to a packet |
| pattern, in effect specifying several alternative paths to travel |
| for those packets. The router considers all these paths to be of |
| equal "cost" and chooses one of them in a non-deterministic fashion |
| if a matching packet arrives. |
| |
| config IP_ROUTE_VERBOSE |
| bool "IP: verbose route monitoring" |
| depends on IP_ADVANCED_ROUTER |
| help |
| If you say Y here, which is recommended, then the kernel will print |
| verbose messages regarding the routing, for example warnings about |
| received packets which look strange and could be evidence of an |
| attack or a misconfigured system somewhere. The information is |
| handled by the klogd daemon which is responsible for kernel messages |
| ("man klogd"). |
| |
| config IP_ROUTE_CLASSID |
| bool |
| |
| config IP_PNP |
| bool "IP: kernel level autoconfiguration" |
| help |
| This enables automatic configuration of IP addresses of devices and |
| of the routing table during kernel boot, based on either information |
| supplied on the kernel command line or by BOOTP or RARP protocols. |
| You need to say Y only for diskless machines requiring network |
| access to boot (in which case you want to say Y to "Root file system |
| on NFS" as well), because all other machines configure the network |
| in their startup scripts. |
| |
| config IP_PNP_DHCP |
| bool "IP: DHCP support" |
| depends on IP_PNP |
| help |
| If you want your Linux box to mount its whole root file system (the |
| one containing the directory /) from some other computer over the |
| net via NFS and you want the IP address of your computer to be |
| discovered automatically at boot time using the DHCP protocol (a |
| special protocol designed for doing this job), say Y here. In case |
| the boot ROM of your network card was designed for booting Linux and |
| does DHCP itself, providing all necessary information on the kernel |
| command line, you can say N here. |
| |
| If unsure, say Y. Note that if you want to use DHCP, a DHCP server |
| must be operating on your network. Read |
| <file:Documentation/admin-guide/nfs/nfsroot.rst> for details. |
| |
| config IP_PNP_BOOTP |
| bool "IP: BOOTP support" |
| depends on IP_PNP |
| help |
| If you want your Linux box to mount its whole root file system (the |
| one containing the directory /) from some other computer over the |
| net via NFS and you want the IP address of your computer to be |
| discovered automatically at boot time using the BOOTP protocol (a |
| special protocol designed for doing this job), say Y here. In case |
| the boot ROM of your network card was designed for booting Linux and |
| does BOOTP itself, providing all necessary information on the kernel |
| command line, you can say N here. If unsure, say Y. Note that if you |
| want to use BOOTP, a BOOTP server must be operating on your network. |
| Read <file:Documentation/admin-guide/nfs/nfsroot.rst> for details. |
| |
| config IP_PNP_RARP |
| bool "IP: RARP support" |
| depends on IP_PNP |
| help |
| If you want your Linux box to mount its whole root file system (the |
| one containing the directory /) from some other computer over the |
| net via NFS and you want the IP address of your computer to be |
| discovered automatically at boot time using the RARP protocol (an |
| older protocol which is being obsoleted by BOOTP and DHCP), say Y |
| here. Note that if you want to use RARP, a RARP server must be |
| operating on your network. Read |
| <file:Documentation/admin-guide/nfs/nfsroot.rst> for details. |
| |
| config NET_IPIP |
| tristate "IP: tunneling" |
| select INET_TUNNEL |
| select NET_IP_TUNNEL |
| help |
| Tunneling means encapsulating data of one protocol type within |
| another protocol and sending it over a channel that understands the |
| encapsulating protocol. This particular tunneling driver implements |
| encapsulation of IP within IP, which sounds kind of pointless, but |
| can be useful if you want to make your (or some other) machine |
| appear on a different network than it physically is, or to use |
| mobile-IP facilities (allowing laptops to seamlessly move between |
| networks without changing their IP addresses). |
| |
| Saying Y to this option will produce two modules ( = code which can |
| be inserted in and removed from the running kernel whenever you |
| want). Most people won't need this and can say N. |
| |
| config NET_IPGRE_DEMUX |
| tristate "IP: GRE demultiplexer" |
| help |
| This is helper module to demultiplex GRE packets on GRE version field criteria. |
| Required by ip_gre and pptp modules. |
| |
| config NET_IP_TUNNEL |
| tristate |
| select DST_CACHE |
| select GRO_CELLS |
| default n |
| |
| config NET_IPGRE |
| tristate "IP: GRE tunnels over IP" |
| depends on (IPV6 || IPV6=n) && NET_IPGRE_DEMUX |
| select NET_IP_TUNNEL |
| help |
| Tunneling means encapsulating data of one protocol type within |
| another protocol and sending it over a channel that understands the |
| encapsulating protocol. This particular tunneling driver implements |
| GRE (Generic Routing Encapsulation) and at this time allows |
| encapsulating of IPv4 or IPv6 over existing IPv4 infrastructure. |
| This driver is useful if the other endpoint is a Cisco router: Cisco |
| likes GRE much better than the other Linux tunneling driver ("IP |
| tunneling" above). In addition, GRE allows multicast redistribution |
| through the tunnel. |
| |
| config NET_IPGRE_BROADCAST |
| bool "IP: broadcast GRE over IP" |
| depends on IP_MULTICAST && NET_IPGRE |
| help |
| One application of GRE/IP is to construct a broadcast WAN (Wide Area |
| Network), which looks like a normal Ethernet LAN (Local Area |
| Network), but can be distributed all over the Internet. If you want |
| to do that, say Y here and to "IP multicast routing" below. |
| |
| config IP_MROUTE_COMMON |
| bool |
| depends on IP_MROUTE || IPV6_MROUTE |
| |
| config IP_MROUTE |
| bool "IP: multicast routing" |
| depends on IP_MULTICAST |
| select IP_MROUTE_COMMON |
| help |
| This is used if you want your machine to act as a router for IP |
| packets that have several destination addresses. It is needed on the |
| MBONE, a high bandwidth network on top of the Internet which carries |
| audio and video broadcasts. In order to do that, you would most |
| likely run the program mrouted. If you haven't heard about it, you |
| don't need it. |
| |
| config IP_MROUTE_MULTIPLE_TABLES |
| bool "IP: multicast policy routing" |
| depends on IP_MROUTE && IP_ADVANCED_ROUTER |
| select FIB_RULES |
| help |
| Normally, a multicast router runs a userspace daemon and decides |
| what to do with a multicast packet based on the source and |
| destination addresses. If you say Y here, the multicast router |
| will also be able to take interfaces and packet marks into |
| account and run multiple instances of userspace daemons |
| simultaneously, each one handling a single table. |
| |
| If unsure, say N. |
| |
| config IP_PIMSM_V1 |
| bool "IP: PIM-SM version 1 support" |
| depends on IP_MROUTE |
| help |
| Kernel side support for Sparse Mode PIM (Protocol Independent |
| Multicast) version 1. This multicast routing protocol is used widely |
| because Cisco supports it. You need special software to use it |
| (pimd-v1). Please see <http://netweb.usc.edu/pim/> for more |
| information about PIM. |
| |
| Say Y if you want to use PIM-SM v1. Note that you can say N here if |
| you just want to use Dense Mode PIM. |
| |
| config IP_PIMSM_V2 |
| bool "IP: PIM-SM version 2 support" |
| depends on IP_MROUTE |
| help |
| Kernel side support for Sparse Mode PIM version 2. In order to use |
| this, you need an experimental routing daemon supporting it (pimd or |
| gated-5). This routing protocol is not used widely, so say N unless |
| you want to play with it. |
| |
| config SYN_COOKIES |
| bool "IP: TCP syncookie support" |
| help |
| Normal TCP/IP networking is open to an attack known as "SYN |
| flooding". This denial-of-service attack prevents legitimate remote |
| users from being able to connect to your computer during an ongoing |
| attack and requires very little work from the attacker, who can |
| operate from anywhere on the Internet. |
| |
| SYN cookies provide protection against this type of attack. If you |
| say Y here, the TCP/IP stack will use a cryptographic challenge |
| protocol known as "SYN cookies" to enable legitimate users to |
| continue to connect, even when your machine is under attack. There |
| is no need for the legitimate users to change their TCP/IP software; |
| SYN cookies work transparently to them. For technical information |
| about SYN cookies, check out <https://cr.yp.to/syncookies.html>. |
| |
| If you are SYN flooded, the source address reported by the kernel is |
| likely to have been forged by the attacker; it is only reported as |
| an aid in tracing the packets to their actual source and should not |
| be taken as absolute truth. |
| |
| SYN cookies may prevent correct error reporting on clients when the |
| server is really overloaded. If this happens frequently better turn |
| them off. |
| |
| If you say Y here, you can disable SYN cookies at run time by |
| saying Y to "/proc file system support" and |
| "Sysctl support" below and executing the command |
| |
| echo 0 > /proc/sys/net/ipv4/tcp_syncookies |
| |
| after the /proc file system has been mounted. |
| |
| If unsure, say N. |
| |
| config NET_IPVTI |
| tristate "Virtual (secure) IP: tunneling" |
| depends on IPV6 || IPV6=n |
| select INET_TUNNEL |
| select NET_IP_TUNNEL |
| select XFRM |
| help |
| Tunneling means encapsulating data of one protocol type within |
| another protocol and sending it over a channel that understands the |
| encapsulating protocol. This can be used with xfrm mode tunnel to give |
| the notion of a secure tunnel for IPSEC and then use routing protocol |
| on top. |
| |
| config NET_UDP_TUNNEL |
| tristate |
| select NET_IP_TUNNEL |
| default n |
| |
| config NET_FOU |
| tristate "IP: Foo (IP protocols) over UDP" |
| select NET_UDP_TUNNEL |
| help |
| Foo over UDP allows any IP protocol to be directly encapsulated |
| over UDP include tunnels (IPIP, GRE, SIT). By encapsulating in UDP |
| network mechanisms and optimizations for UDP (such as ECMP |
| and RSS) can be leveraged to provide better service. |
| |
| config NET_FOU_IP_TUNNELS |
| bool "IP: FOU encapsulation of IP tunnels" |
| depends on NET_IPIP || NET_IPGRE || IPV6_SIT |
| select NET_FOU |
| help |
| Allow configuration of FOU or GUE encapsulation for IP tunnels. |
| When this option is enabled IP tunnels can be configured to use |
| FOU or GUE encapsulation. |
| |
| config INET_AH |
| tristate "IP: AH transformation" |
| select XFRM_AH |
| help |
| Support for IPsec AH (Authentication Header). |
| |
| AH can be used with various authentication algorithms. Besides |
| enabling AH support itself, this option enables the generic |
| implementations of the algorithms that RFC 8221 lists as MUST be |
| implemented. If you need any other algorithms, you'll need to enable |
| them in the crypto API. You should also enable accelerated |
| implementations of any needed algorithms when available. |
| |
| If unsure, say Y. |
| |
| config INET_ESP |
| tristate "IP: ESP transformation" |
| select XFRM_ESP |
| help |
| Support for IPsec ESP (Encapsulating Security Payload). |
| |
| ESP can be used with various encryption and authentication algorithms. |
| Besides enabling ESP support itself, this option enables the generic |
| implementations of the algorithms that RFC 8221 lists as MUST be |
| implemented. If you need any other algorithms, you'll need to enable |
| them in the crypto API. You should also enable accelerated |
| implementations of any needed algorithms when available. |
| |
| If unsure, say Y. |
| |
| config INET_ESP_OFFLOAD |
| tristate "IP: ESP transformation offload" |
| depends on INET_ESP |
| select XFRM_OFFLOAD |
| default n |
| help |
| Support for ESP transformation offload. This makes sense |
| only if this system really does IPsec and want to do it |
| with high throughput. A typical desktop system does not |
| need it, even if it does IPsec. |
| |
| If unsure, say N. |
| |
| config INET_ESPINTCP |
| bool "IP: ESP in TCP encapsulation (RFC 8229)" |
| depends on XFRM && INET_ESP |
| select STREAM_PARSER |
| select NET_SOCK_MSG |
| select XFRM_ESPINTCP |
| help |
| Support for RFC 8229 encapsulation of ESP and IKE over |
| TCP/IPv4 sockets. |
| |
| If unsure, say N. |
| |
| config INET_IPCOMP |
| tristate "IP: IPComp transformation" |
| select INET_XFRM_TUNNEL |
| select XFRM_IPCOMP |
| help |
| Support for IP Payload Compression Protocol (IPComp) (RFC3173), |
| typically needed for IPsec. |
| |
| If unsure, say Y. |
| |
| config INET_TABLE_PERTURB_ORDER |
| int "INET: Source port perturbation table size (as power of 2)" if EXPERT |
| default 16 |
| help |
| Source port perturbation table size (as power of 2) for |
| RFC 6056 3.3.4. Algorithm 4: Double-Hash Port Selection Algorithm. |
| |
| The default is almost always what you want. |
| Only change this if you know what you are doing. |
| |
| config INET_XFRM_TUNNEL |
| tristate |
| select INET_TUNNEL |
| default n |
| |
| config INET_TUNNEL |
| tristate |
| default n |
| |
| config INET_DIAG |
| tristate "INET: socket monitoring interface" |
| default y |
| help |
| Support for INET (TCP, DCCP, etc) socket monitoring interface used by |
| native Linux tools such as ss. ss is included in iproute2, currently |
| downloadable at: |
| |
| http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2 |
| |
| If unsure, say Y. |
| |
| config INET_TCP_DIAG |
| depends on INET_DIAG |
| def_tristate INET_DIAG |
| |
| config INET_UDP_DIAG |
| tristate "UDP: socket monitoring interface" |
| depends on INET_DIAG && (IPV6 || IPV6=n) |
| default n |
| help |
| Support for UDP socket monitoring interface used by the ss tool. |
| If unsure, say Y. |
| |
| config INET_RAW_DIAG |
| tristate "RAW: socket monitoring interface" |
| depends on INET_DIAG && (IPV6 || IPV6=n) |
| default n |
| help |
| Support for RAW socket monitoring interface used by the ss tool. |
| If unsure, say Y. |
| |
| config INET_DIAG_DESTROY |
| bool "INET: allow privileged process to administratively close sockets" |
| depends on INET_DIAG |
| default n |
| help |
| Provides a SOCK_DESTROY operation that allows privileged processes |
| (e.g., a connection manager or a network administration tool such as |
| ss) to close sockets opened by other processes. Closing a socket in |
| this way interrupts any blocking read/write/connect operations on |
| the socket and causes future socket calls to behave as if the socket |
| had been disconnected. |
| If unsure, say N. |
| |
| menuconfig TCP_CONG_ADVANCED |
| bool "TCP: advanced congestion control" |
| help |
| Support for selection of various TCP congestion control |
| modules. |
| |
| Nearly all users can safely say no here, and a safe default |
| selection will be made (CUBIC with new Reno as a fallback). |
| |
| If unsure, say N. |
| |
| if TCP_CONG_ADVANCED |
| |
| config TCP_CONG_BIC |
| tristate "Binary Increase Congestion (BIC) control" |
| default m |
| help |
| BIC-TCP is a sender-side only change that ensures a linear RTT |
| fairness under large windows while offering both scalability and |
| bounded TCP-friendliness. The protocol combines two schemes |
| called additive increase and binary search increase. When the |
| congestion window is large, additive increase with a large |
| increment ensures linear RTT fairness as well as good |
| scalability. Under small congestion windows, binary search |
| increase provides TCP friendliness. |
| See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/ |
| |
| config TCP_CONG_CUBIC |
| tristate "CUBIC TCP" |
| default y |
| help |
| This is version 2.0 of BIC-TCP which uses a cubic growth function |
| among other techniques. |
| See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf |
| |
| config TCP_CONG_WESTWOOD |
| tristate "TCP Westwood+" |
| default m |
| help |
| TCP Westwood+ is a sender-side only modification of the TCP Reno |
| protocol stack that optimizes the performance of TCP congestion |
| control. It is based on end-to-end bandwidth estimation to set |
| congestion window and slow start threshold after a congestion |
| episode. Using this estimation, TCP Westwood+ adaptively sets a |
| slow start threshold and a congestion window which takes into |
| account the bandwidth used at the time congestion is experienced. |
| TCP Westwood+ significantly increases fairness wrt TCP Reno in |
| wired networks and throughput over wireless links. |
| |
| config TCP_CONG_HTCP |
| tristate "H-TCP" |
| default m |
| help |
| H-TCP is a send-side only modifications of the TCP Reno |
| protocol stack that optimizes the performance of TCP |
| congestion control for high speed network links. It uses a |
| modeswitch to change the alpha and beta parameters of TCP Reno |
| based on network conditions and in a way so as to be fair with |
| other Reno and H-TCP flows. |
| |
| config TCP_CONG_HSTCP |
| tristate "High Speed TCP" |
| default n |
| help |
| Sally Floyd's High Speed TCP (RFC 3649) congestion control. |
| A modification to TCP's congestion control mechanism for use |
| with large congestion windows. A table indicates how much to |
| increase the congestion window by when an ACK is received. |
| For more detail see https://www.icir.org/floyd/hstcp.html |
| |
| config TCP_CONG_HYBLA |
| tristate "TCP-Hybla congestion control algorithm" |
| default n |
| help |
| TCP-Hybla is a sender-side only change that eliminates penalization of |
| long-RTT, large-bandwidth connections, like when satellite legs are |
| involved, especially when sharing a common bottleneck with normal |
| terrestrial connections. |
| |
| config TCP_CONG_VEGAS |
| tristate "TCP Vegas" |
| default n |
| help |
| TCP Vegas is a sender-side only change to TCP that anticipates |
| the onset of congestion by estimating the bandwidth. TCP Vegas |
| adjusts the sending rate by modifying the congestion |
| window. TCP Vegas should provide less packet loss, but it is |
| not as aggressive as TCP Reno. |
| |
| config TCP_CONG_NV |
| tristate "TCP NV" |
| default n |
| help |
| TCP NV is a follow up to TCP Vegas. It has been modified to deal with |
| 10G networks, measurement noise introduced by LRO, GRO and interrupt |
| coalescence. In addition, it will decrease its cwnd multiplicatively |
| instead of linearly. |
| |
| Note that in general congestion avoidance (cwnd decreased when # packets |
| queued grows) cannot coexist with congestion control (cwnd decreased only |
| when there is packet loss) due to fairness issues. One scenario when they |
| can coexist safely is when the CA flows have RTTs << CC flows RTTs. |
| |
| For further details see http://www.brakmo.org/networking/tcp-nv/ |
| |
| config TCP_CONG_SCALABLE |
| tristate "Scalable TCP" |
| default n |
| help |
| Scalable TCP is a sender-side only change to TCP which uses a |
| MIMD congestion control algorithm which has some nice scaling |
| properties, though is known to have fairness issues. |
| See http://www.deneholme.net/tom/scalable/ |
| |
| config TCP_CONG_LP |
| tristate "TCP Low Priority" |
| default n |
| help |
| TCP Low Priority (TCP-LP), a distributed algorithm whose goal is |
| to utilize only the excess network bandwidth as compared to the |
| ``fair share`` of bandwidth as targeted by TCP. |
| See http://www-ece.rice.edu/networks/TCP-LP/ |
| |
| config TCP_CONG_VENO |
| tristate "TCP Veno" |
| default n |
| help |
| TCP Veno is a sender-side only enhancement of TCP to obtain better |
| throughput over wireless networks. TCP Veno makes use of state |
| distinguishing to circumvent the difficult judgment of the packet loss |
| type. TCP Veno cuts down less congestion window in response to random |
| loss packets. |
| See <http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1177186> |
| |
| config TCP_CONG_YEAH |
| tristate "YeAH TCP" |
| select TCP_CONG_VEGAS |
| default n |
| help |
| YeAH-TCP is a sender-side high-speed enabled TCP congestion control |
| algorithm, which uses a mixed loss/delay approach to compute the |
| congestion window. It's design goals target high efficiency, |
| internal, RTT and Reno fairness, resilience to link loss while |
| keeping network elements load as low as possible. |
| |
| For further details look here: |
| http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf |
| |
| config TCP_CONG_ILLINOIS |
| tristate "TCP Illinois" |
| default n |
| help |
| TCP-Illinois is a sender-side modification of TCP Reno for |
| high speed long delay links. It uses round-trip-time to |
| adjust the alpha and beta parameters to achieve a higher average |
| throughput and maintain fairness. |
| |
| For further details see: |
| http://www.ews.uiuc.edu/~shaoliu/tcpillinois/index.html |
| |
| config TCP_CONG_DCTCP |
| tristate "DataCenter TCP (DCTCP)" |
| default n |
| help |
| DCTCP leverages Explicit Congestion Notification (ECN) in the network to |
| provide multi-bit feedback to the end hosts. It is designed to provide: |
| |
| - High burst tolerance (incast due to partition/aggregate), |
| - Low latency (short flows, queries), |
| - High throughput (continuous data updates, large file transfers) with |
| commodity, shallow-buffered switches. |
| |
| All switches in the data center network running DCTCP must support |
| ECN marking and be configured for marking when reaching defined switch |
| buffer thresholds. The default ECN marking threshold heuristic for |
| DCTCP on switches is 20 packets (30KB) at 1Gbps, and 65 packets |
| (~100KB) at 10Gbps, but might need further careful tweaking. |
| |
| For further details see: |
| http://simula.stanford.edu/~alizade/Site/DCTCP_files/dctcp-final.pdf |
| |
| config TCP_CONG_CDG |
| tristate "CAIA Delay-Gradient (CDG)" |
| default n |
| help |
| CAIA Delay-Gradient (CDG) is a TCP congestion control that modifies |
| the TCP sender in order to: |
| |
| o Use the delay gradient as a congestion signal. |
| o Back off with an average probability that is independent of the RTT. |
| o Coexist with flows that use loss-based congestion control. |
| o Tolerate packet loss unrelated to congestion. |
| |
| For further details see: |
| D.A. Hayes and G. Armitage. "Revisiting TCP congestion control using |
| delay gradients." In Networking 2011. Preprint: http://goo.gl/No3vdg |
| |
| config TCP_CONG_BBR |
| tristate "BBR TCP" |
| default n |
| help |
| |
| BBR (Bottleneck Bandwidth and RTT) TCP congestion control aims to |
| maximize network utilization and minimize queues. It builds an explicit |
| model of the bottleneck delivery rate and path round-trip propagation |
| delay. It tolerates packet loss and delay unrelated to congestion. It |
| can operate over LAN, WAN, cellular, wifi, or cable modem links. It can |
| coexist with flows that use loss-based congestion control, and can |
| operate with shallow buffers, deep buffers, bufferbloat, policers, or |
| AQM schemes that do not provide a delay signal. It requires the fq |
| ("Fair Queue") pacing packet scheduler. |
| |
| choice |
| prompt "Default TCP congestion control" |
| default DEFAULT_CUBIC |
| help |
| Select the TCP congestion control that will be used by default |
| for all connections. |
| |
| config DEFAULT_BIC |
| bool "Bic" if TCP_CONG_BIC=y |
| |
| config DEFAULT_CUBIC |
| bool "Cubic" if TCP_CONG_CUBIC=y |
| |
| config DEFAULT_HTCP |
| bool "Htcp" if TCP_CONG_HTCP=y |
| |
| config DEFAULT_HYBLA |
| bool "Hybla" if TCP_CONG_HYBLA=y |
| |
| config DEFAULT_VEGAS |
| bool "Vegas" if TCP_CONG_VEGAS=y |
| |
| config DEFAULT_VENO |
| bool "Veno" if TCP_CONG_VENO=y |
| |
| config DEFAULT_WESTWOOD |
| bool "Westwood" if TCP_CONG_WESTWOOD=y |
| |
| config DEFAULT_DCTCP |
| bool "DCTCP" if TCP_CONG_DCTCP=y |
| |
| config DEFAULT_CDG |
| bool "CDG" if TCP_CONG_CDG=y |
| |
| config DEFAULT_BBR |
| bool "BBR" if TCP_CONG_BBR=y |
| |
| config DEFAULT_RENO |
| bool "Reno" |
| endchoice |
| |
| endif |
| |
| config TCP_CONG_CUBIC |
| tristate |
| depends on !TCP_CONG_ADVANCED |
| default y |
| |
| config DEFAULT_TCP_CONG |
| string |
| default "bic" if DEFAULT_BIC |
| default "cubic" if DEFAULT_CUBIC |
| default "htcp" if DEFAULT_HTCP |
| default "hybla" if DEFAULT_HYBLA |
| default "vegas" if DEFAULT_VEGAS |
| default "westwood" if DEFAULT_WESTWOOD |
| default "veno" if DEFAULT_VENO |
| default "reno" if DEFAULT_RENO |
| default "dctcp" if DEFAULT_DCTCP |
| default "cdg" if DEFAULT_CDG |
| default "bbr" if DEFAULT_BBR |
| default "cubic" |
| |
| config TCP_SIGPOOL |
| tristate |
| |
| config TCP_AO |
| bool "TCP: Authentication Option (RFC5925)" |
| select CRYPTO |
| select TCP_SIGPOOL |
| depends on 64BIT && IPV6 != m # seq-number extension needs WRITE_ONCE(u64) |
| help |
| TCP-AO specifies the use of stronger Message Authentication Codes (MACs), |
| protects against replays for long-lived TCP connections, and |
| provides more details on the association of security with TCP |
| connections than TCP MD5 (See RFC5925) |
| |
| If unsure, say N. |
| |
| config TCP_MD5SIG |
| bool "TCP: MD5 Signature Option support (RFC2385)" |
| select CRYPTO |
| select CRYPTO_MD5 |
| select TCP_SIGPOOL |
| help |
| RFC2385 specifies a method of giving MD5 protection to TCP sessions. |
| Its main (only?) use is to protect BGP sessions between core routers |
| on the Internet. |
| |
| If unsure, say N. |