netfilter: ipvs: Add configurations of Maglev hashing
authorInju Song <inju.song@navercorp.com>
Tue, 27 Mar 2018 14:15:54 +0000 (23:15 +0900)
committerSimon Horman <horms@verge.net.au>
Mon, 9 Apr 2018 07:11:18 +0000 (10:11 +0300)
To build the maglev hashing scheduler, add some configuration
to Kconfig and Makefile.

 - The compile configurations of MH are added to the Kconfig.

 - The MH build rule is added to the Makefile.

Signed-off-by: Inju Song <inju.song@navercorp.com>
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
net/netfilter/ipvs/Kconfig
net/netfilter/ipvs/Makefile

index b32fb0dbe237dcffb0a979b8c270c18d9f56e449..05dc1b77e466f4d556037b8bb6464c151ccb89a6 100644 (file)
@@ -225,6 +225,25 @@ config     IP_VS_SH
          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_MH
+       tristate "maglev hashing scheduling"
+       ---help---
+         The maglev consistent hashing scheduling algorithm provides the
+         Google's Maglev hashing algorithm as a IPVS scheduler. It assigns
+         network connections to the servers through looking up a statically
+         assigned special hash table called the lookup table. Maglev hashing
+         is to assign a preference list of all the lookup table positions
+         to each destination.
+
+         Through this operation, The maglev hashing gives an almost equal
+         share of the lookup table to each of the destinations and provides
+         minimal disruption by using the lookup table. When the set of
+         destinations changes, a connection will likely be sent to the same
+         destination as it was before.
+
+         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---
@@ -266,6 +285,24 @@ config IP_VS_SH_TAB_BITS
          needs to be large enough to effectively fit all the destinations
          multiplied by their respective weights.
 
+comment 'IPVS MH scheduler'
+
+config IP_VS_MH_TAB_INDEX
+       int "IPVS maglev hashing table index of size (the prime numbers)"
+       range 8 17
+       default 12
+       ---help---
+         The maglev hashing scheduler maps source IPs to destinations
+         stored in a hash table. This table is assigned by a preference
+         list of the positions to each destination until all slots in
+         the table are filled. The index determines the prime for size of
+         the table as 251, 509, 1021, 2039, 4093, 8191, 16381, 32749,
+         65521 or 131071. When using weights to allow destinations to
+         receive more connections, the table is assigned 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
index c552993fa4b9181e68e7d9680babec0462288719..bfce2677fda2610b681effae44d27b465b64795a 100644 (file)
@@ -33,6 +33,7 @@ obj-$(CONFIG_IP_VS_LBLC) += ip_vs_lblc.o
 obj-$(CONFIG_IP_VS_LBLCR) += ip_vs_lblcr.o
 obj-$(CONFIG_IP_VS_DH) += ip_vs_dh.o
 obj-$(CONFIG_IP_VS_SH) += ip_vs_sh.o
+obj-$(CONFIG_IP_VS_MH) += ip_vs_mh.o
 obj-$(CONFIG_IP_VS_SED) += ip_vs_sed.o
 obj-$(CONFIG_IP_VS_NQ) += ip_vs_nq.o