Parcourir la source

Version finale slides

Baptiste Jonglez il y a 10 ans
Parent
commit
db2589f479
1 fichiers modifiés avec 148 ajouts et 250 suppressions
  1. 148 250
      slides/presentation-ipv6.tex

+ 148 - 250
slides/presentation-ipv6.tex

@@ -135,6 +135,9 @@
 \end{figure}
 \end{frame}
 
+
+\section{Remplacer IPv4}
+
 \begin{frame}
 \begin{figure}[h]
   \centering
@@ -143,9 +146,6 @@
 \end{figure}
 \end{frame}
 
-
-\section{Remplacer IPv4}
-
 \begin{frame}
 \frametitle{Remplacer IPv4, pourquoi ?}
 
@@ -153,93 +153,135 @@
 \begin{itemize}
 \item 32 bits : \textbf{4 milliards d'adresses} (moins en
   pratique)
-\item Complexité
+\item Complexité, donc coût
 \item Nouveaux besoins (mobilité, auto-configuration, multi-homing)
 \end{itemize}
 \end{block}
 
 Réflexion sur un successeur à IPv4 dès 1993 : \textbf{IPng}
-
 \end{frame}
 
+\begin{frame}
+\frametitle{Traduction d'adresses (NAT) en IPv4 (1/5)}
 
+\begin{figure}[h]
+  \centering
+  \includegraphics[scale=0.28]{figures/nat1.eps}
+  \caption{L1, L2, L3 sont des adresses locales. Le routeur qui fait du NAT possède également une adresse publique A.}
+\end{figure}
 
-% A partir d'ici, tri à faire
-
-
+\end{frame}
+\begin{frame}
+\frametitle{Traduction d'adresses (NAT) en IPv4 (2/5)}
 
-\section{Typologie}
+\begin{figure}[h]
+  \centering
+  \includegraphics[scale=0.28]{figures/nat2.eps}
+  \caption{Une machine du réseau local envoie un paquet vers un serveur B.}
+\end{figure}
 
+\end{frame}
 \begin{frame}
-\frametitle{Place dans le modèle TCP/IP}
+\frametitle{Traduction d'adresses (NAT) en IPv4 (3/5)}
+
 \begin{figure}[h]
   \centering
-  \includegraphics[scale=0.3]{figures/couches.eps}
+  \includegraphics[scale=0.28]{figures/nat3.eps}
+  \caption{Le NAT retient qu'il a vu passer un paquet de L2 vers B, et change l'adresse source du paquet pour faire croire que ça vient de lui.}
 \end{figure}
-\end{frame}
 
+\end{frame}
 \begin{frame}
-\frametitle{En-tête d'un paquet IPv4}
+\frametitle{Traduction d'adresses (NAT) en IPv4 (4/5)}
+
 \begin{figure}[h]
   \centering
-  \includegraphics[scale=0.6]{figures/IPv4_Header.eps}
-  \caption{En-tête de paquet IPv4. Crédit : CC-BY-SA Bruno Wenk (Wikimédia)}
+  \includegraphics[scale=0.28]{figures/nat4.eps}
+  \caption{Le serveur répond à A, puisque de son point de vue, A est l'expéditeur.}
 \end{figure}
-\end{frame}
 
+\end{frame}
 \begin{frame}
-\frametitle{En-tête d'un paquet IPv6}
+\frametitle{Traduction d'adresses (NAT) en IPv4 (5/5)}
+
 \begin{figure}[h]
   \centering
-  \includegraphics[scale=0.4]{figures/Ipv6_header.eps}
-  \caption{En-tête de paquet IPv4. Crédit : CC-BY-SA Mro (Wikimédia)}
+  \includegraphics[scale=0.28]{figures/nat5.eps}
+  \caption{Le NAT se sert de l'information qu'il avait retenu pour renvoyer le paquet à la bonne machine locale.}
 \end{figure}
 \end{frame}
 
+\begin{frame}
+\frametitle{NAT considered harmful}
+\begin{alertblock}{Problème fondamental}
+  Imaginez avoir le même numéro de téléphone que votre voisin\ldots{}
+  Sur qui tombe-t-on si on appelle le numéro ?
+\end{alertblock}
+
+\vspace{1cm}
+
+D'autant plus grave au niveau du FAI : \textbf{Carrier-grade NAT} (CGNAT) 
+\end{frame}
 
 \begin{frame}
-\frametitle{Format de paquet}
-RFC 2460
-\begin{block}{Particularités}
-  \begin{itemize}
-  \item Beaucoup plus simple
-  \item Plus souple : liste chaînée d'en-têtes optionnels
-  \end{itemize}
+\frametitle{Plus précisément}
+\begin{block}{Coûts associés à IPv4}
+\begin{itemize}
+\item NAT : ressources matérielles, identification des utilisateurs (log)
+\item \textbf{Perte de la transparence de bout en bout :} conception et
+  développement de contournements spécifiques aux applications : FTP, SIP,
+  etc (violation de couche)
+\item \textbf{Ossification :} coût de la rétro-compatibilité dans la
+  conception de nouveaux protocoles (e.g. Multipath TCP, HIP)
+\end{itemize}
 \end{block}
+\end{frame}
 
-\begin{block}{Extensibilité}<2->
-  Tout est déporté dans le Next Header :
+
+\section{IPv6}
+
+\begin{frame}
+\frametitle{IPv6 : un gros changement ?}
+\begin{block}{En fait, c'est presque pareil !}
   \begin{itemize}
-  \item Fragmentation (uniquement réalisée par l'expéditeur)
-  \item Mobilité
-  \item Sécurité (IPsec)
-  \item \og piggyback\fg{} (informations de routage, \ldots{})
+  \item Adresses : \textbf{128 bits au lieu de 32 bits}
+  \item Auto-configuration
   \end{itemize}
 \end{block}
-\end{frame}
 
-\begin{frame}
-\frametitle{En-tête d'un paquet IPv6}
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.4]{figures/Ipv6_header.eps}
-  \caption{En-tête de paquet IPv6. Crédit : CC-BY-SA Mro (Wikimédia)}
-\end{figure}
+\vspace{1cm}
+
+Certaines fonctionnalités abandonnées en cours de route\ldots{} (sécurité,
+source routing)
 \end{frame}
 
 \begin{frame}
-\frametitle{Format des en-têtes facultatifs}
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.4]{figures/next-header.eps}
-  \caption{Exemple d'en-tête facultatif via l'utilisation de \og Next Header\fg{}}
-\end{figure}
+\frametitle{Conséquences}
+\begin{block}{C'est tout de même un gros changement !}
+  \begin{itemize}
+  \item Plus de NAT : \textbf{on évite tous les coûts associés !}
+      \begin{itemize}
+      \item capacité matérielle des routeurs
+      \item temps de conception + développement pour chaque application (ALG)
+      \item possibilité de déployer de nouveaux protocoles
+      \end{itemize}
+  \item Restoration du \textbf{principe de bout en bout}
+  \item Premier pas indispensable pour l'Internet des objets\ldots{}
+  \end{itemize}
+\end{block}
+
+\begin{alertblock}{\ldots{} assez gros pour prendre du temps}<2>
+  \begin{itemize}
+  \item Nécessite de changer \textbf{tous} les routeurs d'Internet
+  \item Mise à jour des applications
+  \item Formation des administrateurs réseaux et systèmes
+  \end{itemize}
+\end{alertblock}
 \end{frame}
 
 \begin{frame}[fragile]
 \frametitle{Format des adresses et adressage}
 % RFC 4291
-
 \begin{block}{Adresses}
   \begin{itemize}
   \item Adresses sur 128 bits
@@ -248,7 +290,6 @@ RFC 2460
   \end{itemize}
 \end{block}
 
-
 \begin{block}{Sous-réseaux}<2->
   \begin{itemize}
   \item Deux parties :
@@ -268,265 +309,122 @@ RFC 2460
 
 
 \begin{frame}[fragile]
-\frametitle{Exemples d'adresses et des préfixes}
-\begin{block}{Préfixes}
+\frametitle{Exemples d'adresses et de préfixes}
+\begin{block}{Préfixes}<1->
   \begin{itemize}
-  \item<1-> Préfixe de documentation \sep \verb+2001:db8::/32+
-  \item<2-> Préfixe link-local \sep \verb+fe80::/10+
-  \item<3-> Préfixe multicast \sep \verb+ff02::/10+
-  \item<4-> Exemple de préfixe \og end-user\fg{} \sep \verb+2001:db8:fada:ba00:/56+
+  \item Préfixe de documentation \sep \verb+2001:db8::/32+
+  \item Préfixe link-local \sep \verb+fe80::/10+
+  \item Préfixe multicast \sep \verb+ff02::/10+
+  \item Exemple de préfixe \og end-user\fg{} \sep \verb+2001:db8:fada:ba00:/56+
   \end{itemize}
 \end{block}
 
-\begin{block}{Adresses}<5->
+\begin{block}{Adresses}<2->
   \begin{itemize}
   \item Unicast \sep \verb+2001:db8:cafe:deca:a9e:1ff:fe6b:25c9/64+
   \item Link-local \sep \verb+fe80::a9e:1ff:fe6b:25c9/64+
-  \item<6-> Notation IPv4 \sep \verb+2001:db8::cafe:192.168.0.1+ égal
+  \item Notation IPv4 \sep \verb+2001:db8::cafe:192.168.0.1+ égal
     à \verb+2001:db8::cafe:c0a8:1+
-  \item<7-> Localhost \sep \verb+::1+
-  \item<7-> Tout les bits à 0 \sep \verb+::+
+  \item Localhost \sep \verb+::1+
+  \item Tout les bits à 0 \sep \verb+::+
   \end{itemize}
 \end{block}
 \end{frame}
 
-\section{Avantages}
-
-\begin{frame}
-\frametitle{Taille de l'espace d'adressage}
-\begin{alertblock}{IPv4}
-  \begin{itemize}
-  \item Une seule IP publique par abonné
-  \item Adresses \textbf{non routables} et \textbf{non globalement uniques}
-  \item Technologie de traduction d'adresses (NAT) qui casse le
-    \textbf{end-to-end principle}
-  \end{itemize}
+\begin{frame}[fragile]
+\frametitle{C'est compliqué à retenir\ldots{}}
+\begin{alertblock}{Ça semble compliqué !}
+  Heureusement, il y a le DNS !
 \end{alertblock}
 
-\begin{block}{IPv6}<0>
+\begin{block}{DNS}<2>
   \begin{itemize}
-  \item Plus petit sous-réseau : \textbf{/64}, soit $2^{64}$ adresses
-  \item On ne distribue plus des \textbf{adresses}, mais des \textbf{sous-réseaux}
+  \item Même mécanisme qu'en IPv4 : nom $\rightarrow$ adresse(s)
+  \item Cohabitation IPv4/IPv6
+    \begin{itemize}
+    \item bortzmeyer.org \verb+2605:4500:2:245b::42+
+    \item bortzmeyer.org \verb+204.62.14.153+
+    \end{itemize}
   \end{itemize}
 \end{block}
-
-\end{frame}
-
-\begin{frame}
-\frametitle{Traduction d'adresses (NAT) en IPv4 (1)}
-
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.28]{figures/nat1.eps}
-  \caption{L1, L2, L3 sont des adresses locales. Le routeur qui fait du NAT, N3, possède également une adresse publique A.}
-\end{figure}
-
-\end{frame}
-\begin{frame}
-\frametitle{Traduction d'adresses (NAT) en IPv4 (2)}
-
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.28]{figures/nat2.eps}
-  \caption{N2 envoie un paquet vers M. Notons que l'on distingue hôte
-    (nœud) et adresse d'une interface.}
-\end{figure}
-
 \end{frame}
-\begin{frame}
-\frametitle{Traduction d'adresses (NAT) en IPv4 (3)}
 
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.28]{figures/nat3.eps}
-  \caption{N3 retient qu'il a vu passer un paquet de L2 vers B, et change l'adresse source du paquet pour faire croire que ça vient de lui.}
-\end{figure}
-
-\end{frame}
-\begin{frame}
-\frametitle{Traduction d'adresses (NAT) en IPv4 (4)}
 
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.28]{figures/nat4.eps}
-  \caption{M répond à N3, puisque du point de vue de M, c'est N3 qui a envoyé le paquet au départ.}
-\end{figure}
+\section{En pratique}
 
-\end{frame}
 \begin{frame}
-\frametitle{Traduction d'adresses (NAT) en IPv4 (5)}
-
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.28]{figures/nat5.eps}
-  \caption{N3 se sert de l'information qu'il avait retenu pour renvoyer le paquet à la bonne machine locale.}
-\end{figure}
-\end{frame}
-
-\begin{frame}
-\frametitle{Traduction d'adresses (NAT) en IPv4 (6)}
-\begin{block}{En pratique}
+\frametitle{Qu'est ce que ça change en pratique ?}
+\begin{exampleblock}{Changement pour l'utilisateur lambda}
   \begin{itemize}
-  \item Couple $(source, destination)$ non suffisant : non unique
-  \item TCP et UDP : $(port\ source, port\ destination)$ en plus
-  \item ICMP : \textbf{sequence number} et type de paquet
-  \end{itemize}
-\end{block}
-
-\begin{alertblock}{Bref\ldots{}}<2->
-  C'est le mal !
-  \begin{itemize}
-  \item Pas de communication de bout en bout
-  \item Dépend d'une couche supérieure (transport, ICMP)
-  \item Système \textbf{avec état} : SPOF (Single Point Of Failure)
-  \end{itemize}
-\end{alertblock}
-
-\uncover<3->{Et très bientôt, \textbf{Carrier-grade NAT} (CGNAT) au niveau du FAI}
-
-\end{frame}
-
-
-\begin{frame}
-\frametitle{Espace d'adressage}
-\begin{alertblock}{IPv4}
-  \begin{itemize}
-  \item Une seule IP publique par abonné
-  \item Adresses \textbf{non routables} et \textbf{non globalement uniques}
-  \item Technologie de traduction d'adresses (NAT) qui casse le
-    \textbf{end-to-end principle}
-  \end{itemize}
-\end{alertblock}
-
-\begin{exampleblock}{IPv6}<2->
-  Chaque machine a une adresse globalement routable !
-  \begin{itemize}
-  \item Plus petit sous-réseau : \textbf{/64}, soit $2^{64}$ adresses
-  \item On ne donne plus des \textbf{adresses}, mais des \textbf{sous-réseaux}
+  \item Changement peu visible (pour l'instant\ldots{} multi-homing à venir !)
+  \item Certaines applications (P2P, VoIP, jeux en réseau) fonctionnent mieux en théorie
   \end{itemize}
 \end{exampleblock}
-\end{frame}
 
-\begin{frame}[fragile]
-\frametitle{Attribution d'adresses}
-
-\begin{block}{IPv4}
+\begin{block}{Changement pour le geek}<2->
   \begin{itemize}
-  \item Attribué par DHCP
-  \item Peut changer, car c'est le serveur DHCP qui décide
+  \item Hébergement d'un nombre illimité de machines/services
+  \item Plus besoin de \og{}louer\fg{} des IP supplémentaires à un prix délirant
   \end{itemize}
 \end{block}
 
-\begin{block}{IPv6}<2->
-  Stateless autoconfiguration :
+\begin{block}{Changement pour un FAI/hébergeur}<3->
   \begin{itemize}
-  \item Le routeur annonce son préfixe \sep \verb+2001:db8:deca::/64+
-  \item Chaque machine \textbf{choisit} son adresse (au hasard, ou
-    calculé à partir de l'adresse MAC, d'où le /64). \sep
-    Unicité\ldots{}
+  \item Réduction des coûts liés au NAT
+  \item Réduction du coût pour obtenir des adresses
   \end{itemize}
 \end{block}
-
-\begin{exampleblock}{Avantages}<3->
-\begin{itemize}
-\item \textbf{Sans état}
-\item Beaucoup plus simple et rapide
-\item Plusieurs routeurs peuvent annoncer leur préfixe
-\end{itemize}
-\end{exampleblock}
 \end{frame}
 
-\begin{frame}[fragile]
-\frametitle{Adresses link-local}
 
-Préfixe \verb+fe80::/10+
+\section{Conclusion}
 
-\begin{block}{Principe}
-  \begin{itemize}
-  \item Toujours présente sur une interface, sans configuration
-  \item Calculé via l'adresse MAC (unicité)
-  \item Non routable
-  \end{itemize}
-\end{block}
-\begin{block}{Intérêt}<2->
+\begin{frame}
+\frametitle{Quelques mythes sur IPv6}
+\begin{block}{IPv6 est moins sécurisé qu'IPv4}
+  \uncover<2->{\alert{FAUX !}}
+  \uncover<3->{
   \begin{itemize}
-  \item Permet de communiquer avec les machines du même réseau L2
-  \item Découverte de services, informations de routage, \ldots{}
+  \item Le NAT n'apporte aucune sécurité !
+  \item Les attaques viennent souvent de l'intérieur des réseaux\ldots{}
+  \item Firewall possible avec IPv6 (mis par défaut chez SFR, Free, etc)
   \end{itemize}
+}
 \end{block}
-\end{frame}
-
-\section{Cohabitation}
-
-\begin{frame}[fragile]
-\frametitle{Cohabitation}
 
-\begin{block}{Dual stack}
+\begin{block}{Personne n'utilise IPv6 en pratique}<4->
+  \uncover<5->{\alert{FAUX !}}
+  \uncover<6->{
   \begin{itemize}
-  \item IPv4 et IPv6 peuvent cohabiter !
-  \end{itemize}
-\end{block}
-\begin{block}{DNS}<2->
-  \begin{itemize}
-  \item Deux enregistrements dans le DNS
-    \begin{itemize}
-    \item example.net  A   192.168.42.1
-    \item example.net AAAA \verb+2001:db8::1337:1+
-    \end{itemize}
-  \item On essaie d'abord l'IPv6, puis l'IPv4. Code transparent !
-    \begin{itemize}
-    \item En C, utiliser \texttt{getaddrinfo()}
-    \end{itemize}
+  \item Hébergeurs : Google, Facebook, OVH, Online\ldots{}
+  \item FAI : Illyse, (F)FDN, K-Net, Free, SFR, OVH, Comcast, Swiss Telecom\ldots{}
+  \item Applications et OS compatibles depuis des années
   \end{itemize}
+}
 \end{block}
-\begin{alertblock}{Écoute sur un socket}<3->
-  \begin{itemize}
-  \item Problème : besoin de deux sockets qui écoutent ?
-  \item<4-> Non ! Un seul socket qui fait tout.
-  \item<4-> Astuce : adresses IPv4-mapped \sep \verb+::ffff:192.168.42.1+
-  \end{itemize}
-\end{alertblock}
 \end{frame}
 
-\section*{Conclusion}
-
 \begin{frame}
 \frametitle{Conclusion}
-\begin{block}{Avantages}
+\begin{block}{Points importants}
   \begin{itemize}
-  \item Espace plus grand, plus besoin de NAT
+  \item Espace plus grand, plus besoin de NAT, réduction des coûts
   \item Auto-configuration : ça juste marche !
-  \item Cohabitation grâce au DNS
+  \item Cohabitation avec IPv4 grâce au DNS
   \item Applications prêtes depuis 15 ans
   \end{itemize}
 \end{block}
-\begin{block}{Qu'est ce qu'on attend ?}<2->
-  \begin{itemize}
-  \item Déploiement au niveau hôtes (\og fournisseurs de contenu\fg{})
-    \begin{itemize}
-    \item Google, Facebook, plein de petits
-    \end{itemize}
-  \item Déploiement des FAI
-    \begin{itemize}
-    \item Free, FDN, Illyse \ldots mais pas \alert{Orange}
-    \end{itemize}
-  \end{itemize}
-\end{block}
-\begin{block}{En attendant}<3->
-  Plein de technologies de transition pour s'amuser (6to4, 6in4,
-  Teredo, NAT64, DNS64), tunnel brokers
-\end{block}
+
+\begin{exampleblock}{Alors, qu'est ce qu'on attend ?}<2->
+  Rien !  Cochez vite la case \og{}IPv6\fg{} dans la box de votre FAI :-)
+  (ou changez de FAI\ldots{})
+\end{exampleblock}
 \end{frame}
 
 \begin{frame}
-\frametitle{Questions ?}
-\begin{figure}[h]
-  \centering
-  \includegraphics[scale=0.4]{figures/aviancarrier.jpg}
-  \caption{RFC 6214 : Avian carriers over IPv6 !}
-\end{figure}
+\frametitle{Manipulons\ldots{}}
+Manip !
 \end{frame}
 
 
-
 \end{document}