\include{parameters}
\usetheme{AFNIC}
\usepackage[french]{babel}
\usepackage[latin1]{inputenc}
\usepackage{bortzmeyer-utils}

\title{IPv6 en 2011, état, techniques et prévisions ou « Comment assurer une transition heureuse »}
\author{Stéphane Bortzmeyer\\AFNIC\\\texttt{bortzmeyer@nic.fr}}
\date{GUILDE, Grenoble, 12 avril 2011}

%\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex} 
% \setlength{\parskip}{15pt} 
\setlength{\parskip}{15pt plus 10pt minus 10pt} 

\begin{document}

\maketitle

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}
\frametitle{Rappel : pourquoi IPv6}
\begin{enumerate}
\item Quantité massive d'adresses permettant de :
\begin{enumerate}
\item Attribuer une adresse à chacun (IPv4 est trop petit, même si
l'allocation était parfaite)
\item Permettre un changement de modèle, s'éloignant de l'ordinateur classique (Internet des
objets : ma montre, mon téléphone et mes chaussures ont une adresse
IP).
\item Permettre des plans d'adressage rigolos (condensats
cryptographiques de clés dans les adresses).
\end{enumerate}
\item<2-> Et c'est à peu près tout (pas de changement au routage, c'est
exprès ; pas d'innovations, IPsec par exemple n'est pas spécifique de v6).
\end{enumerate}

\end{frame}
        
\begin{frame}
\frametitle{État actuel : IPv4 est fini}
Depuis des années, il y avait pénurie : essayez d'obtenir une adresse
IPv4 pour chaque ordinateur chez vous.
\begin{block}<2->{Le 3 février 2011, l'IANA a épuisé sa réserve}
{À partir de juillet 2011, les RIR vont épuiser la leur et passer en mode
« le dernier /8 » (adresses distribuées encore plus au
compte-gouttes). Le premier sera
APNIC \url{http://www.apnic.net/community/ipv4-exhaustion/graphical-information} :
au 7 avril, il ne reste qu'un /8 et demi}
\end{block}
\only<3->{Résultat, il va falloir déployer IPv6 alors qu'IPv4 est déjà terminé.}
\end{frame}
        
\begin{frame}
\frametitle{Horreurs en tout genre}
Résultat de la pénurie, déploiement massif du NAT :
\begin{enumerate}
\item<2-> Sans que cela soit officiel, l'architecture de l'Internet a
changé, il n'y a plus de bout en bout,
\item<3-> Déployer de nouveaux services très différents devient
quasi-impossible,
\item<4-> Complication du code (STUN, ICE), on tunnele tout sur HTTP.
\end{enumerate}
\only<5->{Les conséquences sont politiques, pas seulement techniques :
pas de serveur chez soi, difficulté pour le pair-à-pair, difficulté
pour la téléphonie. Cela ne fait pas que des malheureux ! (HADOPI,
opérateurs voix traditionnels)}
\end{frame}

\begin{frame}
\frametitle{Le zoo des NAT}
\begin{itemize}
\item NAT44: l'actuel,
\item<2-> NAT444: ce qu'ont déjà asiatiques et africains: plus une seule
adresse IP publique chez le client,
\item<3-> NAT64: une des techniques de co-existence, pour les premiers
qui seront purement en IPv6,
\item<4-> NAT66: pour les organisations citées plus haut, qui trouvent
que le NAT a des avantages,
\item<5-> NAT464 et NAT646 pour bientôt ?
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{État actuel : IPv6 n'est pas allé loin}

\begin{itemize}
\item Mises en \oe{}uvre : c'est quasiment parfait pour les gros
logiciels libres très visibles. Pour les petits utilitaires, ou pour
le logiciel privateur\ldots
\item<2-> FAI, opérateurs et hébergeurs : certains en France (pas
tous), très peu aux USA, aucun en Afrique.
\item<3-> Enseignement : très en retard. Dans le meilleur des cas, un
cours de 2 heures « Réseau avancé : IPv6 » tout à la fin d'une année
où tous les exemples étaient en IPv4.
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Statistiques}
Obtenues par DNSwitness sur .FR : près de 40 \% des domaines ont au
moins un serveur de noms en IPv6. Mais c'est beaucoup moins brillant
pour le Web.
\includegraphics[width=11cm,height=6.5cm]{dnswitness-ipv6.png} 
\end{frame}

\begin{frame}
\frametitle{Autres statistiques de déploiement}
Chez
Google \url{http://www.nanog.org/meetings/nanog49/presentations/IPv6atGoogle.pdf}
« \foreign{Most ``native'' IPv6 users are in France} »
\end{frame}
        
\begin{frame}
\frametitle{Prédiction}
\includegraphics[width=11cm,height=7cm]{800px-Chatsworth_train_crash_wikinews.jpg}
	

\tiny{(Photo de Craig Wiggenhorn, récupérée sur Wikimedia Commons)}

\end{frame}
        
\begin{frame}
\frametitle{Migration : le plan originel}

\begin{block}{Il est faux de prétendre qu'il n'y avait pas de plan de
migration}
{RFC 3750, 4057, 4213, 5211\ldots Tous ces plans étaient fondés sur
la \emph{double pile}. 

seulement-v4 $\longrightarrow$
tout-le-monde-v4-certains-v6 $\longrightarrow$ tout-le-monde-v4-et-v6
$\longrightarrow$ certains-v4-tout-le-monde-v6 $\longrightarrow$ seulement-v6}
\end{block}

\only<2->{Ce schéma n'est plus réaliste aujourd'hui puisqu'il n'y a
plus d'adresses v4.}

\only<3->{On va se
crasher mais on peut encore le faire à 50 km/h plutôt qu'à 200 km/h.}
\end{frame}

\begin{frame}
\frametitle{Les plans actuels de coexistence et de transition}

\only<1-3>{Le choix est vaste, tunnels 6in4, 6rd, NAT64, DS-lite...}

\begin{block}<2-4>
{Le plus important, avec tous ces plans...}
{Est de comprendre lequel s'applique à votre problème. Il ne faut pas
les déployer aveuglément, chacun sert à quelque chose de précis ! On
n'est surtout pas obligé de maîtriser \emph{toutes} ces techniques.} 
\end{block}

\only<3->{Bonne page Wikipédia, très
complète \url{http://en.wikipedia.org/wiki/IPv6_transition_mechanisms}}

\end{frame}

\begin{frame}
\frametitle{Le vrai objectif (à garder en tête)}
\includegraphics[width=11cm,height=7cm]{Sunrise_of_Lovina_200507-2.png}
	

\tiny{(Photo anonyme, récupérée sur Wikimedia Commons)}

\end{frame}

\begin{frame}
\frametitle{Faire un choix}
Pour choisir la technique adaptée à votre cas : faites l'inventaire
de votre réseau et de ses partenaires. Qu'est-ce qui manque ?
Qu'est-ce qui n'est pas IPv6 ?

\begin{enumerate}
\item Des adresses publiques IPv4 et/ou des applications qui gèrent
IPv6 : DS-Lite
\item Mon réseau de collecte (DSLAM...) : 6rd
\item Mon FAI n'est pas v6 : tunnel
\item Moi, ça va, c'est le reste de l'Internet qui est encore
partiellement v4 : NAT64
\end{enumerate}

\end{frame}

\begin{frame}
\frametitle{Ceux dont on ne parle pas}
\begin{block}
{Certaines techniques sont vraiment trop horribles}
{Et ne sont donc pas mentionnées ici (6to4, Teredo...). D'autres ont
été officiellement abandonnées (NAT-PT...).}
\end{block}
\end{frame}

\begin{frame}
\frametitle{Les tunnels}

\only<1-3>{Le but : connecter une île IPv6 à l'Internet IPv6, au dessus d'un Internet IPv4. Très
utile aujourd'hui, bien des FAI ne fournissant pas IPv6.}

\only<2-4>{Le principe : on encapsule des paquets IPv6 dans de
l'IPv4. Il y a plusieurs méthodes, avec négociation automatique via le protocole
TSP (RFC 5572) ou par configuration manuelle.}

\only<3->{Les fournisseurs : plusieurs fournisseurs gratuits comme
SixXS, Hexago/Freenet. Je
recommande Hurricane Electric.}

\only<4->{Les inconvénients : tous les tunnels diminuent la MTU du
chemin. En théorie, c'est sans conséquence mais en pratique...}

\end{frame}

\begin{frame}[fragile]
\frametitle{Exemple de tunnel manuel sur une Debian}
\begin{info}
auto 6in4
iface 6in4 inet6 v4tunnel 
   # Le POP d'Hurricane Electric au Panap
   endpoint 216.66.84.42
   address 2001:470:1f12:420::2
   netmask 64
   # "gateway" n'a pas l'air de marcher ?
   up route -A inet6 add ::/0 dev 6in4
\end{info}
Les paquets IPv6 seront encapsulés en v4, délivrés à 216.66.84.42, qui les décapsulera.
\end{frame}

Sur une Gentoo :

\begin{info}
start() {
        ebegin "Starting IPv6 connection through Hurricane Electric"
        (
             modprobe ipv6
             ifconfig sit0 up
             ifconfig sit0 inet6 tunnel ::209.51.181.2
             ifconfig sit1 up
             ifconfig sit1 inet6 add 2001:470:1f10:3aa::2/64
             route -A inet6 add ::/0 dev sit1
        )
        eend \$?
}
\end{info}

\begin{frame}
\frametitle{6rd}
\only<1-3>{Le but : pour un FAI, fournir une connectivité IPv6 à ses
        clients alors que le réseau du FAI a des composants purement
        v4 qu'on ne peut pas bouger (par exemple les DSLAM)

}
\only<2-4>{Le principe : Encapsulation des paquets v6 par le CPE
        (la \foreign{box}) et décapsulation juste avant la sortie du
        réseau du FAI

}
\only<3-5>{Les logiciels : c'est désormais dans le noyau Linux. Cisco
        a aussi une mise en \oe{}uvre.

}
\only<4->{Les normes : RFC 5969 (remplace le 5569)

}
\only<5->{Les inconvénients : tunnel, donc problèmes de MTU

}

\end{frame}

\begin{frame}[fragile]
\frametitle{NAT64}
\only<1-2>{Le but : connecter à l'Internet IPv4 des machines
entièrement IPv6. Compte-tenu de l'épuisement d'IPv4, de telles
machines vont bientôt exister.}

\only<2-2>{Le principe : traduire dynamiquement les paquets IPv6 en
IPv4 et réciproquement. Un peu comme le NAT44 mais on ne change pas
que l'adresse.}

\begin{info}
% telnet twitter.com 80
Trying 64:ff9b::80f2:f0f4...
Connected to twitter.com.
...
\end{info}

\end{frame}

\begin{frame}
\frametitle{NAT64 en image}
\includegraphics[width=11cm,height=7cm]{1000px-AFTNAT64-svg.png}

\tiny{(Dessin de Mro, récupéré sur Wikimedia Commons)}
\end{frame}

\begin{frame}[fragile]
\frametitle{DNS64}
\only<1-2>{Les détails : comme la machine IPv6 ne demande que des
adresses v6 (enregistrement AAAA), le DNS doit mentir : DNS64 fabrique
des adresses v6 à partir des v4.}

\only<2-2>{BIND $\ge$ 9.8 a cette possibilité}

\begin{info}
options {
       ...
       dns64 64:ff9b::/96 { // The well-known prefix
              mapped { !rfc1918; any; }; 
                     // Never synthetize AAAA records
                     // for private addresses
        };
\end{info}

\end{frame}


\begin{frame}
\frametitle{NAT64, suite}

\only<1->{Les logiciels : deux NAT64 en logiciel libre, Ecdysis et Tayga. Bientôt
       dans les routeurs et \foreign{boxes} ?}

\only<2->{Les normes : RFC pas encore sortis mais presque.}

\only<3->{Les inconvénients : peut poser des problèmes avec
DNSSEC. Change la MTU. Complication accrue.}

\end{frame}

\begin{frame}[fragile]
\frametitle{Exemple avec Ecdysis}

C'est un module noyau Linux pour mettre sur le routeur (qui doit avoir
une adresse v4).

\begin{info}
% sudo ./nat64-config.sh
...
% netstat -r -n  -Ainet6
Kernel IPv6 routing table
Destination       Next Hop   Flag Met Ref Use If
64:ff9b::/96      ::         U    1024 0     0 nat64
...
\end{info}

\end{frame}

\begin{frame}
\frametitle{DS-Lite}
\only<1-2>{Le but : connecter à l'Internet IPv4 et IPv6 des machines
IPv4 au dessus d'un FAI v6, et sans avoir d'adresses IPv4. 

C'est donc le contraire de 6rd : DS-lite cible les nouveaux entrants,
dont le réseau sera v6 dès le début et qui n'auront jamais d'adresses
v4 publiques.}

\only<2-2>{Le principe : le réseau local du client a des adresses
privées v4. La \foreign{box} encapsule les paquets v4 au dessus du
réseau v6 jusqu'à un NAT géant (CGN pour \foreign{Carrier-Grade NAT})}
\end{frame}

\begin{frame}
\frametitle{DS-Lite en image}

\includegraphics[width=11cm,height=7cm]{1000px-DSLite-svg.png}

\tiny{(Dessin de Mro, récupéré sur Wikimedia Commons)}

\end{frame}

\begin{frame}
\frametitle{DS-Lite, suite}
\only<1->{Les logiciels : un AFTR (un des composants, le CGN) en logiciel
libre à l'ISC. Bientôt
dans les routeurs et \foreign{boxes} ?}

\only<2->{Les normes : RFC pas encore sortis.}

\only<3->{Les inconvénients : très complexe. Le CGN sera t-il
suffisant ? Problèmes liés au partage d'adresses : HADOPI ne sera pas contente.}

\end{frame}

TODO: autres techniques ?

- 4RD (impose un CPE compatible)

TODO: comparaison des techniques ?

http://g6.asso.fr/blog/2011/03/31/avec-ou-sans-etat/

\begin{frame}
\frametitle{Rendre heureux les globes oculaires}
Et pour ceux qui ont suivi les recommandations et qui sont en
double-pile ? Que se passe t-il s'ils se connectent à un serveur
double-pile ?

\begin{enumerate}
\item<2-> M. Michu a un Windows de moins de dix ans, et un navigateur Web
correct, Firefox, il a IPv6,
\item<3-> Sur le réseau local de M. Michu, son petit neveu a activé
IPv6, la machine Windows se configure toute seule,
\item<4-> Google active IPv6 pour un service critique vital : YouTube,
\item<5-> Mais le FAI de M. Michu ne route pas IPv6 ou bien le fait
mal. Firefox prend des plombes avant de timeouter. M. Michu, furieux,
dit du mal d'IPv6 sur Twitter, où on lui explique comment couper IPv6.
\item<6-> Il sera difficile de convaincre M. Michu de réessayer...
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Les solutions pour les globes oculaires}
Le \foreign{whitelisting} DNS, à la Google : n'envoyer de AAAA qu'aux
réseaux placés sur une liste blanche (seuls les bons sont mis sur la liste).

Autres solutions ? Changer les applications pour faire des tentatives
de connexion en parallèle \url{http://www.isc.org/community/blog/201101/how-to-connect-to-a-multi-homed-server-over-tcp}
\end{frame}

\begin{frame}
\frametitle{Conclusion}
\begin{block}<2->{À vous de l'écrire}
{L'avenir d'IPv6 et de l'Internet dépend de vous}
\end{block}
\end{frame}

\end{document}
