Subject: A clarification on load balancing (Failover)

From: [email-masked]
Date: Tue, 23 Nov 1999 01:16:29 -0500 (EST)

Can anyone explain me as to why 32 bytes Hash Bucket Assignment option has
been used for load balancing. Instead we could have very well given the
starting and ending limits for each failover server as Pearson's hash
algorithm provides a distributed value between 0 & 255 & then we could
have checked if the hashed value falls between the defined limits.

Thanks & Regards,
Venkat.

---

From: Bernie Volz <[email-masked]>
Date: Tue, 23 Nov 1999 09:24:18 -0500 (EST)

>From: [email-masked]
>Subject: A clarification on load balancing (Failover)
>

What's wrong in allowing a discontinous set of hash buckets? We felt
that this was a much more generic way to handle it.

As far as any user interface/configuration issues, there is no reason
why a user could not enter a percentage, a begin/end range, individual
bucket numbers, whatever you want.

As far as the protocol goes, what are we taking about? Sending 32 bytes
vs 2 (one for start/one for end)? Who cares - this is only sent once
at connection initiation time and the extra 30 bytes are soon lost in
the noise.

Also, any server will likely turn this into a 32-byte (256-bit) mask
anyway to easily determine whether to respond or not. The code in
either case is likely the same in terms of "cost":

	if ((bucket# >= low-bucket) && (bucket# <= high-bucket))
	{ respond }
	else
	{ ignore }
vs:
	if ((hsa[bucket# >> 3] & (1 >> (bucket# & 7)) != 0)
	{ respond }
	else
	{ ignore }

And, consider how easy it is to turn one HSA into a second, just
complement the 32-bytes. Try doing that as easily with a low/high
range (note that the other server potentially has TWO ranges since
it has 0 to low, high to 255). So the above checking code works
only for one server.

If you wanted to simply things, you could send a single byte which
says the point at which to split the range.

When you consider the greater flexibility of the 32-byte buffer,
why not use it.

- Bernie Volz
  Process Software