|  | # | 
|  | # IP Virtual Server configuration | 
|  | # | 
|  | menu	"IP: Virtual Server Configuration" | 
|  | depends on INET && NETFILTER | 
|  |  | 
|  | config	IP_VS | 
|  | tristate "IP virtual server support (EXPERIMENTAL)" | 
|  | depends on INET && NETFILTER | 
|  | ---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. | 
|  |  | 
|  | config	IP_VS_DEBUG | 
|  | bool "IP virtual server debugging" | 
|  | depends on IP_VS | 
|  | ---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)" | 
|  | depends on IP_VS | 
|  | 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. | 
|  |  | 
|  | comment "IPVS transport protocol load balancing support" | 
|  | depends on IP_VS | 
|  |  | 
|  | config	IP_VS_PROTO_TCP | 
|  | bool "TCP load balancing support" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---help--- | 
|  | This option enables support for load balancing UDP transport | 
|  | protocol. Say Y if unsure. | 
|  |  | 
|  | config	IP_VS_PROTO_ESP | 
|  | bool "ESP load balancing support" | 
|  | depends on IP_VS | 
|  | ---help--- | 
|  | This option enables support for load balancing ESP (Encapsultion | 
|  | Security Payload) transport protocol. Say Y if unsure. | 
|  |  | 
|  | config	IP_VS_PROTO_AH | 
|  | bool "AH load balancing support" | 
|  | depends on IP_VS | 
|  | ---help--- | 
|  | This option enables support for load balancing AH (Authentication | 
|  | Header) transport protocol. Say Y if unsure. | 
|  |  | 
|  | comment "IPVS scheduler" | 
|  | depends on IP_VS | 
|  |  | 
|  | config	IP_VS_RR | 
|  | tristate "round-robin scheduling" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---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_LBLC | 
|  | tristate "locality-based least-connection scheduling" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---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" | 
|  | depends on IP_VS | 
|  | ---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 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" | 
|  | depends on IP_VS | 
|  | ---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 application helper' | 
|  | depends on IP_VS | 
|  |  | 
|  | config	IP_VS_FTP | 
|  | tristate "FTP protocol helper" | 
|  | depends on IP_VS && IP_VS_PROTO_TCP | 
|  | ---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. | 
|  |  | 
|  | endmenu |