Je suppose que pas mal de gens ici ont un CDN. Ceci devrait les
intérersser.

http://www.bortzmeyer.org/6707.html

----------------------------

Auteur(s) du RFC: B. Niven-Jenkins (Velocix (Alcatel-Lucent)), F. Le Faucheur 
(Cisco), N. Bitar (Verizon)


----------------------------


Aujourd'hui, les CDN sont partout. Ces serveurs munis de nombreux 
disques et disposés dans les réseaux des FAI, au plus près de l'abonné, 
afin de servir du contenu numérique le plus rapidement possible, sont 
derrière un grand nombre de sites Web (non, ce blog n'utilise pas de 
CDN) et derrière bien des fournisseurs de "streaming". La plus connue 
des entreprises de CDN est Akamai mais il en existe bien d'autres. Et 
c'est là que le problème commence : il n'existe aucun mécanisme 
d'interconnexion des CDN. Chacun utilise ses protocoles spécifiques et 
pas question de les faire travailler ensemble. L'IETF a donc créé un 
groupe de travail, CDNI <http://tools.ietf.org/wg/cdni>, chargé de 
réfléchir à l'interconnexion des CDN. Ce RFC est le premier du groupe, 
et il essaie de définir le problème (les solutions viendront plus 
tard).

L'extension massive des CDN est bien sûr liée à l'augmentation 
considérable du contenu numérique : présentations PowerPoint 
ennuyeuses, vidéos de chats mignons, communiqués de presse en PDF qui 
prennent plusieurs mégaoctets pour ne pas dire grand'chose, publicités 
débiles, "webinars" en haute définition et au contenu vide, etc. Sans 
le CDN, un site Web qui veut distribuer un fichier de N mégaoctets à M 
clients va voir N*M mégaoctets passer sur sa liaison Internet. Avec le 
CDN, le fournisseur de contenu (CSP dans le RFC pour "Content Service 
Provider") n'aura à faire passer le contenu qu'une fois, vers le CDN. 
Le contenu sera ensuite distribué par les serveurs du CDN, situés 
typiquement chez les FAI (notez aussi que certains FAI ont leur propre 
CDN). Meilleure latence, meilleure résilience (attaques dDoS et "flash 
crowds"), meilleur débit, bref, tous les avantages.

Aujourd'hui, les CDN ne coopèrent pas. Si un fournisseur de CDN est 
très présent en Europe et en Amérique, mais pas en Asie, un CSP client 
de ce CDN verra ses clients asiatiques mécontents. Pour les satisfaire, 
il devra signer un contrat avec un autre CDN, très présent en Asie. Il 
serait pourtant plus simple que le premier fournisseur de CDN puisse 
s'appuyer sur l'infrastructure du second et lui transmettre données et 
instructions. Mais, en l'absence de normes techniques pour 
l'interconnexion des CDN, cela n'est possible aujourd'hui que par des 
arrangements privés. C'est l'une des principales motivations pour la 
création du groupe de travail CDNI. L'idée est que, dans le futur, le 
premier fournisseur de CDN cité (celui qui est trés présent en Europe 
et en Amérique) aura juste à signer un contrat avec le second 
fournisseur et, techniquement, tout se passera tout seul, il utilisera 
le réseau du second sans que le fournisseur de contenu n'y voit rien.

Avant d'attaquer la question de l'interconnexion, notre RFC 6707 
précise qu'il vaut mieux connaître les CDN pour suivre. Si ce n'est pas 
le cas, il recommande la lecture des RFC 3040 qui décrit les composants 
d'un CDN, RFC 3466 et RFC 3570, les deux derniers étant le résultat du 
travail du précédent groupe de travail IETF sur les CDN. Le RFC 
recommande également la lecture de « "A Taxonomy and Survey of Content 
Delivery Networks <http://www.gridbus.org/reports/CDN-Taxonomy.pdf>" ».

La section 2 de notre RFC précise les cas où il est intéressant 
d'interconnecter les CDN. À la raison donnée plus haut (permettra à des 
CDN de s'allier pour avoir une meilleure couverture géographique), 
s'ajoute le désir de permettre l'interconnexion des CDN que gèrent 
certains FAI : en se regroupant, ils pourraient former un CDN 
alternatif aux CDN indépendants des FAI comme Akamai. Il y a aussi des 
cas où un FAI a déployé plusieurs CDN spécialisés et souhaite après les 
regrouper. Enfin, un dernier scénario envisagé est celui où un CDN doit 
faire appel temporairement à un autre (suite à une grosse panne, par 
exemple) et doit le faire vite, sans programmer des scripts 
spécifiques.

Mais qu'est-ce que veut dire « Interconnecter des CDN » ? Des essais 
ont déjà été tentés, montrant qu'il y avait des choses qui marchaient 
et d'autres qui étaient vraiment pénibles en l'absence de normes. La 
section 3 identifie quatre *interfaces* par lesquelles on voudrait 
connecter des CDN, et pour lesquelles il n'existe pas de normes :
* Interface de contrôle du CDN, par laquelle on démarre et arrête le 
service, on indique les politiques suivies (« aucun contenu ne doit pas 
être distribué en dehors des États-Unis », par exemple), on déclenche 
la copie de contenu, on vire le contenu qui ne doit plus être servi, 
etc.
* Interface de routage des requêtes du CDN, qui n'est pas le routage de 
la couche 3. Il s'agit ici de s'assurer que les requêtes des 
utilisateur seront routées vers un CDN et un seul (qu'il n'y ait pas de 
boucles « c'est lui, non c'est lui »).
* Interface de distribution des méta-données au CDN. Ces méta-données 
sont les données au sujet du contenu : ses caractéristiques techniques 
(HD ou pas, par exemple, pour permettra la sélection du bon fichier), 
informations de zonage (tel document ne doit être servi que dans telle 
région du Monde), etc.
* Interface de journalisation ("logging") du CDN. Elle permet de faire 
remonter les données de trafic, à des fins de statistiques, de 
facturation, etc. Sans elle, un CDN hésiterait à s'associer à un autre 
si cela signifiait qu'il n'aurait plus accès aux données de trafic.
Vous avez noté quelque chose qui manque ? Prenez le temps de réfléchir 
avant de regarder le paragraphe suivant.

Une interface importante est exclue du projet CDNI : l'interface 
d'acquisition des données elle-mêmes. Ce n'est pas tout de s'entendre 
avec un autre CDN pour qu'il contribue à distribuer le contenu de vos 
clients, encore faut-il mettre la main sur le dit contenu ! Mais notre 
RFC considère le problème comme déjà largement résolu. Il existe en 
effet plusieurs protocoles standards, ayant toutes les caractéristiques 
voulues, et effectivement utilisés par les CDN (HTTP et rsync sont deux 
exemples typiques). En écartant ce problème des données, le groupe CDNI 
se focalise sur le contrôle des CDN.

Et pour les quatre interfaces citées plus haut, ne pourrait-on pas 
trouver des protocoles existants qui résolvent le problème, sans avoir 
besoin de développer quelque chose de nouveau ? La section 4 reconnait 
que ce serait très souhaitable, cite des protocoles intéressants (comme 
XMPP ou APP) et étudie cette question.
* L'interface de contrôle, dit le RFC, est un problème très ouvert et, 
bien qu'il soit souhaitable de réutiliser des protocoles existants, le 
RFC ne s'avance pas à en suggérer certains.
* Pour l'interface de routage, en revanche, notre RFC considère qu'une 
simple fonction requête/réponse (par exemple « tu peux gérer ça ? / 
oui ») suffit et que cette interface peut donc être réalisée avec des 
protocoles de type Web Services comme XML-RPC ou REST. Le groupe de 
travail n'aurait alors à normaliser que le format exact de ces 
services. Il y a toutefois d'autres fonctions, liées à la sélection du 
CDN le plus efficace pour une requête, pour lequel le RFC suggère 
d'étudier des techniques comme ALTO (RFC 5693).
* Même chose pour l'interface d'accès aux méta-données, où il n'y aura 
pas non plus de nécessité de développer un protocole entièrement 
nouveau.
* L'interface de journalisation pourrait aussi utiliser des protocoles 
existants comme évidemment SNMP ou syslog. Attention, ils ne sont pas 
forcément parfaits. Par exemple, dans SNMP, la remise des notifications 
asynchrones - "traps" - n'est pas garantie - cf. annexe A.3 - ce qui 
est un problème pour la facturation.
Des détails sur cette réutilisation de protocoles existants figurent 
dans l'annexe A. Elle est particulièrement riche pour le cas de 
l'interface de routage, qui doit permettre des scénarios de redirection 
complexes (plus complexes que, par exemple, les simples 301 et 302 de 
HTTP). Pour la journalisation, si le protocole de transport peut être 
un protocole existant, il restera à spécifier le format des données 
transportées (les champs, leur syntaxe, leur sémantique, etc).

La traditionnelle section de sécurité (section 6) est longue car une 
telle interconnexion des CDN soulève plein de problèmes difficiles. 
C'est d'autant plus vrai que le contenu numérique servi est souvent 
commercial et que le fournisseur de contenu souhaite en contrôler la 
distribution. Dans un CDN homogène, c'est relativement facile. Mais 
comment faire lorsqu'on interconnecte des CDN hétérogènes ? Il va 
falloir faire confiance aux autres...

En outre, l'interconnexion des CDN différents va introduire des 
problèmes légaux, puisque les CDN en question seront peut-être gérés 
par des entreprises différentes, donc soumises à des lois différentes. 
Ainsi, une loi locale peut obliger à anonymiser plus ou moins les 
données envoyées sur l'interface de journalisation.


* Pour l'interface de contrôle, le principal problème de sécurité est 
le risque qu'un attaquant ne puisse contrôler le CDN par ce biais. Elle 
devra donc imposer une authentification sérieuse.
* Pour l'interface de routage, les problèmes sont très proches : 
imaginze un méchant renvoyant toutes les requêtes vers un CDN qui n'est 
pas au courant et qui se retrouverait ainsi inondé.
* L'interface des méta-données est moins sensible mais, quand même, les 
informations peuvent ne pas être publiques.
* L'interface de journalisation reçoit des données confidentielles et 
qui doivent donc être protégées, par exemple par du chiffrement. Mais 
elle peut aussi être utilisée pour de la facturation (« j'ai traité ce 
mois-ci N requêtes de tes clients, voici la note ») et elle doit donc 
être protégée contre la falsification.


L'annexe B intéressera les concepteurs de protocoles et les étudiants 
car elle définit les *non-buts*, ce que le groupe CDNI n'essaiera *pas* 
de faire. Par exemple :
* L'interface entre le fournisseur de contenu et le CDN (on ne 
s'occupera que de l'interface entre CDN), et les éventuelles 
transformations de ce contenu (réencodage des vidéos entrantes, par 
exemple).
* L'interface entre le CDN et le consommateur (avec éventuellement 
authentification). Même chose pour les menottes numériques.
* Comme indiqué plus haut, la synchronisation des données entre les CDN 
est aussi hors-sujet.
* Les algorithmes utilisés en interne par le système de routage du CDN 
pour décider à quel CDN partenaire il envoie des requêtes sont 
considérés comme une question interne et donc non traitée par le groupe 
CDNI. Seule l'interface de routage est dans le domaine d'activité de ce 
groupe.
* Et, naturellement, tous les aspects commerciaux et juridiques sont 
également exclus du travail de l'IETF.


Autre partie intéressante de l'annexe B, celle consacrée aux autres 
groupes de travail IETF qui avaient une importance pour ce sujet :
* ALTO <http://tools.ietf.org/wg/alto>, bien sûr (RFC 5693), par 
exemple pour router les requêtes vers le « meilleur » CDN. Comme 
indiqué plus haut, cela n'a pas d'influence directe sur le travail de 
CDNI puisque l'utilisation d'ALTO (ou pas) est une décision interne à 
chaque CDN.
* DECADE <http://tools.ietf.org/wg/decade> (RFC 6646). Ce groupe 
travaille à réduire l'usage du « dernier kilomètre » (celui qui 
connecte Mme Michu à son FAI) en permettant le téléversement de contenu 
par Mme Michu, sur un serveur mieux placé. Le RFC estime toutefois que 
le rapport avec les CDN est trop lointain pour que le travail de DECADE 
soit directement utilisable.
* PPSP <http://tools.ietf.org/wg/ppsp>, qui n'a pas encore de RFC, mais 
qui travaille sur le "streaming" en pair-à-pair. Son sujet est plutôt 
l'acquisition de contenu, un point qui a été explicitement exclu de 
CDNI.

Enfin, pour ceux et celles qui veulent vraiment beaucoup approfondir, 
les "Internet-Drafts" qui avaient précédé le RFC contenaient également 
une annexe (non gardée dans le RFC final) intéressante sur les autres 
efforts de normalisation des CDN. On y trouve de nombreux projets, 
parfois toujours actifs, y compris un ancien groupe de travail IETF, 
CDI <http://tools.ietf.org/wg/cdi>, qui avait produit plusieurs RFC 
intéressants (RFC 3466, RFC 3568 et RFC 3570). Trop ambitieux, ce 
groupe n'avait pas vraiment réussi à faire avancer l'interconnexion.


---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/

Répondre à