Internet Cache Protocol
From Wikipedia, the free encyclopedia
The Internet Cache Protocol (ICP) is a protocol used for coordinating web caches. Its purpose is to find out the most appropriate location to retrieve a requested object from in the situation where multiple caches are in use at a single site. The goal is to use the caches as efficiently as possible, and to minimize the number of remote requests to the originating server.
Hierarchically, a queried cache can either be a parent, a child, a sibling.
Parents usually sit closer to the internet connection than the child. If a child cache cannot find an object, the query will be sent to the parent cache, which will fetch, cache, and pass on the request. While a parent server will resolve cache misses, a sibling will not. Siblings are caches of equal hierarchical status, whose purpose is to distribute the load amongst the siblings.
When a request comes into one cache in a cluster of siblings, ICP is used to query adjacent caches for the object being requested. If the adjacent cache has the object, it will be transferred from the adjacent cache, instead of being queried from the original server. This is often called a "near miss"--the object was not found in the cache (a "miss") but it was loaded from a nearby cache, instead of from a remote server.
The ICP protocol was designed to be lightweight in order to minimize round-trip time between caches. It is intended for unreliable but quick connections, using short time-outs before a cache starts to retrieve an object on its own. UDP is commonly used as delivery protocol.
The ICP protocol is described in RFC 2186, its application to hierarchical web caching in RFC 2187.
Web proxies that support ICP include:
- Squid cache
- Microsoft Proxy
- Cisco Content Engine
- ProxySG
HTCP, designed as a successor to ICP, attempts to handle various problems found in ICP deployments.