Введение

Протокол интернет-кэша (ICP) — это протокол на основе UDP, используемый для координации работы веб-кэшей. Он предназначен для определения наиболее подходящего расположения для получения запрошенного объекта, когда на одном узле используется несколько кэшей. Задача ICP — максимально эффективно использовать кэши и минимизировать количество запросов к исходному серверу.

Операция

Иерархически, запрошенный кэш может быть родительским или соседним. Родительские кэши обычно расположены ближе к интернет-соединению, чем дочерние. Если дочерний кэш не может найти объект, запрос обычно отправляется родительскому кэшу, который извлекает, кэширует и передает запрос дальше. Соседние кэши – это кэши равного иерархического уровня, предназначенные для распределения нагрузки между собой. Когда запрос поступает в один из кэшей в кластере соседних кэшей, для поиска запрашиваемого объекта используется протокол ICP. Если объект найден у одного из соседей, он обычно передается оттуда, а не запрашивается с исходного сервера. Это часто называют "почти попаданием" – объект не найден в кэше ("промах"), но загружается из ближайшего кэша, а не с удаленного сервера. Протокол ICP был разработан как легковесный, чтобы минимизировать время задержки между кэшами. Он предназначен для ненадежных, но быстрых соединений. Такой подход может уменьшить количество обращений к серверу и предотвратить хранение нескольких копий данных, но может привести к увеличению межкэшного трафика, что может замедлить работу системы. Протокол ICP описан в RFC 2186, а его применение к иерархическому веб-кэшированию – в RFC 2187.