Content Delivery Network
Transcript
Content Delivery Network
RETI INTERNET MULTIMEDIALI Content Delivery Networks Esigenza La diffusione di contenuti con l’architettura Web ha avuto uno sviluppo notevole grazie al suo paradigma semplice e di grande efficacia L’erogazione efficiente di contenuti via Web è stata indirizzata con diverse strategie di azione che affrontano l’esigenza di fronteggiare in modo scalabile i carichi crescenti, di diffondere contenuti con esigenze differenti (dinamica, volume, località spaziale e temporale dei fruitori rispetto alle origini, …), di assicurare latenze di accesso accettabili, di occupare le risorse di rete in modo efficiente, di fronteggiare eterogeneità di terminali, di assicurare alta disponibilità, … Molti client che accedono alla medesima informazione generano un carico su server e rete che può essere evitato o ridimensionato Server Backbone ISP ISP-1 Clients ISP-2 Impiego di proxy L’introduzione di sistemi che replicano i contenuti e si frappongono tra client e server (detti proxy o proxy applicativi) è una pratica che tende a migliorare il sistema Web di distribuzione dei contenuti Reverse proxy utilizzati come front-end del server dai fornitori di contenuti per ridurre il carico del server per la diffusione di contenuti statici Server Reverse proxies Backbone ISP ISP-1 Clients ISP-2 Impiego di proxy I forward proxy sono sistemi intermedi con funzioni di replica dei contenuti posizionati in prossimità dei client e dispiegati nella rete aziendale o dall’ISP Questa posizione consente di ridurre la latenza di accesso e contenere il carico di rete per contenuti di interesse per una moltitudine di client che puntano ad un stesso sistema di forward proxy Server Reverse proxies Backbone ISP ISP-1 Forward proxies Clients ISP-2 Replica dei contenuti La replica dei contenuti tende ad avvicinare i contenuti ai richiedenti ed è efficace se i contenuti sono consistenti e validi e sono richiesti da una pluralità di utenti (località spaziale e temporale) Si può ottenere la replica in modo incidentale e trasparente rispetto ai sistemi terminali (sistema pull) La copia viene generata opportunisticamente nel sistema proxy al momento in cui vi è un accesso al contenuto da parte di un client che punta al proxy Nel Transparent Caching le cache sono trasparenti ai client (intercettano il traffico in transito), mentre nel Proxy Caching Esplicito i client sono configurati per puntare ad un sistema intermedio che fa caching Le repliche dei contenuti possono essere sistematicamente programmate (sistema push) La copia può essere generata attraverso un sistema esplicito di diffusione che propaga copie dei contenuti che verosimilmente beneficeranno dell’uso di proxy Sistema di content delivery esplicito sviluppato in maniera sofisticata da operatori specializzati nel servizio di Content Delivery Networks Principio del caching Le risorse veloci sono scarse, es. capacità di storage vicina ai client (link veloci e bassa latenza) Si mira a posizionare gli oggetti usati comunemente nelle risorse veloci ed a lasciare gli altri oggetti nelle risorse più lente E’ importante determinare gli oggetti usati comunemente Gli accessi sono spesso correlati fra loro e si dice che hanno “locality” o località Località temporale: l’informazione che viene consultata in un certo istante verosimilmente sarà consultata nuovamente in tempi brevi Località spaziale: l’informazione consultata da un punto verosimilmente sarà consultata da punti adiacenti Consistenza Consistenza: assicura che molti oggetti (repliche) sono coerenti ed allineati Oggetti nell’Origin Server e nelle Cache Molteplici oggetti che descrivono la stessa cosa Detta “semantic transparency” nel RFC2616 su web caching Se un oggetto cambia nell’Origin Server quando viene allineata la copia nelle Cache? Validation: la copia nella Cache si usa solo dopo un controllo Invalidation: Origin Server può indicare l’expected expiry time Diversi gradi di consistenza: Forte: evitare consegna di oggetti non consistenti Debole: consegnare oggetti non consistenti con bassa probabilità Caching cooperativo Quando la cache non contiene un oggetto, anziché chiederlo all’Origin Server lo si richiede ad altre cache sulla base di una procedura organizzata: Flat o piatto: tutte le cache sono paritetiche Gerarchico: le cache sono strutturate in livelli gerarchici e la diffusione degli oggetti è organizzata ad albero Direttive HTML e HTTP Le direttive HTML e HTTP consentono a client e server di impostare e condizionare le modalità di caching di un oggetto Direttive HTML: Es. <meta http-equiv="pragma" content="no-cache"> HTML più vicino all’utente e all’autore della pagina Web Facile da controllare da parte degli autori Limitato agli oggetti HTML Direttive HTTP: Es. Cache-control:, Expires:, if-modified-since:, Campi dell’intestazione HTTP HTTP è a livello più basso Più facile da gestire e da rispettare da parte delle cache Più diffuse Web server determina le direttive HTTP utilizzate (es. nei file httpd.conf e .htaccess) Direttive HTTP imperative Le “Gross directive” hanno la prevalenza su altri controlli della cache, es. se si tratta di impedire o specificare l’uso delle cache Nelle richieste e nelle rispose: no-store: impedisce il caching degli oggetti e può essere associato a richieste o risposte (usato anche per scongiurare la inavvertita propagazione di informazione riservata) no-transform: impedisce alla cache di operare trasformazioni (es. Trascodifiche) dei dati Solamente nelle richieste: only-if-cached: richiede l’uso della cache e si usa quando l’Origin Server è indisponibile e il client non vuole attendere la validazione Ciclo di vita di un oggetto Age Last-modified Date Inviato da Origin Server Tempo di accesso dalla cache Expires Last-modified: quando l’oggetto è stato modificato dall’Origin Server < Date della copia del client => OK utilizzo della copia Date – Last-modified indica la frequenza dei cambiamenti Date: Indica l’istante in cui l’oggetto fu inviato dall’Origin Server + Age = Riferimento per verificare l’expiry Expires: predizione del server di quando le copie devono essere sostituite Age: tempo passato dall’oggetto nella cache Direttive di tempistica Reference Max-age Date Min-fresh Now Max-stale Expires I client possono richiedere oggetti che hanno una certa esigenza di tempistica: Max-age: il client può non gradire informazioni con una certa obsolescenza (riferito a Date e non a Last-modified, quindi misura il tempo in cache e non dall’ultima modifica); può essere anche trasportato nelle risposte limitando l’età in termini relativi rispetto alla Expiry date Min-fresh: Il client può cercare di riusare un oggetto per qualche tempo e si assicura che non raggiunga prima lo stato di Expiry Max-stale: Il client potrebbe accettare informazione un po’ obsoleta (di default le cache non restituiscono informazione obsoleta) «Expiry» predetta dal server Il server può limitare il tempo di vita degli oggetti che invia: Expires: quando un oggetto diventa obsoleto in termini assoluti • Il client e la cache possono determinare il tempo relativo attraverso la Expires- Date • Utile per oggetti il cui contenuto è influenzato dal calendario, es. Date di copyright aggiornate ogni anno Cache-control: max-age: Specifica direttamente la longevità della cache (tempo relativo) • Utile per specificare un intervallo (es. 1 giorno), senza calcolare la data assoluta (es. Max-age elevato per il logo aziendale e basso per la pagina delle news) Se il server non modifica l’oggetto prima del suo expiry time, il client può essere sicuro della consistenza forte Tuttavia expiry è una predizione del server e può essere sbagliata: per questo si ricorre alla validation Versioni di un oggetto Le versioni di un oggetto possono essere determinate da: Last-modified time: • Richiede che l’Origin Server impieghi un clock di riferimento • Risoluzione di un secondo • Non differenzia tra cambiamenti minori o maggiori (es. Presentazione o contenuto) “Entity tags” (Etag:): Stringhe che distinguono diverse versioni di una entità Es. Create calcolando l’hash del contenuto di un’entità Es. ETag: "28002d-730-45105ae9" Validazione da parte del client Validation = Verificare se una copia è ancora utilizzabile (quando expire è scaduto, trattandosi di un previsione del server) Solitamente un client cerca una copia valida, se la sua non lo è più “Conditional GET”: • • • • 1. Il Client invia una GET request con “if-modified-since: data della copia in cache , o “if-none-match: Etag della copia in cache” 2. Il Server risponde con: – L’oggetto (se modificato), o – response code “HTTP/1.0 304 Not Modified” La validazione richiede tempo e il client deve scegliere tra ritardo e grado di consistenza Esempio di validazione GET /img/ietf.png HTTP/1.1 Host: irtf.org Referer: http://irtf.org/ If-Modified-Since: Fri, 06 May 2011 10:01:43 GMT If-None-Match: "aa0b06-754-4a29893aa8fc0“ Cache-Control: max-age=0 HTTP/1.1 304 Not Modified Date: Tue, 24 May 2011 05:21:29 GMT ETag: "aa0b06-754-4a29893aa8fc0“ Expires: Tue, 31 May 2011 05:21:29 GMT Cache-Control: max-age=604800 Eterogeneità dei contenuti Risorse statiche Contenuto relativamente stabile nel tempo (es., HTML, immagini, archivi, …) Risorse volatili Contenuto viene modificato di frequente: periodicamente o da eventi in corso (news, eventi sportivi, titoli di borsa, …) Risorse dinamiche Contenuto creato dinamicamente (on-the-fly) sulla base della richiesta del client (motori di ricerca, e-commerce, …) Risorse multimediali Contenuti audio/video aventi dimensioni tipicamente maggiori rispetto ad altri tipi di risorse (video clip, mp3, animazioni Flash, …) e con requisiti di tempistica di consegna specifici del caso d’uso (realtime interattivo, …) Risorse sicure Contenuti trasferiti su un canale cifrato (HTTPS) Contenuti trattabili in cache Una porzione significativa degli oggetti HTTP (>50%?) sono “uncacheable” Fonti di dinamismo? Dati dinamici: prezzi delle azioni, punteggio di una gara, webcam CGI scripts: risultati dovuti all’elaborazione su parametri passati al server Cookie: risultati che possono essere influenzati dai dati passati SSL: I dati cifrati non sono trattabili in cache Advertising / analytics: il proprietario di un sito/banner vuole misurare il # hits • Stringhe random nel contenuto per assicurare conteggi univoci Tuttavia la maggior parte dei contenuti dinamici ha una dimensione modesta, mentre i contenuti statici sono voluminosi (immagini, video, .js, .css, ecc.) Tecnologia ESI Edge Side Includes (ESI): linguaggio di markup basato su XML per definire componenti di pagine Web in termini di frammenti Si separano le funzionalità di consegna e generazione del contenuto per aumentare la scalabilità e ridurre l’impegno di risorse Ogni frammento ha caratteristiche proprie Standard, «cacheabili», TTL proprio I frammenti vengono assemblati e distribuiti dall’edge della rete Open-standard al cui sviluppo hanno contribuito le maggiori compagnie nel campo del content delivery: Akamai, BEA Systems, Digital Island, IBM, Oracle, … Cosa è una CDN Una CDN è un’infrastruttura creata per distribuire efficacemente i contenuti dei server Web più popolari agli utenti di Internet La CDN si basa sulla distribuzione programmata di repliche dei contenuti del server principale del Content Provider (Origin Server) ad una molteplicità di server disposti sulla rete da un CDN Provider Il servizio di CDN è offerto dai CDN Operator ai gestori dei siti Web che hanno contenuti popolari che richiedono una diffusione vasta e capillare Il servizio CDN punta a migliorare le prestazioni, ad accrescere la scalabilità e la disponibilità Componenti dell’architettura di una CDN Componenti di content delivery Origin Server ed un insieme di Edge Server per replicare il contenuto Componente di request routing Indirizza le richieste degli utenti verso gli Edge Server Interagisce con il componente di distribuzione per mantenere una copia aggiornata del contenuto Componente di distribuzione del contenuto Replica il contenuto dall’Origin Server agli Edge Server e mantiene la consistenza Componente di accounting Mantiene i log degli accessi degli utenti e registra l’uso degli Edge Server Coadiuva l’analisi del traffico e la tariffazione basata sull’uso Origin Server Request Routing System Replica Server 1 Distribution System CDN Accounting System Replica Server N Billing Organization Architettura di Akamai Peering di Akamai ad un IXP Peer Network [...] Peer Network IXP Content Transit Origin Server La CDN usa il transito per copiare i contenuti nei server distribuiti I contenuti sono serviti agli ISP in peering attraverso gli IXP Akamai non ha un backbone proprio a differenza di altre CDN (es. Limelight) Meccanismi di routing Come si indirizza la richiesta al server “migliore” di una CDN? Uso del Domain Name System: DNS redirection Riscrittura URL con hostname simbolici: URL rewriting DNS redirection Il DNS autoritativo del sito Web: delega la risoluzione dell’hostname in un indirizzo IP a un name server controllato dalla CDN o effettua direttamente la risoluzione di un indirizzo ad un cache server della CDN (se la CDN effettua l’hosting del sito e conseguentemente gestisce anche il DNS autoritativo) In entrambe i casi: La scelta di un determinato cache server della CDN è effettuata con la traduzione da hostname a indirizzo IP la scelta è fatta dal DNS della CDN che, visto il traffico da gestire, non è costituito da un solo server ma da un network di name server strutturati in modo gerarchico Il valore del Time-To-Live (TTL) assegnato dal DNS autoritativo è prossimo a 0 (circa 20 secondi), in modo tale che la CDN possa modificare spesso il mapping tra hostname e indirizzo IP URL rewriting L’Origin Server riscrive le URL presenti nella pagina HTML (container) in modo da far apparire che gli embedded object siano localizzati su un altro server Così ci sarà bisogno di una nuova risoluzione dell’hostname, il cui name server autoritativo è sotto il controllo della CDN Nella risoluzione del nuovo hostname, i DNS della CDN selezioneranno il cache server opportuno e le richieste dei client per gli embedded object verranno indirizzate verso il “miglior” cache server della CDN Possibile usare più di un cache server per gli embedded object di una pagina, ma coi dovuti limiti Routing indiretto Un sito Web che vuole avere una parte delle proprie risorse distribuite da Akamai deve rinominare le URL ad esse relative con un prefisso specifico Es. a1025o.g.akamaitech.net La risoluzione dell’hostname in un indirizzo IP di un cache server di Akamai è eseguita dal server DNS di Akamai Il cache server prescelto è “vicino” al DNS server locale del client e non deve essere sovraccarico Mappare richieste su server CDN Obiettivo: trovare il server CDN «più vicino» al client Stabilire sessioni di peering BGP con i router di bordo di Internet -> mappa grezza dei sistemi autonomi (AS) di Internet Combinare con traceroute effettuati contestualmente e misura della perdita di dati tra CDN Server Si ottiene una mappa di Internet Trovare un server CDN disponibile Stato di grazia del server, servizi richiesti, bilanciamento del carico (CPU, dischi, rete) e condizione della rete Agenti simulano il comportamento degli utenti, scaricano oggetti e riportano tasso di fallimento e tempi di servizio Akamai caching services ARL: Akamai Resource Locator http://a620.g.akamai.net/7/620/16/259fdbf4ed29de/www.cnn.com/i/22.gif Host Part Akamai Control Part Content URL /7/620/16/259fdbf4ed29de/ a620.g.akamai.net/ /www.cnn.com/i/22.gif ARL: Akamai Resource Locator http://a620.g.akamai.net/7/620/16/259fdbf4ed29de/www.cnn.com/i/22.gif Il Content Provider (CP) seleziona il contenuto che sarà ospitato da Akamai Akamai fornisce uno strumento che trasforma questa CP URL in questa ARL Questo fa si che il client acceda al server di Akamai e non all’Origin Server a620.g.akamai.net/ Se il server Akamai non ha il contenuto in cache il contenuto viene richiesto all’Origin Server /www.cnn.com/i/22.gif ARL host part Punta a ~8 akamai.net DNS server (ordine casuale, TTL = ore - giorni) .net gTLD Tenta di selezionare ~8 g.akamai.net DNS server vicini al client (BGP - TTL = 30 minuti - 1 ora) akamai.net g.akamai.net a620.g.akamai.net CS CS Decisione molto granulare di load-balancing tra i content server locali (TTL = 30 secondi – 1 minuto) Ridirezione DNS a due livelli Akamai prevede due livelli di indirezione DNS 1. Akamai Top-Level Name Server (TLNS) • Localizzati: 4 in US, 3 in EU e 1 in Asia • TLNS rispondono con 8 LLNS in tre regioni differenti – Selezione per vicinanza al client richiedente (sulla mappa) – Gestione completa del fail di due regioni qualsiasi 2. Akamai Low-Level Name Server (LLNS) • Puntano verso gli Akamai Edge Server che consegnano i contenuti • Sviluppano la gran parte della funzione di bilanciamento di carico Ridirezione DNS a due livelli Determinazione del server che contiene un oggetto Per determinare il server che consegna un oggetto si usano algoritmi che si basano sull’applicazione di funzioni hashing La hash function h mappa l’oggetto identificato da x sul server id Es. h(x) = [ax + b ( mod p)] (mod |S|), in cui • p è un intero primo e p > |S| • a e b sono interi costanti scelti uniformemente tra [0, p-1) • X è il numero seriale di un oggetto Consistent hashing Si mappino sia i server che gli oggetti su un cerchio unitario utilizzando le funzioni di hash Un oggetto è assegnato al server più vicino percorrendo il cerchio in senso orario Minimizza l’impatto in caso di cambiamento: se si inserisce un nuovo server sono impattati solo gli oggetti nel segmento precedente, se si toglie un server, si impatta solo il server successivo [Karger et al., 99] 4 0 A C 1 3 B 2 Object Cache 1 B 2 C 3 C 4 A Peer-to-Peer Sistemi distribuiti di condivisione di file Tipicamente ogni partecipante detiene contenuti che rende accessibili ed accede a sua volta ai contenuti memorizzati da altri partecipanti Si tratta fondamentalmente di un sistema distribuito di memorizzazione di file Tradeoff tra le localizzazioni possibili dei file e la difficoltà di ricercarli Peer-to-peer consente ai file di essere memorizzati in memorie di massa distribuite: la sfida è la ricerca dei file La dinamicità dei partecipanti rende il problema ancor più difficile da risolvere Altri sistemi Internet hanno comportamenti analoghi: Routing e DNS Problema della ricerca P2P N1 Chiave=“TITOLO” Valore= file MP3… N2 Internet N3 ? Publisher N4 N6 Client Ricerca(“TITOLO”) Problema della ricerca P2P Napster: DB centrale Gnutella: flooded query Chord: routed queries Il caso Youtube: modalità base 2. HTTP reply containing html to construct the web page and a link to stream the FLV file 4. HTTP reply FLV stream Video-servers (front end) Front end web-servers Internet 1. HTTP GET request for video URL 3. HTTP GET request for FLV stream User Il caso Youtube: nuova modalità Struttura di cache a tre livelli: primaria, secondaria e terziaria Bilanciamento del carico dei server sulla base anche dell’informazione di localizzazione I contenuti video sono replicati solo nelle cache del terzo livello Organizzazione stratificata dello spazio dei nomi che indicano i video server «logici» 5 spazi di nomi “anycast” 2 spazi di nomi «unicast» Il caso Youtube: nuova modalità ~ 50 cache ~ 40 primarie (incluse ~ 10 presso ISP) 8 località secondarie 5 località terziarie Gestione dei cache miss secondo due modalità: Pre-caricamento in background Ri-direzione dinamica HTTP Architettura Netflix Netflix ha un proprio Datacenter per le funzioni particolari (es. registrazione e tariffazione), per il resto si basa su Cloud AWS di Amazon per i video streaming server Utilizza tre CDN per la consegna del traffico codificato multilivello (richiede l’uso di Microsoft Silverlight per lo streaming basato su DASH) Content Centric Networking Progressivamente si assiste ad un cambio di paradigma dell’uso preminente della rete Internet Da sistema di condivisione di risorse e di conversazione tra host a sistema di distribuzione di contenuti in varie forme e con volumi crescenti La consapevolezza di queste tendenze ha sollecitato lo studio di un nuovo paradigma per Internet che sposta il fuoco dell’attenzione sul trattamento dei contenuti: il Content Centric Networking detto anche Information-Centric Networking Resource Sharing Conversation Content Centric Networking Si attribuisce la paternità dell’avviamento della nuova linea di ricerca sul paradigma a Van Jacobson (uno dei padri del paradigma originale, insieme a Vinton Cerf) “Networking Named Content” – Van Jacobson e al., CoNext 2009 Gli utenti attribuiscono valore ad Internet per i contenuti messi a disposizione La comunicazione deve risolvere il problema di rendere accessibile il contenuto gestendone la localizzazione per mezzo di identificativi adeguati L’astrazione di “named data” (ossia dati identificati da un nome) è più adeguata per i moderni sistemi di comunicazione su Internet dell’astrazione “named host” (ossia host identificato da un nome) Content Centric Networking Si propone una nuova pila di riferimento per il paradigma di rete: lo strato centrale IP è sostituito dallo strato dei contenuti («content chunks»: spezzoni di contenuti) Lo “strategy layer” introduce funzioni di gestione granulare fine e dinamica per sfruttare le migliori condizioni di connettività disponibili Il “security layer” si occupa della protezione intrinseca dei contenuti Email WWW phone SMPT HPPT RTP… TCP UDP IP Ethernet PPP… CSMA async sonet… Copper fiber radio browser chat…. Apps Nodes Links File stream… Security Content chunks Strategy IP UDP P2P Bcast… Copper fiber radio Content Centric Networking Tipo di pacchetti Un Interest packet corrisponde a un Data packet Data Interest Naming Nomi aggregabili e gerarchici per localizzare e condividere dati Parzialmente leggibili dagli utenti con principi di versioning/segmentazione In-network caching Ogni router ha uno storage per memorizzare contenuti Ogni router può essere fornitore di contenuti con logica punto-multipunto Modi d’uso delle CCN • Contents (data) download Content server or CCN routers Signaling • Voice chat (real-time, interactive) Invite Response • Multicasting (video streaming) <PIT> Interest | Face1 Interest | Face2 Interest | Face3 Conversation Want to say OK Tell me Say something Proposte allo studio Aspetti comuni CCN: Content-Centric Networking (Xerox); PSIRP: Publish-Subscribe Internet Routing Paradigm (EU); DONA: Data-Oriented Networking (Berkley); CURLING: Content-Ubiquitous Resolution and Delivery Infrastructure for Next Generation Services« (EU COMET) ICN proposals Basic Primitives (publish/subscribe) CCN REGISTER/INTEREST PSIRP PUBLISH/SUBSCRIBE DONA REGISTER/FIND Curling REGISTER/PUBLISH Universal Caching Content-Oriented Security All ICN nodes implement the caching All ICN designs secure the content rather than the path * “Information-Centric Networking: Seeing the Forest for the Trees” – A. Ghodsi et. al., HotNet 2011 Differenze ICN proposals CCN PSIRP DONA Curling Naming 1) Hierarchical human-readable names 2) Self-certifying (flat) names Inter-domain Routing Narrow Waist Based on BGP Content Routers Rendezvous Nodes Their own interdomain routing paradigm Resolution Handlers Content-aware Routers TCP/IP vs CCN TCP / IP CCN Indirizzamento su base interfaccia •Problemi di mobilità •NAT/proxy per la sicurezza Non si usano gli indirizzi per accedere ai contenuti • separazione di identificativo e indirizzo per localizzare il dato • Mobilità agevolata • Non servono NAT/proxy Richiesto DNS Built-in naming • Esigenza possibile di mappatura di nomi a diversi livelli Aggiunte per trattare caching •Mirroring, CDNs In-network caching •No mirroring o CDN Autenticazione su base connessione Autocertificazione e autenticazione su base contenuto Cammini evolutivi verso CCN ① ② CCN over IP IP and CCN Evolutionary IPv4/IPv6 with CDN ③ Clean Slate CCN ① CCN overlay – Dispiegabile e pragmatico (short-term) ② IP/CCN – Coesistenza con meccanismi di virtualizzazione di rete o con Software-defined network (middle-term) ③ All CCN – Sostituzione dell’IP (long-term & the final stage)