Ask HN: Why isn't a content addressable cache built into the Internet?
The idea is that there should be a content-addressable request protocol. By presenting a (20 byte) hash the server responds with a chunk of data (say, 2M in size) which is associate with that hash. If a publisher (NetFlix) were to offer their content using this protocol, they would transmit to each authorized viewer, a list of 500 hashes for a 1 GB movie (total size of hash list - 10K). The client then requests each chunk by hash key in order to stream a movie.
Any ISP (Comcast, Level 3) seeing this protocol coming over their network, realizes that they can service a chunk request by returning the cached data, instead of forwarding it upstream to the source to fetch it over and over again. Routers could incorporate the protocol into their stack, so they can short-circuit high volume chunk requests out of a local cache (from several gigabytes to terrabytes). Once an ISP has the chunk data, they can serve it 1,000 times without requesting it from the origin server. They can manage their cache purely based on demand for each chunk.
With this protocol widely in place, I think it would be possible for 100M households to simultaneously watch a movie when it becomes available for download. I don't think that's possible using the current Internet protocols and CDN's.
Would this not be far superior for the network to transparently handle caching this way, rather than the messy system of CDN's we have today?
Does copyright law or the DMCA make it impossible to operate a system like this?
12 comments
[ 3.7 ms ] story [ 27.1 ms ] threadhttp://www.quora.com/Why-isnt-a-content-addressable-cache-bu...
IIRC the DMCA has an explicit exemption for caches.
To get ISP caches deployed, you have to convince ISPs that they'll save money. CDNs actually work against you here because they are either free or in some cases paying ISPs, and if an ISP allows CDNs to get close to its POPs then CDNs are just as efficient as ISP-operated caches.
1. ClientA is authorized with video service. 2. ClientA gets 50mb of hashes to buffer 3. ClientA starts downloading hashes sequentially, requesting more hashes from the service as the queue is emptied. 4. ClientB is authorized with the video service. 5. ClientB requests same resource and gets same list of hashes. 6. ISP can cache the hashes for 5 minutes and get some savings for popular content.
I think this would be a very good solution for live broadcast where you're looking at a huge number of people requesting the same content, but for VOD it would have limited return.
Perhaps limiting the cache lifetimes would give some legal protection to network operators. Nobody is sending take-down notices for network caches today, are they? I would love to see this protocol have some legal safe harbor - perhaps based on a limited (24 hour) TTL before requiring refreshing the cache from source (which could just be a "ping" w/o retransmitting the whole chunk).
Note that Bittorrent is at least twice as inefficient as this scheme - every peer request requires the content go "up" and then "down" to the peer - through several intermediate hops.
This scheme, the data travels along the same path as the original content - it just doesn't ask for the same copy of the content over and over again from the source.
Too hard to work out what should be cached. Should BBC send the latest episode of Eastenders, Hustle, Tudors etc to every ISP before it's up for download? (Yes) Should Youtube try to guess which of its popular videos will be in demand next week? (No) Should Steam send out its new games? (Yes) You have to pick services where there aren't too many options, the iPlayer and Steam together have less than 2k items, and have a fairly predictable future demand.
That's the beauty of a system like this is that is self-optimizes w/o a complex source-to-edge protocol.