123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532 |
- %\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.6]{figures/Ipv4-exhaust.eps}
- % \caption{}
- %\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}
- \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}
- \section{Remplacer IPv4}
- \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é
- \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}
- % A partir d'ici, tri à faire
- \section{Typologie}
- \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}
- \begin{frame}
- \frametitle{En-tête d'un paquet IPv4}
- \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)}
- \end{figure}
- \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 IPv4. Crédit : CC-BY-SA Mro (Wikimédia)}
- \end{figure}
- \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}
- \end{block}
- \begin{block}{Extensibilité}<2->
- Tout est déporté dans le Next Header :
- \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{})
- \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}
- \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}
- \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 des préfixes}
- \begin{block}{Préfixes}
- \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+
- \end{itemize}
- \end{block}
- \begin{block}{Adresses}<5->
- \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
- à \verb+2001:db8::cafe:c0a8:1+
- \item<7-> Localhost \sep \verb+::1+
- \item<7-> 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}
- \end{alertblock}
- \begin{block}{IPv6}<0>
- \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}
- \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}
- \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}
- \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}
- \end{itemize}
- \end{exampleblock}
- \end{frame}
- \begin{frame}[fragile]
- \frametitle{Attribution d'adresses}
- \begin{block}{IPv4}
- \begin{itemize}
- \item Attribué par DHCP
- \item Peut changer, car c'est le serveur DHCP qui décide
- \end{itemize}
- \end{block}
- \begin{block}{IPv6}<2->
- Stateless autoconfiguration :
- \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{}
- \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+
- \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{itemize}
- \item Permet de communiquer avec les machines du même réseau L2
- \item Découverte de services, informations de routage, \ldots{}
- \end{itemize}
- \end{block}
- \end{frame}
- \section{Cohabitation}
- \begin{frame}[fragile]
- \frametitle{Cohabitation}
- \begin{block}{Dual stack}
- \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}
- \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{itemize}
- \item Espace plus grand, plus besoin de NAT
- \item Auto-configuration : ça juste marche !
- \item Cohabitation 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}
- \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}
- \end{frame}
- \end{document}
|