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.
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.
À 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.
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.