Optimisation du transport de contenu 4

Transcription

Optimisation du transport de contenu 4
Les fournisseurs de contenu
Optimisation du transport de contenu
veulent :
4 - Content Delivery Networks
•
rendre le contenu accessible
•
•
•
Christophe Deleuze
Grenoble INP ESISAR
•
capacité réseau
distribution géographique
garder le contrôle
•
•
•
•
Décembre 2014
capacité serveur
fraicheur
comptage etc
web dynamique
gestion de site
1 / 55
2 / 55
Content Delivery Network
Qu'est-ce qu'un CDN ?
O
O
surrogate
•
placé près des clients géré par le
+ charge origine
•
+ débit réseau
•
+ délai client
•
+ stats origine
•
+ fraicheur
distribution
clients
fournisseur de contenu
•
rapprocher le contenu des
•
• delivery
• serveurs
•
•
S
U
redirection
surrogates
redirection
distribution
•
•
U
comptabilité
quatre systèmes
S
S
transport
comptabilité
U
3 / 55
S
delivery
4 / 55
Qu'est-ce qu'un CDN ?
Qu'est-ce qu'un CDN ?
Un content delivery network (CDN) est un fournisseur de services de
•
fournisseur de contenu
optimiser l'acheminement de données. Cette optimisation peut
•
consommateurs
concerner aussi bien les performances (latence, débit, etc.) que les
•
opérateur réseau (ISP)
•
opérateur CDN
communications électroniques dont l'une des activités consiste à
coûts d'acheminement. Pour y parvenir, un CDN dispose d'un
ensemble de serveurs dits serveurs (de) cache proches de
l'internaute, dans lesquels sont stockés des copies des données à
acheminer. Les données en question ne sont donc acheminées qu'une
$
C
seule fois depuis leur lieu de production jusqu'au serveur cache, ce qui
permet d'économiser des coûts de transport / transit ; par ailleurs, la
service
jusqu'à l'internaute) est raccourcie, si bien que les performances sont
améliorées. Les clients principaux des CDN sont les FCA.
contenu
F
distance d'acheminement dans la partie terminale (depuis le serveur
C
$
1
CDN
$
Rapport au Parlement et au Gouvernement sur la neutralité de
l'internet, ARCEP, septembre 2012.
BP
ISP
1. Fournisseurs de contenus et d'applications
5 / 55
6 / 55
Opérateurs de CDN
•
Akamai : 150k serveurs
•
Limelight
•
Level 3 Communications
•
Amazon Cloudfront
•
...
•
services connexes de gestion de contenu
Redirection
•
(request routing)
trouver le meilleur surrogate (équilibrage de charge +
distance au client)
•
surrogate = f(consommateur, contenu, état réseau, états
surrogates)
•
•
•
•
•
monitoring
•
géolocalisation
•
•
reporting
•
DRM
routage (construction des tables)
relayage
(forwarding)
transparent pour le client...
•
identication des utilisateurs
•
routage de requête
diérentes méthodes pour le relayage
spécialiser/segmenter les contenus
7 / 55
9 / 55
Redirection DNS hiérarchique
www.content.com
à D1
O
D1
⇒ www.content.com A ?
⇐ www.content.com CNAME content.cdn.com
LONDRES
fournisseur de contenu
• content.com NS D1
Redirection DNS hiérarchique
TTL = 1j
1
D2
2
D2 répond en fct de l'adresse de R
⇒ content.cdn.com A ?
⇐ content.cdn.com CNAME paris.content.cdn.com
TTL = 10s
opérateur de CDN
• cdn.com NS D2
• paris.cdn.com NS
D3
• londres.cdn.com
NS D4
R
3
TTL = 0s
D3
C
S
D3 répond en fct de la charge des surrogates
⇒ paris.content.cdn.com A ?
⇐ paris.content.cdn.com CNAME s1.paris.content.cdn.com
s1.paris.content.cdn.com A a.b.c.d
PARIS
S
10 / 55
Problèmes de la redirection DNS
•
basée sur l'adresse du résolveur
•
•
historiquement et normalement, proche de l'utilisateur
que faire si elle est 8.8.8.8 (Google DNS) ?
au fait, où est votre résolveur ?
• whoami.akamai.net
• resolver-identity.cloudfront.net
• self.myresolver.info
• http://www.myresolver.info
12 / 55
11 / 55
Redirection :
application redirect
Réécriture HTTP
D
O
• ⇐ 302 Found
• + on voit
•
•
302 newurl
GET url
•
l'URL du document change !
•
connexion vers l'origine
•
2
adresse client
URL contenu
pop1 − Sa
pop2 − Sa
pop3 − Sb
1
l
r
wu
ET
Sa
ne
G
mais une fois sut...
1
S
00
K
O
3
2
C
Sb
2
C1
C2
pop1
pop2
C3
pop3
14 / 55
15 / 55
Réécriture HTTP pour C1
Réécriture HTTP pour C2
⇒ GET /content.html
Host: provider.com
⇐ 302 Found
Location: http://pop1.cdn.net/provider.com/content.html
⇒ pop1.cdn.net A ?
⇐ pop1.cdn.net CNAME Sa
Sa A a.b.c.d
D
pop1 − Sa
pop2 − Sa
pop3 − Sb
2
1
Sa
⇒ GET /provider.com/content.html
Host: pop1.cdn.net
⇐ 200 OK
...
<a href="pop1.cdn.net/provider.com/news.html">News!</a>
16 / 55
Sb
3
C1
pop1
C2
pop2
C3
pop3
17 / 55
Réécriture HTTP pour C2
Extension DNS pour localiser le client
⇒ GET /content.html
Host: provider.com
⇐ 302 Found
Location: http://pop2.cdn.net/provider.com/content.html
une bonne solution
•
•
•
⇒ pop2.cdn.net A ?
⇐ pop2.cdn.net CNAME Sa
Sa A a.b.c.d
rfc6891 Extension Mechanisms for DNS (EDNS(0))
apr 13, obsoletes rfc2671 aug 99
Client Subnet in DNS Requests
draft-vandergaast-edns-client-subnet-00/../02 jan
11/apr 13 draft-ietf-dnsop-edns-client-subnet-00 nov
14 (Akamai/Google)
⇒ GET /provider.com/content.html
Host: pop2.cdn.net
⇐ 200 OK
...
<a href="pop2.cdn.net/provider.com/news.html">News!</a>
•
•
permet au résolveur d'indiquer l'adr du client
1
2
3
résolveur inclut src IP et taille masque dans requête
permet au serveur d'indiquer la portée de la réponse
serveur inclut src IP et taille masque dans réponse
résolveur cache réponse associée à IP/masque
18 / 55
19 / 55
Extension DNS pour localiser le client
R
Redirection : routage
•
2
•
•
•
1
4
3
D
•
C
1
2
3
4
document
charge (CPU, nb. connexions...)
distance au client (hops, délai, débit ...)
méthode passive (IGP/BGP...)
méthode active (sondes)
•
•
20 / 55
pour
ensemble des Sgtes ayant le document
réponse rapide + infos à jour
•
•
www.example.com A ?
www.example.com A ? [client-subnet =
192.168.130.1/24]
www.example.com A 192.168.1.1 [client-subnet =
192.168.0.0/16]
www.example.com A 192.168.1.1
client
requête
à la demande
à l'avance
à secret sauce
•
Akamai
•
trouver un
surrogate
raisonnable
21 / 55
Redirection, cas simple : routage intra AS
•
approche active/à l'avance
•
décision centralisée
•
clusters de
•
pop (agrégats de clients)
•
charge des services dans chaque
Redirection, cas plus compliqué
•
•
surrogates
• 6=
•
chaque cluster probe tous les pops
•
association
à
associations pop
{ réseaux } (ex.
proto. routage)
cluster
pop
probe
rapport
•
données historiques et temps réel
position des clusters
ajouter les infos de :
•
•
cluster
à
•
tout client est dans un de ces réseaux
types de liens
•
•
(pop, service)
graphe de réseaux
•
cluster
•
construire topologie de l'internet
charge des clusters
classe de trac
maintenir le graphe à jour
décision
22 / 55
23 / 55
Source des données
Débit d'un chemin : Packet pair I
1 lien à 100 Mb/s
Passive
•
•
infos des protocoles de routage
•
•
•
•
•
intra-domaine
BGP
OSPF
RIP
à
à
à
2 lien goulot à 1 Mb/s
topologie
•
distances en nb de n÷uds
traces de trac
•
géo-localisation
tps de transmission
12,5·103 ×8
106
= 100
ms
3 retour sur lien à 100 Mb/s
AS path length
•
j'envoie 2 paquets de 12500 octets, dos-à-dos
12,5·103 ×8
tps de transmission
100·106 = 1 ms
•
les paquets sont espacés...
... mais impact possible d'autres paquets
Active
latence : echo ICMP (ping)
pertes ...
débit
• packet pair : débit lien goulot
• packet train : débit disponible
24 / 55
25 / 55
Débit d'un chemin : Packet pair II
P2
Une méthode originale : DNS boomerang
DNS
P1
1
2
1 ms 1 ms
ou Flash DNS ou DNS ooding
•
P2
2
•
P1
100 ms
100 ms
P2
S
1ère arrivée gagne
•
proximité réseau
•
si serveurs chargés
S
1
à
3
retarder la
réponse
P1
3
1 ms
B
2
les clusters répondent
•
1 ms
routage très simple !
B
3
R
100 ms
S
C
26 / 55
27 / 55
Distribution : réplication
•
Réplication : copie
Réplication
•
•
Pull
copie
•
•
•
push
synchronisation (cohérence)
•
multicast ?
•
•
•
où chercher le contenu ?
•
•
•
pull
Push
•
O
contrôle de ux (hétérogénéité)
hiérarchie
28 / 55
?
déterminer les routes possibles
choisir la meilleure (distance réseau +
charge serveur)
support du multicast...
S
voisins
forme de routage
•
•
problème de la abilité
origine
S
S
29 / 55
Réplication : ex d'Akamai
ESI - contrôle des surrogates
O
Edge Side Includes
Akamai/Oracle/... '01
SCntl: max-age=60;s1, max-age=300
hiérarchie de clusters
•
documents chauds dans les clusters feuilles
•
documents froids dans les parents
•
•
extension au protocole HTTP
•
choisis selon l'état du réseau
requête
S s'identie et indique ses
optimise espace cache
S1
SCap: s2="Surrogate/1.0"
capabilities
augmente performances
pb : dynamisme (charge/crash)
•
s1="Surrogate/1.0, ESI/1.0"
Surrogate-Capabilities:
répartition dans chaque cluster
•
•
•
SCap: s2="Surrogate/1.0";
(nouveaux en-têtes)
•
réponse
S2
Surrogate-Control:
consistent hashing
O indique à S comment
traiter le contenu de la
réponse
U
30 / 55
31 / 55
Réplication : synchronisation
maintenir la cohérence des
• surrogate
•
•
•
surrogates
ESI invalidation protocol
O
avec l'origine
= serveur ayant autorité
•
invalidation de contenu
mises à jour
⇐ POST ... msg-inv-XML
⇒ 200 OK msg-result-XML
multicast
•
Web Cache Invalidation Protocol '01
Resource Update Protocol '02 (IETF)
WCIP
RUP
POST msg-inv-xml
XML (port 4001)
• content signaling
• tentatives échouées
•
•
requête HTTP POST avec doc
•
invalidation par
•
•
•
•
(IETF/Cisco)
ESI invalidation protocol
S
URI
préxe
regexp URI et en-tête
...
U
32 / 55
33 / 55
O⇒S POST /x-invalidate HTTP/1.0
Authorization: Basic aW52YWxpZGF0b3I6aW52YWxpZGF0b3I=
Content-Length: 217
Leases (Baux)
<?xml version="1.0" ?>
<!DOCTYPE INVALIDATION SYSTEM "invalidation.dtd">
<INVALIDATION VERSION="WCS-1.0">
<OBJECT>
<BASICSELECTOR URI="/cache.htm" />
</OBJECT>
</INVALIDATION>
•
gestion classique, choix entre :
•
•
•
à
états
côté client (revalidation systématique)
compromis :
•
S⇐O HTTP/1.1 200 OK
...
Content-Length: 284
côté serveur (invalidation)
lease
à
msgs
(bail) {obj,S,d}
O s'engage à notier S des modifs de obj pendant d
⇐ Lease-Control: Grant-Lease | Renew-Lease ...
•
<?xml version="1.0"?>
<!DOCTYPE INVALIDATIONRESULT SYSTEM "invalidation.dtd">
<INVALIDATIONRESULT VERSION="WCS-1.0">
<OBJECTRESULT>
<BASICSELECTOR URI="/cache.htm" />
<RESULT ID="1" STATUS="SUCCESS " NUMINV="1"/>
</OBJECTRESULT>
</INVALIDATIONRESULT>
Distribution de
cohérence forte
⇐ Invalidate-Lease: ...
⇒ Invalidate-Ack: ...
O attend les ACK ou n du bail pour modier obj
35 / 55
stream
Stream live : les problèmes
encodeur
• stream
•
•
•
•
contraintes temporelles internes
congestion
l'application gère un tampon
délai de démarrage acceptable
stream à la demande
•
•
•
à
surcharge
E
: non élastique
juste un chier...
... oui mais gros
le serveur est surchargé
•
son réseau d'accès est saturé
•
la traversée de l'internet est longue
délais/pertes
et dangereuse...
... et occupe longtemps le serveur
• prex caching puis transfert
• segmentation des chiers et
•
élastique de la suite
répartition sur les surrogates
U
36 / 55
U
U
U
37 / 55
Stream live : architecture
middle mile
Stream live : qualité du
encodeur
first mile
•
E
surrogates sont des serveurs de
entry point
EP
stream
•
•
pb : perte de paquets
•
TCP pas adapté (contrôle de congestion, tempo de
retransmission)
groupés en clusters
last mile
•
• entry point à rst mile
• serveurs de transport : set reectors
•
•
•
•
SR
UDP avec ajout correction de perte
•
•
set reflector
paquet de redondance
tolère un paquet perdu parmi k
XOR bit à bit
duplication (donc 4 niveaux)
stream servers
contourne routage BGP
SS
corrige les pertes
SS
SS
paquet 1
paquet 2
paquet k
redondant
last mile
U
U
U
U
38 / 55
Stream live : qualité du
middle mile
Middle mile : coupure réseau
SR1
retransmission au mieux
•
émetteur garde les n derniers paquets en tampon
•
récepteur envoie NAK si détecte perte
• reçu no n+k, toujours pas reçu no n,
•
émetteur retransmet
diversité :
multipath
39 / 55
880 − 900
980
800
SR2
880 − 900
980
800
•
ER élu ne récoit plus
à
•
subscribe
880 −980
si tjs dans le tampon
bascule sur un autre SR
prebursting
•
•
émettre plus vite au début
donc depuis le passé
(tampon de
retransmission du SR)
880 − 900
980
800
• à
rattrape les pertes !
SS
40 / 55
41 / 55
Application delivery network
Optimiser l'acheminement
transport
bidirectionnel
S ne cache pas, mais permet :
•
(routage à la couche
la plupart des documents ne sont pas cachables
application)
•
•
•
•
•
délais
T
transport server
TCP non persist.
optimisation du protocole de
transport
1 optimiser l'acheminement
TCP persistant
optimisation du chemin
Sites Web dynamiques, applications web...
Deux stratégies :
O
transport opt.
congestion
connexions persistantes
contrôle de
T
ux/congestion
quantité données
•
2 déplacer (une partie de) l'application en bordure
•
retransmissions rapides
transport opt.
optimisation de la couche
S
application
•
S pré-charge les objets
embarqués
•
app server
U
compression
TCP persistant
42 / 55
43 / 55
Déplacer l'application
Répartir l'application
Les applications avec transactions temps réel ne peuvent pas être
ex Akamai EdgeComputing
•
complètement déplacées.
Archi classique MVC :
plateforme pour exécuter des (composants d') Applications
Java2EE
Model le c÷ur de l'appli (règles, BD)
View représentation (sortie)
Certaines applications peuvent facilement être déplacées/dupliquées
•
aggrégation/transformation de contenus (portails)
•
BD statiques (catalogue, recherche sur un site, liste de
Controller entrées
boutiques...)
•
•
déplacer la partie interface (view et controller)
•
réduire les échanges au minimum nécessaire
•
•
collecte de données (formulaires)
agréger/minimiser les échanges avec le modèle
eg l'origine génère une page dynamique qui référence des
composants cachables.
44 / 55
45 / 55
Edge Side Includes
ESI I
•
inclusion (fragments ont leurs propres métadonnées cachabilité etc)
•
(contrôle des surrogates, protocole d'invalidation)
•
•
assemblage dynamique de fragments en bordure
•
variables (basés sur attributs de la requête HTTP, à la CGI)
fragment
•
traitement conditionnel
•
exception, gestion des erreurs (ressources alternatives ou par
•
•
paramétres de cohérence
partagés par les utilisateurs
défaut)
• template
U
<esi:include src="http://example.com/1.html"
alt="http://bak.example.com/2.html" onerror="continue"/
<esi:include
src="http://example.com/search?query=$(QUERY_STRING{query})"/>
template + fragments
O
S
U
<esi:inline name="URI" fetchable="yes | no">
fragment to be stored within an ESI processor
</esi:inline>
assemblage
dynamique
46 / 55
47 / 55
ESI II
Comptabilité
<esi:choose>
<esi:when test="...">
...
</esi:when>
<esi:when test="...">
...
</esi:when>
<esi:otherwise>
...
</esi:otherwise>
</esi:choose>
les logs sont répartis dans tous les
•
besoin de générer une vision globale
•
•
48 / 55
surrogates
•
pour le fournisseur de contenu
pour l'opérateur de CDN
•
scalabilité ?
•
structure hiérachique (multicast inverse)
49 / 55
Qui utilise des CDN ? I
;; QUESTION SECTION:
;www.microsoft.com.
IN
A
;; ANSWER SECTION:
www.microsoft.com.
1996
toggle.www.ms.akadns.net. 614
g.www.ms.akadns.net.
614
lb1.www.ms.akadns.net. 1169
IN
IN
IN
IN
CNAME
CNAME
CNAME
A
;; QUESTION SECTION:
;www.apple.com.
IN
A
;; ANSWER SECTION:
www.apple.com.
590
IN
www.isg-apple.com.akadns.net. 590 IN
www.apple.com.edgekey.net. 590 IN
e3191.dscc.akamaiedge.net. 1521 IN
CNAME
CNAME
CNAME
A
Qui utilise des CDN ? II
;; QUESTION SECTION:
;www.yahoo.com.
toggle.www.ms.akadns.net.
g.www.ms.akadns.net.
lb1.www.ms.akadns.net.
64.4.11.42
;; ANSWER SECTION:
www.yahoo.com.
535
fd-fp3.wg1.b.yahoo.com. 535
ds-fp3.wg1.b.yahoo.com. 535
ds-eu-fp3-lfb.wa1.b.yahoo.com.
ds-eu-fp3.wa1.b.yahoo.com. 708
ds-eu-fp3.wa1.b.yahoo.com. 708
;; QUESTION SECTION:
;www.fda.gov.
www.isg-apple.com.akadns.net.
www.apple.com.edgekey.net.
e3191.dscc.akamaiedge.net.
92.123.229.15
IN
IN
IN
IN
535 IN
IN
IN
IN
;; ANSWER SECTION:
www.fda.gov.
226
IN
www.fda.gov.edgesuite.net. 226 IN
a1715.dscb.akamai.net. 226
IN
a1715.dscb.akamai.net. 226
IN
A
CNAME
CNAME
CNAME
CNAME
A
A
fd-fp3.wg1.b.yahoo.com.
ds-fp3.wg1.b.yahoo.com.
ds-eu-fp3-lfb.wa1.b.yahoo.com.
ds-eu-fp3.wa1.b.yahoo.com.
87.248.122.122
87.248.112.181
A
CNAME
CNAME
A
A
www.fda.gov.edgesuite.net.
a1715.dscb.akamai.net.
213.152.6.112
213.152.6.98
;; QUESTION SECTION:
50 / 55
51 / 55
Qui utilise des CDN ? III
CDN / caches web
qu'est-ce qui les diérencie ?
;blog.lemonde.fr.
IN
A
;; ANSWER SECTION:
blog.lemonde.fr.
919
IN
CNAME
blog.lemonde.fr.2-01-271d-000c.cdx.cedexis.net.
wac.3604.edgecastcdn.net. 1895 IN
CNAME
gp1.wac.edgecastcdn.net. 1896 IN
A
blog.lemonde.fr.2-01-271d-000c.cdx.cedexis.net.
955 IN CNAME wac.3604.edgecastcdn.net.
gp1.wac.edgecastcdn.net.
93.184.220.20
•
redirection ? mais caches transparents
•
push ?
•
systèmes hybrides
•
Émergence des Telco CDN ?
7→
fédération de CDNs
cdni WG, créé en juin 11
http://datatracker.ietf.org/wg/cdni/
IETF
Content Networks
52 / 55
53 / 55
Qu'est-ce qu'un CDN ?
Quelques sources
Les CDN...
1 partagent dynamiquement l'infrastructure de réplication
•
les RFC mentionnés
•
Akamai facts :
http://www.akamai.com/html/about/facts_figures.html
2 utilisent les URL classiques
Nygren (Erik), Sitaraman (Ramesh K.) et Sun (Jennifer). 3 fournissent un espace de noms adapté
The akamai network: A platform for high-performance internet
2 et 3 paraissent contradictoires
applications. ACM SIGOPS Operating Systems Review, vol. 44, n 3, 2010.
Un CDN est :
Kontothanassis (Leonidas), Sitaraman (Ramesh), Wein (Joel), Hong
•
une infrastructure de réplication
•
un changement de sémantique de l'espace de noms URL
(Duke), Kleinberg (Robert), Mancuso (Brian), Shaw (David) et Stodolsky.
(Daniel). A transport layer for live streaming in a content delivery network.
Proceedings of the IEEE, Special Issue on Evolution of Internet
Technologies,
54 / 55
vol. 92, n 9, septembre 2004, pp. 14081419.
55 / 55

Documents pareils