Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Jan 2000 13:27:31 -0600
From:      "Damon M. Conway" <damon@chiba.3jane.net>
To:        Wes Peters <wes@softweyr.com>
Cc:        Amancio Hasty <hasty@rah.star-gate.com>, current@FreeBSD.ORG
Subject:   Re: Please help spread the CVSup mirror load more evenly 
Message-ID:  <200001221927.NAA14854@chiba.3jane.net>
In-Reply-To: <388914E4.B508D919@softweyr.com> 
References:  <200001212346.PAA22521@rah.star-gate.com> <388914E4.B508D919@softweyr.com>

next in thread | previous in thread | raw e-mail | index | archive | help
 Wes Peters wrote:
>Amancio Hasty wrote:
>> 
>> > > My only point is that the first response to a problem isn't to necessarily
>> > > pull out emacs and start hacking away on code.
>> >
>> > Yea, it is easier to do in a regular zone file then to implement the
>> > network measurement logic into cvsup.
>> 
>> Yes, it is a rather cool idea to rotate on the cvs servers without
>> respect to latency, work load  or rate of service response from
>> the server.
>
>Thank you.  I was beginning to wonder if I am the only one here who thinks
>blind round-robin DNS is a bad hack.

nope...i was keeping my mouth shut.

there are several parts to "load balancing", and that isn't necessarily
what we are trying to accomplish here.  what is being discussed is a method
for determining the best performing cvsup server for a given client.  to do
this you must check for the following things:

1.  network performance from the client to a server
	- what is our latency?
	- what is our packet loss?
	- hop counts are largely irrelevant
	- icmp could be used to implement this as a start, but due to isps
	  rate limiting icmp at their routers it is not totally reliable.
	  ideally, you will have a tcp layer tansaction that can determine latency
	  and packet loss.
	(NOTE: this has nothing to do with "balancing" network paths as was
		mentioned earlier.  BGP handles that.  your path to a given server
		from a given client will always be the same unless BGP decides 
		otherwise.)

2.  ability of a server to hand out data in a timely manner
	- what is the server's cpu load?
	- what is the server's memory capacity?
	- how many other clients is this server serving?
	- how quickly does it deliver a test load of data?
	this is important because while you may be able to reach this server
	quickly, it may not be able to hand out data in a timely manner.

i would recommend writing a verification routine into the cvsup server and
client that finds this info.  it should look someting like this:

    client <------> server
	What is my network performance?
	Is it within tolerance?

	client -------> server
	What is your ability to serve data to me?

	client <------- server
	Sure, I can send you data at X tolerance level.

	client <------> server
	Test pattern...

basically, a client can go through a list until it reaches a server within
it's tolerance.  if it doesn't find a server within tolerance, then it will
take the one that is closest to tolerance levels.

part one is pretty trivial to implement using icmp.  part 2 is more
interesting.  unfortunatly, i'm not much of a coder and i wouldn't know
where to start or i'd do it myself.  word of advice tho, don't use the ping
utility to do the icmp measurements.  due to the interactive nature of it,
it has a lot of extraneous junk that isn't relevant, and can skew data.

damon


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001221927.NAA14854>