Distribution de contenu 1 - caches web hristophe Deleuze Grenoble IN ESISAR NE520 2010 2011 roxy élément intermédiaire dans une communication client-serveur passerelle protocoles réseau public/privé paramètres réseau requête réponse S filtrage transformation de contenu cache requête réponse S client proxy serveur aches 1 ache web ourquoi le cache est utile proxy garde réponses en cache 1 3 2 S 1 cache = 10 100 Go, Internet = 300 tera-octets (10 12 ) 0,033 %... gestion du cache Least Recently Used (LRU) Least Frequently Used (LFU) LRU + taille taille... aches 2 aches 3 Forward roxy aching Accélérateur web (reverse proxy) un proxy sert le contenu au client géré par le FAI + débit + délai + charge origine stats origine fraicheur explicite/forcé/transparent origine caché derrière un proxy géré par le fournisseur de contenu + charge origine variante : web switch/server farm R aches 4 aches 5 luster Hiérarchie groupe de caches localisé eqv système plus puissant projet Harvest 94 hiérarchie scalabilité conf. statique topologie du réseau A B aches 6 aches 7
Vue d ensemble j entre une URL... 1. le nom est résolu en adresse I (DNS) HTT 2. une connexion T ( tuyau ) est ouverte R (a) T SYN (b) T SYN+AK (c) T AK 3. la requête est envoyée, le serveur répond (en général, gd nb de requêtes et réponses) 1 2 3 W aches 8 0.9 Versions de HTT 1. client ouvre connexion et envoie GET doc.html 2. serveur écrit le fichier dans la connexion 3. la connexion est fermée 1.0 rfc 1945 possibilité connexion persistante format structuré pour les requêtes et les réponses GET / HTT/1.0 User-Agent: Wget/1.11.4 Accept: */* Host: www.acrimed.org HTT/1.0 200 K Date: Thu, 08 Apr 2010 13:11:50 GMT [le document] HTT/1.1 rfc 2616 GET / HTT/1.1 User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-us; rv:1.9.0.12) Gecko/2009072220 Icew Accept-harset: IS-8859-1,utf-8;q=0.7,*;q=0.7 onnection: keep-alive HTT/1.1 200 K Date: Fri, 09 Apr 2010 07:50:23 GMT Server: Apache/1.3 (Unix) mod_ssl/2.8.28 penssl/0.9.8f AuthG/1.3 Frontage/5.0.2.2635 Last-Modified: Sun, 07 Feb 2010 11:25:56 GMT ontent-length: 18702 onnection: close ontent-type: text/html <HTML><HEAD> aches 9 aches 10 Gestion des proxys cache quelles réponses cacher? quels éléments des réponses? comment économiser en assurant la cohérence? (transparence sémantique) expiration validation cache control authentification GET /rivate/ HTT/1.1 Ne cache pas si... HTT/1.1 401 Authorization Required WWW-Authenticate: Basic realm="acces Restreint" GET /rivate/ HTT/1.1 Authorization: Basic cghvdg9zmdsb3bnbg9w HTT/1.1 200 K Date: Fri, 09 Apr 2010 09:28:26 GMT Server: Apache/roXad [Aug 9 2008 02:45:09] indication explicite (on y revient) aches 11 aches 12 arties non cachables hop-by-hop headers : n ont de sens que sur une connexion de transport, ne sont ni cachés ni relayés par les proxies. onnection Keep-Alive roxy-authenticate roxy-authorization Upgrade... ohérence degrés forte delta faible type mutuelle besoins pour objets et utilisateurs côté client (proxy)/serveur plus ceux listés dans onnection aches 13 aches 14
Expiration date spécifiée par le serveur : Expires heuristique adaptive TTL ex. isco ontent Engine TTL = (urrentdate LastModTime) FreshnessFactor (doc décourage FF > 10 %) expiration si age > TTL origine fournit Date proxy fournit Age Validation origine associe un validateur à la réponse req. cond. avec validateur si K 304 Not Modified validateurs Last-Modified (If-Modified-Since) HTT/1.0 ETag validateur opaque validateurs faibles et forts faible : reste valide si chgt not semantically significant GET subrange interdit fort : invalide pour tout chgt browser reload/shift-reload aches 15 aches 16 Validation : je clique reload GET / HTT/1.1 User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-us; rv:1.9.0.12) Gecko/2009072220 Accept-harset: IS-8859-1,utf-8;q=0.7,*;q=0.7 onnection: keep-alive If-Modified-Since: Sun, 07 Feb 2010 11:25:56 GMT If-None-Match: "35d02c7-490e-4b6ea344" ache-ontrol: max-age=0 HTT/1.1 304 Not Modified Date: Fri, 09 Apr 2010 07:51:01 GMT Server: Apache/1.3 (Unix) mod_ssl/2.8.28 penssl/0.9.8f AuthG/1.3 Frontage/5.0.2.26 onnection: close remière requête tout à l heure... GET / HTT/1.1 User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-us; rv:1.9.0.12) Gecko/ Accept-harset: IS-8859-1,utf-8;q=0.7,*;q=0.7 onnection: keep-alive HTT/1.1 200 K Date: Fri, 09 Apr 2010 07:50:23 GMT Server: Apache/1.3 (Unix) mod_ssl/2.8.28 penssl/0.9.8f AuthG/1.3 Front Last-Modified: Sun, 07 Feb 2010 11:25:56 GMT ontent-length: 18702 aches 17 aches 18 achabilité HTT/1.0 ragma: no-cache HTT/1.1 ache-ontrol: 0 max age requêtes no-cache no-store max-age max-stale min-fresh no-transform only-if-cached cache-extension min fresh Expires max stale réponses public private no-cache no-store no-transform must-revalidate proxy-revalidate max-age s-maxage cache-extension âge Exemple : je clique shift-reload GET / HTT/1.1 User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-us; rv:1.9.0.12) Gecko/2009072220 Icew Accept-harset: IS-8859-1,utf-8;q=0.7,*;q=0.7 onnection: keep-alive ragma: no-cache ache-ontrol: no-cache HTT/1.1 200 K Date: Fri, 09 Apr 2010 07:51:36 GMT Server: Apache/1.3 (Unix) mod_ssl/2.8.28 penssl/0.9.8f AuthG/1.3 Frontage/5.0.2.2635 Last-Modified: Sun, 07 Feb 2010 11:25:56 GMT Accept-Ranges: bytes ontent-length: 18702 aches 19 aches 20 ohérence : résumé support pour : explicite (Expires) forte non scalable (revalidation systématique) faible K (adaptive TTL) hétérogénéité si explicite hétérogénéité client manque : invalidation/mise à jour délicat à intégrer dans HTT état serveur fiabilité/scalabilité pb administratifs rotocoles inter-caches aches 21
Internet ache rotocol - I - 1 I - 2 frères parent as-tu ce document en cache? 95 cache Squid conçu pour HTT/0.9 défini dans rfc2186/7 relations parents frères (siblings) msg UD : 20 octets en-tête + URL 1. envoie I QUERY aux pairs I SEH (= ping) à l origine 2. reçoit I HIT ou I MISS 3. 1 er HIT gagne GET xxx attend max 2 secondes pas de hit : parent le plus proche remarque : n attend plus les pairs qui ne répondent pas SEH GET HTT I QUERY QUERY aches 22 aches 23 I - 3 I - 4 I HIT BJ inclut objet dans la réponse + rapide + lent qu un HIT fragmentation ne distingue pas les représentations (rfc2616) resource : network data object or service that can be identified by a URI. Resources may be available in multiple representations. cache poisoning déconseillé network probe chaque proxy construit une table (origine, RTT) inclut son RTT vers l origine dans I RELY sélection du proxy le plus proche (peut être soit-même)! plus complexe attendre toutes les réponses problèmes de I scalabilité sécurité gestion des représentations aches 24 aches 25 Hyper Text aching rotocol - HT rfc2756 HT/0.0 - expérimental msgs sur UD (T optionnel) en-têtes complètes envoi d infos générales authentification (signatures) ache Digests Les protocoles précédents ajoutent des délais ache digest : résumé du contenu d un cache basé les filtres de Bloom compression avec pertes et recherche (hash) impossible effacer une clé unique les caches pairs s échangent leur D màj périodique 1 Mo pour 16 Go Système similaire : summary cache aches 26 aches 27 Efficacité : que mesurer? Efficacité faciles à mesurer débit économisé hit-rate (max 40 55 %) byte hit-rate (max 20 35 %) temps de remplissage plus difficiles gain en temps de réponse difficultés qu est-ce qu un hit? taux d utilisation par les usagers web dynamique peu cachable aches 28
Efficacité : impact de T l impact de T : ex. modem 28 kb/s débit : coût des ABRT annule les gains réduction de délai = 3 % sauf si connexions persistentes proxy = cache de connexions Efficacité : fournisseurs pratique du cache busting pour compter le nb de hits HTT/1.1 200 K Date: Fri, 09 Apr 2010 09:31:34 GMT Server: Apache ache-ontrol: no-store, no-cache, must-revalidate, post-check=0, pre-che ragma: no-cache HTT/1.0 200 K Date: Thu, 08 Apr 2010 13:11:50 GMT Server: Apache Expires: Thu, 19 Nov 1981 08:52:00 GMT Vary: ookie,accept-encoding,user-agent Last-Modified: Thu, 08 Apr 2010 11:16:22 GMT aches 29 aches 30 Efficacité : fournisseurs rfc2277 Simple Hit-Metering and Usage Limiting for HTT extension HTT, compte les hits en best-effort en-tête Meter (hop-by-hop) formation d un arbre de mesure chaque nœud compte les hit reporte à son parent au prochain GET nœuds feuilles font du cache busting autres approches : méthodes statistiques Efficacité : conf. clients explicite manuelle à partir d un fichier Autoonfig forcée automatique WAD aucune interception (cache transparent ) aches 31 aches 32 Interception niveau transport switch L4 examine trafic if I.proto=T & T.flags=SYN & T.dport = 80 then setup rewrite (I.src, I.dest, T.sport, 80) (myi, proxyi, T.sport, 80) doit retirer l entrée quand connexion terminée peut filtrer sur I.src ou I.dst légende (I.src, I.dst, T.sport, T.dport) (S,,pc,80) (,S,80,pc) (,,pc,80) S4 (,,80,pc) Interception niveau application peut se baser sur données application (URL...) nécessaire ouvrir connexion (prétend être l origine) puis ouvre 2ième connexion avec le proxy (ou l origine) et relaie... cxion 2 souvent cas d une machine in-path routeur d accès pare-feu NAT proxy transparent S7 ou cxion 2 cxion 1 aches 33 aches 34 b. avec interception pas très catholique si pb proxy, accès coupé transparence authentification/personalisation recherche DNS inutile ouvre/ferme connexions T WAD Web roxy Auto-discovery rotocol trouver l URL du fichier A (proxy auto config) http://<host>:<port><path> chaos de mécanismes d auto-conf port défaut 80, path défaut wpad.dat essayer dans l ordre : 1. DH 2. SL (Service Location rotocol rfc2608) 3. DNS wpad.example.com a) SRV b) TXT c) A 1 et 3c obligatoires le fichier précis en fct de User-Agent aches 35 aches 36
Exemple WAD DNS Standard query A wpad.esisar.inpg.fr DNS Standard query response NAME www.esisar.inpg.fr A 195.220.37.55 HTT GET /wpad.dat HTT/1.1 Host: wpad.esisar.inpg.fr HTT HTT/1.1 302 Redirect (text/html) Location: http://www.esisar.inpg.fr/auto-proxy.pac DNS Standard query A www.esisar.inpg.fr DNS Standard query response A 195.220.37.55 HTT GET /auto-proxy.pac HTT/1.1 Host: www.esisar.inpg.fr HTT HTT/1.1 200 K (application/x-ns-proxy-autoconfig) Active ache proposition académique en tête HTT acheapplet proxy exécute l applet ou fait suivre la requête applications journal d accès rotation bandeau pub. autorisation (vérification certificat) expansion SSI, compression delta etc sécurité... Java env. sécurisé 1 2 4 5 3 acheapplet: URL 5b GET URL 6 exécute applet 7 aches 37 aches 38 refetching omment augmenter le hit rate? en anticipant les requêtes doc. populaires sur le serveur prédiction sur l utilisateur trois situations client serveur proxy serveur client proxy (accès bas débit) Exemple de cache : Squid développé par le NLANR proxy cache pour HTT, FT et d autres proxy pour SSL support des hiérarchies support de I, HT, ache Digests proxy cache transparent reverse proxy cache les résultats DNS aches 39 aches 40 difficultés adaptativité contenus dynamiques cohérence forte En conclusion aches 41