I suspect that all this is only part of the issue, and that there may very well be bandwidth issues at Apple's sites (which is why Friday and Saturday nights are always slowest).
Let me try to explain how the Akami type of architecture works. Remember - the iTunes client 'pulls' information, the server doesn't push it (the iTunes servers don't have a clue where a client is located).
For right now, let's ignore caching.
When iTunes on your machine wants to download something, it triggers a DNS lookup for the remote server. Let's say that the name is something like 'itunesdownload.apple.com'. That query goes to whatever DNS server you have selected - for now, let's say that's a local server from your ISP. That DNS server is fed information about what IP address to return to that server name from the next DNS server up the chain, until a server is found with an IP address mapped to that particular name.
In this case, Akami or one of their bretheren sits between the local DNS servers and the authoritative apple.com nameserver. That Akami server will return an IP address based on the then-best route between the requesting DNS client and one of the several duplicate itunes content servers scattered around the country. The 'best route' is determined by Akami's algorithms using multiple criteria, one of which is the location of the DNS server making the request - location is both roughly physcial (IP addresses don't port around the country like phone numbers do), and topological (network location). That determines the latency to the server, which (combined with dynamic monitoring of server load) is the secret sauce that makes video downloads and streaming video work. All of this is dynamic and can (and does) change on a regular basis. Any of the big content streaming sites (ESPN, YouTube, etc) all work the same way. itunesdownload.apple.com does not have a single IP address - it has several (all at the same time), but the one that appears to your machine is dependent on the particular chain of DNS lookups triggered from your client, which changes over time.
Caching introduces delays into how often the name/ip mapping is updated. That's why rebooting your computer (or manually clearing the DNS cache) can help improve speeds - but only if your router isn't also caching DNS lookups (Airport's can do that, for example). So in periods when the network and server loads are changing rapidly (i.e. friday night when everyone's downloading a movie at the same time), you may be hitting a less than optimal IP address.
So when someone uses a remote DNS server - let's say a Boston Comcast user decides to put in a PacBell DNS server, when the Pacbell DNS server is queried, it will return an IP address that is best for a west coast PacBell user. The DNS lookup is based on the DNS server making the request, not the client. Thus the client in Boston will route across the country, to a sub-optimal web/download server (which has no clue where the client is located).
Can this be fixed? Maybe - Apple could drop the Akami dynamic routing and do application based network load balancing (i.e. iTunes would have to ping each of the various download servers in order to figure out which one to connect to). That would bypass the caching problem, but introduce other issues.
In any case, it's definitely an issue, and Apple does have a UX problem that they need to solve.
And just one more note: I just turned on Little Snitch. iTunes appears to be downloading from www.ign.com. nslookup gives:
www.ign.com | canonical name = www.ign.com.edgesuite.net. |
www.ign.com.edgesuite.net | canonical name = a1005.g.akamai.net. |
Name: | a1005.g.akamai.net |
Address: 204.0.87.138
Address: 204.0.87.139
So at least part of this is definitely tied up in Akamai (I've been spelling it wrong - oops) - DNS can absolutely have an impact, both the server chosen, and the caching timeouts.