%\documentclass[12pt,xcolor=x11names,compress,a4paper]{beamer}
\documentclass[15pt,xcolor=x11names]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
%\usepackage{ucs}
\usepackage[T1]{fontenc}
%\usepackage{amsmath}
%\usepackage{amsfonts}
%\usepackage{amssymb}
%\usepackage{mathtools}
%\usepackage{mathrsfs}

\usepackage{verbatim}
%\usepackage{color}
\usepackage{graphicx}
\usepackage{tikz}
%\usetikzlibrary{decorations.fractals}
\usetikzlibrary{snakes,arrows,shapes}

%% Beamer Layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\useoutertheme[subsection=false,shadow]{miniframes}
%\useoutertheme{infolines}
\useinnertheme{default}
%\usefonttheme{serif}
%\usepackage{palatino}
%\usepackage{inconsolata}

\setbeamerfont{title like}{shape=\scshape}
\setbeamerfont{frametitle}{shape=\scshape}

\setbeamercolor*{lower separation line head}{bg=DeepSkyBlue4} 
\setbeamercolor*{normal text}{fg=black,bg=white} 
\setbeamercolor*{alerted text}{fg=red} 
\setbeamercolor*{example text}{fg=black} 
\setbeamercolor*{structure}{fg=black} 
% 
\setbeamercolor*{palette tertiary}{fg=black,bg=black!10} 
\setbeamercolor*{palette quaternary}{fg=black,bg=black!10} 
%
\definecolor{my-light-blue}{HTML}{D3DCEC}
\definecolor{my-dark-blue}{HTML}{093A7A}
\definecolor{my-dark-blue2}{HTML}{00688B}
\definecolor{my-light-red}{HTML}{FFBABA}
\definecolor{my-dark-red}{HTML}{D51111}
\definecolor{my-light-green}{HTML}{7BEF71}
\definecolor{my-dark-green}{HTML}{00D000}
\definecolor{my-light-grey}{HTML}{E6E6E6}
%
\setbeamertemplate{blocks}[rounded]
\setbeamercolor{block body}{bg=my-light-blue}
\setbeamercolor{block title}{bg=my-dark-blue2,fg=white}
\setbeamercolor{block body alerted}{bg=my-light-red}
\setbeamercolor{block title alerted}{bg=my-dark-red,fg=white}
\setbeamercolor{block body example}{bg=my-light-green}
\setbeamercolor{block title example}{bg=my-dark-green,fg=white}

\setbeamertemplate{navigation symbols}{}
% From /usr/share/texmf-dist/tex/latex/beamer/themes/outer/beamerouterthemeinfolines.sty
\setbeamertemplate{footline}{
\begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex,right]{parent=palette primary}
\scriptsize{
  \vspace*{0.1cm}\insertframenumber/\inserttotalframenumber\hspace*{0.1cm}
}
\end{beamercolorbox}
}

%\renewcommand{\(}{\begin{columns}}
%\renewcommand{\)}{\end{columns}}
%\newcommand{\lcol}{\begin{column}[l]{0.5\textwidth}}
%\newcommand{\rcol}{\begin{column}[r]{0.5\textwidth}}
%\renewcommand{\>}{\end{column}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\sep}{$\; \triangleright \ $}

\title[IPv6]{Introduction à IPv6}

\author[B. Jonglez]{Baptiste Jonglez}

\institute{JDLL 2015}

\date[29/03/2015]{29 mars 2015}

\begin{document}

\begin{frame}
\maketitle
\end{frame}

% Plan : rester abordable.
% - carte d'Internet, comment tout ça tient debout, qu'est qu'IP
% - problèmes liés à IPv4 : exhaustion, complexité & coût qui s'ensuivent (NAT, CGNAT).  Expliquer le NAT (avec des figures plus jolies).  Problème du NAT, expliqué simplement : plusieurs personnes ont le même numéro de téléphone !  Plus précisément, pose problème pour certains protocoles (SIP/VoIP), coût énorme en conception et développement, coût du matériel pour les CGNAT + logs
% - nouveaux besoins : nombreux appareils, connectivité de bout en bout pour P2P/VOIP/etc (ou pas ?), multihoming
% - différences fondamentales : taille de l'espace, auto-configuration
% - format des adresses IPv6
% - c'est compliqué ?  Il y a le DNS !
% - en pratique, qu'est ce que ça change ? → du point de vue utilisateur, pas grand chose !  C'est juste une évolution nécessaire (et douloureuse).  Dual stack (forme de compatibilité)
% - mythes : IPv6 n'est pas sécurisé (pas de NAT), IPv6 ne sert à rien parce que personne ne l'a déployé, etc
% - références : Lothaire Yarding, blog bortzmeyer, RIPE, présentation Ju

% → peut-être trop ambitieux, se limiter à des choses plus pratiques ?

\section*{Introduction}

\begin{frame}
%\frametitle{Une carte d'Internet}
\begin{figure}[h]
  \centering
  \includegraphics[scale=0.2]{figures/Internet_map_1024.jpg}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Internet Protocol}

\begin{alertblock}{Un protocole commun}
  \textbf{Internet Protocol} (IP) est le protocole commun à toutes les machines d'Internet
\end{alertblock}

\begin{block}{Service fourni}
  \begin{itemize}
  \item Adressage (qui je suis)
  \item Routage (où je suis et comment me joindre)
  \item \ldots{} et c'est à peu près tout
  \end{itemize}
\end{block}
\end{frame}

\begin{frame}
\frametitle{Place dans le modèle TCP/IP}
\begin{figure}[h]
  \centering
  \includegraphics[scale=0.3]{figures/couches.eps}
\end{figure}
\end{frame}


\section{Remplacer IPv4}

\begin{frame}
\begin{figure}[h]
  \centering
  \includegraphics[scale=0.6]{figures/Ipv4-exhaust.eps}
  \caption{Espace libre dans le pool d'adresses IPv4. Crédit : CC-BY-SA Mro (Wikimédia) }
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Remplacer IPv4, pourquoi ?}

\begin{block}{IPv4 n'est plus adapté}
\begin{itemize}
\item 32 bits : \textbf{4 milliards d'adresses} (moins en
  pratique)
\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}

\end{frame}
\begin{frame}
\frametitle{Traduction d'adresses (NAT) en IPv4 (2/5)}

\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{Traduction d'adresses (NAT) en IPv4 (3/5)}

\begin{figure}[h]
  \centering
  \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}
\begin{frame}
\frametitle{Traduction d'adresses (NAT) en IPv4 (4/5)}

\begin{figure}[h]
  \centering
  \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}
\begin{frame}
\frametitle{Traduction d'adresses (NAT) en IPv4 (5/5)}

\begin{figure}[h]
  \centering
  \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{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}


\section{IPv6}

\begin{frame}
\frametitle{IPv6 : un gros changement ?}
\begin{block}{En fait, c'est presque pareil !}
  \begin{itemize}
  \item Adresses : \textbf{128 bits au lieu de 32 bits}
  \item Auto-configuration
  \end{itemize}
\end{block}

\vspace{1cm}

Certaines fonctionnalités abandonnées en cours de route\ldots{} (sécurité,
source routing)
\end{frame}

\begin{frame}
\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
  \item Notation hexa par bloc de 16 bits \sep \verb+2001:db8:cafe:deca:0:0:0:1+
  \item Compression de zéros \sep \verb+2001:db8:cafe:deca::1+
  \end{itemize}
\end{block}

\begin{block}{Sous-réseaux}<2->
  \begin{itemize}
  \item Deux parties :
    \begin{itemize}
    \item \textbf{préfixe} ou \textbf{identifiant de sous-réseau}
      (subnet ID) : partie gauche de l'adresse
    \item \textbf{identifiant de machine} (host ID) : partie droite
    \end{itemize}
  \item notation CIDR :
    \begin{itemize}
    \item \verb+2001:db8:cafe:deca:a9e:1ff:fe6b:25c9/64+
    \item subnet correspondant \sep \verb+2001:db8:cafe:deca::+
    \end{itemize}
  \end{itemize}
\end{block}
\end{frame}


\begin{frame}[fragile]
\frametitle{Exemples d'adresses et de préfixes}
\begin{block}{Préfixes}<1->
  \begin{itemize}
  \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}<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 Notation IPv4 \sep \verb+2001:db8::cafe:192.168.0.1+ égal
    à \verb+2001:db8::cafe:c0a8:1+
  \item Localhost \sep \verb+::1+
  \item Tout les bits à 0 \sep \verb+::+
  \end{itemize}
\end{block}
\end{frame}

\begin{frame}[fragile]
\frametitle{C'est compliqué à retenir\ldots{}}
\begin{alertblock}{Ça semble compliqué !}
  Heureusement, il y a le DNS !
\end{alertblock}

\begin{block}{DNS}<2>
  \begin{itemize}
  \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}


\section{En pratique}

\begin{frame}
\frametitle{Qu'est ce que ça change en pratique ?}
\begin{exampleblock}{Changement pour l'utilisateur lambda}
  \begin{itemize}
  \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}

\begin{block}{Changement pour le geek}<2->
  \begin{itemize}
  \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}{Changement pour un FAI/hébergeur}<3->
  \begin{itemize}
  \item Réduction des coûts liés au NAT
  \item Réduction du coût pour obtenir des adresses
  \end{itemize}
\end{block}
\end{frame}


\section{Conclusion}

\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 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}

\begin{block}{Personne n'utilise IPv6 en pratique}<4->
  \uncover<5->{\alert{FAUX !}}
  \uncover<6->{
  \begin{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}
\end{frame}

\begin{frame}
\frametitle{Conclusion}
\begin{block}{Points importants}
  \begin{itemize}
  \item Espace plus grand, plus besoin de NAT, réduction des coûts
  \item Auto-configuration : ça juste marche !
  \item Cohabitation avec IPv4 grâce au DNS
  \item Applications prêtes depuis 15 ans
  \end{itemize}
\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{Manipulons\ldots{}}
Manip !
\end{frame}


\end{document}
