On Jun 11, 2007, at 07:34, Daniel J. Luke wrote:
On Jun 11, 2007, at 4:20 AM, Ryan Schmidt wrote:
I don't know if they do it by country or what, but I know there are databases (free ones, even) that will tell you what country an IP address is in, so that's a reasonable way to do it.
Just so you know, even the more expensive of these databases can generally only approach 80% accuracy (at best).
Oh, of course, but we are currently 0% accurate. Well, that's not true. But, we are currently accurate only at random. :) It is pure chance or luck if someone gets a mirror close to them. If by using an IP database we can increase that to 80% accuracy, that would be a huge win.
I've found that even my highly-obvious home Comcast connection is rarely reported correctly in them (besides the fact that none of them can handle 'odd' type connections where there's a tunnel involved, etc.)
... of course, this is one of those situations where a perfect solution will never happen, so we need to decide what is the best 'good enough' solution.
And for the 20% that aren't in the database, we can fall back on any number of schemes. We can take the first site in the list, like we do now. Or, to avoid hammering the first site, we could pick a random site.
For the most part, we probably want to avoid crossing oceans unless we have to. I would suggest that mirrors are organized by continent (North America, Europe, and Asia probably containing almost all of our mirrors). A conf file attribute could let the end user specify a continent (with North America being a reasonable default both for network topology and user density reasons).
It is unfortunately true that network topology doesn't always mirror geography... such that it may not be fastest to access a mirror in your next-closest country; there might be a fatter pipe to a more distant country that would be faster.