<?xml version="1.0" encoding="utf-8"?>
<rfcdesc num="6589" title="Considerations for Transitioning Content to IPv6" status="informational" wg="v6ops">
<authors><author>J. Livingood (Comcast)</author></authors>
<rfcdate><month>April</month><year>2012</year></rfcdate>
<date>2012-04-23</date>
<content>
<p>Ce document rassemble un certain nombre d'analyses et de conseils
sur la transition vers <wikipedia>IPv6</wikipedia> pour les gens qui
hébergent du contenu, typiquement les sites
<wikipedia name="World Wide Web">Web</wikipedia>. Les gérants de ces sites souhaiteraient
pouvoir rendre ce contenu accessible en IPv6, sans que cela entraîne de
conséquences fâcheuses pour les lecteurs. Ce RFC décrit notamment la technique du
<foreign>whitelisting</foreign>, qui consiste à ne renvoyer d'adresses
IPv6 (les enregistrements AAAA du <wikipedia name="Domain Name System">DNS</wikipedia>) qu'à
certains réseaux, identifiés comme mettant en &#x153;uvre correctement
IPv6. Cette technique a été popularisée par
<wikipedia>Google</wikipedia> mais elle est contestée. Le RFC estime
qu'elle est acceptable et qu'il est utile d'informer, non pas les sites qui la pratiquent (ils connaissent déjà) mais la communauté Internet en général.</p>
<p>Bien sûr, ce RFC peut être utile à d'autres qu'aux gérants de sites
Web. Mais il se focalise particulièrement sur leurs besoins. Un site
Web se caractérise par un gros déséquilibre : au lieu de deux pairs
qui veulent communiquer, on a un fournisseur de contenu, et des
clients passifs, à qui on ne peut pas demander d'effectuer des
réglages particuliers. Ça doit marcher, point. En outre, les sites Web
à plus fort trafic sont souvent des entreprises commerciales, qui ne
veulent pas prendre de risques et n'acceptent pas même un très faible
pourcentage de clients pénalisés par IPv6.</p>
<p>Le but est donc de migrer de gros sites Web uniquement accessible
en <wikipedia>IPv4</wikipedia> (la grande majorité des gros sites Web
à l'heure actuelle, la principale exception étant
<wikipedia>Google</wikipedia>) vers un accès possible en IPv4
(protocole qui ne va pas disparaître de si tôt)
<emphasis>et</emphasis> IPv6.</p>
<p>Mais quels sont les problèmes qu'IPv6 pourrait causer ? Le site Web
typique publie son adresse dans le <wikipedia name="Domain Name System">DNS</wikipedia>. Pour
l'adresse IPv4, il utilise un <wikipedia name="Domain Name System" anchor="Principaux_enregistrements_DNS">enregistrement</wikipedia> de
type A. Pour IPv6, de type AAAA. Ainsi, aujourd'hui,
<computer>www.bortzmeyer.org</computer> annonce deux AAAA et un A :
<code>
<![CDATA[
% dig A www.bortzmeyer.org
...
;; ANSWER SECTION:
www.bortzmeyer.org.     42641   IN      A       204.62.14.153
...

% dig AAAA www.bortzmeyer.org
...
;; ANSWER SECTION:
www.bortzmeyer.org.     10222   IN      AAAA    2605:4500:2:245b::bad:dcaf
www.bortzmeyer.org.     10222   IN      AAAA    2001:4b98:dc0:41:216:3eff:fece:1902
...
]]>
</code>
Par contre, la très grande majorité des sites Web ne publient que des
A, par exemple <computer>www.gouvernement.fr</computer> :
<code>
<![CDATA[
% dig A www.gouvernement.fr
...
;; ANSWER SECTION:
www.gouvernement.fr.    86383   IN      CNAME   www.premier-ministre.gouv.fr.
www.premier-ministre.gouv.fr. 86383 IN  CNAME   cdn2.cdn-tech.com.c.footprint.net.
cdn2.cdn-tech.com.c.footprint.net. 213 IN A     209.84.9.126
...

% dig AAAA www.gouvernement.fr 
...
;; ANSWER SECTION:
www.gouvernement.fr.    86358   IN      CNAME   www.premier-ministre.gouv.fr.
www.premier-ministre.gouv.fr. 86358 IN  CNAME   cdn2.cdn-tech.com.c.footprint.net.
...
]]>
</code>
Certains de ces sites sont simplement gérés par des incompétents ou des paresseux,
qui ne peuvent pas ou n'envisagent pas de publier des enregistrements
AAAA, qui permettraient à leur lecteurs d'accéder au contenu en
IPv6. Mais, dans d'autres cas, l'administrateur du site Web connaît
IPv6, a refléchi, et a décidé de ne pas publier le AAAA. Pourquoi ?
Parce qu'il craint le problème du <emphasis>malheur des globes
oculaires</emphasis> (<foreign>eyeball misery</foreign> ?). J'ai décrit ce
problème <link local="globes-oculaires-heureux">dans un autre
article</link> et il fait en outre l'objet de deux autres RFC, les
<rfc num="6555" local="true"/> et <rfc num="6556" local="true"/>. En
deux mots, le malheur des globes oculaires peut venir d'une connexion
IPv6 cassée, ou simplement de qualité très inférieure. Si le site Web
ne publie pas d'enregistrement AAAA, le client ne tentera pas de se
connecter en IPv6 et sa connexion pourrie n'aura donc pas de
conséquences négatives. Mais dès que le site Web publie son AAAA,
patatras, l'expérience utilisateur se dégrade sérieusement et le
pauvre client doit supporter des délais, voire des pannes.</p>
<p>Le problème
n'arriverait pas si les administrateurs réseaux prenaient autant soin
de la connexion IPv6 que de l'IPv4 mais ce n'est pas toujours le cas
en pratique : quand un des deux protocoles marche nettement moins bien
que l'autre, aujourd'hui, c'est presque toujours IPv6. Logiciels moins
testés, surveillance
moins sérieuse, moindre réactivité lors des pannes, sont la triste
réalité d'IPv6 chez beaucoup d'opérateurs réseaux. Un autre problème
est quantitatif : certaines bogues ne se déclenchent qu'à partir d'une
certaine quantité de trafic et les tests en laboratoire ne les
détectent donc pas. Si un gros site Web très populaire publie tout à
coup des enregistrements AAAA, on peut imaginer que l'augmentation de
trafic résultante plante des équipements réseaux qui marchaient
l'instant d'avant. Ou, tout simplement, dépasse leur capacité (section 2.3 de notre RFC). Prenons
l'exemple d'un <wikipedia name="Fournisseur d'accès à Internet">FAI</wikipedia> qui déploie
<wikipedia>6rd</wikipedia> (<rfc num="5969" local="true"/>) et le
fait tourner sur trois vieux PC avec <wikipedia>Linux</wikipedia> (le
noyau Linux a désormais 6rd en standard), cela peut marcher très bien
tant que les utilisateurs font un peu de <wikipedia name="ping (logiciel)">ping6</wikipedia>
et <wikipedia name="traceroute">traceroute6</wikipedia>, et ne pas suffire si tout à coup
<wikipedia>YouTube</wikipedia> devient accessible en IPv6.</p>
<p>Bien sûr, tous les sites Web ne sont pas logés à la même enseigne,
car ils n'ont pas tous le même public. <link
url="http://www.ietf.org/"/> a un AAAA depuis très longtemps, sans
problèmes. Mais son public, les gens qui suivent le travail de
l'<wikipedia name="Internet Engineering Task Force">IETF</wikipedia>, ne ressemble pas à celui de
<wikipedia>TF1</wikipedia> : il est nettement plus soucieux de la
qualité de sa connexion et s'assure qu'elle marche en v4 et en
v6. D'autres sites Web qui ont un public moins
<foreign><wikipedia>geek</wikipedia></foreign> ne veulent pas prendre
le moindre risque.</p>
<p>Quelle est l'ampleur de ce risque ? Quelques organisations ont fait
des études sur le malheur des globes oculaires et trouvent jusqu'à
0,078 % de malheureux. C'est évidemment très peu mais cela fait encore trop de monde pour un gros site
Web qui a des millions de visiteurs. (Voir les études « <foreign><link
url="http://www.ietf.org/proceedings/77/slides/dnsop-7.pdf">IPv6 &amp;
recursive resolvers: How do we make the transition less
painful?</link></foreign> », « <foreign><link url="http://www.networkworld.com/news/2010/032610-yahoo-dns.html">Yahoo proposes 'really ugly hack' to DNS</link></foreign> », « <foreign><link url="http://www.google.com/research/pubs/archive/36240.pdf">Evaluating IPv6 adoption in the Internet</link></foreign> » et « <foreign><link url="http://ripe61.ripe.net/presentations/162-ripe61.pdf">Measuring and Combating IPv6 Brokenness</link></foreign> ».)
Le risque est donc jugé inacceptable par beaucoup de gérants de gros
sites Web.</p>
<p>Bref, il faut trouver une solution. Sinon, le risque est que les
gérants de sites Web les plus timides retardent éternellement la
migration vers IPv6.</p>
<p>Alors, quelles sont les solutions possibles (section 4) ? Comme
avec toutes les techniques de migration vers IPv6, il ne faut pas les
appliquer toutes bêtement. Chacune a ses avantages et ses
inconvénients et le choix de la meilleure technique dépend des
caractéristiques du site Web qui veut se rendre accessible en
v6. Première méthode, la plus satisfaisante techniquement, est de
résoudre le problème à la source en s'assurant que tous les clients du
site aient un IPv6 qui marche bien. C'est ainsi que cela fonctionne
pour les sites Web qui visent un public technique, comme <link url="http://www.ietf.org/"/> : les problèmes sont
discutés et résolus collecivement. C'est en effet la meilleure
solution sauf qu'elle est souvent impossible : au contraire de ce qui
se passe pour le site Web interne à une organisation, le site Web
public typique n'a pas de
contrôle sur la connectivité de ses clients, ni sur le logiciel
utilisé (navigateur Web, par exemple). Toutefois, s'il s'agit d'un
gros site très populaire, il peut influencer les utilisateurs en
recommandant ou en déconseillant des logiciels, des FAI, ou des
configurations, par exemple via une page Web d'aide sur le site.</p>
<p>Comme le problème, par exemple d'un FAI donné, a des chances de
toucher tous les gros sites qui servent du contenu, ceux-ci peuvent
aussi se coordonner pour faire pression sur le maillon faible. Ce
genre de coordinations entre acteurs différents n'est jamais facile
mais elle a eu lieu pour le <foreign><link
url="http://isoc.org/wp/worldipv6day/">World IPv6 Day
</link></foreign>. En deux mots, celle approche du problème est
possible mais sans doute insuffisante.</p>
<p>Deuxième tactique possible, avoir des <wikipedia name="Nom de
domaine">noms de domaine</wikipedia> spécifiques à IPv6 (section
4.2). Par exemple, à la date d'écriture de cet article,
<wikipedia>Facebook</wikipedia> n'a pas d'enregistrement AAAA pour
<computer>www.facebook.com</computer> (attention, cela dépend du résolveur qui demande, pour les raisons expliquées plus loin) mais il en a un 
pour <computer>www.v6.facebook.com</computer>. Ainsi, l'utilisateur
naïf ne risque pas d'avoir des problèmes IPv6 mais l'utilisateur plus
tenté par la technique pourra essayer l'accès en IPv6 et aider au
débogage initial. Cela permet une transition progressive, au lieu
d'ouvrir les vannes en grand d'un coup. Et cela permet de tester la
connectivité v6 du site, celle de certains de ses clients,
d'introduire IPv6 en production (si le nom en question bénéficie de la
même surveillance et des mêmes exigences de qualité de service que les
noms classiques).</p>
<p>Mais cette méthode ne permet pas d'aller très loin : comme il faut
une action consciente de l'utilisateur pour se connecter en IPv6, le
trafic restera très limité. Comme la population de testeurs n'est pas représentative, les logiciels ou FAI qui sont peu utilisés
par les utilisateurs <foreign>geeks</foreign> ne seront pas réellement
testés. Cette technique ne peut donc convenir qu'au tout début de la
migration.</p>
<p>Une autre méthode, qui a été mise au point et popularisée par
<wikipedia>Google</wikipedia>, et qui est la plus détaillée dans ce RFC, est le <foreign>whitelisting</foreign>
(section 4.3). Il s'agit de configurer les serveurs DNS faisant
autorité pour le domaine, afin de ne renvoyer d'enregistrements AAAA
qu'aux clients dont on sait qu'ils ont de l'IPv6 correct, et qui ont
été placés sur une <emphasis>liste blanche</emphasis>, indiquant les
réseaux jugés corrects. Notez bien que la liste indique des réseaux,
pas des machines individuelles. Non seulement il serait humainement
impossible de gérer une liste de machines, mais en outre le serveur
<wikipedia name="Domain Name System">DNS</wikipedia> faisant autorité ne voit pas la machine
individuelle, il est interrogé par les résolveurs, typiquement des
machines du FAI.</p>
<p>Cette technique ressemble donc à celle de certains systèmes de
<foreign><wikipedia name="Répartition de charge">load-balancing</wikipedia></foreign> ou de
<wikipedia name="Content Delivery Network">CDN</wikipedia> (cf. sections 4.3.2 et 4.3.3, ainsi que le
<rfc num="1794"/>), qui eux-aussi renvoient une réponse DNS
différente selon le client. Cela évoque donc aussi le <foreign>split
DNS</foreign> (section 4.3.4) décrit dans la section 3.8 du <rfc num="2775"/>. Le
<foreign>split DNS</foreign> (conçu à l'origine pour renvoyer des
réponses différentes au client du réseau local, par exemple des
adresses <rfc num="1918" local="true"/>) a toujours été très
contesté. Les objections des sections 2.1 et 2.7 du <rfc num="2956"/>
concernent surtout le fait que le <wikipedia name="Fully qualified domain name">FQDN</wikipedia> n'est
plus un identificateur stable, si la résolution DNS dépend du
client. Cette fragmentation de l'espace de nommage est la principale
raison pour laquelle beaucoup de gens n'aiment pas le <foreign>whitelisting</foreign>.</p>
<p>Déployé <link url="http://www.google.com/intl/en/ipv6/">par Google</link>, le <foreign>whitelisting</foreign> est documenté
dans l'article de C. Marsan « <foreign><link url="http://www.networkworld.com/news/2010/032610-dns-ipv6-whitelist.html">Google, Microsoft, Netflix in talks to create
shared list of IPv6 users</link></foreign> » et dans celui de E. Kline « <foreign><link url="http://sites.google.com/site/ipv6implementors/2010/agenda/IPv6_Whitelist_Operations.pdf">IPv6 Whitelist Operations</link></foreign> ».
Son principe est donc « plutôt que de résoudre le problème,
masquons-le ».</p>
<p>Voici le <foreign>whitelisting</foreign> en action : je demande
l'adresse IPv6 de <computer>google.com</computer> depuis
<wikipedia name="Free (société)">Free</wikipedia>, qui est <foreign>whitelisté</foreign>.
<code>
<![CDATA[
% dig AAAA google.com
...
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; ANSWER SECTION:
google.com.             300     IN      AAAA    2a00:1450:4007:802::1005
]]>
</code>
Par contre, depuis <wikipedia name="Orange (entreprise)">Orange</wikipedia>, on n'a pas de
réponse.
<code>
<![CDATA[
% dig AAAA google.com
...
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...
]]>
</code>
Notez bien que le <foreign>whitelisting</foreign> est
<emphasis>complètement</emphasis> indépendant du protocole utilisé
pour le transport de la requête DNS. Le fait que le résolveur utilise
IPv4 ou IPv6 pour interroger le serveur faisant autorité n'implique
<emphasis>rien</emphasis> quant aux capacités v4 ou v6 de la machine
cliente (celle sur laquelle tourne le navigateur Web). La liste
blanche contient donc aussi bien des adresses IPv4 qu'IPv6.</p>
<p>Par définition, le fait d'être dans la liste blanche nécessite une
évaluation du réseau client. Sa maintenance est donc non triviale et
consomme des ressources humaines, nécessite des mesures, etc. Google peut se le permettre, mais ce
n'est pas accessible à tout le monde.</p>
<p>Notez que cette technique nécessite d'avoir le contrôle de tous les
serveurs faisant autorité sur le domaine, y compris les
secondaires. Et qu'elle n'est pas toujours mise en &#x153;uvre dans les
logiciels serveurs typiques, il faut donc se préparer à programmer un
peu. Je n'ai pas testé mais je suppose qu'on peut mettre en
&#x153;uvre le <foreign>whitelisting</foreign> sur
<wikipedia>BIND</wikipedia> en utilisant les vues, avec deux fichiers
de zone (un avec AAAA et un sans) et en définissant
une <wikipedia name="Access Control List">ACL</wikipedia> pour la liste blanche, dirigeant ses
membres vers la vue ayant les AAAA :
<code>
acl v6-whitelist {
                192.0.2.0/24; 
                2001:db8:3003::/48;
};
...
view "with-aaa" {
   match-clients { v6-whitelist; };
   zone "example.com" {
        ...
        file "/etc/bind/example.com-with-aaaa";
   };
};
view "external" {
   match-clients { any; };
   zone "example.com" {
        ...
        file "/etc/bind/example.com-without-aaaa";
   };
};
</code></p>
<p>La solution n'est pas parfaite : un réseau peut avoir correctement
déployé IPv6 mais un utilisateur peut avoir un navigateur Web qui a
des problèmes avec IPv6. La liste blanche stockant des réseaux, les
globes oculaires de cet utilisateur seront malheureux quand même. Mais
cela reste une des meilleures solutions existantes.   
</p>
<p>Aujourd'hui, on l'a vu, cette solution est manuelle : les réseaux
qui veulent être <foreign>whitelistés</foreign> soumettent leur
candidature, sont évalués (ce qui peut nécessiter une interaction qui
consomme donc également des ressources humaines du côté du FAI), et mis (ou pas) dans la liste. Dans le
futur, on verra peut-être une automatisation de la procédure, avec des
tests faits de temps en temps. Autre évolution possible, le passage en
mode « liste noire » où tous les clients DNS recevraient
l'enregistrement AAAA, sauf ceux explicitement listés dans la liste
noire (section 4.4). Cela sera intéressant le jour où la majorité des FAI auront un
IPv6 qui marche, et où seuls quelques maillons faibles subsisteront. </p>
<p>Un résumé des inquiétudes sur le <foreign>whitelisting</foreign>
figure dans l'article de Brzozowski, J., Griffiths, C., Klieber, T., Lee, Y.,
Livingood, J., et R. Woundy, « <foreign><link url="http://www.comcast6.net/IPv6_DNS_Whitelisting_Concerns_20100416.pdf">IPv6 DNS Resolver
Whitelisting - Could It Hinder IPv6 Adoption?</link></foreign> ».
Outre la fragmentation de l'espace de nommage, la principale
inquiétude concerne l'introduction d'une nouvelle composante dans le
réseau, qui rend le débogage plus compliqué (un principe cardinal de
l'Internet est que les décisions « politiques » doivent être faites
aux extrémités, pas dans des équipements intermédiaires, cf. <rfc
num="3724"/> et l'article de Blumenthal, M. et D. Clark, « <foreign><link url="http://dspace.mit.edu/bitstream/handle/1721.1/1519/TPRC_Clark_Blumenthal.pdf">Rethinking the design of the
Internet: The end to end arguments vs. the brave new
world</link></foreign> »
et, sur le cas spécifique du DNS, la section 2.16 du <rfc num="3234"/>.) Un bon exemple est donné
par les résultats de <wikipedia name="Dig (programme informatique)">dig</wikipedia> cités plus haut :
déboguer l'accès à Google va dépendre du réseau où on fait le dig. De
beaux malentendus peuvent alors survenir. Mais
le débat est complexe : s'il y a un large consensus sur l'importance
de ne <emphasis>pas</emphasis> mettre trop d'état et de décisions dans
les équipements intermédiaires (le principe « de bout en bout »), la
discussion a toujours fait rage sur qu'est-ce qu'un équipement
intermédiaire. Est-ce qu'un serveur DNS fait partie des
<foreign>middleboxes</foreign> qui perturbent si souvent la connexion
de bout en bout ?</p>
<p>Enfin, la dernière tactique de migration possible est le saut
direct (section 4.5) : activer IPv6 sur le serveur, le tester, puis
publier un AAAA normal. Cela n'est pas forcément si radical que ça car
on peut le faire nom par nom (par exemple, pour
<computer>static-content.example.com</computer> avant
<computer>www.example.com</computer>) mais c'est quand même la méthode
la plus audacieuse. À ne faire qu'une fois qu'on maîtrise bien
IPv6. Relativisons tout de même les choses : des tas de sites Web vus
par un public non technique (comme <link url="http://www.afnic.fr/"/>)
ont un AAAA depuis de nombreuses années et sans que cela crée de
problèmes.</p>
<p>Si on est toutefois inquiets, on peut utiliser cette tactique, mais
pendant une période limitée : on teste, on publie le AAAA pendant
quelques heures, on arrête, on analyse les résultats, on corrige les
éventuels problèmes et on recommence.</p>
<p>Pour les lecteurs pressés, la section 5 résume les étapes possibles
d'un plan de transition. Là encore, pas question de l'appliquer
aveuglément. Chacun doit l'adapter aux caractéristiques spécifiques
de son réseau. Rappelez-vous en outre que le RFC cible les gros sites
: la plupart des petits n'auront pas envie d'autant d'étapes. Voici ces étapes potentielles successives :
<enum>
<item>Uniquement IPv4 (malheureusement la situation de la grande
majorité du Web aujourd'hui),</item>
<item>Activation d'IPv6 et publication par des noms spécifiques, genre
<computer>www.ipv6.example.org</computer>,</item>
<item>Peut-être une étape de <foreign>whitelisting</foreign> avec
gestion manuelle,</item>
<item>Peut-être suivi par une étape de <foreign>whitelisting</foreign>
automatique,</item>
<item>Le <foreign>whitelisting</foreign> étant prévu pour être une
étape temporaire, on va le couper, une fois les problèmes
résolus. (Cela peut se faire lors d'une occasion un peu solennelle
comme le <foreign><link url="http://www.worldipv6launch.org/">World
IPv6 Launch</link></foreign> le 6 juin 2012.)</item>
<item>À partir de là, le site est complètement accessible en IPv6 (et
en IPv4),
avec le nom de domaine normal.</item>
<item>La section 6.3 discute du cas, très futuriste à l'heure
actuelle, où certains auront une meilleur connectivité en IPv6 qu'en
IPv4. Il faudra alors mettre au point des techniques de transition
pour retirer l'accès IPv4 petit à petit.</item>
</enum>
</p>
<p>Voici, vous connaissez maintenant l'essentiel. La section 6 du RFC
liste quelques points de détail. Par exemple, contrairement à ce que
certains pourraient croire au premier abord, le
<foreign>whitelisting</foreign> est tout à fait compatible avec
<wikipedia name="Domain Name System Security Extensions">DNSSEC</wikipedia> (section 6.1), puisqu'il se fait sur les serveurs
faisant autorité. Ceux-ci peuvent donc parfaitement signer les deux
versions de la réponse, avec ou sans AAAA, et ces deux réponses
pourront être vérifiés comme authentiques.</p>
<p>Par contre, si un résolveur DNS s'avisait de faire des
manipulations analogues au <foreign>whitelisting</foreign>, par
exemple en retirant les réponses AAAA vers des clients qu'il sait ne
pas gérer IPv6 correctement, alors, là, DNSSEC détecterait la
manipulation comme une tentative d'attaque, et la réponse ne pourrait
pas être validée.</p>
<p>On a vu que la gestion d'une liste blanche représentait un certain
travail. Il est donc tentant de partager les résultats de ce travail
entre plusieurs acteurs. Mais attention à le faire en respectant la
vie privée (section 6.2). Il n'y a pas de problèmes avec les listes
actuelles, dont la granularité ne descend pas jusqu'à l'individu,
mais, si des listes plus précises devaient apparaître, ce problème est
à garder en tête.</p>
</content>
</rfcdesc>