Table des matières
RIP et OSPF
Il s'agit de deux protocoles de routage, c'est à dire des règles permettant aux routeurs de décider quelle chemin choisir pour transmettre les paquets de données vers leurs destinations.
RIP : Routing Information Protocol
Utilise l'algorithme de Bellman et Ford pour déterminer un plus court chemin – Il s'agit d'un exemple de programmation dynamique.
Exemple de réseau
On peut se contente ici du principe en se basant sur cet exemple :
- Les routeurs de A à G sont connectés les uns aux autres,
- Toutes les connexions ont bien sûr une adresse IP mais ce qui nous intéresse surtout est de pouvoir atteindre les sous-réseaux auxquels certains routeurs sont connectés.
Par exemple B est relié au sous-réseau172.16.x.x. Une requête vers ce sous-réseau doit passer par B.
Le sous réseau57.x.x.xpeut être atteint par G et D.
Principe du protocol
Maintenant voyons comment les routeurs vont calculer leurs chemins.
- Aucun routeur n'a de vision globale du réseau. Il ne communique qu'avec ses voisins.
- Chaque routeur entretient une table de routage précisant la distance qui le sépare d'un réseau IP, cette distance étant exprimée en sauts – hops en anglais.
- Par exemple B sait qu'il est à une distance de
0du réseau172.16.x.x. - Au début, F ne sait pas à quelle distance il est de
172.16.x.xmais après des échanges, il saura qu'il peut atteindre B et donc172.16.x.xen 2 sauts.
- Les routeurs échangent leur table de routage avec leurs voisins. Voyons un exemple :
- F avait dans sa table de routage l'information qu'il pouvait atteindre
172.16.x.xen 3 sauts en passant par E. - G, sait qu'il peut atteindre
172.16.x.xen 1 saut. Il passe l'information à ses voisins. - F reçoit le message. Il en déduit qu'il pourra, en passant par G, atteindre
172.16.x.xen 2 sauts, ce qui est mieux. - F modifie donc sa table et indique qu'il peut atteindre
172.16.x.xen 2 sauts en passant par G. - Comme F a amélioré sa table, il en informe ses voisins en transmettant sa table.
- Un chemin de plus de 15 sauts n'est pas enregistré
Dans notre exemple, F n'enregistre pas dans sa table la totalité du chemin vers 172.16.x.x. Il se contente de mémoriser qu'il peut le faire en 2 sauts en passant par G. Si F doit envoyer un paquet vers 172.16.x.x, il l'envoie vers G. G prendra en charge la suite de l'itinéraire.
Ce protocole, contrairement à celui qui suit, ne tient pas compte de la qualité des liaisons entre routeurs. Seul le nombre de sauts compte. Dans notre exemple, RIP préférera le chemin F → G → B au chemin F → E → C→ B même si le second a un meilleur débit.
Tolérance de panne
Un aspect important d'un réseau est sa capacité à s'adapter automatiquement à la défaillance d'un de ses éléments. Si un routeur tombe en panne, les paquets de données doivent pouvoir continuer à trouver leur chemin.
On ajoute donc des règles au protocole :
- Toutes les 30 secondes, les routeurs diffusent leur table de routage.
- Si une route connaît un problème prolongé, elle est supprimée de la table.
- Si un routeur ne diffuse rien pendant 3 minutes, il est considéré en panne et les routes passant par lui sont supprimées.
Les réseaux étant gros et les échanges permanents, il faut envisager des cas à problèmes. Supposons que :
- C dit que G est en panne
- B dit qu'il a une route passant par G
C et G risque de s'échanger en boucle cette information contradictoire :
- C ayant reçu le message de B, il se met dire que G fonctionne diffuse l'information
- B qui vient d'entendre que G est en panne modifie sa route et diffuse l'information “G en panne”
Pour éviter ce problème, on donne la priorité à l'information “en panne” et on empêche les allers-retours entre deux routeurs : B ne répète pas vers C ce que C vient de lui dire.
OSPF : Open Shortest Path First
Ce protocole est déjà ancien (années 1990) et permet de gérer des réseau plus grands avec des routeurs plus puissants.
Avec OSPF on cherchera le chemin le plus court dans le réseau mais en tenant compte du débit. Pour mieux dire, on choisira le chemin au débit le plus élevé.
Exemple
Supposons que l'on ait les débits suivants :
- 100 Mb/s : B – C ; C – E
- 10 Mb/s : A – B ; B – G ; E – F
- 1 Mb/s : A – D ; F – G ; C – D
- 100 kb/s : E – G ; D – F
Alors le transfert d'un paquet de 1 Gb sur la route F → E → C → B prendra
- 100 s pour F → E
- 10 s pour E → C
- 10 s pour C → B
Le même transfert sur F → G → B prendra
- 1000 s sur F → G
- 100 s sur G → B
Le premier chemin est nettement meilleur.
J'ai pris un paquet de 1 Gb pour simplifier le calcul. On ne transmettrait pas un aussi gros paquet d'un coup. On le découperait en petits morceaux qui pourraient être envoyés sur plusieurs chemins différents et le transfert E → C pourrait commencer avec les premiers morceaux avant que la totalité des morceaux aient fait F → E. Cela ne change rien au raisonnement, il suffit d'envisager les paquets élémentaires qui ne sont pas fractionnés.

