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>