Le routage

Le routage c’est quoi ?

La raison d’être d’IP est bien d’interconnecter des réseaux physiques hétérogènes ou non. Ce protocole de niveau 3 propose un format de paquets, un format d’adressage et une logique d’acheminement des paquets entre les réseaux physiques. Cette dernière fonction se nomme : Le routage

Cette fonction est réalisée, généralement, par des équipements spécifiques appelés des routeurs. Ces routeurs appliquent tous les mêmes règles de base pour que le transfert des paquets soit cohérents. Ce sont les règles de routage.

Avec IP, une notion très importante est à connaître : IP route des réseaux pas des machines !

Ceci veut dire, que seule la partie réseau d’une adresse est examinée par les équipements de routage pour déterminer la direction à prendre. L’acheminement vers la machine est réalisée par la logique de traitement des paquets appliquée par les machines IP sur le LAN de destination.

Pour imager le principe du routage, nous allons prendre l’exemple d’un utilisateur (Jules … Toujours lui !) qui souhaite afficher une page HTTP d’un serveur distant. Pour simplifier nous dirons que l’utilisateur tape dans la barre d’adresse du navigateur, l’adresse directe du serveur à atteindre au lieu d’entrer un nom mnémonique comme www.jebulle.com. Il entre l’adresse : http://10.0.0.1/site/.

Trouver la sortie du réseau physique

Une application voulant transmettre des données à une autre, va transmettre ses données aux couches inférieures. Pour notre exemple, le navigateur va transférer l’adresse du serveur (10.0.0.1) à IP (je vous fait grâce des résolutions de proxy, DNS, TCP et autres …).

Le stack IP du PC de Jules va examiner l’adresse, et notamment la partie réseau, il va remarquer que cette adresse n’est pas du même réseau que lui. En effet, l’adresse de Jules est : 12.0.0.2. Il sait, dans ce cas, qu’il doit envoyer son paquet à un équipement installé sur son réseau physique (dorénavant nous dirons LAN) qui assure le transfert des paquets à l’extérieur du LAN. Cet équipement est un routeur (ce pourrait être un serveur type FireWall ! Mais ne compliquons pas les choses !). Dans la terminologie IP on appelle cet équipement une « Gateway » ou « Passerelle » en français !

Comment le PC de Jules connaît-il l’adresse de la passerelle ? Et bien, si l’administrateur du réseau a bien fait son travail, il a du saisir l’adresse IP de la passerelle dans un champ, appelé « Passerelle » ou « Gateway Default » (Passerelle par défaut), dans les « Propriétés réseaux » du PC. Le nom de « Passerelle par défaut », signifie que le PC enverra par défaut à cette passerelle, tous les paquets qu’il ne sait pas router. Or une machine IP qui n’est pas une passerelle ne sait pas router des paquets en dehors de son adresse réseau !

Si Jules avait envoyé un paquet à un serveur 12.0.0.1, son PC l’aurait envoyé directement au serveur, celui-ci étant dans son réseau.

Algorithme de traitement du routage

 

 

La passerelle reçoit le paquet à destination de 10.0.0.1. Quel traitement applique-t-elle à ce paquet ? L’organigramme suivant vous présente la logique appliquée :

La passerelle extrait le paquet IP de la trame niveau 2 et examine le champ d’adresse destination :

  • si le paquet a pour adresse son adresse IP à elle (la passerelle !), le paquet est envoyé dans les couches hautes vers l’application de la passerelle. Jules tente d’accéder à l’administration de la passerelle. C’est ainsi que vous pouvez faire un TELNET sur un routeur par exemple !
  • si le paquet a pour adresse un adresse différente de celle de la passerelle, il est envoyé au module routage. Le module routage examine la partie réseau de l’adresse de destination du paquet :

1 – si le réseau demandée est le même que celui de provenance du paquet (même réseau que l’adresse source), la passerelle renvoie le paquet sur l’interface par laquelle elle l’a reçue et renvoie par la même occasion à la station émettrice du paquet un ICMP Redirect (on en causera plus tard !).

2 – si le réseau demandée est différent de celui de provenance, elle examine sa table de routage:

  • si dans sa table le réseau existe :
    • elle examine le champ TTL et le décrémente de 1. Si elle passe ainsi le TTL à 0, elle détruit le paquet et émet à la station émettrice du paquet un ICMP Time Exceded (on en parlera aussi plus tard !).
    • si le champ TTL n’est pas à 0, elle envoie le paquet à la prochaine passerelle pour le réseau. Cette passerelle est indiquée dans sa table de routage à coté de l’adresse réseau.
  • si le réseau n’existe pas dans sa table :
    • elle regarde si sa table propose une route par défaut (0.0.0.0 via 14.0.0.1 sur interface S2). Si elle existe, elle applique le même traitement sur le TTL que vu précédemment, et envoie le paquet à la passerelle indiquée.
    • si il n’y a pas de route par défaut, elle jette le paquet ! Ni vu ni connu, je t’embrouille (C’est tout IP ça !), et elle émet un ICMP Destination Unreachable (j’ai dit, qu’on en parlerai plus tard !) à la station émettrice.

La passerelle ne prend en compte que des paquets qui lui sont transmis dans des trames (niveau 2) qui lui sont adressées. Nous reviendrons sur cette notion quand nous parlerons d’ARP. Pour le moment, admettez que le PC de Jules à réussi à trouver l’adresse niveau 2 de la passerelle, qu’il a encapsulé le paquet IP d’adresse destination 10.0.0.1 dans cette trame adressée au serveur.

Pour émettre le paquet à une autre passerelle, celui-ci est bien sûr réencapsulé dans une trame de niveau 2, correspondante au protocole de couche réseau en vigueur sur le lien physique de l’interface de sortie de la passerelle.

Table de routage

La table de routage d’une passerelle, nous venons de l’apprendre, ne connaît que les adresses réseaux du réseau IP auquel elle appartient. Pour réaliser le routage d’un paquet, une passerelle examine l’adresse destination du paquet, en extrait l’adresse réseau et liste sa table de routage pour trouver la ligne correspondante.

Sur cette ligne elle trouvera généralement un certain nombre d’indications :

  • Source : indique comment la passerelle a appris la route (l’adresse du réseau destination). Il y a différentes possibilités pour permettre à une passerelle d’avoir connaissance des réseaux existants : la passerelle est directement connecté au réseau physique associé au réseau IP. Une de ses interfaces a donc une adresse machine personnelle dans ce réseau, ce qui lui permet de détecter que le réseau existe.
  • l’administrateur du réseau d’interconnexion a déclaré manuellement l’existence de ce réseau dans la table de routage (on parle de routage statique).
  • un protocole de routage (RIP, IGRP, e-IGRP, OSPF, BGP4, etc…) existe entre les différentes passerelles et leur permet de s’échanger les adresses réseaux que chacune connait. C’est le routage dynamique. Nous reviendrons sur ces notions de routage avancées lors d’un cours dédié.
  • Adresse réseau : indique l’adresse (partie réseau) du réseau de destination
  • Adresse passerelle : si le réseau n’est pas directement connecté à la passerelle (sur une de ses interfaces), ce champ indique à quelle passerelle il faut passer le paquet
  • Interface de sortie : indique sur quelle interface de la passerelle il faut envoyer le paquet pour lui permettre d’atteindre la machine demandée si le réseau de destination est directement raccordé à la passerelle, ou pour atteindre la prochaine passerelle, si le réseau de destination n’est pas directement raccordé.

On trouvera également d’autre champs comme un compteur indiquant depuis quand la passerelle connaît le réseau, ou comme un indication de coût de route, qui permet de choisir la route la plus rapide quand il existe plusieurs possibilités pour atteindre une destination.

Et le paquet de Jules ?

Pour notre exemple, le paquet de Jules, émis à destination de 10.0.0.1 est analysé par la passerelle comme « à destination du réseau 10.0.0.0 ». La passerelle n’est pas directement raccordée au réseau 10.0.0.0, elle n’a pas dans sa table de réseau 10.0.0.0 mais a une route par défaut 0.0.0.0 via 14.0.0.1 (la passerelle X2). Cette passerelle est accessible par l’interface Série2 de la passerelle X1 (c’est la table de routage qui le dit !). X1 ré-encapsule le paquet IP dans une trame HDLC (protocole de niveau 2 du lien série entre X1 et X2 !).

X2 reçoit une trame sur son interface Série0. Comme c’est un lien série, toutes les trames qui arrivent sur ce lien lui sont forcément adressées. Il récupère donc le paquet IP placé à l’intérieur et examine l’adresse destination sur le même algorithme que présenté précédemment. Il en déduit que le réseau à atteindre et le réseau 10.0.0.0. Ce réseau est décrit dans sa table de routage, comme accessible par la passerelle 15.0.0.1 (X3) sur son interface Ethernet0. Il ré-encapsule le paquet dans une trame niveau 2 Ethernet, ayant pour adresse destination, l’adresse niveau 2 de X3 (je vous passe les détails sur la manière dont X2 a appris l’adresse niveau 2 de X3, mais sachez qu’ARP y est pour quelque chose !).

X3 reçoit une trame qui lui est adressée sur son interface Ethernet2. Il examine son contenu (Oh ! Joie ! Un paquet IP ! Merci X2 !). Il examine l’adresse destination du paquet, en déduit qu’il est à destination du réseau 10.0.0.0. Surprise ! Son interface Ethernet0 est justement dans le réseau 10.0.0.0 ! Comment le sait-il ? Parce que l’adresse IP de son interface Ethernet0 est 10.0.0.254, d’ailleurs dans sa table de routage il voit bien que 10.0.0.0 est annoncé comme « Connected » sur son interface Ethernet0. Elle est donc dans le réseau 10.0.0.0 ! Il sait donc que le serveur 10.0.0.1 se trouve quelque part sur ce réseau Ethernet. Il va prendre le paquet IP et l’encapsuler dans une trame Ethernet (niveau 2, mais vous le savez non ?) à destination du serveur Web 10.0.0.1 (encore une fois, c’est ARP qui aura indiqué au routeur quelle est l’adresse niveau 2 du serveur !).

Le serveur reçoit donc une trame qui lui est adressée, contenant un paquet IP qui lui est également adressé. On remonte donc dans les couches, on interprète le contenu du paquet IP, puis le serveur répond et on repart dans l’autre sens … Mais vous en savez assez, maintenant, pour comprendre comment la réponse sera routée dans le réseau. Examinez les tables de routage des routeurs sur le schéma !

Conclusion du chapitre

Pas trop dérouté par tout ce routage ? Vous commencez à saisir la logique ?

Retenez donc bien qu’une passerelle route en examinant la partie réseau d’une adresse IP et pas la partie machine. Retenez également que le routage se fait de proche en proche :

  • station vers passerelle de sortie (gateway default + ARP)
  • puis de passerelle en passerelle (tables de routage + éventuellement ARP)
  • puis de dernière passerelle à station de destination (table de routage + ARP)

Dans le chapitre précédent je vous ai présenté l’adressage IP de base. Vous connaissez tout des 3 classes principales d’adresses et des adresses spécifiques IP.

Dans ce chapitre nous avons étudié les bases du routage. Il est essentiel de maintenant comprendre comment définir un plan d’adressage et quels sont les pièges !

C’est l’objectif du chapitre suivant …

Page Précédente | Page suivante