Internet Cache Protocol
ICP (Internet Cache Protocol) est un protocole Internet utilisĂ© pour coordonner les caches (antĂ©mĂ©moires) web. Son objectif est de trouver l'endroit le plus appropriĂ© oĂč rĂ©cupĂ©rer un objet demandĂ© par un client dans un contexte oĂč de multiples caches sont utilisĂ©s comme un seul site. Le but est d'utiliser les caches aussi efficacement que possible et de minimiser le nombre de requĂȘtes vers le serveur hĂ©bergeant l'objet dĂ©sirĂ©.
HiĂ©rarchiquement, un cache interrogĂ© peut ĂȘtre un de niveau supĂ©rieur (parent) ou de niveau Ă©gal (frĂšre ou sibling).
Les serveurs parents sont d'ordinaire plus proches du serveur hĂ©bergeant l'objet recherchĂ© que les serveurs fils. Si un serveur fils ne peut trouver l'objet, la requĂȘte est en gĂ©nĂ©ral relayĂ©e vers un serveur de cache parent qui va rapporter, mĂ©moriser (mettre en cache) et finalement transmettre la requĂȘte au demandeur. Les serveurs frĂšres (siblings) sont des serveurs de cache d'un niveau hiĂ©rarchique Ă©gal, dont le but est de rĂ©partir la charge.
Quand une requĂȘte arrive en cache dans un cluster de serveurs frĂšres, le protocole ICP est utilisĂ© pour interroger les serveurs frĂšres sur les objets qui ont Ă©tĂ© demandĂ©s. Si un serveur frĂšre dĂ©tient un objet en cache, il sera le plus souvent issus de ce cache et non d'une requĂȘte directe sur le serveur original. Ce processus est souvent appelĂ© near miss quand l'objet n'est pas dans le cache du serveur de cache interrogĂ© (ratĂ© ou miss) mais qu'il est finalement rĂ©cupĂ©rĂ© depuis celui d'un serveur proche (near) au lieu du serveur original.
Le protocole ICP a été conçu léger pour minimiser le nombre d'aller-retours entre les caches. Il est prévu pour les connexions peu fiables mais rapides.
Le protocole ICP est décrit dans la RFC 2186[1], son application aux serveurs de cache web hiérarchiques dans la RFC 2187[2].
Les serveurs mandataires (proxies) qui supportent ICP :
- Harvest[3]
- Squid[3]
- NetCache[3]
- Novell BorderManager FastCache[3]
- Netscape Proxy Server[3]
- DeleGate[3]
- MOWS[3]
- Inktomi Traffic Server[3]
- Cisco CacheEngine[3]
- SkyCache[3]
- Mirror Image[3]
- Microsoft Proxy
- Cisco Content Engine
- CACHEbox (en)
- ProxySG
HTCP, conçu comme successeur d'ICP, tente de résoudre divers problÚmes rencontrés dans un déploiement ICP.
Structure des messages ICP
Un message ICP comprend deux sections :
- l'en-tĂȘte (header),
- les données (data).
En-tĂȘte La longueur de l'en-tĂȘte est fixĂ©e Ă 20 octets (cinq mots de 32 bits).
DonnĂ©es Les donnĂ©es ont une longueur variable limitĂ©e par la taille maximale d'un message ICP qui est de 16 384 octets (en-tĂȘte comprise).
L'en-tĂȘte ICP contient huit champs, dont deux optionnels (champs 5 et 6 en rose dans le tableau).
Bit offset | Bits 0â7 | 8â15 | 16-31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Opcode | Version | Longueur du message | |||||||||||||||||||||||||||||
32 | NumĂ©ro de requĂȘte | |||||||||||||||||||||||||||||||
64 | Options | |||||||||||||||||||||||||||||||
96 | Données Optionnelles | |||||||||||||||||||||||||||||||
128 | Adresse du demandeur | |||||||||||||||||||||||||||||||
160+ | Données |
Références
- (en) Request for comments no 2186.
- (en) Request for comments no 2187.
- Inter Cache Communication Protocols, Ingrid Melve