Internet Cache Protocol
Encyclopedia
The Internet Cache Protocol (ICP) is a protocol used for coordinating web cache
s. 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 or a sibling.
Parents usually sit closer to the internet connection than the child. If a child cache cannot find an object, the query usually will be sent to the parent cache, which will fetch, cache, and pass on the request. 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 the siblings for the object being requested. If the sibling has the object, it will usually be transferred from there, 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.
The ICP protocol is described in RFC 2186, its application to hierarchical
web caching in RFC 2187.
Web proxies that support ICP include:
HTCP
, designed as a successor to ICP, attempts to handle various problems found in ICP deployments.
Header:
Header length is fixed to 20 octets (five 32-bit words).
Data:
Data is of variable length, limited by the maximum ICP message size (including header) of 16,384 octets.
The ICP header consists of 8 fields, with 2 optional fields. The fifth and sixth field is optional (pink background in table) and appropriately named “options” and “option data”.
Web cache
A web cache is a mechanism for the temporary storage of web documents, such as HTML pages and images, to reduce bandwidth usage, server load, and perceived lag...
s. 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 or a sibling.
Parents usually sit closer to the internet connection than the child. If a child cache cannot find an object, the query usually will be sent to the parent cache, which will fetch, cache, and pass on the request. 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 the siblings for the object being requested. If the sibling has the object, it will usually be transferred from there, 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.
The ICP protocol is described in RFC 2186, its application to hierarchical
Hierarchy
A hierarchy is an arrangement of items in which the items are represented as being "above," "below," or "at the same level as" one another...
web caching in RFC 2187.
Web proxies that support ICP include:
- CACHEbox
- CiscoCiscoCisco may refer to:Companies:*Cisco Systems, a computer networking company* Certis CISCO, corporatised entity of the former Commercial and Industrial Security Corporation in Singapore...
CacheEngine - CiscoCiscoCisco may refer to:Companies:*Cisco Systems, a computer networking company* Certis CISCO, corporatised entity of the former Commercial and Industrial Security Corporation in Singapore...
Content Engine - DeleGateDelegateA delegate is a person who speaks or acts on behalf of an organization at a meeting or conference between organizations of the same level A delegate is a person who speaks or acts on behalf of an organization (e.g., a government, a charity, an NGO, or a trade union) at a meeting or conference...
- Harvest projectHarvest projectHarvest was a DARPA funded research project by the Internet Research Task Force Research Group on Resource Discovery and hosted at the University of Colorado at Boulder which provided a web cache, developed standards such as the Internet Cache Protocol and Summary Object Interchange Format, and...
- Traffic ServerTraffic ServerThe Apache Traffic Server is a modular, high-performance reverse proxy and forward proxy server, generally comparable to Nginx and Squid. It was created by Inktomi, and distributed as a commercial product called the Inktomi Traffic Server, before Inktomi was acquired by Yahoo!...
- Mirror Image
- MOWS
- NetCacheNetCacheNetCache is a former web cache software product which was owned and developed by NetApp between 1997 and 2006, and a hardware product family incorporating the NetCache software.-History:...
- Netscape Proxy Server
- NovellNovellNovell, Inc. is a multinational software and services company. It is a wholly owned subsidiary of The Attachmate Group. It specializes in network operating systems, such as Novell NetWare; systems management solutions, such as Novell ZENworks; and collaboration solutions, such as Novell Groupwise...
BorderManager FastCache - ProxySGBlue Coat SystemsBlue Coat Systems Inc. is a network security and network management company based in Sunnyvale, California, United States.It identifies itself as an application delivery network specialist...
- Squid
- SkyCache
HTCP
Hypertext caching protocol
Hypertext Caching Protocol is used for discovering HTTP caches and cached data, managing sets of HTTP caches and monitoring cache activity...
, designed as a successor to ICP, attempts to handle various problems found in ICP deployments.
ICP message structure
An ICP message consists of two sections:- Header
- Data
Header:
Header length is fixed to 20 octets (five 32-bit words).
Data:
Data is of variable length, limited by the maximum ICP message size (including header) of 16,384 octets.
The ICP header consists of 8 fields, with 2 optional fields. The fifth and sixth field is optional (pink background in table) and appropriately named “options” and “option data”.
Bit offset | Bits 0–7 | 8–15 | 16-31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Opcode | Version | Message Length | |||||||||||||||||||||||||||||
32 | Request number | |||||||||||||||||||||||||||||||
64 | Options | |||||||||||||||||||||||||||||||
96 | Option Data | |||||||||||||||||||||||||||||||
128 | Sender Host Addresss | |||||||||||||||||||||||||||||||
160+ | Data |
External links
- RFC 2186 ICP version 2
- RFC 2187 Application of ICP version 2