Proxies,, Caches & CDNs Anthony Busson Plan Exemple de page web simple Anatomie du téléchargement d une page web Problématique Définition : Proxy, Reverse Proxy Interception, Redirection Système de cache Cache array Hiérarchique Distribué Communication entre les caches Content Delivery Network exemple
Exemple de page web simple : vu par le navigateur Titre de la page web URL (uniform resource locator) Page web Fichiers : images, sons, applets, shockwave, flash. Exemple de page web simple : le code html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>exemple de page web</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <p>ceci est un exemple de page web avec deux images :</p> <p> </p> <p><img src="moi-en-vacances.jpg" width="240" height="240"></p> <p> </p> <p> </p> <p><img src="moi-au-travail.jpg" width="312" height="367"></p> <p> </p> <p>et du blablabla blablablaba blablabla blablabla blablablaba blablabla blablabla blablablaba blablabla blablabla blablablaba blablabla blablabla blablabla blablabla blablablaba blablabla blablabla blablablaba blablabla.</p> </body> </html>
Exemple de page web simple : du code html à la page web <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>exemple de page web</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <p>ceci est un exemple de page web avec deux images :</p> <p> </p> <p><img src="moi-en-vacances.jpg" width="240" height="240"></p> <p> </p> <p> </p> <p><img src="moi-au-travail.jpg" width="312" height="367"></p> <p> </p> <p>et du blablabla blablablaba blablabla blablabla blablablaba blablabla blablabla blablablaba blablabla blablabla blablablaba blablabla blablabla blablabla blablabla blablablaba blablabla blablabla blablablaba blablabla.</p> </body> </html> Anatomie du téléchargement d une page web Un document web (pages html, php, images, etc.) est identifié de manière unique sur le web par son URL (Uniform Resource Locator) http://www.defense.gouv.fr/marine/present/present.htm Protocole de transfert du fichier Nom du serveur web Chemin du fichier sur le serveur nslookup www.defense.gouv name : www.defense.gouv.fr adress : 195.46.214.11
Anatomie du téléchargement d une page web Requête DNS : www.defense.gouv.fr 195.46.214.11 INTERNET Anatomie du téléchargement d une page web GET : /marine/present/present.htm http 1.1 200 OK : /marine/present/present.htm INTERNET
Anatomie du téléchargement d une page web GET : /marine/present/image1.jpg http 1.1 200 OK : image1.jpg INTERNET Problématiques 90% du trafic sur le web est du trafic http Un même document est téléchargé plusieurs fois par le même utilisateur, des utilisateurs géographiquement proche congestion inutile du réseau utilisation d un réseau congestionné Intérêt de cacher les documents déjà téléchargé par d autre utilisateur économie de ressources délai minimiser puisque document téléchargé localement
Définition : Proxy (1) Proxy (by proxy = par procuration), gère la requête à la place de l utilisateur Le proxy va télécharger le document à la place du client sur le serveur original client @C <- @P proxy @P <- @S Requête : www.enst.fr/index.html @Client -> @Proxy Requête : www.enst.fr/index.html @Proxy -> @Serveur Serveur original Définition : Proxy (2) La requête est redirigée vers un cache local client proxy Requête : www.enst.fr/index.html @Client -> @Proxy Requête : www.enst.fr/index.html @Proxy -> @cache Serveur original Cache
Qui est mon proxy? Configuration manuelle du «browser» : @ du proxy (par l utilisateur) Fichier.pac (proxy auto configuration), on indique l emplacement d un fichier dans le browser (netscape, explorer) La gestion est centralisée (prise en charge par l administrateur) Possibilité de faire du partage de charge en fonction des URLs WPAD : Web Proxy Auto-Discovery Protocol Découvrir l url du fichier.pac (explorer 5.x). Ne nécessite aucune configuration du client. Utilise les services du réseau existant DHCP (Dynamic Host Configuration Protocol) SLP (Service Location Protocol): cherche les informations relatives aux services d un réseau DNS «well known»: wpad.enst.fr est l alias de l URL du fichier recherché. DNS «SRV»: wpad.tcp.enst.fr DNS «txt»: wpad.enst.fr
Vocabulaire : Transparent proxy (1) Aucune configuration nécessaire pour le client/utilisateur Obligation pour le client/utilisateur d utiliser un proxy Nécessité d intercepter les requêtes http (lecture de l en-tête TCP, filtre sur le port 80) Transparent proxy Internet Cache Définition : transparent proxy (2) proxy Reverse proxy Serveur original Serveur original
Définitions : server farm,, web switch Server farm : ensemble de serveurs placés derrière un web swtich Une seule @ IP est définit pour l architecture La sélection du serveur peut se faire en fonction des adresses IP, des N ports (L4) des URLs (L7) Web switch Serveur farm Définition : Cache array Ensemble de caches placés derrière un proxy Fonctionne comme un cache logique Interrogation des autres caches pour un URL Interrogation des autres caches (ICP) Fonction de hashing sur les URLs demandés (CARP) ou sur les @IP (WCCP) proxy Serveur original
CARP (Cache Array Routing Protocol) ) : Micro détails Proxy www.enst.fr www.microsoft.co m www.sharereactor.com www.linux.com Pour un URL on choisit le proxy dont hash(proxy+url) à la plus grande valeur Proxy1 5 6 10 4 Proxy2 9 2 7 5 Proxy3 7 4 3 10 Proxy4 4 7 8 1 Proxy5 2 9 4 6 Modèle Hiérarchique parent requête requête requête parent Serveur original requête miss miss requête sibling sibling
Internet Cache Protocol Protocole qui définit le format des messages utilisé par des Web caches pour communiquer (sur UDP) Initialement utilisé pour localiser des objets web (pages html, images, etc.) dans les caches voisins Mais où est donc www.enst.fr/index.html? ICP Query : www.enst.fr/index.html? HTCP : Hyper Text Caching Protocol Protocol communication entre les caches HTTP Ping Mon (effacer,ajouter..) Set (prolongement de l objet) TST (vérifier la présence d un objet) Basé sur UDP, peut être utilisé avec TCP Gestion des caches (expiration date, update age,..) plus à jour que ICP. Plus de fonctionnalités (très inspiré de HTTP 1.1).
Problématiques : échanges entre les caches no ICP Query URL? no ICP Query no ICP Query Pour chaque URL, on envoi un message à tous les «siblings» : Latence Si aucun d entre eux n a l URL : on envoi une requête au cache parent ou au serveur original : Latence Génère un grand nombre de messages. Cache Digest Distribution régulière du contenu des caches (URL) entre les caches (utilisant HTTP) sous forme de table de routage : Les requêtes sont redirigées vers le bon cache On n interroge pas les autres caches, l information est directement accessible : minimise la latence (ICP, HTCP) Réduit le nombre d échange entre les caches
Cache digest : Principe de base URL h 1 (URL) h 2 (URL) h 3 (URL) h 4 (URL) N fonction de hash {0,1, x} {0,1, x} {0,1, x} {0,1, x} 00001111000101010101010101010101010101010101000101010101 Vecteur de x bits Cache Digest : Bloom Filter 1. Nombre d URL stockés : M 2. Taille de la table : k*m (bits) (par défaut k=5) 3. Appliquer une fonction de hash (MD5) à l URL+method_http 4. On divise le mot de 128 bits en N (par défaut 4) mots 5. Ce chiffre est recalculé modulo 5*M 6. On met à 1 tous les bits correspondant à ces 4 valeurs dans 1 vecteur ( le résumé) 0 URL e06a5625 mod(5*m) 0 HASH 7d8879d9 mod (5*M) 0 + (MD5) 0 e968e83f mod (5*M) http 128 bits 1 2ded3df7 mod (5*M) 0 method 0 e06a56257d8879d9e968e83f2ded3df7 0 1
CDN Content Delivery Network CDN : Plan Structure, modèle économique Push, Pull Redirection Synchronisation Exemple
Strucure d un CDN Content delivery Infrastucture : un ensemble de serveurs («surrogates») Request Routing Infrastucture : redirige les requêtes vers le serveurs optimal Distribution Infrastucture : place le contenu des clients dans les surrogates Accounting Infrastucture : compte et collectes des statistiques sur l utilisation des «surrogates» le fournisseur de contenu ne sait plus qui vient consulter son site web CDN : Modèle commercial Bande passante Service Fournisseur de contenu ISP CDN contenu consommateurs
Distribué quoi? Page webs, photo, etc. Vidéo sur demande(stockées dans des serveurs dédiés), vidéo live (splitters) Gros fichiers, patches pour des compagnies de logiciels Information boursière Distribué le contenu : Push/Pull PUSH : Les documents sont placés dans les serveurs à l avance Pour un site web particulier (e-business) Pour les pages webs les plus populaires Pour les pages webs remises à jour périodiquement Intérêt Peut-être fait en dehors des heures de pointes Les pages webs sont toujours disponible et à jour PULL : Les documents sont placés et stockés après une demande d un client.
Rediriger les requêtes Rediriger les requêtes vers les «surrogates» (content routing) Choisir sur le site un mirror HTTP redirection (3xx) : interroger le serveur qui redirige la requête vers un surrogate DNS : la résolution DNS renvoi l adresse d un surrogate plutôt que le serveur original (plus élégant) Switching layer 4/7 Redirection : le meilleur surrogate? Boomerang DNS local Requête DNS DNSB Utilisation des tables de routage BGP Solutions propriétaires
Synchronisation Garantir la fraîcheur (freshness) d un objet Indiquer l objet comme «non-cacheable» Utiliser «If-modified-since» Mettre un TTL suffisamment court Utiliser un serveur de synchronisation (WCIP) Serveur synchronisé sur le serveur original qui envoi régulièrement des messages aux surrogates Exemple : xxx Téléchargement de index.html sur le site www.yyy.com/index.html Les photos, les videos et les fichiers executables sont en charge du CDN (+ de 60% d une page web)
Exemple : xxx Code source de http://www.yyyy.com/index.html : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>Apple</TITLE> <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=iso-8859-1"> <META HTTP-EQUIV="PICS-Label" CONTENT='(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.apple.com/" on "1999.12.29T20:06-0800" r (n 0 s 0 v 0 l 0))'>... SRC="http://a772.g.xxx.net/7/772/51/5593ee8a8ef77e/www.ap ple.com/t/2001/us/en/i/1bg.gif" Exemple : xxx (2) Object Data : Code qui dépend du type code (garantie la fraicheur du document) http://a772.g.xxx.net/7/772/51/5593ee8a8ef77e/ www.apple.com/t/2001/us/en/i/1bg.gif Serial number xxx Domain URL de l image sur le serveur original Type code N qui identifie le client
Exemple : choisir le meilleur serveur Résoudre : a9.g.xxx.net 2 jours.net root user @IP.xxx.net? Plusieurs HLDNS g.xxx.net? 20 min H L D N S Local Name server a9.g.xxx.net? Serveur xxx @ IP du serveur 20 sec L L D N S xxx : Un site entier Redirection DNS : CNAME (resource record) www.apple.com IN CNAME server1.xxx.net www.apple.com www.apple.com? Server1.xxx.net Server1.xxx.net? DNS Apple @ IP du serveur optimal DNS xxx
Ouvertures Gestion dans les caches/surrogates de pages dynamiques, de services web (ex : ESI de Akamai) Utilisation du multicast pour la diffusion de contenu (aujourd hui : satellite ) Interopérabilité Limites de tailles pour les CDNs Équipements Espaces pour placer ces équipements Recouvrement J ai une infrastructure CDN mais pas de clients J ai des clients mais pas d infrastructure Exemple : content Bridge, CiRouter