Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / net / netfilter / ipvs / Kconfig
diff --git a/kernel/net/netfilter/ipvs/Kconfig b/kernel/net/netfilter/ipvs/Kconfig
new file mode 100644 (file)
index 0000000..3b6929d
--- /dev/null
@@ -0,0 +1,291 @@
+#
+# IP Virtual Server configuration
+#
+menuconfig IP_VS
+       tristate "IP virtual server support"
+       depends on NET && INET && NETFILTER
+       depends on (NF_CONNTRACK || NF_CONNTRACK=n)
+       ---help---
+         IP Virtual Server support will let you build a high-performance
+         virtual server based on cluster of two or more real servers. This
+         option must be enabled for at least one of the clustered computers
+         that will take care of intercepting incoming connections to a
+         single IP address and scheduling them to real servers.
+
+         Three request dispatching techniques are implemented, they are
+         virtual server via NAT, virtual server via tunneling and virtual
+         server via direct routing. The several scheduling algorithms can
+         be used to choose which server the connection is directed to,
+         thus load balancing can be achieved among the servers.  For more
+         information and its administration program, please visit the
+         following URL: <http://www.linuxvirtualserver.org/>.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+if IP_VS
+
+config IP_VS_IPV6
+       bool "IPv6 support for IPVS"
+       depends on IPV6 = y || IP_VS = IPV6
+       select IP6_NF_IPTABLES
+       ---help---
+         Add IPv6 support to IPVS.
+
+         Say Y if unsure.
+
+config IP_VS_DEBUG
+       bool "IP virtual server debugging"
+       ---help---
+         Say Y here if you want to get additional messages useful in
+         debugging the IP virtual server code. You can change the debug
+         level in /proc/sys/net/ipv4/vs/debug_level
+
+config IP_VS_TAB_BITS
+       int "IPVS connection table size (the Nth power of 2)"
+       range 8 20
+       default 12
+       ---help---
+         The IPVS connection hash table uses the chaining scheme to handle
+         hash collisions. Using a big IPVS connection hash table will greatly
+         reduce conflicts when there are hundreds of thousands of connections
+         in the hash table.
+
+         Note the table size must be power of 2. The table size will be the
+         value of 2 to the your input number power. The number to choose is
+         from 8 to 20, the default number is 12, which means the table size
+         is 4096. Don't input the number too small, otherwise you will lose
+         performance on it. You can adapt the table size yourself, according
+         to your virtual server application. It is good to set the table size
+         not far less than the number of connections per second multiplying
+         average lasting time of connection in the table.  For example, your
+         virtual server gets 200 connections per second, the connection lasts
+         for 200 seconds in average in the connection table, the table size
+         should be not far less than 200x200, it is good to set the table
+         size 32768 (2**15).
+
+         Another note that each connection occupies 128 bytes effectively and
+         each hash entry uses 8 bytes, so you can estimate how much memory is
+         needed for your box.
+
+         You can overwrite this number setting conn_tab_bits module parameter
+         or by appending ip_vs.conn_tab_bits=? to the kernel command line
+         if IP VS was compiled built-in.
+
+comment "IPVS transport protocol load balancing support"
+
+config IP_VS_PROTO_TCP
+       bool "TCP load balancing support"
+       ---help---
+         This option enables support for load balancing TCP transport
+         protocol. Say Y if unsure.
+
+config IP_VS_PROTO_UDP
+       bool "UDP load balancing support"
+       ---help---
+         This option enables support for load balancing UDP transport
+         protocol. Say Y if unsure.
+
+config IP_VS_PROTO_AH_ESP
+       def_bool IP_VS_PROTO_ESP || IP_VS_PROTO_AH
+
+config IP_VS_PROTO_ESP
+       bool "ESP load balancing support"
+       ---help---
+         This option enables support for load balancing ESP (Encapsulation
+         Security Payload) transport protocol. Say Y if unsure.
+
+config IP_VS_PROTO_AH
+       bool "AH load balancing support"
+       ---help---
+         This option enables support for load balancing AH (Authentication
+         Header) transport protocol. Say Y if unsure.
+
+config  IP_VS_PROTO_SCTP
+       bool "SCTP load balancing support"
+       select LIBCRC32C
+       ---help---
+         This option enables support for load balancing SCTP transport
+         protocol. Say Y if unsure.
+
+comment "IPVS scheduler"
+
+config IP_VS_RR
+       tristate "round-robin scheduling"
+       ---help---
+         The robin-robin scheduling algorithm simply directs network
+         connections to different real servers in a round-robin manner.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+config IP_VS_WRR
+       tristate "weighted round-robin scheduling"
+       ---help---
+         The weighted robin-robin scheduling algorithm directs network
+         connections to different real servers based on server weights
+         in a round-robin manner. Servers with higher weights receive
+         new connections first than those with less weights, and servers
+         with higher weights get more connections than those with less
+         weights and servers with equal weights get equal connections.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_LC
+        tristate "least-connection scheduling"
+       ---help---
+         The least-connection scheduling algorithm directs network
+         connections to the server with the least number of active 
+         connections.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_WLC
+        tristate "weighted least-connection scheduling"
+       ---help---
+         The weighted least-connection scheduling algorithm directs network
+         connections to the server with the least active connections
+         normalized by the server weight.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config  IP_VS_FO
+               tristate "weighted failover scheduling"
+       ---help---
+         The weighted failover scheduling algorithm directs network
+         connections to the server with the highest weight that is
+         currently available.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_LBLC
+       tristate "locality-based least-connection scheduling"
+       ---help---
+         The locality-based least-connection scheduling algorithm is for
+         destination IP load balancing. It is usually used in cache cluster.
+         This algorithm usually directs packet destined for an IP address to
+         its server if the server is alive and under load. If the server is
+         overloaded (its active connection numbers is larger than its weight)
+         and there is a server in its half load, then allocate the weighted
+         least-connection server to this IP address.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config  IP_VS_LBLCR
+       tristate "locality-based least-connection with replication scheduling"
+       ---help---
+         The locality-based least-connection with replication scheduling
+         algorithm is also for destination IP load balancing. It is 
+         usually used in cache cluster. It differs from the LBLC scheduling
+         as follows: the load balancer maintains mappings from a target
+         to a set of server nodes that can serve the target. Requests for
+         a target are assigned to the least-connection node in the target's
+         server set. If all the node in the server set are over loaded,
+         it picks up a least-connection node in the cluster and adds it
+         in the sever set for the target. If the server set has not been
+         modified for the specified time, the most loaded node is removed
+         from the server set, in order to avoid high degree of replication.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_DH
+       tristate "destination hashing scheduling"
+       ---help---
+         The destination hashing scheduling algorithm assigns network
+         connections to the servers through looking up a statically assigned
+         hash table by their destination IP addresses.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_SH
+       tristate "source hashing scheduling"
+       ---help---
+         The source hashing scheduling algorithm assigns network
+         connections to the servers through looking up a statically assigned
+         hash table by their source IP addresses.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_SED
+       tristate "shortest expected delay scheduling"
+       ---help---
+         The shortest expected delay scheduling algorithm assigns network
+         connections to the server with the shortest expected delay. The 
+         expected delay that the job will experience is (Ci + 1) / Ui if 
+         sent to the ith server, in which Ci is the number of connections
+         on the ith server and Ui is the fixed service rate (weight)
+         of the ith server.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_NQ
+       tristate "never queue scheduling"
+       ---help---
+         The never queue scheduling algorithm adopts a two-speed model.
+         When there is an idle server available, the job will be sent to
+         the idle server, instead of waiting for a fast one. When there
+         is no idle server available, the job will be sent to the server
+         that minimize its expected delay (The Shortest Expected Delay
+         scheduling algorithm).
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+comment 'IPVS SH scheduler'
+
+config IP_VS_SH_TAB_BITS
+       int "IPVS source hashing table size (the Nth power of 2)"
+       range 4 20
+       default 8
+       ---help---
+         The source hashing scheduler maps source IPs to destinations
+         stored in a hash table. This table is tiled by each destination
+         until all slots in the table are filled. When using weights to
+         allow destinations to receive more connections, the table is
+         tiled an amount proportional to the weights specified. The table
+         needs to be large enough to effectively fit all the destinations
+         multiplied by their respective weights.
+
+comment 'IPVS application helper'
+
+config IP_VS_FTP
+       tristate "FTP protocol helper"
+       depends on IP_VS_PROTO_TCP && NF_CONNTRACK && NF_NAT && \
+               NF_CONNTRACK_FTP
+       select IP_VS_NFCT
+       ---help---
+         FTP is a protocol that transfers IP address and/or port number in
+         the payload. In the virtual server via Network Address Translation,
+         the IP address and port number of real servers cannot be sent to
+         clients in ftp connections directly, so FTP protocol helper is
+         required for tracking the connection and mangling it back to that of
+         virtual service.
+
+         If you want to compile it in kernel, say Y. To compile it as a
+         module, choose M here. If unsure, say N.
+
+config IP_VS_NFCT
+       bool "Netfilter connection tracking"
+       depends on NF_CONNTRACK
+       ---help---
+         The Netfilter connection tracking support allows the IPVS
+         connection state to be exported to the Netfilter framework
+         for filtering purposes.
+
+config IP_VS_PE_SIP
+       tristate "SIP persistence engine"
+        depends on IP_VS_PROTO_UDP
+       depends on NF_CONNTRACK_SIP
+       ---help---
+         Allow persistence based on the SIP Call-ID
+
+endif # IP_VS