\documentclass[ignorenonframetext]{beamer}
%\documentclass[ignorenonframetext,handout]{beamer}
%\usepackage{pgfpages}
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]

\usetheme{Montpellier}
\usepackage[french]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{bortzmeyer-utils}

\begin{document}

\begin{frame}
\frametitle{IPv6 et vous}  
\begin{enumerate}
\item<2->Bonjour
\item<3->Exposé mêlant technique et stratégie (la stratégie, c'est ce
  qu'on fait quand on ne comprend pas la technique)
\item<4->L'auteur : Stéphane Bortzmeyer
  \url{stephane+ipv6@bortzmeyer.org}, a envoyé son premier paquet IPv6
  en 1998
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Qu'est-ce que c'est qu'IPv6}  
Petit rappel sur le modèle en couches
\includegraphics{Internet-hourglass.pdf} % http://commons.wikimedia.org/wiki/File:Internet-hourglass.svg
\foreign{IP over everything, all applications over IP} 
\end{frame}

\begin{frame}
\frametitle{Autres points importants de l'Internet}
\begin{itemize}
\item<2->Alice peut parler à Bob directement,
\item<3->Les intermédiaires (GAFA\ldots) ne sont \emph{pas}
  nécessaires,
\item<4->Cela nécessite qu'Alice puisse \emph{désigner} (nommer) la
  machine de Bob : l'adresse IP (\computer{198.51.100.72}) 
\item<5->Pouvoir être joint n'est pas que pour héberger un serveur à
  la maison : pair-à-pair, voix sur IP\ldots
\item<6->Et tout le monde utilise le même protocole, de Google à
  vous. 
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Qu'est-ce qu'IPv4 ?} 
\begin{enumerate}
\item<2->Version actuelle du protocole IP,
\item<3->Les adresses IP sont à la fois des
  \emph{identificateurs} et des \emph{localisateurs},
\item<4->Les adresses IP sont sur 32 bits (et, hélas, 1 000 fois
  hélas, les applications le savent et le manipulent).
\end{enumerate}
\end{frame}

\begin{frame}[fragile]
  \frametitle{L'en-tête IPv4}
  \begin{info}
Internet Protocol Version 4, Src: 204.62.14.153 (204.62.14.153), Dst: 106.186.29.14 (106.186.29.14)
    Version: 4
    Header Length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
    Total Length: 60
    Identification: 0x8586 (34182)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (6)
    Header checksum: 0x5296 [validation disabled]
    Source: 204.62.14.153 (204.62.14.153)
    Destination: 106.186.29.14 (106.186.29.14)    
  \end{info}
\end{frame}

\begin{frame}
\frametitle{Qu'est-ce qui coince dans IPv4}  
\begin{itemize}
\item<1->Espace d'adressage trop petit (de un ordinateur par
  entreprise à un par personne, puis désormais à plusieurs par
  personne),
\item<2->Et pas mal de petits détails (difficulté à analyser les
  options IP).
\end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Au passage}
  \begin{block}
    {Une notion importante est celle de \emph{préfixe} d'adresses IP.}
    {
      \begin{itemize}
      \item<2->Bien des services ne traitent pas les adresses IP
        individuellement mais par un préfixe
      \item<3->On note la longueur du préfixe après le préfixe. 
      \item<4->Exemple : \path{198.18.0.0/26} a une longueur de 26
        bits. Restent 6 bits pour spécifier.
      \item<5->Les préfixes servent pour le routage, l'allocation
        d'adresses, les ACL\ldots
      \end{itemize}
}
  \end{block}
\end{frame}

\begin{frame}
\frametitle{Épuisement IPv4}
\begin{enumerate}
\item<2->L'IANA a distribué les derniers /8 le 3 février 2011,
\item<3->Le RIPE-NCC est passé en mode « dernier /8 » le 14
septembre 2012,
\item<4->Le seul RIR qui n'est pas passé en mode pénurie est Afrinic.
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Le changement de modèle}  
\begin{block}
  {Aujourd'hui, la taille du sablier est plus haute. Ce n'est plus IP
    qui unifie tout.}
  {On peut dire qu'on a un sablier déformé, où le point le plus
    étroit, l'unificateur, est HTTP.}
\end{block}
\end{frame}

\begin{frame}
  \frametitle{Le changement de modèle, suite}
  \begin{itemize}
  \item<2->De plus en plus difficile d'avoir un accès Internet
    (capacité d'être appelé) : NAT et, pire, CGN, \foreign{middleboxes}\ldots
  \item<3->Cela fait la joie des organisations du passé (État,
    CSA, ayant-trop-de-droits\ldots) qui veulent qu'on passe obligatoirement par de grosses plate-formes. 
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Histoire d'IPv6}  
\begin{enumerate}
\item<2->1994 Groupe de travail IETF ipng \foreign{IP Next Generation}
\item<3->1995, RFC 1752, qui recommande SIPP, le futur IPv6
\item<4->1995, RFC 1883, première norme IPv6
\item<5->2013, optimiste, l'IETF crée un groupe de travail sunset4, chargé de la disparition d'IPv4\ldots
\end{enumerate}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Ma seule contribution}
  \url{http://marc.info/?l=ipng&m=98731901415295&w=1} sur les problèmes
de MTU minimum
\begin{info}
The values are:

MTU:   Number of hosts    Comments
1500:  2229               Maximum available for that survey
1006:    64               Typical SLIP line
576:     16               X25 or LocalTalk
1478:    11
1010:     7
572:      5
512:      5               Netbios is the only possibility listed in RFC 1191
1492:     5               IEEE 802.3      
296:      5               Recommended value in RFC 1191 for slow lines
68:       3               Lowest possible value. Who uses it???  
\end{info}
\end{frame}

\begin{frame}
\frametitle{IPv6 en un slaïde}
\begin{itemize}
\item<2->Adresses sur 128 bits,
\item<3->Format d'en-têtes complètement différent, avec moins de
  champs (pas très utile à savoir, sauf si vous programmez un routeur ou un
  noyau),
\item<4->Et c'est quasiment tout. Aucune raison d'en faire tout un
  fromage pour retarder la transition.
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{Le nouvel en-tête}
\begin{info}
Internet Protocol Version 6, Src: 2605:4500:2:245b::bad:dcaf (2605:4500:2:245b::bad:dcaf), Dst: 2400:8900::f03c:91ff:fe69:60d3 (2400:8900:
:f03c:91ff:fe69:60d3)
    0110 .... = Version: 6
    .... 0000 0000 .... .... .... .... .... = Traffic class: 0x00000000
        .... 0000 00.. .... .... .... .... .... = Differentiated Services Field: Default (0x00000000)
        .... .... ..0. .... .... .... .... .... = ECN-Capable Transport (ECT): Not set
        .... .... ...0 .... .... .... .... .... = ECN-CE: Not set
    .... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000
    Payload length: 40
    Next header: TCP (6)
    Hop limit: 64
    Source: 2605:4500:2:245b::bad:dcaf (2605:4500:2:245b::bad:dcaf)
    Destination: 2400:8900::f03c:91ff:fe69:60d3 (2400:8900::f03c:91ff:fe69:60d3)
\end{info}
\end{frame}

\begin{frame}
\frametitle{Autres détails}
\begin{itemize}
\item<2->Adresses « locales au lien » (\computer{fe80::30a4:e1ff:fa71:37a3}),
\item<3->Autoconfiguration sans état (préfixe du réseau + valeur aléatoire). 
\item<4->Des changements de noms, pour des protocoles qui restent très proches (ARP devient NDP)
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Points communs entre IPv4 et IPv6}
\begin{itemize}
\item<2->IPv6 est IP : les principes de base sont les mêmes,
\item<3->Par exemple, l'adresse reste double, identificateur et
  localisateur,
\item<4->Options pénibles à analyser \url{http://www.bortzmeyer.org/analyse-pcap-ipv6.html},
\item<5->Le routage est le même, etc.
\end{itemize}
\only<6->{Les deux protocoles ont plus de points communs que de différences.}
\end{frame}

\begin{frame}
\frametitle{Différences entre IPv4 et IPv6}
\begin{itemize}
\item<2->La taille a des conséquences : par exemple, tester toutes les
  adresses IPv4 de l'Internet est aujourd'hui trivial, le faire même
  sur un réseau local en IPv6 est difficile.
\item<3->Certaines techniques naïves ne marchent plus : exemple d'un
  IPAM (gestion d'adresses allouées) qui créait une entrée par
  adresse IP dans sa base de données. Avec un préfixe IPv6, ça coince.
\end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Démos}
  \begin{info}
% ping6 -c 2  2400:8900::f03c:91ff:fe69:60d3 
PING 2400:8900::f03c:91ff:fe69:60d3(2400:8900::f03c:91ff:fe69:60d3) 56 data bytes
64 bytes from 2400:8900::f03c:91ff:fe69:60d3: icmp_seq=1 ttl=50 time=177 ms
64 bytes from 2400:8900::f03c:91ff:fe69:60d3: icmp_seq=2 ttl=50 time=177 ms

--- 2400:8900::f03c:91ff:fe69:60d3 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 177.252/177.540/177.829/0.510 ms    
  \end{info}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Démos, suite}
\begin{info}
% traceroute6  2400:8900::f03c:91ff:fe69:60d3 
traceroute to 2400:8900::f03c:91ff:fe69:60d3 (2400:8900::f03c:91ff:fe69:60d3) from 2605:4500:2:245b::bad:dcaf, port 33434, from port 56231, 30 hops max, 60 bytes packets
 1  2605:4500:2::2 (2605:4500:2::2)  0.689 ms  0.373 ms  0.340 ms 
 2  ge-7-19.car2.Newark1.Level3.net (2001:1900:2100::1861)  1.145 ms  1.061 ms  1.140 ms 
 3  vl-4080.car1.Newark1.Level3.net (2001:1900:4:1::c1)  62.986 ms  108.244 ms  168.262 ms 
 4  2001:1900:4:1::ce (2001:1900:4:1::ce)  1.425 ms  1.528 ms  1.532 ms 
 5  vl-4080.car1.NewYork1.Level3.net (2001:1900:4:1::e1)  20.961 ms  1.541 ms  1.558 ms 
 6  vl-4040.edge1.SanJose1.Level3.net (2001:1900:4:1::5d)  70.061 ms  70.171 ms  70.037 ms 
 7  vl-80.edge1.SanJose2.Level3.net (2001:1900:1a:7::13)  71.934 ms  71.903 ms  72.068 ms 
 8  KDDI-AMERIC.edge1.SanJose2.Level3.net (2001:1900:2100::2d2)  96.569 ms  104.664 ms  92.583 ms 
 9  2001:268:fb81:34::1 (2001:268:fb81:34::1)  76.435 ms  76.569 ms  149.368 ms 
10  6otejbb206.int-gw.kddi.ne.jp (2001:268:fb02:163::1)  168.468 ms  168.399 ms  168.410 ms 
11  6cm-fcu203.int-gw.kddi.ne.jp (2001:268:fb13:1::3)  184.429 ms  177.858 ms  179.257 ms 
12  2001:268:f702:6c::2 (2001:268:f702:6c::2)  178.637 ms  178.413 ms  178.535 ms 
13  2400:8900::f03c:91ff:fe69:60d3 (2400:8900::f03c:91ff:fe69:60d3)  176.065 ms  176.033 ms  176.411 ms 
\end{info}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Démos, suite de la suite}
\begin{info}
17:04:40.986991 IP6 2605:4500:2:245b::bad:dcaf.47969 > \
          2400:8900::f03c:91ff:fe69:60d3.https: \
          Flags [S], seq 2640915157, win 28800, options [mss 1440,sackOK,TS val 1146137571 ecr 0,nop,wscale 6], length 0
17:04:41.170705 IP6 2400:8900::f03c:91ff:fe69:60d3.https > \
          2605:4500:2:245b::bad:dcaf.47969: \
          Flags [S.], seq 438365710, ack 2640915158, win 28560, options [mss 1440,sackOK,TS val 1374136973 ecr 1146137571,nop,wscale 7], length 0
17:04:41.170773 IP6 2605:4500:2:245b::bad:dcaf.47969 > \
          2400:8900::f03c:91ff:fe69:60d3.https: \
          Flags [.], ack 1, win 450, options [nop,nop,TS val 1146137616 ecr 1374136973], length 0
17:04:41.171956 IP6 2605:4500:2:245b::bad:dcaf.47969 > \
          2400:8900::f03c:91ff:fe69:60d3.https: \
          Flags [P.], seq 1:33, ack 1, win 450, options [nop,nop,TS val 1146137617 ecr 1374136973], length 32  
\end{info}
\end{frame}

\begin{frame}[fragile]
\frametitle{Démos, fin}
\begin{info}
%  ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:d9:83:b3 brd ff:ff:ff:ff:ff:ff
    inet 204.62.14.153/24 brd 204.62.14.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2605:4500:2:245b::bad:dcaf/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2605:4500:2:245b::42/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fed9:83b3/64 scope link 
       valid_lft forever preferred_lft forever  
\end{info}
\end{frame}

\begin{frame}
\frametitle{Pourquoi IPv6 est important}  
\begin{itemize}
\item<2->Parce qu'il rétablit « le modèle de bout en bout » ? \only<3->{Vrai
  mais un peu abstrait.}
\item<4->Parce qu'il résout le problème de la pénurie d'adresses ?
  \only<5->{Vrai, mais d'autres techniques le font (CGN\ldots)}
\item<6->IPv6 est important car :
  \begin{enumerate}
  \item<7->Il simplifie beaucoup l'Internet en revenant à un modèle
    simple (déboguage plus facile, écriture d'applications aussi)
  \item<8->Il donne à tous le même accès, au contraire du modèle telco-minitélien
    où des terminaux passifs se connectent au « contenu ».
  \end{enumerate}
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Exposé aux RMLL à Montpellier de Julien Vaubourg}

Voyez et revoyez la vidéo : 
excellent exposé sur IPv6, sous l'angle politique.

Les telcos trainent à déployer IPv6 car il permet tout ce qu'ils
détestent (serveurs à la maison, pair à pair...) 

\url{https://2014.rmll.info/conference56?lang=fr}

Autre bonne lecture en ligne : \url{http://roland.entierement.nu/blog/2007/12/23/ipv6-pourquoi.html}
  
\end{frame}

\begin{frame}
\frametitle{S'il ne faut qu'un seul argument en faveur d'IPv6}
\begin{block}
  {IPv6, c'est le vrai Internet}
  {M. Michu peut émettre et recevoir sans intermédiaire.}
\end{block}
\end{frame}

\begin{frame}
\frametitle{Transition}  
\begin{itemize}
\item<2->Quizz : de quand date le dernier \foreign{flag day} de
  l'Internet, où tout a été changé d'un coup ?
\item<3->1\superscript{er} janvier 1983, déploiement d'IPv4 (et
  séparation IP/TCP en prime).
\item<4->On ne peut plus changer tout l'Internet d'un coup : il faut
  une transition.
\item<5->Il faut pouvoir vivre dans un réseau mixte (IPv4 et IPv6).
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Les techniques de transition}
Elles sont nombreuses, parce qu'elles traitent des cas différents \url{http://www.bortzmeyer.org/transition-ipv6-guilde.html}
\begin{itemize}
\item<2->Connecter deux réseaux IPv6 au-dessus d'IPv4 : tunnels (de
  préférence manuels, je déconseille 6to4 et Teredo), ou bien 6rd
\item<3->Connecter un réseau purement IPv6 à des serveurs IPv4 : NAT64
  (et DNS64)
\item<4->Connecter des réseaux IPv4 au dessus d'IPv6 : DS-Lite
\item<5->Techniques complexes et fragiles : le mieux reste la
  connexion native
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Sécurité}  
\url{http://www.bortzmeyer.org/ipv6-securite.html}
\begin{itemize}
\item<2->Le plus gros mensonge des zélateurs d'IPv6 : meilleure sécurité car IPsec inclus (c'est faux).
\item<3->Du point de vue sécurité, IPv6 et IPv4 sont très proches :
  pas d'authentification de l'adresse source, pas de sécurité de la
  résolution IP$\rightarrow$MAC, pas de chiffrement par défaut\ldots
\item<4->La sécurité applicative est évidemment la même.
\item<5->Rappel : le NAT n'est pas une technique de sécurité.
\item<6->Certaines différences avec IPv4 ont des conséquences pour la
  sécurité \url{http://www.bortzmeyer.org/hacking-ipv6.html}
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{IPv6 et les applications}  
Et les programmeurs d'applications, que deviennent-ils ?
\url{http://www.bortzmeyer.org/network-high-level-programming.html}
\only<1>{\includegraphics[scale=0.53]{legacy-ip-only.pdf}}
\begin{itemize}
\item<2->C'est certainement l'une des principales raisons du faible
  déploiement d'IPv6 : les applications manipulent des adresses IP et
  connaissent leur taille
  % TODO MySQL avec adresse IP dans un champ \computer{INTEGER}. Bon :
  % PostgreSQL qui a un type adresse
\item<3->En C, ne mettez \emph{pas} une adresse IP dans un
  \computer{unsigned int}, utilisez les \computer{struct
    sockaddr}. \url{http://www.bortzmeyer.org/ip-data-structures.html}. Ne
  mettez pas des \computer{AF\_INET} partout sans raison.
\item<4->Moins un problème dans les langages de haut niveau :
  \computer{urllib.urlopen("http://rest.example.com/myapi/")} (Python)
  marche
  avec IPv4 et IPv6
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{État actuel du déploiement d'IPv6}  
\begin{block}
 {Il est difficile à mesurer car tout dépend de ce qu'on mesure}
 {
   \begin{itemize}
   \item<2->Le pourcentage de paquets IPv6. Mais à quel endroit du
     réseau ? Chez Google ? Akamai ? Chez moi ? Sur un point d'échange ?
   \item<3->Le pourcentage de sites Web qui ont une adresse IPv6 ? Par
     rapport au top N d'Alexa ? Dans un TLD donné ? 
   \item<4->Le pourcentage d'utilisateurs qui ont un accès IPv6 à la
     maison ? % http://labs.apnic.net/ipv6-measurement/Economies/FR (Flash/JavaScript)
   \item<5->Le pourcentage d'applications/systèmes qui sont IPv6isés ?
   \item<6->Le pourcentage de préfixes IPv6 dans les annonces BGP de
     la DFZ ?
   \end{itemize}
 } 
\end{block}
\end{frame}

\begin{frame}
  \frametitle{Statistiques du trafic Google}
\url{http://www.google.com/intl/en/ipv6/statistics.html} \url{https://www.ietf.org/proceedings/73/slides/v6ops-4.pdf}
5,5 \% d'IPv6 en France, 11 \% aux États-Unis\ldots
\end{frame}

\begin{frame}
 \frametitle{Statistiques AFNIC dans .fr}  
\url{http://www.afnic.fr/fr/l-afnic-en-bref/actualites/actualites-generales/7428/show/2013-un-palier-pour-le-deploiement-d-ipv6-1.html}
    « Le pourcentage de noms de domaine en .fr possédant au moins un
      serveur DNS adressé en IPv6 est passé de 40,9 \% en 2011, à
      59,6 \% en 2012, pour atteindre 61.3 \% en 2013. Les serveurs
      Web ont enregistré la meilleure progression (+ 3 points), mais
      ils demeurent néanmoins moins déployés (à 7,4 \%) derrière les
      serveurs de messagerie (10.75 \%). »
\end{frame}

\begin{frame}
 \frametitle{Statistiques AFNIC dans .fr}  
  \includegraphics[scale=0.4]{obs-ndd-afnic-nov-2013-deploiement-IPv6-fr1.png}
\end{frame}

\begin{frame}
\frametitle{Autres métriques}  
\begin{itemize}
\item<2->Combien de FAI proposent IPv6 ? (En France, Renater, Nerim,
  Free, SFR - fibre seulement, fédération FDN, OVH\ldots)
\item<3->Combien d'hébergeurs proposent IPv6 ? (En France, Gandi, OVH,
  Online mais évidemment pas le claoude souverain\ldots)
\item<4->Combien de formations IP intègrent IPv6 (et pas juste comme
  un exposé d'une heure à la fin de l'année ?)
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Pourquoi pas plus de déploiement ?}  
\begin{itemize}
\item<2->La raison principale est économique/business : celui qui
  déploie IPv6 assume tous les coûts alors que les coûts du
  non-déploiement (complexité des applications pour contourner le NAT,
  par exemple) sont partagés.
\item<3->C'est un problème très fréquent en écologie (pollution, par
  exemple)
  \url{http://www.bortzmeyer.org/ipv6-et-l-echec-du-marche.html}
\item<4->Cela pose une intéressante question de gouvernance : peut-on
  encore faire évoluer l'Internet ou bien est-il trop ossifié ?
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Conclusion}  
\begin{itemize}
\item<2->Je ne vais pas me lancer dans des pronostics, je suis nul
  dans ce domaine. 
\item<3->Je vais plutôt dire que le déploiement d'IPv6 est
  \emph{important} et doit être encouragé. Le travail avant les pronostics !
\end{itemize}
\end{frame}

\end{document}
