next up previous contents
Next: La gestion des erreurs. Up: Le protocole IP. Previous: La fragmentation des datagrammes

Le routage IP.

  Le routage est l'une des fonctionnalités principales de la couche IP et consiste à choisir la manière de transmettre un datagramme IP à travers les divers réseaux d'un internet. On appellera ordinateur un équipement relié à un seul réseau et routeur un équipement relié à au moins deux réseaux (cet équipement pouvant être un ordinateur, au sens classique du terme, qui assure les fonctionnalités de routage). Ainsi un routeur réémettra des datagrammes venus d'une de ses interfaces vers une autre, alors qu'un ordinateur sera soit l'expéditeur initial, soit le destinataire final d'un datagramme. D'une manière générale on distingue la remise directe , qui correspond au transfert d'un datagramme entre deux ordinateurs du même réseau, et la remise indirecte qui est mise en \oe 
uvre dans tous les autres cas, c'est-à-dire quand au moins un routeur sépare l'expéditeur initial et le destinataire final.

Par exemple, dans le cas d'un réseau Ethernet, la remise directe consiste à encapsuler le datagramme dans une trame Ethernet après avoir utilisé le protocole ARP pour faire la correspondance adresse IP adresse physique (voir les sections 2.4.1 et 2.4.4) et à émettre cette trame sur le réseau. L'expéditeur peut savoir que le destinataire final partage le même réseau que lui-même en utilisant simplement l'adresse IP de destination du datagramme. Il en extrait l'identificateur de réseau et si c'est le même que celui de sa propre adresse IP[*] alors la remise directe est suffisante. En fait, ce mécanisme de remise directe se retrouve toujours lors de la remise d'un datagramme entre le dernier routeur et le destinataire final.

Pour sa part, la remise indirecte nécessite de déterminer vers quel routeur envoyer un datagramme IP en fonction de sa destination finale. Ceci est rendu possible par l'utilisation d'une table de routage spécifique à chaque routeur qui permet de déterminer vers quelle voie de sortie envoyer un datagramme destiné à un réseau quelconque. Évidemment, à cause de la structure localement arborescente d'Internet la plupart des tables de routage ne sont pas très grandes. Par contre, les tables des routeurs interconnectant les grands réseaux peuvent atteindre des tailles très grandes ralentissant d'autant le trafic sur ces réseaux. D'un point de vue fonctionnel une table de routage contient des paires d'adresses du type (D, R) où D est l'adresse IP d'une machine ou d'un réseau de destination et R l'adresse IP du routeur suivant sur la route menant à cette destination. Tous les routeurs mentionnés dans une table de routage doivent bien sûr être directement accessibles à partir du routeur considéré. Cette technique, dans laquelle un routeur ne connaît pas le chemin complet menant à une destination, mais simplement la première étape de ce chemin, est appelée routage par sauts successifs (next-hop routing ). Une table de routage contient aussi une route par défaut qui spécifie un routeur par défaut vers lequel sont envoyés tous les datagrammes pour lesquels il n'existe pas de route dans la table.

  
Figure: Exemple d'interconnexion de réseau.
\begin{figure}
\begin{center}

\includegraphics 
*{figtabroutage.eps}\end{center}\end{figure}

La figure 2.18 donne un exemple d'interconnexion d'un réseau de classe B 140.252.0.0 subdivisé en 3 sous-réseaux de masques respectifs 255.255.255.0 pour l'Ethernet du haut, 255.255.255.224[*] pour l'Ethernet du bas et le sous-réseau SLIP. Les masques de sous-réseau sont associés par défaut à chaque interface d'une machine ou sont éventuellement spécifié sur chaque ligne des tables de routage. Dans l'exemple donné ici, la table de routage simple de l'ordinateur R3 (sous système unix Sun) est la suivante.


 
Figure: Exemple d'interconnexion de réseau.
destination gateway flags refcnt use interface
140.252.13.65 140.252.13.35 UGH     emd0
127.0.0.1 127.0.0.1 UH 1   lo0
default 140.252.13.33 UG     emd0
140.252.13.32 140.252.13.34 U 4 25043 emdO

Les flags ont la signification suivante.

La colonne compteur de référence (refcnt indique le nombre de fois où la route est utilisée à l'instant de la consultation. Par exemple, TCP conserve la même route tant qu'il l'utilise pour la connexion sous-jacente à une application(telnet, ftp, ...). La colonne use affiche le nombre de paquets envoyés à travers l'interface de cette route qui est spécifiée dans la dernière colonne de la même ligne.

L'adresse 127.0.0.1 est celle de lo0 , l'interface de loopback , qui sert à pouvoir faire communiquer une machine avec elle-même.

La destination default sert à indiquer la destination de tous les datagrammes qui ne peuvent être <<routés>> par l'une des autres routes.

L'utilisation d'une table de routage se fait suivant l'algorithme de routage IP donné ci-dessous.

Procédure RoutageIP(données Dat : datagramme, Tab : Table de routage)
début
 D := adresse IP de destination de Dat
 N := identificateur du réseau de D
 si N est une adresse de réseau directement accessible
 alors
  envoyer Dat vers l'adresse D sur ce réseau
     { il y a résolution de l'adresse IP, en adresse physique,
       encapsulation de Dat dans une trame physique et émission de la trame}
 sinon
  pour chaque entrée de Tab faire
   N:=résultat du et logique de D et du masque de sous-réseau
   si N=l'adresse réseau ou sous-réseau de la destination de l'entrée
   alors
    router Dat vers cette destination
    sortir 
   finsi
  finpour
  si aucune correspondance n'est trouvée
  alors
   retourner à l'application d'origine du datagramme une erreur de routage
   host unreachable ou unreachable network
  finsi
 finsi
fin

L'établissement d'une table de routage est statique lorsqu'elle résulte de la configuration par défaut d'une interface, ou de la commande route à partir d'un fichier de démarrage, ou grâce à une redirection ICMP (voir la section 2.5.4). Mais dès que le réseau devient non trivial, on utilise le routage dynamique qui consiste en un protocole de communication entre routeurs qui informent chacun de leurs voisins des réseaux auxquels ils sont connectés. Grâce à ce protocole, les tables de routage évoluent dans le temps en fonction de l'évolution des routes.

L'un des protocoles de routage les plus populaires est RIP (Routing Information Protocol ) qui est un protocole de type vecteur de distance . C'est-à-dire que les messages échangés par des routeurs voisins contiennent un ensemble de distances entre routeur et destinations qui permet de réactualiser les tables de routage. Ce protocole utilise une métrique simple : la distance entre une source et une destination est égale au nombre de sauts qui les séparent. Elle est comprise entre 1 et 15, la valeur 16 représentant l'<<infini>>. Ceci implique que RIP ne peut être utilisé qu'à l'intérieur de réseaux qui ne sont pas trop étendus.

Un message RIP est encapsulé dans un datagramme UDP de la manière décrite dans la figure 2.19.

  
Figure 2.19: Encapsulation d'un message RIP.
\begin{figure}
\begin{center}

\includegraphics 
*{figrip.eps}\end{center}\end{figure}

Le champ commande fixé à 1 indique une requête pour demander tout ou partie d'une table de routage et fixé à 2 pour transmettre une réponse (d'autres valeurs hors normes actuellement existent également). Le champ version est positionné à 1 et à 2 dans la version de RIP2. Pour des adresses IP, le champ identificateur de famille d'adresses est toujours fixé à 2.

À l'initialisation, le démon de routage envoie une requête RIP à chaque interface pour demander les tables de routage complètes de chacun de ses voisins. Sur une liaison point à point la requête est envoyée à l'autre extrémité, sinon elle est envoyée sous forme de broadcast sur un réseau.

Le fonctionnement normal de RIP consiste à diffuser des réponses soit toutes les 30 secondes, soit pour une mise à jour déclenchée par la modification de la métrique d'une route. Une réponse contient une adresse de destination, accompagnée de sa métrique, de l'adresse du prochain routeur,d'un indicateur de mise à jour récente et de temporisations. Le processus RIP met à jour sa table de routage locale en examinant les entrées retournées dont il vérifie d'abord la validité : adresse de classe A,B ou C, numéro de réseau différent de 127 et 0 (sauf pour l'adresse par défaut 0.0.0.0), numéro d'ordinateur différent de l'adresse de diffusion, métrique différente de l'<<infini>>. RIP effectue ensuite les mises à jour propres à l'algorithme <<vecteur de distance>> suivant.

Cette méthode correspond à l'algorithme de Bellman-Ford de recherche de plus courts chemins dans un graphe.

Un des défauts de RIP est de ne pas gérer les adresses de sous-réseaux. Mais de telles entrées peuvent être annoncées via le une interface appartenant à ce sous-réseau pour pouvoir bénéficier du masque qui y est attaché et être correctement interprétées. Enfin, RIP met un temps assez long (quelques minutes) pour se stabiliser après la défaillance d'une liaison ou d'un routeur ce qui peut occasionner des boucles de routage.

RIP2 est un protocole qui étend RIP en utilisant les 4 champs laissés à 0 par RIP dans ses messages. Le premier sert à fixer un domaine de routage identifiant le démon de routage qui a émis le paquet et le quatrième l'adresse IP d'un routeur de saut suivant . Ces deux champs ont servi à lancer simultanément plusieurs démons de routage sur un même support leur utilisation a été abandonnée. Le deuxième champ est un identificateur de route pour supporter des protocoles de routes externes et le troisième sert à spécifier un masque de sous-réseau pour chaque entrée de la réponse.

OSPF (Open Shortest Path First ) est un nouveau type de protocole de routage dynamique qui élimine les limitations de RIP. C'est un protocole d'état de liens , c'est-à-dire qu'ici un routeur n'envoie pas des distances à ses voisins, mais il teste l'état de la connectivité qui le relie à chacun de ses voisins. Il envoie cette information à tous ses voisins, qui ensuite le propagent dans le réseau. Ainsi, chaque routeur peut posséder une carte de la topologie du réseau qui se met à jour très rapidement lui permettant de calculer des routes aussi précises qu'avec un algorithme centralisé.

En fait, RIP et OSPF, sont des protocoles de type IGP (Interior Gateway Protocol ) permettant d'établir les tables des routeurs internes des systèmes autonomes . Un système autonome peut être défini par un ensemble de routeurs et de réseaux sous une administration unique. Cela peut donc aller d'un seul routeur connectant un réseau local à Internet, jusqu'à l'ensemble des réseaux locaux d'une multinationale. La règle de base étant qu'un système autonome assure la connexité totale de tous les points qui le composent en utilisant notamment un protocole de routage unique. À un niveau plus global, Internet apparaît donc comme une interconnexion de systèmes autonomes comme illustré dans la figure 2.20.

  
Figure: Interconnexion de systèmes autonomes.
\begin{figure}
\begin{center}

\includegraphics 
*{figinterconnexion.eps}\end{center}\end{figure}

Dans chaque système autonome les tables sont maintenus par par un IGP et sont échangées uniquement entre routeurs du même sous-système. Pour obtenir des informations sur les réseaux externes, ceux de l'autre système autonome, ils doivent dialoguer avec les les routeurs externes R1 et R2. Ceux-ci sont des points d'entrée de chaque système et, via la liaison qui les relie, ils échangent des informations sur la connectivité grâce à EGP (Exterior Gateway Protocol ) ou BGP (Border Gateway Protocol ) qui remplace EGP actuellement.


next up previous contents
Next: La gestion des erreurs. Up: Le protocole IP. Previous: La fragmentation des datagrammes
Pascal Nicolas Université d'Angers
mardi, 2 novembre 1999, 09:20:50 MET