关于LVS HASH算法的一个问题

原贴:http://zh.linuxvirtualserver.org/node/326

关于LVS HASH算法的一个问题

LVS集群

 
http://zh.linuxvirtualserver.org/node/59
使用了如下的HASH算法:

inline unsigned ip_vs_hash_key(unsigned int key)
{
return (key * 2654435761UL) & IP_VS_TAB_MASK;
}

发现在使用中,仅仅是key的低位产生了作用

 for (i=0; i < 0xFF ; i++)
{
ip = (i << 10) + 0x82;
printf("Hello %x, key %x /n" , ip, ip_vs_hash_key(ip) );
}


输出结果是:
Hello 82, key 3e2
Hello 482, key 3e2
Hello 882, key 3e2
...
Hello 3f082, key 3e2
Hello 3f482, key 3e2
Hello 3f882, key 3e2

假如使用
(key* 2654435761UL) >>(32-MASK_N_BIT);
就不会有这个问题(取结果高位)

‹ LVS中realserver是不是都要指定一个网关呢?? 请问Persistent可不可以设置为永久? ›

这个想法不错,谢谢

这个想法不错,谢谢!:)

 

你可能感兴趣的:(关于LVS HASH算法的一个问题)