Content distribution networks (CDNs) consist of caches that are distributed across the network infrastructure. These caches are typically arranged in hierarchies that follow the underlying network topology. Each cache typically comprises a network element or node having associated with it a mass storage device for storing content. Each cache only serves users that are directly attached to the cache; that is, users that are located in the distribution hierachy below the cache. The cooperation between caches is largely limited to the exchange of traffic between parent and sibling caches. In this architecture, all caches at the same level in the hierachy largely have the same content. Once they receive a request, they can either serve the requested content directly if stored in the cache (i.e., a cache hit), or if the content is not stored in the cache (i.e., a cache miss), forward the request to a parent cache.
With a flattening of the underlying network infrastructure and the ability to reach into a content distribution hierachy via IP addressing, it is possible for a cache to retrieve content from other caches in the content distribution network. That is, a child cache can request an item from a cache other than its parent cache if the child cache does not have a copy of the requested content object or title stored locally. In a flattened content distribution network, an initial decision is made as to which content objects or titles should be stored in which caches and how often a content object should be stored in the overall CDN. Content requests are routed to the cache best able to respond to the request. Beyond an initial distribution of content objects, there is no further coordination of stored content between caches.