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