3.12. Cosa sono le cache gerarchiche

Le cache gerarchiche sono un'estensione logica del concetto di cache, le cache gerarchiche utilizzano i protocolli di intercache, questo tipo di protocolli forniscono delle informazioni che possono essere utilizzate da un apparato di webcache per ridurre il tempo di ricerca di un oggetto. Un gruppo di proxy server può trarre beneficio dalla condivisione degli oggetti contenuti nella propria cache così come un gruppo di client (browser). Tuttavia, oltre ai vantaggi, é possibile identificare anche possibili aspetti negativi che possono essere determinati da situazioni specifiche

Squid offre supporto per le seguenti architetture di cache gerarchiche

3.12.1. Internet Cache Protocol (ICP)

L'Internet Cache Protocol (ICP) è il primo dei protocolli di intercache ed è stato sviluppato come parte fondamentale del progetto Harvest. Il suo scopo è quello di trovare gli oggetti richiesti all'interno della rete delle cache adiacenti, la cache adiacente può rispondere con un HIT ovvero che l'oggetto è stato trovato, oppure con un MISS, quindi che l'oggetto non è presente nella cache adiacente. Il protocollo ICP fornisce un metodo efficiente e veloce di comunicazione intercache e si tratta di un meccanismo che instaura una complessa gerarchia di cache, la cache che esegue l'interrogazione colleziona una serie di risposte ICP e decide cosa fare, possiamo anche dire che l'Internet Cache Protocol (ICP) può essere utilizzato all'interno di gerarchie di cache (peer) per localizzare uno specifico oggetto nelle cache di livello superiore.

Se una cache non dovesse contenere l'oggetto richiesto invia una richiesta ICP alle cache partner, le quali inviano una risposta contenente un un HIT oppure un MISS; il nostro proxy analizza le risposte ricevute per scegliere la cache adiacente migliore per risolvere il proprio MISS. I termini neighbours e peer sono sinonimi e si riferiscono a dei sistemi di cache adiacenti ed in relazione tra loro.

ICP supporta inoltre la trasmissione di tipo multiplexed di stream di oggetti multipli su una singola connessione TCP, attualmente ICP é implementato su trasporto di tipo UDP e le versioni correnti di Squid supportano anche ICP via multicast. Il tempo di ritardo di una transazione ICP può dipendere dallo stato della rete o dallo stato delle cache adiacenti. Qualora non si dovesse ricevere alcun messaggio ICP possiamo dedurre che la cache remota è in errore oppure che la rete è congestionata, per questo motivo l'Internet Cache Protocol (ICP) utilizza User Datagram Protocol (UDP) come protocollo di trasporto

le implementazioni applicative o i sistemi di webcache che utilizzano Internet Cache Protocol (ICP) oltre a Squid attualmente sono

3.12.2. Cache Array Routing Protocol (CARP)

Il Cache Array Routing Protocol (CARP) è un algoritmo e non è un protocollo, è stato sviluppato da Microsoft come parte fondamentale dei propri prodotti Proxy Server ed è stato disegnato per risolvere un problema in particolare: trovare un sistema scalabile ed efficente per migliorare gli HIT ratios e ridurre il tempo di latenza. L'algoritmo per una data richiesta CARP calcola un punteggio per ogni cache adiacente, la richiesta verrà girata al proxy server che ha ottenuto il punteggio più alto, se questo dovesse fallire la richiesta verrà girata al secondo sistema di webcache con punteggio più alto. Il punteggio viene calcolato sull'HASH della URL. Le regole di questo algoritmo forniscono dunque un metodo veloce ed efficiente per creare un'insieme di webcache (array), gestirne la relativa comunicazione e stabilire un meccanismo complesso di gerarchie di tipo fault tolerant e load balanced. CARP è documentato da un Internet Draft che è oramai scaduto

Cache Array Routing Protocol (CARP) funziona unicamente quando le relazioni tra webcache sono del tipo parent in quanto non è in grado di predire i cache HIT. Squid utilizza il protocollo CARP solamente come client per selezionare uno dei membri dell'array di livello gerarchico superiore, non é in grado di partecipare attivamente a tale array, le implementazioni applicative o i sistemi di webcache che utilizzano CARP attualmente sono

3.12.3. Hyper Text Caching Protocol (HTCP)

Hyper Text Caching Protocol (HTCP) è un protocollo che è stato disegnato per migliorare il protocollo ICP. Anche HTCP è un protocollo del tipo domanda/risposta che utilizza User Datagram Protocol (UDP) per il trasporto delle informazioni sulla rete. Un falso HIT può essere un problema per ICP sopratutto in una relazione di cache del tipo sibling ed HTCP risolve questo tipo di problema in quanto invia una intestazione HTTP completa sia per quanto concerne la richiesta che la risposta. HTCP include moltissime funzionalità sperimentali di ICP, tra queste la possibilità che viene offerta ad una cache di richiedere al sistema adiacente di cancellare o aggiornare un dato oggetto. Una cache è in grado di informare le corrispondenti se un oggetto è stato aggiunto, aggiornato, rimpiazzato o cancellato. HTCP supporta anche l'autenticazione forte utilizzando le shared key (SKA[1]) con algoritmo MD5[2]. Trattandosi di un protocollo piuttosto complesso la struttura del messaggio HTCP richiede maggiori risorse di sistema. Possiamo concludere dicendo che HTCP è un protocollo che consente di eseguire la ricerca delle cache e degli oggetti in esse contenute, inoltre è in grado di eseguire il controllo ed il monitoraggio della attività delle webcache. HTCP è regolamentato dalla RFC 2756 (http://www.ietf.org/rfc/rfc2756.txt).

3.12.4. Cache Digest

Cache Digest è un nuovo protocollo che tratta una tecnica di ottimizzazione del caching cooperativo. Lo scopo primario di questo nuovo protocollo è quello di effettuare la trasmissione delle informazioni salvando gli oggetti in sistemi di directory che a loro volta vengono scambiate tra cache adiacenti. Cache Digest autorizza i proxies componenti una gerarchia collegata a generare delle informazioni relativamente al contenuto della propria cache, una web cache componente lo stesso peer è così in grado di identificare al meglio quale delle webcache gemelle può fornirgli più velocemente i documenti richiesti.

Note

[1]

SKA è l'acronimo di Shared Key Authentication, si tratta di un metodo pdi autenticazione che prevede l'uso di una chiave condivisa nel processo di autenticazione (da qui il termine shared key)

[2]

MD5 è un algoritmo che genera un'impronta, chiamata anche fingerprint o message digest, della lunghezza di 128 bits per un messaggio di lunghezza arbitraria.