04/12/2025

Les grands principes du routage

Le routage est un mécanisme de couche 3, tout comme le protocole IP et c'est pourquoi l'un ne va pas sans l'autre. Ce mécanisme est indispensable pour pouvoir communiquer avec d'autres réseaux, sans routage, pas d'Internet !

Nous avons vu ensemble le principe de réseau : il a une adresse à lui, un début et une fin puis une adresse de diffusion (ou broadcast). Ce réseau est une entité logique au sein de laquelle tous les périphériques ont une partie commune de l'adresse, ce qui leur permet de savoir que les autres sont dans le même réseau et peuvent donc être joints directement.

Mais si l'adresse de destination se trouve dans un autre réseau, le périphérique sait qu'il doit passer par sa passerelle par défaut pour l'atteindre, il y a donc opération de routage. Chaque équipement dispose donc d'une table de routage (même si ce n'est pas un routeur !) pour savoir comment traiter les paquets en fonction de leur adresse de destination. Cette table est une sorte de carte routière qui contient les informations sur les meilleurs chemins à emprunter vers la destination. Elle contient également l'adresse IP de l'équipement à qui confier le paquet pour qu'il soit acheminé. C'est ce qu'on appelle l'adresse de prochain saut ou tout simplement passerelle (mais pas forcément par défaut cette fois-ci, car il peut y en avoir plusieurs).

Le titre de cette section "chacun sa route" n'est pas choisi au hasard (mis à part la chanson bien sûr), le routage est un principe, si je puis dire "subjectif". Chaque équipement dispose de sa table de routage, donc chaque équipement traite le paquet comme il l'entend puis le passe au prochain saut ; charge à lui de continuer l'acheminement, car dès qu'un paquet quitte une machine donnée, ce n'est plus son problème.

C'est ce qui fait que des paquets peuvent tout à fait se perdre ou arriver en retard. En fonction du trafic, du chemin emprunté, etc. Il peut arriver que des pertes surviennent. Le protocole IP, et plus particulièrement le routage, est d'ailleurs qualifié de "best-effort" dans la documentation. En français, on pourrait traduire cela par "au mieux", ce qui n'inclut aucune garantie. C'est pourquoi il est par nature non fiable.

Ce que je dis souvent, c'est que le routage est comme l'acheminement postal : on envoie des paquets, on sait quand ils partent, mais pas par où ils vont passer, et jamais quand ils arrivent, ni même s'ils vont arriver !

I. Zoom sur la table de routage

Nous avons donc parlé de cette table, mais à quoi ressemble-t-elle et quelles informations contient-elle ?

Prenons un exemple simple pour commencer : la table de routage de mon PC Windows. Pour la consulter, une commande existe :

route print

Vous pouvez essayer, cette commande va vous afficher toutes les routes connues de votre ordinateur. Attention, la sortie peut être longue, ne vous étonnez pas. La section qui nous intéresse est bien nommée : IPv4 Table de routage.

IPv4 Table de routage
===========================================================================
Itinéraires actifs :
Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.9     35
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      192.168.1.0    255.255.255.0         On-link       192.168.1.9    291
      192.168.1.9  255.255.255.255         On-link       192.168.1.9    291
    192.168.1.255  255.255.255.255         On-link       192.168.1.9    291
     192.168.56.0    255.255.255.0         On-link      192.168.56.1    281
     192.168.56.1  255.255.255.255         On-link      192.168.56.1    281
   192.168.56.255  255.255.255.255         On-link      192.168.56.1    281
     192.168.96.0    255.255.255.0         On-link      192.168.96.1    291
     192.168.96.1  255.255.255.255         On-link      192.168.96.1    291
   192.168.96.255  255.255.255.255         On-link      192.168.96.1    291
    192.168.244.0    255.255.255.0         On-link     192.168.244.1    291
    192.168.244.1  255.255.255.255         On-link     192.168.244.1    291
  192.168.244.255  255.255.255.255         On-link     192.168.244.1    291
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link      192.168.56.1    281
        224.0.0.0        240.0.0.0         On-link     192.168.244.1    291
        224.0.0.0        240.0.0.0         On-link      192.168.96.1    291
        224.0.0.0        240.0.0.0         On-link       192.168.1.9    291

Note : Vous avez peut-être moins de routes que moi. J'ai, en effet, deux logiciels de virtualisation qui crée leurs propres cartes réseau virtuelles qui ajoutent des routes.

On voit donc qu'il s'agit d'un tableau, composé ici de plusieurs colonnes ayant chacune une utilité :

  • Destination réseau : c'est là où va mon paquet, la destination finale
  • Masque réseau : le masque du réseau de destination
  • Adr. passerelle : l'adresse de la passerelle ou du prochain saut vers cette destination
  • Adr. interface : l'interface de sortie, celle qui est en communication avec la passerelle
  • Métrique : "note" qui indique si la route est fiable. Plus cette note est basse, plus la route est jugée fiable et sera empruntée. Par exemple, si deux routes sont disponibles vers une même destination, ce sera toujours celle dont la métrique est la plus basse qui sera choisie.

En fait, lorsqu'on fait du routage, il y a toujours trois questions à se poser :

  • Où je vais : quelle est la destination finale de mon paquet ? C'est mon réseau de destination, avec son masque
  • A qui je m'adresse : à quel périphérique dois-je envoyer mon paquet pour qu'il soit acheminé ? C'est l'adresse de passerelle
  • Par où je sors : par quelle "porte" dois-je sortir pour acheminer le paquet ? C'est l'interface de sortie, désignée par son nom ou IP.

La première route est étrange n'est-ce pas ? La destination est, en effet, 0.0.0.0 pour un masque de 0.0.0.0. On voit aussi que l'adresse de passerelle est 192.168.1.1 (soit ma box) et la métrique est la plus faible. Ici, nous parlons de cette route :

Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.9     35

Il s'agit de la route par défaut. Cette route est très importante, car c'est celle qui sera choisie s'il n'y a pas de route précise dans la table (d'où son nom). C'est comme les panneaux "Toutes directions" que vous avez peut-être déjà vu sur un trajet. Mais, pourquoi cette adresse de destination bizarre ?

Internet est un lieu où des milliards d'adresses existent. Il est impossible de rentrer l'ensemble des routes vers tous ces réseaux à la main. On a donc créé une adresse qui les désigne tous, une route pour les gouverner toutes et dans les ténè... Je m'égare.

La deuxième route (rappelée ci-dessous) concerne l'adresse de bouclage (loopback), comme nous l'avons vu, toute la plage 127.0.0.0/8 est interne à une machine. On voit ici en lieu et place de la passerelle la mention On-link avec l'adresse de mon interface 127.0.0.1. C'est ce qu'on appelle une route directement connectée. Lorsque vous renseignez une adresse IP sur un périphérique, celui-ci en déduit automatiquement que ce réseau est disponible via cette interface. Comme c'est la sienne, il est directement connecté.

Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331

La troisième route est un peu plus étrange (voir ci-dessous). Si vous observez le masque, il est en /32 soit l'entièreté de l'adresse ! C'est ce qu'on appelle une route locale. Elle désigne l'interface elle-même et est créée dès qu'une IP est indiquée sur une interface réseau. Ces routes permettent au routeur de savoir que l'adresse IP configurée sur l'interface est "locale" et donc que les paquets destinés à cette adresse n'ont pas besoin d'être routés, mais seulement transmis à la couche réseau locale ; cela permet au routeur de recevoir et de traiter les paquets qui lui sont directement adressés. Vous noterez qu'une deuxième route locale est insérée pour l'adresse de broadcast du réseau en question. C'est normal, une diffusion étant destinée à tous les périphériques, le PC doit également la traiter pour lui-même.

Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331

II. En-tête IP

Avant d'aller plus loin, je vais revenir sur le protocole IP. Comme je vous l'ai dit, il est indissociable du routage. C'est pourquoi il est important de bien le connaître, car il ne se limite pas aux adresses. Tout comme une trame, un paquet dispose d'une entête contenant des informations pour gérer sa transmission. L'entête IP contient donc l'adresse source, l'adresse de destination, mais également d'autres informations importantes. Cela ressemble à ceci :

Note : en réalité, il ne s'agit pas d'un bloc comme ci-dessus, il faut imaginer chaque ligne du tableau les une à la suite des autres. J'ai volontairement découpé en lignes de 4 octets pour faciliter la lecture (et parce que sinon, ça ne rentre pas sur l'écran !)

Je ne vais pas détailler tous les champs ici, car ce n'est pas utile à ce stade, mais certains d'entre eux sont importants (en jaune) :

  • Version : c'est un champ de 4 bits qui indique quelle version d'IP est contenue dans le paquet. La valeur est 04 pour IPv4 et 06 pour IPv6
  • TTL : Time To Live, en français "temps de vie". Cette valeur détermine le nombre de routeurs que le paquet peut traverser avant d'être supprimé. Elle est différente en fonction des systèmes (64, 128 et 255) mais fonctionne de la même manière : à chaque fois que le paquet traverse un routeur, sa valeur est décrémentée de 1. Arrivé à 0, le paquet est détruit et une erreur de routage est déclarée. Cette fonctionnalité a été introduite pour éviter qu'un paquet ne circule éternellement sur Internet en cas de boucle de routage.
  • Protocoles : ce champ de 8 bits indique la nature des données inclus dans la charge utile, cela permet au PC qui réceptionne le paquet de savoir à quelle partie de son système le donner une fois "déballé"
  • IP source et destination : permet de savoir à qui est destiné le paquet et d'où il vient pour la réponse. Notez bien l'ordre ! Seule la couche 2 indique la destination en premier. Pour les autres couches, c’est toujours la source d'abord !

C'est donc ça que reçoit ou émet le PC lorsqu'il communique via IP. Si nous en revenons au routage, vous remarquerez une chose très importante : le masque de la destination n'est pas inclus dans l'entête. C'est tout à fait normal, car on ne le connaît pas. Je vous ai pourtant dit que le PC qui répond ou envoi un paquet vérifie d'abord si le destinataire est dans son réseau pour savoir s'il doit le transmettre directement ou s'il doit passer par sa passerelle.

Donc, comment fait-il ?

III. Étapes de routage

Nous allons créer un scénario : un PC qui a l'adresse 192.168.1.22/24 avec une passerelle en 192.168.1.1, sa table de routage ressemblera donc à ceci :

Destination réseauMasque réseauAdr. passerelleAdr. interfaceMétrique
0.0.0.00.0.0.0192.168.1.1192.168.1.2255
127.0.0.0255.0.0.0On-link127.0.0.1331
127.0.0.1255.255.255.255On-link127.0.0.1331
127.255.255.255255.255.255.255On-link127.0.0.1331
192.168.1.0255.255.255.0On-link192.168.1.22331
192.168.1.22255.255.255.255On-link192.168.1.22331
192.168.1.255255.255.255.255On-link192.168.1.22331

Nous allons imaginer qu'il reçoit un ping de la part de 192.168.1.89, il doit donc lui répondre. Mais, d'abord, il doit savoir s'il est sur son réseau. Pour cela, il va utiliser une opération XOR (eXclusive OR ou "ou exclusif" en français). Cette opération sur l'adresse de destination et ensuite avec le masque lui donnera la réponse.

Le XOR est une opération simple : pour deux bits donnés, le résultat sera 0 si les deux bits sont identiques et 1 si les deux bits sont différents.

Soit, pour les adresses IP :

192.168.1.89     -> 11000000.10101000.00000001.01011001
192.168.1.22     -> 11000000.10101000.00000001.00010110
                  ----------------------------------------
résultat XOR     -> 00000000.00000000.00000000.01001111

Ce résultat est ensuite comparé via une autre opération nommée AND avec le masque. Contrairement au XOR, le AND ne donne 1 que si les deux bits comparés sont à 1.

résultat XOR   -> 00000000.00000000.00000000.01001111
255.255.255.0  -> 11111111.11111111.11111111.00000000
                  ----------------------------------------
Résultat final -> 00000000.00000000.00000000.00000000

Note : ces opérations ne sont pas forcément à apprendre, mais il est important de comprendre comment se comporte un appareil à réception d'un paquet

Le résultat étant 0, le PC sait que son destinataire est sur le même réseau. Il va donc vérifier dans sa table quelle interface est connectée à ce réseau et lui envoyer le paquet directement, c'est ce qu'on appelle le routage direct.

Maintenant, imaginons que le destinataire est en 192.168.20.10 et refaisons les opérations XOR :

192.168.1.89   -> 11000000.10101000.00000001.01011001
192.168.20.10  -> 11000000.10101000.00010100.00001010
                  ----------------------------------------
résultat XOR   -> 00000000.00000000.00010101.01010011

Puis le AND :

résultat XOR   -> 00000000.00000000.00010101.01010011
255.255.255.0  -> 11111111.11111111.11111111.00000000
                  ----------------------------------------
Résultat final -> 00000000.00000000.00010101.00000000

AH ! Le résultat est différent de 0 ! Donc, le PC sait que la destination n'est pas sur son réseau, il DOIT passer par quelqu'un pour renvoyer le paquet, c'est ce qu'on appelle le routage indirect.

Il va donc parcourir sa table de routage pour voir s'il connaît un chemin vers 192.168.20.0. Ce n'est pas le cas ici, car cette route n'existe pas. Le PC va donc se rabattre sur la route par défaut, il récupère l'IP de la passerelle et lui envoie le paquet, charge à elle de l'acheminer.

La passerelle va faire exactement la même chose :

  1. Vérifier si la destination est sur un réseau directement connecté
  2. Si oui, lui transmettre directement le paquet via routage indirect
  3. Si non, chercher dans la table de routage un chemin pour le paquet vers un autre routeur
  4. Si la route est inscrite, envoyer le paquet au prochain saut pour qu'il continue l'acheminement
  5. Si aucune route n'est indiquée, prendre la route par défaut et envoyer le paquet à la passerelle par défaut
  6. Si ni route directe, ni route par défaut disponible, détruire le paquet et déclarer une erreur de routage

Ce qui donne ceci, applicable à chaque opération de routage fait par n'importe quel appareil :

Note : point important ! Si le paquet est détruit, il est perdu. En aucun cas le routeur ne va demander une retransmission d'un nouveau paquet à la source, ce n'est pas son rôle. Il va prévenir celle-ci du problème, mais cela ne veut pas dire qu'un nouveau paquet sera envoyé !

Cette introduction au routage étant terminée, nous vous invitons à poursuivre la lecture de ce cours pour passer à la pratique avec Cisco IOS !

author avatar
Florian Duchemin Administrateur réseau et sécurité
Consultant indépendant, je suis spécialisé en réseau et sécurité. J'interviens pour du conseil ou de l'accompagnement. Je suis également formateur en centre et en entreprise, j'alterne donc entre utilisation et partage de mes connaissances!
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.