Vous êtes sur la page 1sur 20

UPMC - Licence Informatique 3I014 - Réseaux

TD 5

ROUTAGE

1. GENERALITES

1.1. Définitions
Le routage est le processus qui consiste, dans un réseau, ou au travers de différents réseaux, à
trouver un chemin entre une source et une destination. C’est l'une des fonctionnalités
principales de la couche réseau. On appelle routeur un équipement relié à au moins deux réseaux et
dont le rôle est de réémettre des paquets venus d'une de ses interfaces vers une autre.
Schématiquement, on peut représenter l'Internet comme une hiérarchie de routeurs. On appelle
système autonome (Autonomous System ou AS) un ensemble de routeurs et de réseaux contrôlés
par une même autorité administrative ; on peut donc voir l’Internet comme un ensemble d'AS. On
distingue les routeurs situés à l'intérieur d'un même AS de ceux qui permettent de relier entre eux
différents AS. A l'intérieur d'un AS, on parle de protocoles de routage intra-domaine (Interior
Gateway Protocol ou IGP) ; entre différents AS, il s'agit de protocoles de routage inter-domaines
(Exterior Gateway Protocol ou EGP).
Le terme « routage » est utilisé en français pour désigner deux fonctions très différentes :
§ La fonction d’adaptation des chemins (routing) dont le but est de construire et de mettre à
jour des tables de routage dans les routeurs (et commutateurs) du réseau, cette fonction
étant réalisée à l’aide des protocoles de routage ;
§ La fonction d’acheminement (forwarding) dont le but est de trouver un chemin pour
chaque paquet arrivant sur l’entrée d’un routeur (ou d’un commutateur), cette fonction étant
réalisée par consultation des tables de routage (ou de commutation).
Une table de routage comporte au moins deux colonnes : la première pour la destination (ou pour le
réseau de destination) et la seconde pour l'adresse de l'élément réseau correspondant au « saut »
suivant (next hop) sur le « meilleur » chemin vers la destination souhaitée.

1.2. Protocoles de routage


1.2.1. Quelles sont les propriétés que doit posséder un « bon » protocole de routage ?
Tout protocole de routage doit communiquer des informations sur la topologie globale du
réseau à chaque routeur afin que celui-ci puisse prendre une décision locale de routage. Or,
cette information globale est difficile à collecter, sujette à des modifications fréquentes et de
plus, volumineuse. Un « bon » protocole de routage visera donc :
§ une minimisation des messages de contrôle échangés ;
§ une minimisation de l'espace des tables de routage : tout d'abord, pour minimiser le coût
des routeurs, et ensuite pour minimiser le trafic d'information de routage (puisque les
routeurs s'échangent leurs tables de routage pour garantir une vue consistante de la
topologie du réseau) ;
§ la robustesse : éviter les trous noirs, les boucles et les oscillations ;

1
UPMC - Licence Informatique 3I014 - Réseaux

§ l'utilisation du chemin « optimal », qui n'est pas forcément le plus court : il peut s'agir
du chemin au délai le plus court, du chemin le plus sécurisé, du chemin le moins cher,
ou tout simplement du chemin utilisant le moins de sauts.
Le routage est, par essence, un problème de la théorie des graphes : il s'agit de trouver le chemin
de coût minimum entre deux nœuds quelconques, sachant que le coût d'un chemin est la somme des
coûts des liens qui le composent.
Il existe plusieurs classes de techniques de routage :
§ Le routage isolé : cette classe regroupe des techniques qui ne nécessitent aucun échange
d'information entre les nœuds et ne construisent pas de table de routage. Comme exemple de
routage isolé, on peut citer le routage par inondation dans lequel chaque nœud retransmet
toujours tous les paquets sur toutes ses interfaces, sauf l'interface entrante.
§ Le routage centralisé : on dispose d'un centre de contrôle de routage qui reçoit
périodiquement des informations décrivant l'encombrement du réseau. Il en déduit les tables
de routage de chaque routeur et les leur expédie.
§ Le routage distribué : chaque routeur échange périodiquement des informations avec ses
voisins et recalcule sa table de routage. Deux types d'algorithmes de routage distribué sont
largement utilisés :
– Le routage à vecteurs de distance (utilisé par exemple avec le protocole RIP) ;
– Le routage à état des liens (utilisé par exemple avec le protocole OSPF).
Dans ce TD nous nous intéresserons principalement aux algorithmes à vecteurs de distance et à
états des liens. Leurs caractéristiques communes sont les suivantes :
§ ils supposent que chaque routeur connaît l'adresse de chacun de ses voisins, ainsi que le
« coût » pour l'atteindre ;
§ ils permettent à chaque routeur de déterminer l'information de routage globale, i.e. le
prochain nœud pour atteindre chaque destination possible sur la route la plus courte, en
échangeant de l'information de routage seulement avec ses voisins.

2. ALGORITHMES A VECTEURS DE DISTANCE

2.1. Principe
L'algorithme de base est dû à Bellman-Ford. Chaque nœud est supposé connaître la « distance » (ou
le « coût ») qui le sépare de chacun de ses voisins (une liaison hors service a un coût infini).
Périodiquement, chaque nœud envoie à chacun de ses voisins la liste des distances estimées vers
chaque nœud du réseau : c'est le vecteur de distance. Il reçoit en retour une liste similaire de chacun
de ses voisins.
Lorsque le nœud i reçoit le vecteur de distance Vj de son nœud voisin j, Vj(k) lui donne la distance
(estimée par j) pour aller de j à k, et il sait donc qu'il peut atteindre k via j, avec un coût de Vj(k)
augmenté du coût de sa liaison à j. En poursuivant ce calcul pour chacun de ses voisins, i peut
déterminer l'estimation qui lui semble la meilleure pour atteindre chaque destination, et inscrire
cette estimation ainsi que la liaison correspondante dans sa table de routage.

2
UPMC - Licence Informatique 3I014 - Réseaux

2.2. Exercices
2.2.1. Soit le réseau composé des 5 nœuds A, B, C, D et E, et des 6 liaisons Vab, Vad, Vbc, Vbe,
Vce et Vde. A chaque liaison, supposée symétrique, est associée une distance égale à 1.
L'algorithme utilisé par le protocole de routage est de type Bellman-Ford.
Vab Vbc
A B C

Vad Vbe Vce

D E
Vde

a. On supposera que le réseau vient d'être mis en service et que chaque nœud n'a qu'une
connaissance locale de la topologie du réseau (il ne connaît que ses voisins). Donner les
tables de routage initiales des différents nœuds.
T0 état initial
Les tables de routage sont :
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 B B 1 A A 1 B B 1
D D 1 C C 1 E E 1 E E 1 C C 1
E E 1 D D 1

b. On considèrera la séquence d'échange de vecteurs de distance suivante :


T1 B, D reçoivent VA (vecteur de distance de A)
T2 A, C, E reçoivent VB
T3 A, E reçoivent VD
T4 B, D reçoivent VA, VE
T5 B, E reçoivent VC
T6 A reçoit VB
T7 C, D reçoivent VE
Donnez la table de routage (incluant les distances) de chaque nœud, obtenue une fois
que l'algorithme de routage a convergé.
T1 B, D reçoivent VA = (B1, D1)
B traite VA : il sait maintenant qu'il peut joindre D via A avec un coût de 1 (le D1) plus le
coût de sa propre liaison avec A (1) ; B met à jour sa table de routage.
D traite VA : il sait maintenant qu'il peut joindre B via A avec un coût de 1 (le B1) plus le
coût de sa propre liaison avec A (1) ; D met à jour sa table de routage.

3
UPMC - Licence Informatique 3I014 - Réseaux

A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 B B 1 A A 1 B B 1
D D 1 C C 1 E E 1 B A 2 C C 1
D A 2 E E 1 D D 1
E E 1
T2 A, C, E reçoivent VB = (A1, C1, D2, E1)
A traite VB : il sait maintenant qu'il peut joindre C via B avec un coût de 1 (le C1) plus le
coût de sa propre liaison avec B (1), d'où une nouvelle entrée dans la table de routage; il sait
qu'il peut joindre D via B avec un coût de 2+1 = 3, ce qui est supérieur à son coût courant,
donc pas de modification pour l'entrée correspondant à D; il sait qu'il peut joindre E via B
avec un coût de 1+1 = 2, d'où une nouvelle entrée dans la table.
Idem pour C et E.
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 2 C C 1 B B 1 B A 2 B B 1
D D 1 D A 2 D B 3 E E 1 C C 1
E B 2 E E 1 E E 1 D D 1
T3 A, E reçoivent VD = (A1, B2, E1)
A traite VD
pour B : min (2+1, 1) = 1 : pas de modification pour cette entrée
pour E : min (1+1, 2) = 2 : pas de modification pour cette entrée
E traite VD
pour A : min (1+1, 2) = 1 : pas de modification pour cette entrée
pour B : min (2+1, 1) = 1 : pas de modification pour cette entrée
pour E : min (1+1, 2) = 2 : pas de modification pour cette entrée
Les tables restent donc inchangées.
T4 B, D reçoivent VA = (B1, C2, D1, E2), VE = (A2, B1, C1, D1)
B traite VA
pour C : min (2+1,1) = 1 : pas de modification pour cette entrée
pour D : min (1+1,2) = 2 : pas de modification pour cette entrée
pour E : min (2+1,1) = 1: pas de modification pour cette entrée
B traite VE
pour A : min (2+1,2) = 2 : pas de modification pour cette entrée
pour C : min (1+1,1) = 1 : pas de modification pour cette entrée
pour D : min (1+1,1) = 1 : pas de modification pour cette entrée
D traite VA
pour B : min (1+1,2) = 2 : pas de modification pour cette entrée

4
UPMC - Licence Informatique 3I014 - Réseaux

pour C : création d'une entrée avec un coût de 2+1 = 3 via A


pour E : min (2+1,1) = 1 : pas de modification pour cette entrée
D traite VE
pour A : min (2+1,1) = 1 : pas de modification pour cette entrée
pour B : min (1+1,2) = 2 : pas de modification pour cette entrée
pour C : min (1+1,3) = 2 : l'entrée est modifiée avec un coût de 2 via E
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 2 C C 1 B B 1 B A 2 B B 1
D D 1 D A 2 D B 3 C E 2 C C 1
E B 2 E E 1 E E 1 E E 1 D D 1
T5 B, E reçoivent VC = (A2, B1, D3, E1)
Les tables restent inchangées.
T6 A reçoit VB = (A1,C1,D2,E1)
Les tables restent inchangées.
T7 C, D reçoivent VE = (A2,B1,C1,D1)
Lorsque C traite VE, il voit qu'il peut atteindre D via E avec un coût de 2, au lieu de passer
par B avec un coût de 3.
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 2 C C 1 B B 1 B A 2 B B 1
D D 1 D A 2 D E 2 C E 2 C C 1
E B 2 E E 1 E E 1 E E 1 D D 1
A ce stade, l'algorithme a convergé. A, C et D vont préparer leurs vecteurs de distance et les
diffuser sur leurs liaisons locales, mais ces messages ne provoqueront aucune mise à jour
des tables de routage. Nous voyons que l'échange de messages et la distribution des calculs
de routes ont permis aux nœuds de découvrir la « topologie du réseau ». Notons qu’aucun
nœud n’a une connaissance globale de la topologie, mais que pour le problème du routage, il
lui suffit de connaître la première liaison à utiliser vers toutes les destinations possibles.
On pourra faire remarquer que, quel que soit l'ordre de traitement des messages, l'algorithme
de routage converge vers les mêmes valeurs de distance. La preuve repose sur le fait que
chaque routeur connaît le coût exact vers ses voisins directs. Cette information va se
propager d'un saut avec le premier échange de vecteurs de distance, et d'un saut
supplémentaire à chaque nouvel échange, jusqu'à ce que le coût de chaque liaison soit connu
à travers tout le réseau. De plus, on voit très bien que le temps de convergence de
l'algorithme augmente avec le nombre de nœuds dans le réseau.

5
UPMC - Licence Informatique 3I014 - Réseaux

c. La liaison Vab est rompue. Montrez comment les tables de routage de chaque nœud
sont mises à jour. Que remarquez-vous à l'issue de la séquence d'échanges des vecteurs
de distance suivante ?
T1 A et B détectent que Vab est rompue
T2 D reçoit VA ; C, E reçoivent VB
T3 E reçoit VD
T4 B, C, D reçoivent VE
T5 A reçoit VD
T1 A et B détectent que Vab est rompue
La liaison Vab est rompue. On suppose que les deux nœuds aux extrémités de la liaison, A
et B, découvrent cette rupture, par exemple en observant une perte de porteuse dans les
équipements de transmission. Ils doivent mettre immédiatement à jour leurs tables de
routage, noter que le coût de la liaison est maintenant « infini » et que tous les nœuds qui
préalablement étaient joints par cette liaison sont maintenant à une distance « infinie ». Les
tables deviennent :
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B ∝ A A ∝ A B 2 A A 1 A B 2
C B ∝ C C 1 B B 1 B A 2 B B 1
D D 1 D A ∝ D E 2 C E 2 C C 1
E B ∝ E E 1 E E 1 E E 1 D D 1
A prépare et diffuse son vecteur de distance VA = (B∝, C∝, D1, E∝) sur la liaison AD.
B prépare et diffuse son vecteur de distance VB = (A∝, C1, D∝, E1) sur les liaison BC et
BE.
T2 D reçoit VA ; C, E reçoivent VB
D reçoit VA = (B∝, C∝, D1, E∝). D incrémente les distances afin de prendre en compte le
coût de la liaison Vad : B∝, C∝, D2, E∝, et les compare aux distances figurant dans sa table
de routage. D s'aperçoit que toutes ces distances sont supérieures ou égales aux distances
déjà calculées, mais que la liaison Vad, par laquelle le message est arrivé est celle utilisée
pour atteindre B. La ligne associée à B dans la table est donc mise à jour.
De même, sur réception de VB = (A∝, C1, D∝, E1), C et E modifient leurs entrées pour A .
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B ∝ A A ∝ A B ∝ A A 1 A B ∝
C B ∝ C C 1 B B 1 B A ∝ B B 1
D D 1 D A ∝ D E 2 C E 2 C C 1
E B ∝ E E 1 E E 1 E E 1 D D 1
T3 E reçoit VD = (A1, B∝, C2, E1)

6
UPMC - Licence Informatique 3I014 - Réseaux

A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B ∝ A A ∝ A B ∝ A A 1 A D 2
C B ∝ C C 1 B B 1 B A ∝ B B 1
D D 1 D A ∝ D E 2 C E 2 C C 1
E B ∝ E E 1 E E 1 E E 1 D D 1
T4 B, C, D reçoivent VE = (A2, B1, C1, D1)
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B ∝ A E 3 A E 3 A A 1 A D 2
C B ∝ C C 1 B B 1 B E 2 B B 1
D D 1 D E 2 D E 2 C E 2 C C 1
E B ∝ E E 1 E E 1 E E 1 D D 1
T5 A reçoit VD = (A1, B2, C2, E1)
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B D 3 A E 3 A E 3 A A 1 A D 2
C D 3 C C 1 B B 1 B E 2 B B 1
D D 1 D E 2 D E 2 C E 2 C C 1
E D 2 E E 1 E E 1 E E 1 D D 1
Les vecteurs de distance ensuite échangés entre les nœuds ne provoqueront aucun
changement dans les tables de routage. On remarque que les nouvelles routes ont été
maintenant calculées et que la connectivité globale a été rétablie.
2.2.2. On considère le même réseau que dans l’exercice précédent, excepté que la liaison Vce a un
coût de 10 (les autres liaisons gardant un coût unitaire). On suppose qu’après convergence
des algorithmes de routage, les tables obtenues sont les suivantes :
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 2 C C 1 B B 1 B A 2 B B 1
D D 1 D A 2 D B 3 C A 3 C B 2
E B 2 E E 1 E B 2 E E 1 D D 1
La liaison Vbc est alors rompue. B détecte la rupture, mais avant qu'il n'ait eu le temps
d'envoyer son vecteur de distance, A a déjà diffusé le sien. La séquence d'échange est donc
la suivante :
T1 B détecte que Vbc est rompue

7
UPMC - Licence Informatique 3I014 - Réseaux

T2 B, D reçoivent VA
T3 A, E reçoivent VB
T4 B reçoit VA
a. Que se passe-t-il ?
T1 B détecte que Vbc est rompue
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 2 C C ∝ B B 1 B A 2 B B 1
D D 1 D A 2 D B 3 C A 3 C B 2
E B 2 E E 1 E B 2 E E 1 D D 1
T2 B reçoit VA = (B1, C2, D1, E2)
Par hypothèse, B n'a pas encore eu le temps d'envoyer son propre vecteur de distance que A
a déjà diffusé le sien à B et D.
Remarque : ce genre d'émission par A (non sollicitée) est très vraisemblable, puisque la
plupart des protocoles à vecteurs de distance recommandent que les messages doivent être
répétés régulièrement afin de se protéger contre les erreurs de transmission.
Le message de A n'aura pas d'effet en D, car les valeurs du vecteur correspondent à celles
déjà en table. Par contre, lorsque B reçoit VA, il va trouver, après incrémentation, que la
nouvelle distance calculée pour C est inférieure à celle en table (qui est infinie). B met donc
à jour sa table de routage pour indiquer que C est maintenant atteint via la liaison Vab avec
un coût de 3.
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 2 C A 3 B B 1 B A 2 B B 1
D D 1 D A 2 D B 3 C A 3 C B 2
E B 2 E E 1 E B 2 E E 1 D D 1
T3 A, E reçoivent VB = (A1, C3, D2, E1)
Sur réception de VB, A met à jour son entrée pour C, puisqu'elle atteignait C via B avec un
coût de 2 et que maintenant B lui annonce un coût de B à C de 3 : son nouveau coût est
maintenant de 4.
Idem pour E.

8
UPMC - Licence Informatique 3I014 - Réseaux

A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 4 C A 3 B B 1 B A 2 B B 1
D D 1 D A 2 D B 3 C A 3 C B 4
E B 2 E E 1 E B 2 E E 1 D D 1
T4 B, D reçoivent VA = (B1, C4, D1, E2)
A B C D E
dest next dist dest next dist dest next dist dest next dist dest next dist

B B 1 A A 1 A B 2 A A 1 A B 2
C B 4 C A 5 B B 1 B A 2 B B 1
D D 1 D A 2 D B 3 C A 5 C B 4
E B 2 E E 1 E B 2 E E 1 D D 1
Sur réception de VA, B met à jour son entrée pour C, puisqu'elle atteignait C via A avec un
coût de 4 et que maintenant A lui annonce un coût de A à C de 4 : son nouveau coût est
maintenant de 5.
On peut maintenant remarquer que les tables de routage comportent une boucle : les paquets
destinés à C (quelle que soit leur origine) vont rebondir entre A et B ! Et ce jusqu'à ce que
leur durée de vie expire (utilisation du champ TTL dans IP). On appelle cela l'effet rebond.
Deux choses peuvent alors se produire :
- la distance pour atteindre C peut atteindre une valeur considérée comme
infinie (représenté par une valeur donnée) : c'est ce que l'on appelle le phénomène de
comptage à l'infini. A et B réalisent alors que C n'est plus joignable. Ce qui n’est pas le
cas ici.
- Le chemin empruntant le lien EC peut être découvert.
Ces deux comportement sont normaux mais entre temps, les paquets de A ou de B à
destination de C auront bouclé entre A et B (l'effet rebond), en créant éventuellement une
congestion...
En conclusion : L'algorithme marche très bien si les nœuds et les liaisons sont tout le temps
en état de fonctionnement. Dans tous les cas, il converge vers la solution correcte, mais
lentement. En fait, il réagit rapidement à de « bonnes nouvelles » (i.e., si B communique à A
une distance dBC qui diminue la distance courante dAC, A va mettre immédiatement à jour
son vecteur de distance), mais il réagit beaucoup trop lentement à de « mauvaises
nouvelles » (effet rebond et comptage à l'infini).
b. A quel moment apparait une information erronée dans les tables de routage ?
A T2, quand B modifie sa table de routage pour le chemin vers C.
c. Quelle est l'origine de ce phénomène ?

9
UPMC - Licence Informatique 3I014 - Réseaux

Le problème du comptage à l'infini provient du fait que lorsque B met à jour son chemin
vers C en passant par A, il ne sait pas que le chemin de A à C passe par lui-même.
Autrement dit, le vecteur VA n'indique pas que le chemin de A à C passe par B.
d. On suppose que B envoie son vecteur de distance à A juste après avoir détecté la
rupture, mais que, dans un même temps, A envoie spontanément son vecteur de distance
à B (avant d’avoir reçu celui de B). Que se passe-t-il alors ?
La question a pour objectif de montrer que même si un nœud envoie immédiatement son
vecteur de distance dès qu’il détecte une rupture, ça ne marche toujours pas.
Lorsque le lien BC tombe, B met à jour sa distance avec C : dBC = ∝, et communique son
nouveau vecteur de distance à A.
Supposons qu'en même temps, A envoie son propre vecteur de distance à B.
B apprend donc que dAC = 2 ; il met à jour sa table et indique à A qu'il a une distance de 3 à
C.
Entre temps, A a appris que B n'avait plus de connectivité avec C et a donc mis à jour sa
table en fonction : dAC = ∝.
Si A reçoit le vecteur de B avec une distance à C de 3, A mettra à jour sa table : dAC = 4.
On retombe alors sur le même problème.

Ce phénomène, appelé comptage à l’infini, peut être atténué par les méthodes suivantes :
§ Le vecteur de chemin : chaque entrée du vecteur de distance contient le chemin complet
associé à la valeur ; C'est une technique utilisée dans BGP, mais qui présente l'inconvénient
de générer des tables volumineuses. (Il est à noter que BGP, Border Gateway Protocol, est
un protocole de routage inter-AS.)
§ L'horizon partagé (split horizon) : un routeur ne communique jamais le coût vers une
destination à son voisin N, si N est le prochain nœud vers cette destination.
§ L'horizon partagé avec antidote (split horizon with poisonous reverse) : Un routeur
communique toujours un coût infini vers une destination à son voisin N, dès l’instant où N
est le prochain nœud vers cette destination. Cela se traduit par une modification mineure du
protocole de vecteurs de distance ; au lieu de diffuser le même vecteur sur toutes leurs
liaisons, les nœuds devront en composer des versions différentes, pour tenir compte des
destinations qui sont atteintes via chacune de ces liaisons. C'est la technique utilisée dans
RIP.
2.2.3. Qu’induisent ces différentes solutions sur l’exemple de l’exercice 2.2.2 ?
Première solution : le vecteur de chemin
A aurait indiqué à B que son coût dAC est de 2 et que le chemin utilisé passe par B-C. B
aurait alors réalisé qu'il n'y a plus de route vers C et le comptage à l'infini (i.e. la
convergence lente) aurait été évité.
Deuxième solution : l'horizon partagé
A ne donne pas à B de coût pour C puisque A utilise B comme prochain saut vers C.
Variante : l'horizon partagé avec antidote
Quand A route vers C via B, A dit à B qu'il a un coût infini pour C : dAC = ∝.

10
UPMC - Licence Informatique 3I014 - Réseaux

3. ALGORITHMES DE ROUTAGE A ETATS DES LIENS

3.1. Principe
Dans cette approche, un routeur communique à tout autre nœud du réseau sa distance avec ses
voisins. En effet, l'idée est de distribuer la topologie du réseau et le coût de chaque lien à tous les
routeurs. Chaque routeur peut alors calculer, de façon autonome, son chemin optimum pour chaque
destination. Si les routeurs voient les mêmes coûts pour tous les liens et s'ils utilisent le même
algorithme, les routes obtenues sont garanties sans boucle ; le problème est donc de distribuer la
connaissance de la topologie à chaque routeur pour qu'il puisse ensuite calculer ses plus courts
chemins. Chaque routeur doit ainsi :
1. Découvrir ses voisins
Un routeur en cours d'initialisation envoie sur chacune de ses lignes en sortie un paquet
Hello ; les routeurs aux extrémités répondront à ce paquet en retournant des informations de
routage (ID, adresse IP, etc.).
2. Mesurer le coût vers chacun des voisins
Si le coût est basé sur le temps d'acheminement, le routeur peut en obtenir une bonne
estimation en envoyant un paquet Echo estampillé et en prenant la moitié du temps aller-
retour.
3. Construire un paquet spécial
Le routeur crée un ensemble de LSP (Link-State Packet) décrivant ses liens. Un LSP
contient l'ID du routeur, l'ID du voisin et le coût du lien vers ce voisin.
4. Envoyer ce paquet à tous les autres routeurs du réseau
Ceci est fait par inondation contrôlée. L'idée est que lorsqu'un routeur reçoit un nouveau
LSP, il en garde une copie dans sa base de données de LSP et il le retransmet sur chacune de
ses voies de sortie (sauf, bien sûr, celle sur laquelle le LSP lui est parvenu).
5. Calculer le plus court chemin vers tous les autres routeurs
L'algorithme de Dijkstra calcule le chemin le plus court entre un sommet source s et tous les
autres sommets d'un graphe G = (S, A) valué par une fonction de pondération ω : A → lR.
On définit :
– E : le sous-ensemble des sommets déjà évalués (pour lesquels les chemins les plus
courts sont connus) ;
– R : le sous-ensemble des sommets restants (R = S–E).
Pour chaque sommet v ∈ S, on maintient deux attributs :
– d[v] : l'estimation du coût d'un plus court chemin de s à v ;
– pred[v] : le prédécesseur de v sur le chemin estimé.

11
UPMC - Licence Informatique 3I014 - Réseaux

DIJKSTRA (G, s)
pour chaque sommet v ∈ S faire
d[v] = ∞
pred[v] = NIL
fin pour
d[s] = 0
E = ∅
R = S
tant que R ≠ ∅ faire
u = sommet avec l'estimation de pondération minimum de R
E = E ∪ {u}
pour chaque sommet v ∈ voisin[u] faire
si d[v] > d[u] + ω(u,v) alors
d[v] = d[u] + ω(u,v)
pred[v] = u
R = R − {u}
fin tant que

3.2. Exercice
3.2.1. Sur le réseau suivant, montrer comment la table de routage de A est obtenue à l'aide de
l'algorithme de Dijkstra.
5 1
A B C

1 1
2 1
2

D E F
4 2

Chaque nœud est étiqueté par sa distance au nœud source en suivant le meilleur chemin
connu :
§ au début, aucun chemin n'est connu, aussi les nœuds sont-ils étiquetés avec une valeur
« infinie » ;
§ au fur et à mesure que l'algorithme progresse et qu'il trouve les chemins, les étiquettes
sont modifiées, indiquant ainsi le meilleur chemin.
Une étiquette peut être permanente ou provisoire :
§ au début, toutes les étiquettes sont provisoires ;
§ quand il est démontré qu'une étiquette représente le plus court chemin possible entre la
source et le nœud, elle devient permanente et n'est plus modifiée.
Le nœud source est A :
§ on le marque comme permanent (en l'entourant d'un cercle plein) ;
§ on examine à tour de rôle les nœuds adjacents de A (le nœud actif) en étiquetant chacun
d'eux par la distance le séparant de A ; toutes les fois qu'un nœud est marqué, l'étiquette
indique aussi le nœud à partir duquel le calcul a été fait (de façon à pouvoir reconstruire
le chemin final plus tard) :

12
UPMC - Licence Informatique 3I014 - Réseaux

(0, -) (5, A) (∞, -)


5 1
A B C

1 2 1 1
2

D E F
4 2
(2, A) (∞, -) (∞, -)

Après avoir examiné tous les nœuds adjacents à A, on examine tous les nœuds avec une
étiquette provisoire dans tout le graphe. Celui qui a la valeur la plus petite devient
permanent et nœud actif : c'est D. On le marque et on examine les nœuds qui lui sont
adjacents. Si, pour un nœud donné, la somme de la valeur de l'étiquette de D (2) et de la
distance à D est inférieure à la valeur de l'étiquette de ce nœud, c'est qu'on a trouvé un
chemin meilleur et le nœud est réétiqueté : c'est le cas de B.
(0, -) (3, D) (4, D)
5 1
A B C

1 2 1 1
2

D E F
4 2
(2, A) (6, D) (∞, -)

B devient nœud actif :


(0, -) (3, D) (4, D)
5 1
A B C

1 1
2 1
2

D E F
4 2
(2, A) (6, D) (∞, -)

C devient nœud actif :


(0, -) (3, D) (4, D)
5 1
A B C

1 2 1 1
2

D E F
4 2
(2, A) (5, C) (5, C)

E et F ont la même valeur d'étiquette. On choisit par exemple E comme nœud actif. Les
étiquettes ne changent pas.

13
UPMC - Licence Informatique 3I014 - Réseaux

(0, -) (3, D) (4, D)


5 1
A B C

1 2 1 1
2

D E F
4 2
(2, A) (5, C) (5, C)

F devient nœud actif. Les étiquettes ne changent pas.


La liste des prédécesseurs de chaque nœud permet d’obtenir l’arbre couvrant :
(0, -) (3, D) (4, D)
5 1
A B C

1 2 1 1
2

D E F
4 2
(2, A) (5, C) (5, C)

La table de routage obtenue pour A (après reconstruction des chemins) est :

destination prochain nœud coût chemin


B D 3 ADB
C D 4 ADC
D D 2 AD
E D 5 ADCE
F E 5 ADCF
3.2.2. Le processus d'inondation marche très bien lorsque les liens et les nœuds ne tombent jamais
en panne. Mais que se passe-t-il en cas de panne d'un lien, AB par exemple ? Quel
mécanisme faut-il mettre en place ?
Le lien AB tombe en panne ; il faut en aviser tous les routeurs de façon à ce que chacun
d'entre eux retire l'entrée associée au lien AB de sa base de LSP ; B diffuse donc un LSP (B,
A, ∝) aux autres routeurs.
Sur réception du LSP, chaque routeur doit déterminer si le LSP reçu doit remplacer celui
qu'il a pour l'instant dans sa base : en clair, il doit déterminer quel est le LSP le plus récent.
Il faut donc numéroter les LSP ; cela permet à un routeur de purger sa base des « vieux »
LSP.

14
UPMC - Licence Informatique 3I014 - Réseaux

4. ACHEMINEMENT DES PAQUETS

4.1. Rappels
Nous avons vu qu'un commutateur est un équipement permettant d'interconnecter des liaisons de
façon à former un réseau. Cet équipement, possédant plusieurs ports en entrée et plusieurs ports en
sortie, a pour rôle de transférer un paquet qu'il reçoit sur un port d'entrée vers un port de sortie. La
question qui se pose alors est de savoir comment le (bon) port de sortie est déterminé. La réponse se
trouve bien évidemment dans l'en-tête du paquet, mais sous quelle forme ? Deux approches sont
possibles :
§ dans la commutation en mode non connecté (datagramme), le paquet est réacheminé sur la
base de son adresse de destination, par consultation des tables de routage ;
§ dans la commutation en mode connecté (circuit virtuel), le paquet est réacheminé sur la
base de son identificateur de circuit virtuel. Des tables supplémentaires, appelées tables de
commutation, sont utilisées dans ce mode. Les entrées de ces tables sont crées (à partir des
informations des tables de routage) lors de la phase d’établissement du circuit virtuel et sont
supprimées lors de la phase de libération.

4.2. Exercices
4.2.1. Quelles sont les principales caractéristiques du mode d'acheminement :
– par voie logique ;
– par datagramme ?
Qu'induisent-elles comme avantages et inconvénients ?
Mode d'acheminement par voie logique
§ les paquets suivent tous la même route, aucun déséquencement dans le transfert des
paquets ;
§ fonctionnement en mode connecté ;
§ décision de routage à l'établissement de la connexion, une route est établie qui sera la
même pour tous les paquets de la connexion ;
§ possibilité de pré-allouer des ressources (tampons mémoires) dans chaque nœud
traversé par la connexion ;
§ possibilité d'utiliser une fenêtre de contrôle de flux sur chaque connexion (dans le but de
faire du contrôle de congestion).
Avantages :
§ étiquette de petite taille.
Inconvénients :
§ vulnérabilité, sensibilité aux pannes d'un nœud ou d'une liaison ;
§ gestion de la table de translation et place mémoire nécessaire pour la table.
Mode d'acheminement par datagramme
§ aucune route n'est établie à l'avance, la décision de routage est prise pour chaque
paquet ;

15
UPMC - Licence Informatique 3I014 - Réseaux

§ déséquencement possible des paquets : à cause du routage individuel, les paquets


peuvent suivre des itinéraires différents ;
§ il suffit que l'expéditeur connaisse l'adresse du destinataire pour pouvoir émettre sans
l'accord préalable du réseau.
Avantages :
§ flexibilité qui apporte robustesse aux défaillances et réaction rapide au phénomène de
congestion ;
§ répartition du trafic, puisque les paquets sont routés indépendamment.
Inconvénients :
§ temps de commutation dans les nœuds plus important à cause du temps pris par la
décision de routage.
4.2.2. On considère la topologie réseau suivante ; S1, S2 et S3 étant des commutateurs de circuits
virtuels et les numéros indiqués étant des numéros de port :

B C D

2 2 2
1 3 1 3 1 3
A S1 S2 S3 E

Les tables de commutation sont les suivantes :

S1 S2 S3
port VL port VL port VL port VL port VL port VL
1 2 3 1 1 1 3 3 1 3 2 1
1 1 2 3 1 2 3 2 1 2 3 1
2 1 3 2

Sachant que les connexions sont bidirectionnelles, donner tous les circuits virtuels établis en
indiquant les commutateurs traversés.
En notant Si[j] la jème entrée (en comptant à partie de 1) du commutateur Si
A est connecté à D via S1[1] - S2[1] - S3[1]
A est connecté à B via S1[2]
B est connecté à E via S1[3] - S2[2] – S3[2]
Les numéros de voie logique sur chacun des trois circuits virtuels sont représentés sur la
figure suivante :

16
UPMC - Licence Informatique 3I014 - Réseaux

B C D

3 1 1

1 2 2 1
A S1 S2 S3 E
2 1 3

5. EXERCICES DE REVISION
5.1. On considère les tables de routage suivantes :

Table de B Table de C Table de E


dest next dist dest next dist dest next dist
A A 2 A A 1 A A 1
C C 2 B B 2 B A 3
D D 3 D A 3 C A 2
E A 3 E A 2 D D 1
F A 5 F A 4 F F 2

a. Comment savoir si deux sommets sont voisins à partir des tables de routage ?
Les seules informations que l’on puisse déduire est que si Y est next hop dans la table de X
alors X et Y sont voisins.
b. On suppose qu’il y a un lien entre B et F, quel peut être son coût ?
Le chemin de B vers F passant par A a un coût 5, donc un lien direct entre B et F aurait un
coût au minimum égal à 5, sinon il serait indiqué dans la table.
c. Représentez le graphe des connexions à partir des informations que vous avez.
d. En supposant que le graphe précédent contient tous les liens directs, donnez la table de
routage de A avant tout échange de tables de routage ?
A ne connait que ses voisins directs, donc :
dest next dist
B B 2
C C 1
E E 1
e. A reçoit les tables de B, C et E et mets les siennes à jour. Donnez le contenu de sa table.

dest next dist


B B 2
C C 1

17
UPMC - Licence Informatique 3I014 - Réseaux

D E 2
E E 1
F E 3

5.2. On considère le graphe suivant et on utilise un algorithme de routage avec vecteurs de


distance.
A – B – C – D
a. Donnez les tables de routage après convergence de l’algorithme.
A B C D
A/-/0 A/A/1 A/B/2 A/C/3
B/B/1 B/-/0 B/B/1 B/C/2
C/B/2 C/C/1 C/-/0 C/C/1
D/B/3 D/C/2 D/D/1 D/-/0
b. En supposant que le lien entre A et B est rompu, décrivez le problème du comptage à
l’infini.
B détecte la rupture et met une distance infinie vers A et envoie cette information à C. Si
dans le même temps C envoie son vecteur de distance à B, B va estimer qu’il est à distance
3 de A. De proche en proche les distances vont tendre vers l’infini mais cela va prendre du
temps.
A– B – C – D
A/1 B/2 C/3
C/3 B/2 C/3
C/3 B/4 C/3
C/5 B/4 C/5
C/5 B/6 C/5
... ... ...
c. Pour résoudre le problème on utilise une méthode à horizon partagé : un routeur ne
transmet jamais le coût vers une destination à son voisin N si N est le prochain nœud
vers la destination. En quoi cette méthode permet de résoudre le problème sur l’exemple
précédent ?
B détecte la rupture et met une distance infinie vers A, C n’envoie pas sa table à B qui va
garder une distance infinie et la propager à C. Le même phénomène va se passer entre C et
D, tous les routeurs vont donc obtenir une distance infinie
d. On rajoute un lien entre B et D et le lien entre A et B est fonctionnel. Donnez les tables
de routage après convergence de l’algorithme.

18
UPMC - Licence Informatique 3I014 - Réseaux

A B C D
A/-/0 A/A/1 A/B/2 A/B/2
B/B/1 B/-/0 B/B/1 B/B/1
C/B/2 C/C/1 C/-/0 C/C/1
D/B/2 D/D/1 D/D/1 D/-/0
e. Le lien entre A et B est à nouveau rompu, le problème de comptage à l’infini peut-il
toujours arriver sur ce réseau ?
Oui de la même manière que précédemment.
f. Que se passe-t-il avec une méthode à base d’horizon partagé dans le cas précédent ?
En cas de rupture entre A et B, B va signaler la rupture à C et D puisqu’aucun de ces deux
routeurs n’est le nexthop vers A. Si B signale à C une distance infinie vers A et que D
signale à C une distance 2 vers A alors C va enregistrer A/B/3. Le comptage va se propager
sur le cycle BCD.
5.3. On considère le réseau suivant :

a. Appliquez l’algorithme de Dijkstra pour le nœud A sur le réseau ci-dessus. Indiquez


dans quel ordre les sommets ont été traités par l’algorithme et dessinez l’arbre couvrant
obtenu pour le nœud A.
On traite les sommets comme prévu dans l’algorithme : ADEBCFG.
Les valeurs prédécesseur/poids sont (dans l’ordre de traitement) :
A : -/0, D : A/2, E : D/4, B : E/5, C : B/7, F : E/8, G : F/9
b. Déduisez la table de routage de A contenant pour chaque destination possible, le
prochain nœud, le chemin complet et son coût.
dest next dist
B DEB 5
C DEBC 7
D E 2
E DE 4
F DEF 8
G DEFG 9
c. On suppose que les liens AB, puis DE, puis BC tombent en panne. A chaque fois la
machine (ou les machines) qui détecte la panne émet un LSP contenant une distance

19
UPMC - Licence Informatique 3I014 - Réseaux

infinie pour le lien en question. Représentez sous forme de graphe la connaissance que
A a du réseau une fois que tout est stabilisé.
Après la rupture des liens AB et DE, les deux parties du réseau sont déconnectées, A ne
reçoit donc pas le LSP l’informant de la rupture de BC, il continue donc à croire en
l’existence de ce lien.
d. Le lien DE est rétabli et le LSP correspondant est diffusé à tout le réseau. Calculez
l’arbre couvrant pour A une fois que tout est stabilisé et déduisez-en la table de routage
de A.
A pense que le lien BC existe, il va donc construire un arbre couvrant utilisant
potentiellement ce lien. Il s’avère que le résultat est exactement le même que précédemment
et que la table de routage est également identique.
e. Ce fonctionnement est-il satisfaisant ? Justifiez ou proposez une solution.
Non, évidemment.
Il faudrait se rendre compte que le réseau est déconnecté (facile). Puis quand le réseau est
reconnecté s’assurer que la connaissance que l’on a est correcte, ce qui demande de
reconstruire le réseau pour l’ancienne composante disjointe.

20

Vous aimerez peut-être aussi