\documentclass{beamer}
%%\usepackage{T1}{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{bookmark}
\usepackage[normalem]{ulem}
\usepackage{hyperref}
\usepackage{multicol}
\usepackage{graphicx}
\usepackage{caption}

\usetheme{Darmstadt}

\title{Comment trouver son chemin sur internet ?}
\subtitle[]{Le port ? C'est au bord de la mer, vous pouvez pas vous tromper !}
\author{Michaël PAULON}
\institute{\includegraphics[width=2cm,keepaspectratio]{crans_2021_dark.png}}
\date{18 Mars 2021}

\setbeamercolor{warning}{fg=black,bg=red!40}
\setbeamercolor{info}{fg=black,bg=blue!20}

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

  \section{Introduction}
  \begin{frame}{Petits rappels}
    \pause
    \begin{beamercolorbox}[rounded=true]{warning}
      Ce séminaire ne rapellera pas forcément certaines bases de réseau, n'hésitez SURTOUT PAS à poser des questions si vous ne comprenez pas quelquechose.
    \end{beamercolorbox}
    \pause
    \begin{itemize}
      \item Modèle OSI: \pause les communications en réseau fonctionnent par couches encapsulées les unes dans les autres
      \pause
      \item Ipv4 / IPv6: \pause \begin{itemize}
        \item IPv4: 32 bits d'information: 192.168.1.10/24
        \item IPV6: 128 bits d'information: 2a01:cb04\:493:6300:131:1932:ad41:54b4/64
      \end{itemize}
      \pause
      \item TCP: \pause Protocole de couche 4 (Transport), \pause les deux parties font un handshake, \pause vérification que les paquets sont bien arrivés, \pause garantie que les paquets sont dans l'ordre 
    \end{itemize}
  \end{frame}

  \begin{frame}{Le routage}
    Hop-by-hop: \pause
    \begin{itemize}
      \item Si l'ip est dans le réseau local: on la contacte directement \pause
      \item sinon on regarde dans sa table de routage, on choisi le routeur en fonction des règles suivantes: \begin{itemize}
        \item préfixe le plus précis
        \item métrique la plus plus faible \pause
      \end{itemize}
    \end{itemize}
    On peut aussi implémenter des règles de policy-routing (matcher sur l'ip d'origine par exemple) \\
    \begin{beamercolorbox}[rounded=true]{warning}
      Pas d'info sur le chemin parcouru, pas de communication entre les routeurs, configuration majoritairement statique, possibilité de boucles ...
    \end{beamercolorbox}
  \end{frame}

  \begin{frame}{BGP ? Kékécé ?}
    \begin{beamercolorbox}[rounded=true]{frametitle}
      Selon Wikipedia, BGP (Bordure Gateway Protocole):
      \pause
      \begin{itemize}
        \item est un protocole d'échange de routes (externe)
        \pause
        \item a pour objectif principal d'échanger des informations de routage et d'accessibilité de réseaux entre AS \pause
        \item circule sur TCP et est donc de la couche application \pause
        \item base ses décisions de routage sur les chemins parcourus, les attributs des préfixes et un ensemble de règles de sélection définies par l'administrateur de l'AS \pause
        \item est un protocole à vecteur de chemins
      \end{itemize}
    \end{beamercolorbox}
  \end{frame}

  \section{Mais en vrai, ça sert à quoi ?}
  \begin{frame}{EBGP}
    BGP est utilisé pour organiser les routes entre les AS: External BGP \pause
    \begin{itemize}
      \item Peering: chacun annonce ses propres routes à l'autres \pause
      \item Transit: le transitaire annonce des routes dont il n'est pas le destinataire final et le transité annonce ses propres routes
    \end{itemize}

  \end{frame}
  \subsection{IBGP}
  \begin{frame}{Principe}
    Il peut aussi être utilisé à l'interieur d'un AS: Internal BGP
    \begin{itemize}
      \item Routeurs de bordure qui font du EBGP avec l'exterieur
      \item Routeurs internes qui font du IBGP entre eux
    \end{itemize}
    \pause
    \begin{beamercolorbox}[rounded=true]{warning}
      Problème : Les routeurs internes doivent être en full mesh: chacun parle à tous les autres. \\
      \pause
      Solutions: \begin{itemize}
        \item Route reflexion
        \item Confederation
      \end{itemize}
    \end{beamercolorbox}
  \end{frame}
  \begin{frame}{Route reflexion}
    Deux type de routeurs: \pause
    \begin{itemize}
      \item "Standard" (ou RR-client): établi uniquement une session avec un RR et annonce ses propres routes \pause
      \item Route reflector (ou RR-server): \begin{itemize}
        \item si une route vient d'un non-client (par exemple un routeur EBGP ou un autre RR-server): annonce uniquement aux clients
        \item si une route vient d'un RR-client, annoncée à tous les autres peers(à l'exception du client qui a annoncé la route)
      \end{itemize}
    \end{itemize}
  \end{frame}

  \begin{frame}{Confédération}
    On décompose l'AS en plusieurs AS "privés" (plages d'ASN 64512-65534 et 4200000000-4294967294)
    \pause
    \begin{beamercolorbox}[rounded=true]{warning}
      Il faut faire attention à ne pas annoncer les numéros d'AS privés en dehors de son AS.
    \end{beamercolorbox}
  \end{frame}

  \section{Comment ça marche}
  \begin{frame}{Choisir la route}
    Le choix de la route à emprunter pour atteindre une destination se fait en fonction d'un ensemble de paramètres, par exemple: \pause
    \begin{itemize}
      \item Next-hop: puis-je contacter le routeur voisin ? \pause
      \item Weight: poid local pas propagé, permet de prioriser un voisin (le moins cher, le plus gros tuyau ...) \pause
      \item Self-originated: on privilégie ses propres routes \pause
      \item AS-path: liste des AS parcourus, on préfère la plus courte (et permet d'éviter les boucles, on drop les routes où on est dans l'AS-path) \pause
      \item MED: permet d'annoncer le routeur préféré pour contacter l'AS \pause
      \item Age: depuis quand la route est dans la table \pause
    \end{itemize}
    En cas d'égalité sur les routes, on départage sur le Router-ID le plus faible puis sur l'ip du routeur la plus faible.
  \end{frame}
  \subsection{Limites de BGP}
  \begin{frame}{Multi-homing, RPKI et sécurité}
    Multi-homing: un AS a ses routes annoncées depuis plusieurs autres AS. \\ \pause
    Comment vérifier qu'un peer a le droit d'annoncer une route  ? \pause
    \begin{beamercolorbox}[rounded=true]{frametitle}
      RPKI (Ressource Public Key Infrastructure): certificat validé par l'IANA prouvant la possession de ressources par le LIR. \\Permet de signer des ROA (Route Origination Authorizations) indiquant de quel AS peut venir quel préfixe.
    \end{beamercolorbox}

  \end{frame}
  \begin{frame}{Taille de la table et ASN 32bits}
    Ressources sous dimensionnées par rapport à la croissance d'internet. \\
    \pause
    En 2012, la RFC 6793 étend la taille des numéros d'AS de 16 à 32 bits. \\
    \pause
    En 2014, la full-table IPv4 a dépassé les 512k entrée, certains anciens routeurs encore utilisés n'étaient pas dimenssionnés pour plus de 512k entrées. \pause
    \begin{beamercolorbox}[rounded=true]{frametitle}
      Aujourd'hui une full table v4 fait ~837k routes et une full table v6 ~107k.
    \end{beamercolorbox}
  \end{frame}


  \section{Annecdotes}
  \begin{frame}{Pakistan Telecom vs Youtube}
    \href{https://www.cnet.com/news/how-pakistan-knocked-youtube-offline-and-how-to-make-sure-it-never-happens-again/}{article de presse}
  \end{frame}
  \begin{frame}{Verizon vs Cloudflare}
    \href{https://blog.cloudflare.com/how-verizon-and-a-bgp-optimizer-knocked-large-parts-of-the-internet-offline-today/}{article sur le blog de cloudflare}
  \end{frame}

  \begin{frame}
    Merci beaucoup pour votre attention.

    Des questions ?
  \end{frame}
\end{document}