Here is the alrgorithm from the code
value = *(uint32_t *)p;
fvalue[0] = value;
fvalue[1] = 0;
/* reverse the bytes and stick it into fvalue[1] */
<...>
value = Crc32( (uint8_t *)(fvalue), 8 );
value = value % numServices;
This should provide equal loadbalancing over a large number of ip.
Not sure for small subnets.
You can use roundrobin with sticky srcip.
Gilles.