- Une page interactive visualise en temps réel le trajet emprunté par les paquets de l’utilisateur jusqu’au serveur d’un site web via Internet
- Son propre programme de traceroute,
ktr, exploite la valeur TTL des paquets ICMP pour collecter les informations de chaque saut réseau
- Le site web fonctionne même sans JavaScript, le serveur injectant les résultats du traceroute dans le HTML sous forme de flux
- Pour l’analyse du cheminement, il utilise les données WHOIS et PeeringDB afin d’afficher le système autonome (AS) auquel appartient chaque IP ainsi que les informations sur l’entreprise concernée
- En combinant traceroute et structure de l’Internet fondée sur BGP, il montre qu’Internet est un ensemble de réseaux reliés par des relations de peering entre entreprises
Le voyage parcouru par votre paquet
- Le traceroute en haut de la page montre le chemin suivi par les paquets entre l’ordinateur de l’utilisateur et le serveur
- Il traverse successivement des réseaux comme ceux de routeurs, de FAI, d’Amazon, de NTT Global IP Network et de Hetzner
- Certaines sections sont indiquées comme « (no response) », car certains serveurs ne répondent pas
- À l’intérieur du réseau Hetzner, le paquet passe par plusieurs routeurs avant d’atteindre le serveur final
- L’adresse IP
213.239.252.10 est affichée comme core0.fra.hetzner.com grâce à une recherche DNS inverse
Behind the Scenes
- Quand le site web reçoit une requête de l’utilisateur, il exécute un traceroute côté serveur puis transmet les résultats en temps réel
- Le traceroute utilise le protocole ICMP et collecte la réponse de chaque saut en augmentant la valeur TTL (Time To Live) d’une unité à chaque fois
- Quand le TTL atteint 0, le routeur concerné renvoie un message d’erreur, ce qui permet de retracer le chemin emprunté par le paquet
ktr diffuse les résultats du traceroute en flux tout en interrogeant en parallèle les informations d’IP, d’ASN et de réseau propriétaire de chaque saut
Frontend Fun
- Le site fonctionne même sans JavaScript, et le navigateur le perçoit simplement comme une page qui se charge lentement
- Le serveur maintient la connexion HTTP ouverte et insère progressivement les résultats du traceroute dans le HTML
- À chaque mise à jour, il insère un bloc CSS pour masquer les résultats précédents, ce qui produit un effet d’actualisation en temps réel
Front to Back, Back to Front
- En réalité, le site exécute le traceroute depuis le serveur vers l’IP de l’utilisateur et affiche ensuite les résultats dans l’ordre inverse
- Il s’agit donc d’un « reverse traceroute » : même si les chemins aller et retour ne sont pas parfaitement identiques, ils sont généralement assez similaires
Les réseaux et les systèmes autonomes (AS)
- Internet est un réseau de réseaux d’entreprises appelés systèmes autonomes (Autonomous System, AS)
- Chaque AS possède son propre ASN (Autonomous System Number) et échange du trafic avec d’autres via le peering
- Internet n’est pas un ensemble appartenant à des particuliers, mais une collection de réseaux détenus par des entreprises, dont les interconnexions sont déterminées par des contrats financiers et des procédures administratives
- Un ASN peut être demandé auprès de l’un des 5 registres Internet régionaux (RIR)
WHOIS et PeeringDB
- Pour identifier l’AS auquel appartient chaque IP du traceroute, le site utilise le protocole WHOIS et la base de données PeeringDB
- WHOIS repose sur une structure simple : après l’ouverture d’une connexion TCP, on envoie une requête et le serveur renvoie les informations
- Comme les noms de champs et les formats varient selon les serveurs, l’analyseur a été implémenté sous la forme d’un simulateur simple, proche d’une lecture humaine
- PeeringDB fournit des informations sur les entreprises pour environ un tiers de l’ensemble des AS
BGP (Border Gateway Protocol)
- BGP est le protocole central qui détermine la forme d’Internet, en échangeant les informations de routage entre AS
- Les routeurs de bordure (border routers) maintiennent une table de routage BGP contenant la liste des ASN pour chaque chemin
- Lorsque deux AS établissent un peering, leurs routeurs ouvrent une session BGP et échangent des annonces de routes (route advertisements)
- Parmi plusieurs chemins possibles, les routeurs choisissent le plus court ou celui ayant la préférence la plus élevée pour acheminer les paquets
L’histoire de BGP
- Les expérimentations réseau commencées en 1969 avec ARPANET ont conduit en 1989 à la RFC 1105 de Cisco et IBM, marquant l’apparition de BGP v1
- Ont ensuite été publiées BGP v2 (1990) puis v4 (1994), cette dernière étant toujours utilisée aujourd’hui
- BGP s’est imposé comme le protocole standard qui détermine les chemins d’interconnexion entre tous les réseaux d’Internet
La relation entre traceroute et BGP
- Exemple de chemin : AS16509 → AS2914 → AS24940
- Amazon (AS16509) → NTT Global IP Network (AS2914) → Hetzner (AS24940)
- Même au sein d’un même ASN, plusieurs sauts peuvent exister, gérés par des protocoles de routage internes ou des chemins statiques
- Ce sont les relations de peering entre AS qui déterminent la véritable atteignabilité sur Internet
Récapitulatif
- Le site exécute un traceroute vers l’IP de l’utilisateur et transmet le résultat sous forme de flux HTTP
- Le traceroute exploite le TTL des paquets ICMP pour visualiser le chemin entre routeurs
- Chaque routeur appartient à un système autonome (AS), interconnecté avec les autres via BGP
- Les relations de peering déterminent la structure et l’accessibilité d’Internet
Épilogue
- L’auteur, conscient de sa compréhension encore incomplète de l’architecture d’Internet, a créé un article interactif à vocation pédagogique centré sur les protocoles
- Plutôt que d’attendre un grand projet parfaitement abouti, il a choisi de publier quelque chose de plus modeste mais terminé
- Le projet a été mené à bien grâce aux encouragements de la communauté Hack Club, en s’appuyant sur un programme de traceroute open source
- Avec le message « mieux vaut quelque chose de petit mais terminé », l’auteur espère que cela restera un contenu web durable
Aucun commentaire pour le moment.