LVS 源地址散列调度是否是将源IP的报文固定转向某个目的SERVER?

希望固定将源IP的报文一直转给同一个服务器(不考虑服务器超载或连接异常),即使重新启动后也是这样。 源地址散列调度获取服务器的HASHKEY算法是固定的,这样是否只要服务器节点个数不增加,源IP每次都是转给固定一个服务器节点?

//LVS 源地址散列HASH算法
static inline unsigned hashkey(unsigned int dest_ip)
{
return (dest_ip* 2654435761UL) & HASH_TAB_MASK;
}
其中,2654435761UL是2到2^32 (4294967296)间接近于黄金分割的素数,
(sqrt(5) - 1) / 2 = 0.618033989
2654435761 / 4294967296 = 0.618033987

这里有几个疑问:
1、 HASH_TAB_MASK 是否与服务器节点个数有关? 这个值是怎么来的。
2、LVS可以配置HASH表的大小,针对源地址散列调度方式,是否可以一一指定源IP与服务器的关系, 我目前没有找到。
3、源地址散列调度有哪几种情况会引起源IP与服务器对应关系重新变化?

Forums:

可以使用persistent timeout,根据源地址会话保持,有超时机制。