IP Upstream Hash

Igor Sysoev igor at sysoev.ru
Thu Jul 21 09:43:15 UTC 2011


On Wed, Jul 20, 2011 at 02:18:52PM -0700, Matthieu Tourne wrote:
> Hi all,
> 
> I was looking at the code in ngx_http_upstream_ip_hash_module.c
> And I'm not sure where the hashing algorithm for IPs is coming from,
> especially those lines :
> 
>             iphp->hash = 89;
> 
>             hash = (hash * 113 + iphp->addr[i]) % 6271;
> 
> Just wondering if those constants are arbitrary chosen, or if there is
> something there to guarantee a good distribution ?
> 
> If you have some links explaining this algorithm, it would be greatly
> appreciated!
> Also, how would you get a good distribution on IPv6. Maybe it would make
> sense to use murmur ?

This algorithm came from FastMail.fm. Murmur2 may be better, I'm going
to use it in upcoming upstream hash module which allows to hash any
expression.


-- 
Igor Sysoev



More information about the nginx-devel mailing list