next up previous
suivant: Anastrophe monter: IPSOL précédent: IPSOL

Traceroute

  1. La classe d'une adresse IP découle directement du poids fort (1er octet) de cette adresse : 0-127=A, 128-191=B, 192-223=C. L'adresse de réseau est alors respectivement de 1, 2, ou 3 octets pour des adresses de classe A, B, C. Ceci nous donne donc la suite suivante pour les réseaux traversés :

    Adresse Réseau Classe Adresses des machines dans le réseau
    157.159 B 100.69, 100.1, 10.1
    195.83.240 C 65
    193.48.75 C 45, 9, 129
    193.48.53 C 14
    195.220.180 C 34, 29
    193.251.128 C 113, 134
    144.232 B 8.209, 0.45, 0.30, 8.214
    4 A 24.4.189, 24.4.112, 0.1.246, 24.4.193,
        0.2.169, 0.1.46, 0.1.202
    192.233.33 C 3
    18 A 168.0.16, 181.0.31

  2. Si on prend un masque 255.255.255.0 pour le réseau 4, cela revient à le consiérer comme 65000 réseaux potentiels de classe C. Sur notre trace, on a alors les sous-réseaux : 4.24.4, 4.0.1, 4.0.2. Cette information de masque est en général purement locale, c'est-à-dire que ``BBN-planet'' analyse les adresses ``4.*.*.*'' comme des adresses de classe C et routera les paquets en fonction des 3 premiers octets, mais le reste du monde traitera ces adresses comme un réseau de classe A et routera uniquement sur le premier octet 4 indifférement des 2 octets qui suivent.

    Le subnetting peut se faire de manière récursive. On peut ainsi redécouper le sous-réseau 4.24.4 en 4 sous-(sous-)réseaux de 64 machines avec le masque 255.255.255.192. En parallèle, 4.0.1 peut être découpé en 8 réseaux de 32 machines avec un masque 255.255.255.224. Les masques pour le subnetting étant à chaque fois connus de l'ensemble des machines des sous-réseaux engendrés par le masque, et potentiellement ignorés par les machines extérieures.

  3. Le champ TTL permet de détruire un paquet qui traîne trop longtemps dans le réseau. En pratique, il compte le nombre de routeurs que l'on peut traverser, même si à l'origine il devait compter un temps de transit maximum en secondes. Dans X25, la route des paquets d'une même communication est fixe, donc à partir du moment où le paquet d'appel a construit une route, l'ensemble des paquets de la connexion ne risque pas de perdre le bon chemin. Le mécanisme du TTL est donc inutile dans les paquets X25, sauf peut être pour le routage initial du paquet d'appel à l'intérieur du réseau, mais cela ne concerne que l'opérateur du réseau X25.

  4. Le principe de traceroute va consister à envoyer des paquets de test avec un TTL initial de 1, puis 2, puis 3 ...On attend alors a priori des messages ICMP-TIME-EXCEEDED/IN-TRANSIT qui doivent être renvoyés par les routeurs successifs quand ils détruisent nos différents paquets. Pour tester l'arrivée à destination, on choisit pour nos paquets de test, des paquets ICMP-ECHO-REQUEST (ping). La destination sera alors repérée par le retour d'un paquet ICMP-ECHO-REPLY. (NB : Pour des raisons de droit d'accès à l'interface ICMP, on trouve aussi souvent l'utilisation d'un paquet de test UDP avec un port destination aléatoire et l'attente d'un ICMP-PORT-UNREACHABLE pour détecter l'arrivée à destination). La stratégie de traceroute reste très heuristique dans le mesure où on suppose implicitement que la route reste stable pour nos paquets successifs. Notons enfin que pour une écriture raisonnablement correcte de l'algorithme, on n'a pas le droit de supposer la fiabilité de IP (cela se saurait!), et on doit traiter des reprises sur temporisateur en l'absence de réponses. L'algo qui suit reprend les sources Unix de traceroute avec les petits défauts d'affichage en cas de perte de paquets. \begin{tabbing}
{\bf PROGRAMME } TRACEROUTE \\
{\bf Constante} {\it (* param\a\lq ...
...iot) ;\\
\>\>\>N = N+1 ;\\
\>{\bf Fin Tant que}\\
{\bf Fin} \\
\end{tabbing}

    Dans l'algo, on considère une fonction AttendrePaquetValide(T) qui retourne soit le paquet ICMP de réponse reçu (ICMP-ECHO-REPLY ou ICMP-TIME-EXCEEDED), soit une valeur TempoExpire si on n'a pas une telle réponse au bout du temps T. ( NB: AttendrePaquetValide teste le fait que le paquet ICMP reçu est bien une réponse à notre paquet à partir d'identifiants dans l'entête ICMP et dans les données ICMP).

  5. Si l'on regarde l'algorithme que l'on a écrit, il y a une fonction qui peut prendre un temps assez variable sans modifier les délais imprimés. Il s'agit de la fonction DNS qui cherche le nom d'une machine à partir de son adresse IP. Cela consiste à faire des requêtes ``inverses'' aux serveurs DNS (inverses car le rôle de base du DNS est de donner l'adresse à partir du nom). Cela peut prendre un certain temps, car il faut aller interroger plusieurs serveurs successifs éventuellement assez éloignés. Par contre, les mécanismes de cache sur les serveurs DNS font que la deuxième fois que l'on fait la requête sur une même adresse, la réponse viendra directement du serveur DNS local qui a mémorisé la réponse la première fois. Ceci donne une exécution plus rapide de traceroute si les noms de machines sont déjà connus sur le serveur DNS local.
  6. La structuration des noms de domaines et de machines est techniquement complètement indépendante de la topologie du réseau IP et de la structuration en réseau. C'est l'objectif des noms qui constituent un adressage logique indépendant des adresses utilisées. On peut sans problèmes mettre dans le domaine int-evry.fr des machines dont les numéros de réseau n'ont aucun rapport avec 157.159 et qui peuvent être situées à Tahiti par exemple.


next up previous
suivant: Anastrophe monter: IPSOL précédent: IPSOL
Pascal Hennequin (LOR-AIGRI) 2000-03-13