Jimmy (Jimbo) Wales wrote:
I think there
is a misunderstanding because the European proxies
will mirror the WHOLE of the Wikimedia projects: all projects in all
languages, not only some European languages. And because many
European people also read and contribute to English projects, even
if English is not their mother tongue.
That sounds excellent, but isn't that technically difficult? Maybe
I've missed some discussion of how to do this.
It's easy to fix it so that fr, es, de, are all routed through the
European squid proxies: we just point the dns entries at the new ip
numbers for the French squid cluster, no problem.
It's much harder (right?) to identify where a user is coming from and
route them through the proxy that's best for them. This is what
Akamai and people like this charge big bucks for doing.
Or, is there a free (or cheap) way to approximate that?
--Jimbo
== IP --> location mapping ==
The key thing here is that we don't need to be very accurate, providing
we are reasonably consistent.
The simplest way to handle things is to assume that all RIPE-registered
IP addresses are somewhere in Europe, and all other addresses (ARIN,
APNIC,. LACNIC...) are somewhere else "nearer" the US. Then we can use
Wikimedia's own DNS servers to serve different lists of server IP
addresses depending on the source network of the request.
IANA allocate /8 blocks of IP addresses to the regional registries, and
maintain a helpful up-to-date machine-readable list at
http://www.iana.org/assignments/ipv4-address-space
That will probably get you 80%-90% of the goodness of a commercial solution.
For another alternative, you might want to look at
http://countries.nerd.dk/ which seems to be taken from more fine-grained
inspecting of registry data.
== Serving the DNS responses ==
I'm still not sure about what the best way is to do this. Running a
couple of instances of BIND on different ports on the authoritative
servers for
wikipedia.org and doing reverse-NAT based on source
addresses for packets that arrive on port 53 is a crude way of doing
things, but it's the first that comes to mind.
Another is to hack an existing small DNS server implementation: unless
someone has done it already?
-- Neil