Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.34-rc5 253 lines 9.8 kB view raw
1# 2# IP Virtual Server configuration 3# 4menuconfig IP_VS 5 tristate "IP virtual server support" 6 depends on NET && INET && NETFILTER 7 ---help--- 8 IP Virtual Server support will let you build a high-performance 9 virtual server based on cluster of two or more real servers. This 10 option must be enabled for at least one of the clustered computers 11 that will take care of intercepting incoming connections to a 12 single IP address and scheduling them to real servers. 13 14 Three request dispatching techniques are implemented, they are 15 virtual server via NAT, virtual server via tunneling and virtual 16 server via direct routing. The several scheduling algorithms can 17 be used to choose which server the connection is directed to, 18 thus load balancing can be achieved among the servers. For more 19 information and its administration program, please visit the 20 following URL: <http://www.linuxvirtualserver.org/>. 21 22 If you want to compile it in kernel, say Y. To compile it as a 23 module, choose M here. If unsure, say N. 24 25if IP_VS 26 27config IP_VS_IPV6 28 bool "IPv6 support for IPVS" 29 depends on EXPERIMENTAL && (IPV6 = y || IP_VS = IPV6) 30 ---help--- 31 Add IPv6 support to IPVS. This is incomplete and might be dangerous. 32 33 See http://www.mindbasket.com/ipvs for more information. 34 35 Say N if unsure. 36 37config IP_VS_DEBUG 38 bool "IP virtual server debugging" 39 ---help--- 40 Say Y here if you want to get additional messages useful in 41 debugging the IP virtual server code. You can change the debug 42 level in /proc/sys/net/ipv4/vs/debug_level 43 44config IP_VS_TAB_BITS 45 int "IPVS connection table size (the Nth power of 2)" 46 range 8 20 47 default 12 48 ---help--- 49 The IPVS connection hash table uses the chaining scheme to handle 50 hash collisions. Using a big IPVS connection hash table will greatly 51 reduce conflicts when there are hundreds of thousands of connections 52 in the hash table. 53 54 Note the table size must be power of 2. The table size will be the 55 value of 2 to the your input number power. The number to choose is 56 from 8 to 20, the default number is 12, which means the table size 57 is 4096. Don't input the number too small, otherwise you will lose 58 performance on it. You can adapt the table size yourself, according 59 to your virtual server application. It is good to set the table size 60 not far less than the number of connections per second multiplying 61 average lasting time of connection in the table. For example, your 62 virtual server gets 200 connections per second, the connection lasts 63 for 200 seconds in average in the connection table, the table size 64 should be not far less than 200x200, it is good to set the table 65 size 32768 (2**15). 66 67 Another note that each connection occupies 128 bytes effectively and 68 each hash entry uses 8 bytes, so you can estimate how much memory is 69 needed for your box. 70 71 You can overwrite this number setting conn_tab_bits module parameter 72 or by appending ip_vs.conn_tab_bits=? to the kernel command line 73 if IP VS was compiled built-in. 74 75comment "IPVS transport protocol load balancing support" 76 77config IP_VS_PROTO_TCP 78 bool "TCP load balancing support" 79 ---help--- 80 This option enables support for load balancing TCP transport 81 protocol. Say Y if unsure. 82 83config IP_VS_PROTO_UDP 84 bool "UDP load balancing support" 85 ---help--- 86 This option enables support for load balancing UDP transport 87 protocol. Say Y if unsure. 88 89config IP_VS_PROTO_AH_ESP 90 bool 91 depends on UNDEFINED 92 93config IP_VS_PROTO_ESP 94 bool "ESP load balancing support" 95 select IP_VS_PROTO_AH_ESP 96 ---help--- 97 This option enables support for load balancing ESP (Encapsulation 98 Security Payload) transport protocol. Say Y if unsure. 99 100config IP_VS_PROTO_AH 101 bool "AH load balancing support" 102 select IP_VS_PROTO_AH_ESP 103 ---help--- 104 This option enables support for load balancing AH (Authentication 105 Header) transport protocol. Say Y if unsure. 106 107config IP_VS_PROTO_SCTP 108 bool "SCTP load balancing support" 109 select LIBCRC32C 110 ---help--- 111 This option enables support for load balancing SCTP transport 112 protocol. Say Y if unsure. 113 114comment "IPVS scheduler" 115 116config IP_VS_RR 117 tristate "round-robin scheduling" 118 ---help--- 119 The robin-robin scheduling algorithm simply directs network 120 connections to different real servers in a round-robin manner. 121 122 If you want to compile it in kernel, say Y. To compile it as a 123 module, choose M here. If unsure, say N. 124 125config IP_VS_WRR 126 tristate "weighted round-robin scheduling" 127 select GCD 128 ---help--- 129 The weighted robin-robin scheduling algorithm directs network 130 connections to different real servers based on server weights 131 in a round-robin manner. Servers with higher weights receive 132 new connections first than those with less weights, and servers 133 with higher weights get more connections than those with less 134 weights and servers with equal weights get equal connections. 135 136 If you want to compile it in kernel, say Y. To compile it as a 137 module, choose M here. If unsure, say N. 138 139config IP_VS_LC 140 tristate "least-connection scheduling" 141 ---help--- 142 The least-connection scheduling algorithm directs network 143 connections to the server with the least number of active 144 connections. 145 146 If you want to compile it in kernel, say Y. To compile it as a 147 module, choose M here. If unsure, say N. 148 149config IP_VS_WLC 150 tristate "weighted least-connection scheduling" 151 ---help--- 152 The weighted least-connection scheduling algorithm directs network 153 connections to the server with the least active connections 154 normalized by the server weight. 155 156 If you want to compile it in kernel, say Y. To compile it as a 157 module, choose M here. If unsure, say N. 158 159config IP_VS_LBLC 160 tristate "locality-based least-connection scheduling" 161 ---help--- 162 The locality-based least-connection scheduling algorithm is for 163 destination IP load balancing. It is usually used in cache cluster. 164 This algorithm usually directs packet destined for an IP address to 165 its server if the server is alive and under load. If the server is 166 overloaded (its active connection numbers is larger than its weight) 167 and there is a server in its half load, then allocate the weighted 168 least-connection server to this IP address. 169 170 If you want to compile it in kernel, say Y. To compile it as a 171 module, choose M here. If unsure, say N. 172 173config IP_VS_LBLCR 174 tristate "locality-based least-connection with replication scheduling" 175 ---help--- 176 The locality-based least-connection with replication scheduling 177 algorithm is also for destination IP load balancing. It is 178 usually used in cache cluster. It differs from the LBLC scheduling 179 as follows: the load balancer maintains mappings from a target 180 to a set of server nodes that can serve the target. Requests for 181 a target are assigned to the least-connection node in the target's 182 server set. If all the node in the server set are over loaded, 183 it picks up a least-connection node in the cluster and adds it 184 in the sever set for the target. If the server set has not been 185 modified for the specified time, the most loaded node is removed 186 from the server set, in order to avoid high degree of replication. 187 188 If you want to compile it in kernel, say Y. To compile it as a 189 module, choose M here. If unsure, say N. 190 191config IP_VS_DH 192 tristate "destination hashing scheduling" 193 ---help--- 194 The destination hashing scheduling algorithm assigns network 195 connections to the servers through looking up a statically assigned 196 hash table by their destination IP addresses. 197 198 If you want to compile it in kernel, say Y. To compile it as a 199 module, choose M here. If unsure, say N. 200 201config IP_VS_SH 202 tristate "source hashing scheduling" 203 ---help--- 204 The source hashing scheduling algorithm assigns network 205 connections to the servers through looking up a statically assigned 206 hash table by their source IP addresses. 207 208 If you want to compile it in kernel, say Y. To compile it as a 209 module, choose M here. If unsure, say N. 210 211config IP_VS_SED 212 tristate "shortest expected delay scheduling" 213 ---help--- 214 The shortest expected delay scheduling algorithm assigns network 215 connections to the server with the shortest expected delay. The 216 expected delay that the job will experience is (Ci + 1) / Ui if 217 sent to the ith server, in which Ci is the number of connections 218 on the ith server and Ui is the fixed service rate (weight) 219 of the ith server. 220 221 If you want to compile it in kernel, say Y. To compile it as a 222 module, choose M here. If unsure, say N. 223 224config IP_VS_NQ 225 tristate "never queue scheduling" 226 ---help--- 227 The never queue scheduling algorithm adopts a two-speed model. 228 When there is an idle server available, the job will be sent to 229 the idle server, instead of waiting for a fast one. When there 230 is no idle server available, the job will be sent to the server 231 that minimize its expected delay (The Shortest Expected Delay 232 scheduling algorithm). 233 234 If you want to compile it in kernel, say Y. To compile it as a 235 module, choose M here. If unsure, say N. 236 237comment 'IPVS application helper' 238 239config IP_VS_FTP 240 tristate "FTP protocol helper" 241 depends on IP_VS_PROTO_TCP 242 ---help--- 243 FTP is a protocol that transfers IP address and/or port number in 244 the payload. In the virtual server via Network Address Translation, 245 the IP address and port number of real servers cannot be sent to 246 clients in ftp connections directly, so FTP protocol helper is 247 required for tracking the connection and mangling it back to that of 248 virtual service. 249 250 If you want to compile it in kernel, say Y. To compile it as a 251 module, choose M here. If unsure, say N. 252 253endif # IP_VS