Chapter 9. Internet caching protocol (ICP)

The ICP protocol is used for communication between caching proxy servers to help optimize bandwidth usage by sharing cached content. When a request for a URL is made, other cache peer's are queried using the ICP protocol to determine if they have the file already cached. There are two peer relationships a proxy may have: parent and sibling. A sibling is a proxy on the same hierachy level and files are only fetched from it if it has it already cached. A parent is a proxy one level up in the hierachy which the file will be requested from even if it doesn't have it cached already (therefore, causing it to cache it for other sibling proxies). The peer a file is requested from is selected using the following algorithm:

Request the file from a random sibling that has the file, if any; otherwise:

Request the file from a random parent that has the file, if any; otherwise:

Request the file from a random parent that doesn't have the file, if any allow it; otherwise:

Request the file from a proxy with no peer releationship.

For further information on the ICP protocol, see RFC 2186.