Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / net / ipv4 / Kconfig
index 6d3e8b1..e40f753 100644 (file)
@@ -3,7 +3,6 @@
 #
 config IP_MULTICAST
        bool "IP: multicasting"
-       depends on INET
        help
          This is code for addressing several networked computers at once,
          enlarging your kernel by about 2 KB. You need multicasting if you
@@ -17,7 +16,6 @@ config IP_MULTICAST
 
 config IP_ADVANCED_ROUTER
        bool "IP: advanced router"
-       depends on INET
        ---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
@@ -53,6 +51,40 @@ config IP_ADVANCED_ROUTER
 
          If unsure, say N here.
 
+choice 
+       prompt "Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure)"
+       depends on IP_ADVANCED_ROUTER
+       default ASK_IP_FIB_HASH
+
+config ASK_IP_FIB_HASH
+       bool "FIB_HASH"
+       ---help---
+       Current FIB is very proven and good enough for most users.
+
+config IP_FIB_TRIE
+       bool "FIB_TRIE"
+       ---help---
+       Use new experimental LC-trie as FIB lookup algoritm. 
+        This improves lookup performance if you have a large
+       number of routes.
+
+       LC-trie is a longest matching prefix lookup algorithm which
+       performs better than FIB_HASH for large routing tables.
+       But, it consumes more memory and is more complex.
+       
+       LC-trie is described in:
+       
+       IP-address lookup using LC-tries. Stefan Nilsson and Gunnar Karlsson
+       IEEE Journal on Selected Areas in Communications, 17(6):1083-1092, June 1999
+       An experimental study of compression methods for dynamic tries
+       Stefan Nilsson and Matti Tikkanen. Algorithmica, 33(1):19-33, 2002.
+       http://www.nada.kth.se/~snilsson/public/papers/dyntrie2/
+       
+endchoice
+
+config IP_FIB_HASH
+       def_bool ASK_IP_FIB_HASH || !IP_ADVANCED_ROUTER
+
 config IP_MULTIPLE_TABLES
        bool "IP: policy routing"
        depends on IP_ADVANCED_ROUTER
@@ -92,7 +124,7 @@ config IP_ROUTE_MULTIPATH
 
 config IP_ROUTE_MULTIPATH_CACHED
        bool "IP: equal cost multipath with caching support (EXPERIMENTAL)"
-       depends on: IP_ROUTE_MULTIPATH
+       depends on IP_ROUTE_MULTIPATH
        help
          Normally, equal cost multipath routing is not supported by the
          routing cache. If you say Y here, alternative routes are cached
@@ -145,7 +177,6 @@ config IP_ROUTE_VERBOSE
 
 config IP_PNP
        bool "IP: kernel level autoconfiguration"
-       depends on INET
        help
          This enables automatic configuration of IP addresses of devices and
          of the routing table during kernel boot, based on either information
@@ -204,7 +235,6 @@ config IP_PNP_RARP
 #   bool '    IP: ARP support' CONFIG_IP_PNP_ARP               
 config NET_IPIP
        tristate "IP: tunneling"
-       depends on INET
        select INET_TUNNEL
        ---help---
          Tunneling means encapsulating data of one protocol type within
@@ -222,8 +252,6 @@ config NET_IPIP
 
 config NET_IPGRE
        tristate "IP: GRE tunnels over IP"
-       depends on INET
-       select XFRM
        help
          Tunneling means encapsulating data of one protocol type within
          another protocol and sending it over a channel that understands the
@@ -281,7 +309,7 @@ config IP_PIMSM_V2
 
 config ARPD
        bool "IP: ARP daemon support (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       depends on EXPERIMENTAL
        ---help---
          Normally, the kernel maintains an internal cache which maps IP
          addresses to hardware addresses on the local network, so that
@@ -306,7 +334,6 @@ config ARPD
 
 config SYN_COOKIES
        bool "IP: TCP syncookie support (disabled per default)"
-       depends on INET
        ---help---
          Normal TCP/IP networking is open to an attack known as "SYN
          flooding". This denial-of-service attack prevents legitimate remote
@@ -343,7 +370,6 @@ config SYN_COOKIES
 
 config INET_AH
        tristate "IP: AH transformation"
-       depends on INET
        select XFRM
        select CRYPTO
        select CRYPTO_HMAC
@@ -356,7 +382,6 @@ config INET_AH
 
 config INET_ESP
        tristate "IP: ESP transformation"
-       depends on INET
        select XFRM
        select CRYPTO
        select CRYPTO_HMAC
@@ -370,9 +395,8 @@ config INET_ESP
 
 config INET_IPCOMP
        tristate "IP: IPComp transformation"
-       depends on INET
        select XFRM
-       select INET_TUNNEL
+       select INET_XFRM_TUNNEL
        select CRYPTO
        select CRYPTO_DEFLATE
        ---help---
@@ -381,31 +405,139 @@ config INET_IPCOMP
          
          If unsure, say Y.
 
+config INET_XFRM_TUNNEL
+       tristate
+       select INET_TUNNEL
+       default n
+
 config INET_TUNNEL
-       tristate "IP: tunnel transformation"
-       depends on INET
-       select XFRM
+       tristate
+       default n
+
+config INET_DIAG
+       tristate "INET: socket monitoring interface"
+       default y
        ---help---
-         Support for generic IP tunnel transformation, which is required by
-         the IP tunneling module as well as tunnel mode IPComp.
+         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://developer.osdl.org/dev/iproute2>. 
          
          If unsure, say Y.
 
-config IP_TCPDIAG
-       tristate "IP: TCP socket monitoring interface"
-       depends on INET
+config INET_TCP_DIAG
+       depends on INET_DIAG
+       def_tristate INET_DIAG
+
+config 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 (BIC-TCP with new Reno as a fallback).
+
+         If unsure, say N.
+
+# TCP Reno is builtin (required as fallback)
+menu "TCP congestion control"
+       depends on TCP_CONG_ADVANCED
+
+config TCP_CONG_BIC
+       tristate "Binary Increase Congestion (BIC) control"
        default y
        ---help---
-         Support for TCP socket monitoring interface used by native Linux
-         tools such as ss. ss is included in iproute2, currently downloadable
-         at <http://developer.osdl.org/dev/iproute2>. If you want IPv6 support
-         and have selected IPv6 as a module, you need to build this as a
-         module too.
-         
-         If unsure, say Y.
+       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 m
+       ---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"
+       depends on EXPERIMENTAL
+       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 http://www.icir.org/floyd/hstcp.html
+
+config TCP_CONG_HYBLA
+       tristate "TCP-Hybla congestion control algorithm"
+       depends on EXPERIMENTAL
+       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, expecially when sharing a common bottleneck with normal
+       terrestrial connections.
+
+config TCP_CONG_VEGAS
+       tristate "TCP Vegas"
+       depends on EXPERIMENTAL
+       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_SCALABLE
+       tristate "Scalable TCP"
+       depends on EXPERIMENTAL
+       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-lce.eng.cam.ac.uk/~ctk21/scalable/
 
-config IP_TCPDIAG_IPV6
-       def_bool (IP_TCPDIAG=y && IPV6=y) || (IP_TCPDIAG=m && IPV6)
+endmenu
+
+config TCP_CONG_BIC
+       tristate
+       depends on !TCP_CONG_ADVANCED
+       default y
 
 source "net/ipv4/ipvs/Kconfig"