Aller au contenu principal
reseauLe routage

Le routage

Ce que ce chapitre apporte

  • Décrire ce qu'un routeur fait d'un paquet, étape par étape.
  • Lire une table de routage et nommer l'origine de chaque route.
  • Appliquer la règle du préfixe le plus long, et dire ce qu'elle ignore.
  • Distinguer le rôle de la distance administrative de celui du préfixe.
  • Expliquer ce que fait une route par défaut, et ce qu'elle ne fait pas.
  • Interpréter les retours de ping et de traceroute.

Un commutateur travaille dans un seul réseau et sait où sont les machines parce qu'il les a entendues parler. Un routeur travaille entre des réseaux qu'il ne connaît pas et dont il n'entendra jamais les machines. Il ne peut donc pas apprendre de la même façon, et il ne décide pas de la même façon : il ne cherche pas une adresse, il cherche le réseau le plus précis qui la contienne.

Cette différence explique tout le chapitre, y compris la règle qui surprend le plus : une route apprise par un protocole peu fiable peut l'emporter sur une route configurée à la main, et c'est normal.

Ce qu'un routeur fait d'un paquet

Le traitement est toujours le même, et il ne comporte aucune recherche de machine.

  1. La trame arrive ; le routeur vérifie son contrôle d'erreur et la défait pour en extraire le paquet.
  2. Il lit l'adresse de destination du paquet, et cherche dans sa table la route la plus précise qui la contient.
  3. Il décrémente la durée de vie du paquet. Si elle tombe à zéro, il détruit le paquet et prévient l'émetteur.
  4. Il fabrique une nouvelle trame, avec ses propres adresses MAC de source et de destination, et l'émet sur l'interface choisie.

Les adresses MAC changent à chaque routeur, les adresses IP ne changent jamais. C'est la conséquence la plus utile du chapitre. Une capture prise à deux endroits différents du chemin montre les mêmes adresses IP et des adresses MAC entièrement différentes. Chercher l'adresse MAC de la machine d'origine sur un réseau distant est donc sans objet : elle a disparu au premier routeur.

La durée de vie mérite un mot. Ce n'est pas un temps mais un compteur de routeurs traversés, décrémenté à chaque passage. Il existe pour qu'un paquet pris dans une boucle de routage finisse par disparaître au lieu de tourner indéfiniment, et c'est aussi ce qui rend traceroute possible.

La table de routage

Table de routage

Une table de routage associe des réseaux à des moyens de les atteindre. Elle ne contient jamais d'adresses de machines, seulement des préfixes.

Chaque route vient de l'une de quatre sources, et la source détermine la confiance qu'on lui accorde.

OrigineDistanceComment elle arrive dans la table
Réseau directement relié0Le routeur a une interface dessus ; rien à configurer
Route statique1Écrite à la main
OSPF110Apprise d'un protocole de routage, par calcul de chemin
RIP120Apprise d'un protocole plus ancien, par comptage de sauts

Cette distance administrative sert à une seule chose : départager deux routes qui annoncent le même réseau avec le même préfixe. Elle décide de ce qui entre dans la table, et son rôle s'arrête là.

Le préfixe le plus long

Une fois la table constituée, le choix d'une route pour un paquet obéit à une règle unique, et cette règle ne regarde plus du tout la distance.

Règle du préfixe le plus long

Parmi toutes les routes dont le réseau contient l'adresse de destination, le routeur retient celle dont le préfixe est le plus long, c'est-à-dire la plus précise.

paquet vers
10.1.5.2000001010.00000001.00000101.0001010024 bits reconnus
réseau visécoïncidence avec la destinationversorigine
10.1.5.0/2400001010000000010000010124 bits10.1.0.6ospf (110)
10.1.0.0/16000010100000000116 bitsrelié, Gi0/1connecté (0)
10.0.0.0/8000010108 bits10.9.9.1ospf (110)
par défautaucun bit exigé : correspond à tout192.0.2.1statique (1)

relayéLe paquet vers 10.1.5.20 part par 10.1.5.0/24, vers 10.1.0.6 : préfixe le plus long parmi les 4 routes qui correspondent.

  • 4 routes sur 4 correspondent à cette destination, et la plus précise l'emporte : /24 contre /16, alors même que la perdante vient d'une source plus sûre.
  • La route par défaut correspond aux 4 destinations de la figure et n'en achemine que 1 : elle n'est pas un choix, elle est ce qui reste.
La même table, quatre destinations. Les bits en couleur sont ceux sur lesquels la route retenue coïncide avec la destination : la plus longue coïncidence gagne, quelle que soit l'origine de la route.

Quatre destinations, quatre issues différentes, et une seule règle appliquée.

10.1.5.20 est couverte par les quatre routes à la fois. Celle qui l'emporte est la /24, apprise par OSPF, c'est-à-dire la source la moins sûre de la table. La distance administrative n'intervient pas ici, et une route statique moins précise ne la sauverait pas.

10.1.9.4 tombe dans le réseau directement relié : le routeur n'a personne à qui passer le paquet, il le remet lui-même.

10.200.0.1 n'est couverte que par la /8 et par la route par défaut. La /8 est plus précise, elle gagne.

172.20.0.9 n'est couverte que par la route par défaut, qui l'achemine faute de mieux.

La route par défaut correspond à toutes les destinations, et n'en achemine presque aucune. Elle est écrite 0.0.0.0/0, c'est-à-dire zéro bit exigé, donc une coïncidence de longueur nulle. N'importe quelle autre route qui correspond la bat. Ce n'est pas un choix du routeur, c'est ce qui reste quand rien de plus précis n'existe.

Quand deux routes annoncent le même réseau

C'est le seul cas où la distance administrative parle. Deux protocoles, ou un protocole et une configuration manuelle, annoncent exactement le même préfixe : une seule des deux routes entre dans la table.

paquet vers
10.5.7.900001010.00000101.00000111.0000100124 bits reconnus
réseau visécoïncidence avec la destinationversorigine
10.5.7.0/2400001010000001010000011124 bits10.0.0.3rip (120)
10.5.0.0/16000010100000010116 bits10.0.0.1statique (1)
par défautaucun bit exigé : correspond à tout192.0.2.1statique (1)

relayéLe paquet vers 10.5.7.9 part par 10.5.7.0/24, vers 10.0.0.3 : préfixe le plus long parmi les 3 routes qui correspondent.

  • 10.5.0.0/16 par ospf (110) n'entre pas dans la table : le même réseau y est déjà par statique (1), jugé plus sûr. La distance ne sert qu'ici, à préfixe égal, et jamais au moment d'acheminer.
  • 3 routes sur 3 correspondent à cette destination, et la plus précise l'emporte : /24 contre /16, alors même que la perdante vient d'une source plus sûre.
  • La route par défaut correspond aux 2 destinations de la figure et n'en achemine aucune : elle n'est pas un choix, elle est ce qui reste.
Deux routes pour le même réseau : la plus sûre entre dans la table, l'autre est écartée. Mais pour acheminer, c'est encore le préfixe le plus long qui décide, et la route apprise par RIP l'emporte.

La figure met les deux règles en scène ensemble, et c'est ce qui les rend distinctes. La route OSPF vers 10.5.0.0/16 n'entre pas dans la table, écartée par la route statique de même préfixe. Mais la route RIP vers 10.5.7.0/24, issue de la source la moins fiable de toutes, achemine bel et bien le paquet vers 10.5.7.9, parce qu'elle est plus précise.

Retenir la formule : la distance choisit ce qu'on écrit dans la table, le préfixe choisit ce qu'on en fait.

Le paquet qui ne va nulle part

Quand aucune route ne correspond et qu'il n'y a pas de route par défaut, le routeur détruit le paquet et prévient l'émetteur. C'est le message Destination host unreachable, et il est précieux : il indique un routeur qui a pris une décision, et non un silence.

Quatre retours reviennent constamment, et chacun désigne un endroit différent du chemin.

RetourCe qu'il signifieOù chercher
Destination host unreachableUn routeur n'a pas de route vers ce réseauLa table du routeur qui répond
Request timed outRien n'est revenu dans le délaiLe chemin de retour, ou un filtrage silencieux
TTL expired in transitLe compteur de sauts est tombé à zéroUne boucle de routage
Unknown hostLe nom n'a pas pu être traduit en adresseLa résolution de noms, pas le routage

La distinction entre les deux premiers est celle qui fait gagner le plus de temps. Une destination inaccessible est une réponse : quelqu'un a répondu, et son adresse dit où s'est arrêtée la recherche. Un délai dépassé n'est pas une réponse : le paquet est peut-être arrivé, et c'est le retour qui manque.

Un ping qui échoue ne prouve pas qu'un chemin est coupé. Il prouve qu'un aller-retour n'a pas abouti. Le chemin aller et le chemin retour peuvent être différents, et de nombreux équipements sont configurés pour ignorer les demandes d'écho sans que rien ne soit en panne.

Suivre un chemin

traceroute exploite exactement le mécanisme de la durée de vie. Il envoie un paquet avec une durée de vie de 1 : le premier routeur la décrémente, tombe à zéro, détruit le paquet et se signale. Puis un paquet avec une durée de vie de 2, qui fait se signaler le deuxième routeur, et ainsi de suite.

main.py
Sortie
>_ Prêt à exécuter…

Chaque ligne d'un traceroute est donc un paquet mort quelque part, et le nom du tueur. Deux conséquences pratiques en découlent. Une ligne sans réponse ne signifie pas que le chemin s'arrête là : le routeur concerné ne se signale simplement pas. Et le chemin affiché est celui de l'aller uniquement, ce qui ne renseigne en rien sur le retour.

Exercices type

Exercice 1 : une table contient 10.0.0.0/8 via A en statique et 10.4.0.0/16 via B apprise par RIP. Vers où part un paquet pour 10.4.7.1 ?

Afficher la solution

Vers B, par la route RIP.

Les deux routes couvrent l'adresse, mais la /16 est plus précise que la /8. La règle du préfixe le plus long tranche, et elle ne consulte pas la distance administrative.

La distance n'aurait servi que si les deux routes avaient annoncé exactement le même préfixe. Ce n'est pas le cas ici, et les deux coexistent sans conflit dans la table.

Exercice 2 : un poste joint son serveur local mais aucun site sur Internet. Le ping vers la passerelle fonctionne. Que chercher ?

Afficher la solution

Le poste communique donc dans son propre réseau et atteint son routeur : la carte, le câble, l'adresse et le masque sont corrects.

Ce qui manque est au-delà. Deux hypothèses, dans cet ordre.

La route par défaut du routeur : sans elle, tout paquet vers un réseau inconnu est détruit, et le routeur répond Destination host unreachable. Ce retour, s'il apparaît, confirme immédiatement l'hypothèse.

La résolution de noms : si les adresses numériques passent et pas les noms, le routage est intact et le problème est ailleurs, dans le service de traduction des noms que traite le chapitre 9.

Un ping vers une adresse numérique connue sépare les deux cas en une seule commande.

Exercice 3 : un traceroute affiche trois lignes sans réponse au milieu, puis reprend et atteint la destination. Y a-t-il une panne ?

Afficher la solution

Non. La destination est atteinte, donc le chemin fonctionne de bout en bout.

Les lignes sans réponse signifient seulement que trois routeurs n'ont pas signalé la destruction du paquet, ce qui est un choix de configuration très courant chez les opérateurs. Un routeur qui ne se signale pas fait tout de même suivre le trafic.

L'erreur à éviter est de conclure d'une ligne muette que le chemin s'arrête là. Seule une absence de réponse jusqu'à la fin est un signal.

Exercice 4 : un ping répond TTL expired in transit de façon répétée. Qu'est-ce que cela dit du réseau ?

Afficher la solution

Que le paquet a traversé assez de routeurs pour épuiser son compteur sans arriver : il tourne en rond.

C'est une boucle de routage. Deux routeurs se renvoient mutuellement le paquet, chacun croyant que l'autre sait où est la destination. La cause la plus fréquente est une paire de routes statiques qui se pointent l'une l'autre, ou une route par défaut sur un routeur qui est lui-même la sortie.

Le diagnostic passe par traceroute : la boucle y apparaît en clair sous forme de deux adresses qui alternent jusqu'à épuisement du compteur.

Le compteur de durée de vie n'est donc pas la cause de la panne, mais ce qui l'empêche de saturer le réseau.

Vérification rapideon peut se reprendre

1.Que contient une table de routage ?

2.Deux routes couvrent la destination : une /8 statique et une /24 apprise par RIP. Laquelle sert ?

3.À quoi sert la distance administrative ?

4.Que se passe-t-il pour les adresses MAC lors d'un routage ?

5.Que signifie une route 0.0.0.0/0 ?

6.Quelle différence entre « destination host unreachable » et « request timed out » ?

7.Sur quoi repose traceroute ?

La méthode

  1. Chercher le préfixe le plus long avant tout, et ne consulter la distance qu'à préfixes égaux.
  2. Vérifier l'existence d'une route par défaut dès qu'un réseau distant est inaccessible.
  3. Distinguer une réponse d'une absence de réponse dans les retours de ping.
  4. Lire l'adresse du routeur qui répond : elle dit où la recherche s'est arrêtée.
  5. Ne jamais conclure d'une ligne muette de traceroute que le chemin s'y arrête.
  6. Soupçonner une boucle devant un compteur de durée de vie épuisé, et la confirmer par traceroute.

Synthèse

  • Un routeur défait et refait la trame à chaque saut : les adresses MAC changent, les adresses IP restent.
  • La durée de vie est un compteur de routeurs, qui empêche les boucles de durer et rend traceroute possible.
  • Une table de routage contient des réseaux, venus de quatre origines de fiabilité inégale.
  • La distance administrative départage deux routes de même préfixe, au moment de construire la table.
  • Le préfixe le plus long décide de l'acheminement, sans jamais regarder l'origine de la route.
  • La route par défaut correspond à tout et ne gagne jamais contre une autre correspondance.
  • Destination host unreachable est une réponse qui localise le problème ; Request timed out n'en est pas une.