dimanche 3 février 2008

Internet : Traceroute

Traceroute est un outil réseau qui permet de suivre le chemin qu'un paquet de données (paquet IP) va prendre pour aller d'une machine A à une machine B.

Par défaut, le paquet est envoyé sur Internet mais le chemin emprunté par le paquet peut varier, en cas de panne d'un lien (les protocoles de routage comme BGP calculent alors un nouveau chemin) ou bien en cas de changement des connexions de l'un des opérateurs (connexion à un nouveau point d'échange, par exemple).

Après avoir été expédié au fournisseur d'accès, le paquet est transmis à des routeurs intermédiaires qui vont l'acheminer jusqu'à sa destination. Le paquet peut subir des transformations lors de son voyage. Il se peut aussi qu'il n'arrive jamais à destination si le nombre de nœuds intermédiaires est trop important.

Le principe de fonctionnement de Traceroute consiste à envoyer des paquets UDP (certaines versions peuvent aussi utiliser TCP ou bien ICMP avec des paquets ECHO Request, type 8) avec un TTL de plus en plus grand (en commençant à 1). Chaque routeur recevant un paquet IP en décrémente le TTL. Lorsque le TTL atteint 0, le routeur émet un paquet ICMP d'erreur (type 11, code 1). Traceroute découvre ainsi les routeurs de proche en proche.

Pour bien interpréter le résultat de traceroute, il faut garder en tête que :

  • le chemin suivi par les paquets peut être asymétrique et traceroute ne montre que l'aller,
  • traceroute est effectué depuis un point de l'Internet (votre machine) et peut être radicalement différent depuis un autre point, même proche (d'où l'intérêt du site traceroute.org),
  • les routeurs émettent le paquet ICMP avec l'adresse source de l'interface utilisée pour vous joindre. Ce n'est pas forcément l'interface par laquelle votre paquet "sonde" est passé.
  • les routeurs ne priorisent pas les paquets ICMP tous de la même façon. Donc, les temps réponse en cours de route peuvent être variables. Ceci est normal.
  • un routeur peut ne pas répondre aux requêtes ICMP. Dans ce cas, on voit généralement des signes astérisques (*) sur les noeuds intermédiaires qui ne répondent pas aux requêtes ICMP.

Sous Windows, on utilise l'utilitaire tracert. Un outil similaire est disponible sur les stations Unix avec traceroute.


Exemple sous Unix

%  traceroute fr.wikipedia.org
traceroute to rr.knams.wikimedia.org (145.97.39.155), 30 hops max, 38 byte packets
1 80.67.162.30 (80.67.162.30) 0.341 ms 0.300 ms 0.299 ms
2 telehouse2-gw.netaktiv.com (80.67.170.1) 5.686 ms 1.656 ms 0.428 ms
3 giga.gitoyen.net (80.67.168.16) 1.169 ms 0.704 ms 0.563 ms
4 62.4.73.27 (62.4.73.27) 2.382 ms 1.623 ms 1.297 ms
5 ge5-2.mpr2.cdg2.fr.above.net (64.125.23.86) 1.196 ms ge9-4.mpr2.cdg2.fr.above.net (64.125.23.102) 1.290 ms ge5-1.mpr2.cdg2.fr.above.net (64.125.23.82) 30.297 ms
6 so-5-0-0.cr1.lhr3.uk.above.net (64.125.23.13) 41.900 ms 9.658 ms 9.118 ms
7 so-7-0-0.mpr1.ams5.nl.above.net (64.125.27.178) 23.403 ms 23.209 ms 23.703 ms
8 64.125.27.221.available.above.net (64.125.27.221) 19.149 ms so-0-0-0.mpr3.ams1.nl.above.net (64.125.27.181) 19.378 ms 64.125.27.221.available.above.net (64.125.27.221) 20.017 ms
9 PNI.Surfnet.ams1.above.net (82.98.247.2) 16.834 ms 16.384 ms 16.129 ms
10 af-500.xsr01.amsterdam1a.surf.net (145.145.80.9) 21.525 ms 20.645 ms 24.101 ms
11 kncsw001-router.customer.surf.net (145.145.18.158) 20.233 ms 16.868 ms 19.568 ms
12 gi0-24.csw2-knams.wikimedia.org (145.97.32.29) 23.614 ms 23.270 ms 23.574 ms
13 rr.knams.wikimedia.org (145.97.39.155) 23.992 ms 23.050 ms 23.657 ms

On voit ici que le paquet a transité via Londres ("lhr" est le code international de l'aéroport d'Heathrow) avant d'être acheminé vers Amsterdam "ams".


Exemple sous Windows

C:\WINDOWS>tracert fr.wikipedia.org

Détermination de l'itinéraire vers rr.lopar.wikimedia.org [212.85.150.132]
avec un maximum de 30 sauts :

1 24 ms 22 ms 22 ms 1.32.202.62.cust.bluewin.ch [62.202.32.1]
2 22 ms 24 ms 22 ms 1.32.202.62.cust.bluewin.ch [62.202.32.1]
3 24 ms 23 ms 22 ms net481.bwrt2zhb.bluewin.ch [195.186.121.1]
4 314 ms 162 ms 22 ms net125.bwrt1inb.bluewin.ch [195.186.125.71]
5 34 ms 23 ms 24 ms if114.ip-plus.bluewin.ch [195.186.0.114]
6 27 ms 29 ms 29 ms i68geb-005-gig4-2.bb.ip-plus.net [138.187.130.158]
7 39 ms 39 ms 38 ms i00par-005-pos4-0.bb.ip-plus.net [138.187.129.34]
8 38 ms 320 ms 39 ms feth2-kara-ielo.freeix.net [213.228.3.203]
9 284 ms 39 ms 39 ms feth0-bestelle.tlcy.fr.core.ielo.net [212.85.144.6]
10 90 ms 158 ms 83 ms chloe.wikimedia.org [212.85.150.132]
Itinéraire déterminé.

Voici la syntaxe exacte sous Windows ainsi que les différentes options (ici sous Vista) :

Utilisation : tracert [-d] [-h SautsMaxi] [-j ListeHôtes] [-w délai] [-R] [-S srcaddr] [-4] [-6] nom_cible
Options :
-d Ne pas convertir les adresses en noms d'hôtes.
-h SautsMaxi Nombre maximum de sauts pour rechercher la cible.
-j ListeHôtes Itinéraire source libre parmi la liste des hôtes (IPv4 uniquement).
-w délai Attente d'un délai en millisecondes pour chaque réponse.
-R Chemin de suivi (IPv6 uniquement).
-S srcaddr Adresse source à utiliser (IPv6 uniquement).
-4 Force utilisant IPv4.
-6 Force utilisant IPv6.

Le paquet passe d'abord par des serveurs du fournisseur d'accès puis est dirigé rapidement vers le fournisseur qui héberge le serveur Chloe de Wikipédia.

Pour enregistrer le résultat de la commande tracert dans un fichier texte tapez dans une invite de commandes :

tracert fr.wikipedia.org > C:\tracert.txt 

Vous pouvez également utiliser le copier-coller depuis la fenêtre d'invite de commande.

www.wikipedia.org

Aucun commentaire: