Since the publication of RFC 2186, a number of experimental opcodes and flags have been added to ICP. These were generally added so specific software developers could implement new features for their products.
Mirror Image Internet designed a web caching product that operates in a cluster configuration. Each node in the cluster knows, or remembers, which objects are stored by each neighbor. Thus, instead of returning an ICP miss message, a cache may be able to say, “I don’t have this object, but I know who does.” In other words, a cache provides a pointer to an object located in a neighbor cache. Mirror Image has proposed some experimental ICP opcodes and features to implement these features.
To indicate its support for the pointer features, an ICP client sets the ICP_FLAG_POINTER bit (0x20000000) in the Options field of a query message. An ICP server then sends a MISS_POINTER message instead of a MISS if the option bit is set and it knows of a neighbor cache that holds the requested object. The payload of the MISS_POINTER message is a list of IPv4 addresses, one for each neighbor cache that has the object. The payload does not include the URL because the ICP client should be able to determine the URL from the ICP reply’s Reqnum field.
ICP pointers and other types of distributed cache directories do not address permission and authorization issues. A directory may tell client A that cache B has a ...