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

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

Auteur(s) du RFC: J. Livingood (Comcast)


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


Ce document rassemble un certain nombre d'analyses et de conseils sur 
la transition vers IPv6 pour les gens qui hébergent du contenu, 
typiquement les sites Web. 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 "whitelisting", qui consiste à ne renvoyer d'adresses IPv6 
(les enregistrements AAAA du DNS) qu'à certains réseaux, identifiés 
comme mettant en oeuvre correctement IPv6. Cette technique a été 
popularisée par Google 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.

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.

Le but est donc de migrer de gros sites Web uniquement accessible en 
IPv4 (la grande majorité des gros sites Web à l'heure actuelle, la 
principale exception étant Google) vers un accès possible en IPv4 
(protocole qui ne va pas disparaître de si tôt) *et* IPv6.

Mais quels sont les problèmes qu'IPv6 pourrait causer ? Le site Web 
typique publie son adresse dans le DNS. Pour l'adresse IPv4, il utilise 
un enregistrement de type A. Pour IPv6, de type AAAA. Ainsi, 
aujourd'hui, www.bortzmeyer.org annonce deux AAAA et un A :


% 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
...


Par contre, la très grande majorité des sites Web ne publient que des
A, par exemple www.gouvernement.fr :



% 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.
...


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 *malheur des globes
oculaires* ("eyeball misery" ?). J'ai décrit ce
problème dans un autre
article <http://www.bortzmeyer.org/globes-oculaires-heureux.html> et il fait en 
outre l'objet de deux autres RFC, les
RFC 6555 et RFC 6556. 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.

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 FAI 
qui déploie 6rd (RFC 5969) et le fait tourner sur trois vieux PC avec 
Linux (le noyau Linux a désormais 6rd en standard), cela peut marcher 
très bien tant que les utilisateurs font un peu de ping6 et 
traceroute6, et ne pas suffire si tout à coup YouTube devient 
accessible en IPv6.

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. 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'IETF, ne ressemble pas à celui de TF1 : 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 "geek" ne veulent pas prendre le moindre risque.

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 « "IPv6 & recursive resolvers: How do we make the transition 
less painful? <http://www.ietf.org/proceedings/77/slides/dnsop-7.pdf>" 
», « "Yahoo proposes 'really ugly hack' to DNS 
<http://www.networkworld.com/news/2010/032610-yahoo-dns.html>" », 
« "Evaluating IPv6 adoption in the Internet 
<http://www.google.com/research/pubs/archive/36240.pdf>" » et 
« "Measuring and Combating IPv6 Brokenness 
<http://ripe61.ripe.net/presentations/162-ripe61.pdf>" ».) Le risque 
est donc jugé inacceptable par beaucoup de gérants de gros sites Web.

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.

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 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.

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 "World IPv6 Day <http://isoc.org/wp/worldipv6day/>". En 
deux mots, celle approche du problème est possible mais sans doute 
insuffisante.

Deuxième tactique possible, avoir des noms de domaine spécifiques à 
IPv6 (section 4.2). Par exemple, à la date d'écriture de cet article, 
Facebook n'a pas d'enregistrement AAAA pour www.facebook.com 
(attention, cela dépend du résolveur qui demande, pour les raisons 
expliquées plus loin) mais il en a un pour www.v6.facebook.com. 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éboguage 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).

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 "geeks" ne seront pas réellement testés. Cette technique 
ne peut donc convenir qu'au tout début de la migration.

Une autre méthode, qui a été mise au point et popularisée par Google, 
et qui est la plus détaillée dans ce RFC, est le "whitelisting" 
(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 *liste blanche*, 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 DNS faisant autorité ne 
voit pas la machine individuelle, il est interrogé par les résolveurs, 
typiquement des machines du FAI.

Cette technique ressemble donc à celle de certains systèmes de 
"load-balancing" ou de CDN (cf. sections 4.3.2 et 4.3.3, ainsi que le 
RFC 1794), qui eux-aussi renvoient une réponse DNS différente selon le 
client. Cela évoque donc aussi le "split DNS" (section 4.3.4) décrit 
dans la section 3.8 du RFC 2775. Le "split DNS" (conçu à l'origine pour 
renvoyer des réponses différentes au client du réseau local, par 
exemple des adresses RFC 1918) a toujours été très contesté. Les 
objections des sections 2.1 et 2.7 du RFC 2956 concernent surtout le 
fait que le FQDN 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 
"whitelisting".

Déployé par Google <http://www.google.com/intl/en/ipv6/>, le 
"whitelisting" est documenté dans l'article de C. Marsan « "Google, 
Microsoft, Netflix in talks to create shared list of IPv6 users 
<http://www.networkworld.com/news/2010/032610-dns-ipv6-whitelist.html>" 
» et dans celui de E. Kline « "IPv6 Whitelist Operations 
<http://sites.google.com/site/ipv6implementors/2010/agenda/IPv6_Whitelis
t_Operations.pdf>" ». Son principe est donc « plutôt que de résoudre le 
problème, masquons-le ».

Voici le "whitelisting" en action : je demande l'adresse IPv6 de 
google.com depuis Free, qui est "whitelisté".


% 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


Par contre, depuis Orange, on n'a pas de
réponse.



% dig AAAA google.com
...
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...


Notez bien que le "whitelisting" est
*complètement* 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
*rien* 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.

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.

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 oeuvre 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 oeuvre le "whitelisting" sur 
BIND en utilisant les vues, avec deux fichiers de zone (un avec AAAA et 
un sans) et en définissant une ACL pour la liste blanche, dirigeant ses 
membres vers la vue ayant les AAAA :

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";
   };
};


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.

Aujourd'hui, on l'a vu, cette solution est manuelle : les réseaux qui 
veulent être "whitelistés" 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.

Un résumé des inquiétudes sur le "whitelisting" figure dans l'article 
de Brzozowski, J., Griffiths, C., Klieber, T., Lee, Y., Livingood, J., 
et R. Woundy, « "IPv6 DNS Resolver Whitelisting - Could It Hinder IPv6 
Adoption? 
<http://www.comcast6.net/IPv6_DNS_Whitelisting_Concerns_20100416.pdf>" »
. 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éboguage 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 3724 et 
l'article de Blumenthal, M. et D. Clark, « "Rethinking the design of 
the Internet: The end to end arguments vs. the brave new world 
<http://dspace.mit.edu/bitstream/handle/1721.1/1519/TPRC_Clark_Blumentha
l.pdf>" » et, sur le cas spécifique du DNS, la section 2.16 du RFC 
3234.) Un bon exemple est donné par les résultats de dig 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 *pas* 
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 "middleboxes" qui perturbent si souvent la connexion de 
bout en bout ?

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 static-content.example.com avant 
www.example.com) 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 http://www.afnic.fr/) ont un AAAA depuis de nombreuses années et 
sans que cela crée de problèmes.

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.

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 :
* Uniquement IPv4 (malheureusement la situation de la grande majorité 
du Web aujourd'hui),
* Activation d'IPv6 et publication par des noms spécifiques, genre 
www.ipv6.example.org,
* Peut-être une étape de "whitelisting" avec gestion manuelle,
* Peut-être suivi par une étape de "whitelisting" automatique,
* Le "whitelisting" é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 solenelle comme le "World IPv6 Launch 
<http://www.worldipv6launch.org/>" le 6 juin 2012.)
* À partir de là, le site est complètement accessible en IPv6 (et en 
IPv4), avec le nom de domaine normal.
* 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.


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 "whitelisting" est tout 
à fait compatible avec DNSSEC (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.

Par contre, si un résolveur DNS s'avisait de faire des manipulations 
analogues au "whitelisting", 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.

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.

_______________________________________________
G6 -- Association Francophone pour la promotion d'IPv6 (http://www.g6.asso.fr)
Liste IPv6tech [email protected]
Info : http://mail.g6.asso.fr/mailman/listinfo/ipv6tech

Répondre à