Open Shortest Path First (OSPF)

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


OSPF est un protocole de routage dynamique internet édité par l’IETF depuis 1987. Tout comme RIP, il va permettre à nos routeurs de créer des tables de routage dynamiquement.

Mais attention, OSPF != RIP. La première question que je me suis posé quand j’ai étudié ce protocole c’est : « Pourquoi et quand utiliser  RIP ou OSPF » ?  Après quelques recherches j’ai trouvé ma réponse en lisant cet article : rip vs ospf what is the difference. Étant donné que l’article est en anglais je vais vous en faire un petit résumé.

En fait RIP prend ses décisions de routage en fonction du nombre de hop (de sauts) qui séparent le destinataire de l’émetteur. Dans cette situation :

1.png

L’émetteur configuré avec RIP va préférer envoyer se paquets vers le Router2 parce que le nombre de sauts est plus faible donc le transfert des données sera théoriquement plus court. Le problème c’est que généralement tous les routeurs n’utilisent pas le même type d’interface. Certaines sont plus rapides que d’autres (GigaEthernet est plus rapide que FastEthernet). Et cette distinction, le protocole RIP n’en tient absolument pas compte.

Par conséquent il se pourrait que le transfert des données soit plus rapide en passant par le réseau du haut que par celui du bas. Mais encore une fois RIP n’est pas capable de faire cette distinction.

Le second soucis avec RIP c’est que toutes les 30 secondes il va mettre à jour sa table de routage en envoyant des paquets RIP et cela peut vite mener à une surcharge de la bande passante. On verra qu’avec OSPF ce problème n’existe presque plus grâce au principe des area.

Ce qu’il faut retenir ici c’est que RIP est plus simple à implémenter et à utiliser sur de petits réseaux tandis qu’OSPF est plus complexe mais aussi plus performant sur de larges réseaux.

Bref voyons comment tout ça fonctionne !

I/ Fonctionnement théorique d’OSPF

Le premier point a bien intégré c’est le principe des area. Le protocole OSPF permet de compartimenter plusieurs routeurs dans une zone (area). Sur un même réseau, il peut y avoir plusieurs area qui peuvent communiquer les unes avec les autres.

Du coup on est en droit de se demander quel est l’intérêt de ces area si au final elles sont toutes reliées les unes aux autres. Eheh cette question j’y répondrai plus tard. En effet on va avoir besoin des informations suivantes avant de pouvoir y répondre !

Au cours de son fonctionnement, le protocole OSPF va créer et modifier trois bases de données :

  • Base de données de contiguïté (ou table de voisinage) : elle liste l’ensemble des routeurs voisins avec lesquels le routeur a établi une communication bidirectionnelle (cette table est unique pour chaque routeur vu que chaque routeur a des voisins différents)
  • Base de données d’états de lien (LSDB) (ou table topologique) : liste l’ensemble des informations relatives à tous les autres routeurs du réseau. Concrètement cette base de données représente la topologie totale du réseau. Cette base est identique pour tous les routeurs.
  • Base de données de réacheminement (ou table de routage) : cette base de données contient l’ensemble des routes générées lors de l’exécution de l’algorithme de Djikstra (on y reviendra plus tard).

Grossièrement on peut expliquer le fonctionnement du protocole OSPF en trois étapes.

  • 1) Message Hello :

Le premier message est un message de type Hello qui permet aux routeurs OSPF de s’annoncer sur le réseau. Ces message sont envoyés par tous les routeurs OSPF vers tous leurs voisins immédiats (directement connectés) :

2.png

  • 2) Message LSA :

Le second type de message est le LSA. Les LSA contiennent plusieurs informations sur l’état global d’un lien connecté directement. Ces informations sont contenues dans les base de données de contiguïté des routeurs OSPF. Tous les routeurs vont envoyer leurs LSA à leurs voisins qui eux aussi vont les diffuser à leurs voisins et ainsi de suite jusqu’à ce que tous les routeurs aient tous les LSA de tous les routeurs OSPF :

3.png

  • 3) Génération de la LSDB :

A partir des paquets LSA reçus, les routeurs OSPF vont créer la base de données d’état des liens (ou table topologique). Dans cette base de données on retrouve toutes les informations relatives à la topologie du réseau :

4.png

A partir de cette table topologique (qui est identique pour tous les routeurs) on va lancer l’algorithme de Djikstra SPF (dont je vous parlais plus tôt) qui va permettre à nos routeurs de créer les tables de routage les plus optimisées possible.

Si la topologie du réseau change alors les routeurs voudront mettre à jour leurs tables de routage. Pour cela ils enverront un message LSR (Link-State Request) aux autres routeurs. Ces derniers vont ensuite envoyer un message LSU (Link-State Update) qui contiendra les informations de mise à jour de la topologie.

Comme vous pouvez le voir, beaucoup de messages sont envoyés sur le réseau. Donc quand je vous disais plus tôt que le protocole RIP pouvait flooder une bande passante et pas OSPF j’avais tort. Enfin pas vraiment 😁 !

Avec RIP, tous les routeurs envoient à tous les autres routeurs toute leurs tables de routage. Or avec OSPF on dispose de la fonctionnalité des area (ou zone). Concrètement ça veut dire qu’on va pouvoir compartimenter plusieurs routeurs entre eux. Du coup au lieu d’avoir une énorme base de données topologique, on va en avoir plusieurs plus petites ce qui va nous permettre de limiter l’impact sur le CPU des routeurs (calcul des routes) ainsi que le nombre de messages émis sur le réseau.

Pour résumer, l’utilisation de plusieurs zones permet de :

  • Réduire la taille des tables de routage
  • Réduire la charge de mise à jour des états de liens
  • Réduire la fréquence des calculs Djikstra SPF

Et contrairement à ce que l’on pourrait croire, ce n’est pas parce qu’un routeur est dans une zone, qu’il ne peut pas communiquer avec un routeur sur une autre zone. Eh oui, on peut relier ces zones entre elles !

Go sur Packet Tracer maintenant !

II/ Implémentation d’OSPF sur une area unique

Voici la topologie que nous allons réalisé :

6.png

Le but du jeu va être de configurer OSPF correctement. Si tout fonctionne bien alors OSPF fera en sorte que les paquets envoyés par l’émetteur passent par le router1 pour joindre le destinataire.

Comme d’habitude, on commence par configurer les interfaces de nos routeurs/ordinateurs. Pour cela je vous renvoie vers cet article :

7.png

Seems good ! Comme vous le savez, le PC émetteur ne pourra pas pinger le PC destinataire puisqu’il n’y a aucune règle de routage pour le moment. Pour les ajouter il faudra d’abord entrer dans le monde de configuration d’OSPF en tapant cette commande :

router ospf 'ID'

L’ID est un nombre compris entre 1 et 65535. Il peut être identique sur tous vos routeurs OSPF et il n’est pas primordial de s’en rappeler.

Une fois dans le menu de configuration du protocole OSPF, il va falloir entrer un router-id. Attention, cette fois, il ne doit pas être le même sur tous vos routeurs puisqu’il va permettre d’identifier vos routeurs sur votre réseau OSPF. Ce router ID doit respecter la nomenclature d’une adresse IPv4. Donc mettez l’ID 1.1.1.1 pour le premier, 1.1.1.2 pour le second etc… Ou autre hein, vous faites comme vous voulez 😁 !

router-id 1.1.1.1

Notez qu’il est possible de ne pas entrer d’ID. Dans ce cas là, c’est l’adresse IP de l’interface du routeur la plus haute qui fera office d’ID.

Une fois cela fait sur tous vos routeurs il faudra entrer les réseaux auxquels ont accès chacun de vos routeurs. Par exemple, le routeur0 a accès au réseau 192.168.1.0, 192.168.2.0 et 192.168.4.0.

La sémantique de cette commande est un peu particulière puisqu’on y trouve l’adresse des réseaux connectés au routeur, une wildcard et la fameuse area dont on parlait plus tôt. La wildcard, c’est tout simplement l’inverse du masque de sous réseau.

Ici nous n’avons que des sous réseaux ayant des masques en 255.255.255.0 dont toutes nos wildcard seront en 0.0.0.255.

Par conséquent, pour le router0, nous entrerons ces commandes :

network 192.168.1.0 0.0.0.255 area 1
network 192.168.2.0 0.0.0.255 area 1
network 192.168.4.0 0.0.0.255 area 1

Ici j’ai mis area 1 mais j’aurais pu mettre area 10 ou autre… Le plus important c’est que tous nos routeurs soient dans le même area. Répliquez ces actions sur tous vos routeurs puis tentez un ping entre l’émetteur et le destinataire :

9

Maintenant si on fait un tracert, on voit bien que les paquets sont passés par le router1 :

10.png

La configuration du protocole OSPF en uni area est donc correcte et fonctionnelle ! Reste à voir comment implémenter OSPF sur plusieurs area !

III/ Implémentation d’OSPF sur plusieurs area

Quand on implémente OSPF sur plusieurs areas il faut faire attention à bien respecter l’utilisation des  différents types areas. En effet il en existe deux : les area fédératrices et les area non fédératrices :

11.png

Le schéma ci dessus vous présente les deux types d’area. L’area en bleu s’appelle l’area fédératrice. Dans cette zone on ne trouve que les routeurs qui interconnectent d’autres zones. A l’inverse, en jaune, ce sont les area non fédératrices. Dans ces zones on trouve d’autres routeurs qui communiquent entre eux.

Grossièrement il faut juste retenir que l’area fédératrice permet d’interconnecter plusieurs area et que son identifiant d’area est toujours 0.

Pour la partie pratique on va juste se contenter de rajouter une deuxième zone comme ceci :

12

Nous avons nos deux areas non fédératrices en jaune et l’area fédératrice en bleu. Le but du jeu ici, c’est que l’émetteur puisse communiquer avec les destinataire 2 et 3. Pour cela il suffira de créer deux zones supplémentaires.

La première sera l’area fédératrice (donc en bleu). J’insiste sur le fait que le numéro de l’area que l’on précise avec cette commande :

network 192.168.x.x 0.0.0.255 area x

Doit être 0. Si vous mettez autre chose que 0 alors les communications entre zone ne se feront pas. Quant à la troisième zone on pourra lui donner l’ID d’area 2 par exemple. Testez de pinger, vous verrez que ça marche !

Il nous reste une dernière chose à voir pour boucler cet article : les DR et DBR !

IV/ Configurer un DR et un DBR

Prenons la situation suivante :

13.png

Imaginez que les quatre routeurs soient configurés en OSPF. Ça voudrait dire que les quatre routeurs vont envoyer des message Hello et LSA aux trois autres routeurs. Et les routeurs vont tous se répondre entre eux. Bref ça va être un gros dawa et le réseau peut saturer.

Pour éviter ce genre de surcharge, on va tout simplement désigner un routeur comme étant celui qui va gérer l’envoi et la réception des LSA. Ce routeur, on va l’appeler le DR (Designed Router). Alors généralement ce routeur est le plus puissant en terme de mémoire/CPU de la zone (pour éviter tout déni de service).

« Mais du coup si ce routeur tombe en panne, OSPF ne fonctionnera plus ? »

Eheh si ! Parce qu’on va aussi désigner un autre routeur comme étant le DR de backup (que l’on appelle le BDR). Si le DR tombe alors c’est le BDR qui prendra le relai.

Au niveau pratique il n’y a pas grand chose à faire… Par défaut, c’est le router ayant le router-id le plus élevé qui sera désigné comme DR. Si vous voulez désigner manuellement le DR, il faudra – pour chaque interface- ajouter cette ligne :

ip ospf priority x

avec x une valeur allant jusqu’à 255. Plus cette valeur est haute plus le routeur est prioritaire pour être désigné BR.


Fini 😁😁 !

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s