Introduction à OSPF

L’OSPF est l’un des protocoles de routage les plus utilisés aujourd’hui. Il possède de très bons atouts, et convient très bien aux grands réseaux. De plus, c’est un protocole standard, et donc utilisable par tous les constructeurs.

Dans cette série d’article, nous allons revenir sur toutes les notions à connaitre, en allant du niveau CCNA au niveau CCNP.

Ce premier article est consacré à la théorie de base à connaitre.

 

1)     Présentation de l’OSPF

 

1.1 Caractéristiques de base

L’OSPF a été développé vers la fin des années 80, afin de pallier aux failles du protocole RIP.

Il possède plusieurs avantages :

  • Convergence très rapide
  • Adapté aux grands réseaux (pas de limite de saut, etc…)
  • Faible utilisation de la bande passante
  • Standard (interopérable)
  • Support VLSM

 

Par contre, ce protocole est plus complexe à mettre en place, et consomme plus de CPU / RAM (par rapport à RIP).

En OSPF, il est possible de découper son réseau en zone, ce qui permet d’alléger le travail des routeurs.

La métrique d’OSPF est basée sur la bande passante.

Les routeurs communiquent grâce à l’IP de multicast 224.0.0.5 (messages HELLO).

Il est bien sûr possible de mettre en place de l’authentification.

 

Enfin, il faut savoir que l’OSPF est un protocole à état de lien (Link State).

 

1.2 Un protocole à état de lien

Qu’est-ce que cela signifie ?

Ce veut dire que tous les routeurs connaissent la topologie complète du réseau.

A partir de la topologie et des caractéristiques des liens, le routeur peut choisir le meilleur chemin pour chaque destination.

 

Prenons l’exemple suivant :

Topologie exemple OSPF

 

Chaque routeur présent sur la topologie, a connaissance de l’existence de chaque routeur et de chaque lien.

Les valeurs indiquées sur les liens, représentent leur coût (la métrique). Plus il est faible, meilleur est le lien.

Le calcul du coût est le suivant : 100 000 Kbps / bande passante du lien (en Kbps).

La valeur la plus faible est 1. Il est possible de modifier le calcul de la formule en cas de lien ayant une bande passante supérieure à 100 Mbps.

 

Prenons R4. Il cherche à joindre R6.

Il va utiliser l’algorithme de Dijkstra, pour trouver le plus court chemin (en se basant sur le coût des liens).

J’incite les plus curieux d’entre vous à se renseigner sur cet algorithme.

Ici, le plus court chemin est donc : R4 -> R2 -> R3 -> R5 -> R6.

Le routeur va faire de même pour chaque destination possible.

 

Une fois cela fait, la table de routage est construite.

 

A retenir :

  • A état de lien
  • Le routeur connait toute la topologie
  • Métrique : coût (bande passante)
  • Algorithme : Dijkstra ou plus court chemin (Shorted Path First)

 

1.3 Les zones

OSPF introduit la notion d’area. Le but étant d’alléger le processus OSPF.

Au sein d’une même zone, tous les routeurs se connaissent.

Pour ce qui est des autres zones, les routeurs n’ont connaissance que des réseaux accessibles (des routes).

Prenons un exemple :

Area OSPF

 

Dans chacune des zones, tous les routeurs se connaissent.

R2 connait donc R1 et R3

Par contre, R2 ne connait pas R4, R5, R6, etc…

En bref, le routeur ne connait que la topologie de sa propre zone.

 

Néanmoins, les routeurs ont connaissance des routes vers les autres zones.

Par exemple, R1 connait la route pour 10.2.7.0 /24. Il sait juste qu’il doit passer par R3.

 

Il est d’ailleurs possible, si nous le souhaitons, de résumer ces routes.

A ce moment-là, R3 n’annoncerait, par exemple, plus que 10.2.0.0 /16

Il est très fréquent de vouloir résumer les routes, pour ensuite les annoncer dans une autre zone.

Vous l’aurez compris, il est important que l’adressage soit hiérarchique.

Les réseaux à l’intérieur d’une zone doivent pouvoir être résumés.

Nous verrons des exemples plus détaillés pendant les TP.

 

L’adressage hiérarchique n’est pas la seule contrainte.

Il faut aussi que toutes les zones soient connectées à la zone 0.

Il ne serait donc pas possible d’ajouter une zone 3, dernière la zone 2 (simplement connectée à R7).

En réalité, nous verrons qu’il y a moyen d’outrepasser cette restriction (de manière provisoire de préférence).

 

Les routeurs qui connectent deux zones sont appelé des ABR – Area Border Router.

Pour faire simple, ils servent à connecter les zones.

Ils empêchent les infos sur les liens de sortir des zones. Mais ils redistribuent tout de même les routes entre les zones.

De plus, ils permettent de faire des résumés de route.

 

Enfin, les ASBR – Autonomous System Border Router sont des routeurs qui font le lien avec d’autres protocole de routage. Ils injectent dans OSPF des routes venant d’autres protocoles de routage.

Par exemple, R8 pourrait être connecté à un réseau RIP. Il aurait alors pour rôle de redistribuer les routes RIP dans nos zones.

 

En bref, les zones permettent donc d’alléger le processus OSPF. Les routeurs n’ont pas besoin de retenir la topologie complète du réseau. De plus, le calcul du plus court chemin sera plus simple (moins de ressources CPU utilisées, convergence plus rapide).

 

A retenir :

  • Utilité des zones : localiser les MAJ à la zone, réduire la taille de la topologie à connaitre
  • Toutes les zones doivent être connectées à la zone 0
  • L’adressage doit être hiérarchique (pour le résumé entre les zones)
  • ABR : fait le lien entre plusieurs zones
  • ASBR : injecte des routes venant d’autres protocoles de routage

 

1.4 Types de paquets

Le Hello

Afin de découvrir les voisins, et d’entretenir les relations de voisinage, le routeur envoie des messages HELLO.

Ceux-ci sont envoyés toutes les 10 secondes, en multicast sur l’adresse 224.0.0.5 (toutes les 30 secondes sur un réseau NBMA).

Sans réponse à 4 HELLO successifs, on considère le voisin comme DOWN.

Il contient :

  • L’ID du routeur
  • Le Netmask (masque de sous réseau) *
  • L’ID de l’area *
  • Les timers Hello et Dead *
  • La liste de voisin
  • La priorité du routeur (élection maitre esclave, élection DR / BDR)
  • L’IP du DR et du BDR
  • La password (si configuré) *

Les champs marqués d’une étoile doivent correspondre entre les routeurs (sinon, la relation n’est pas possible).

 

Le DBD – Data Base Description

Résumé de tous les liens que le routeur connait. Quand un voisin voit un lien non connu dans le DBD, il le demande avec un LSR

 

Le LSR – Link State Request

Permet de demander plus d’infos sur un lien. La réponse est un LSA

 

Le LSA – Link State Advertisement

MAJ contenant des infos sur un lien.

Il en existe plusieurs types :

  • Type 1 : Décrit les interfaces d’un routeur
  • Type 2 : Décrit les routeurs connectés au segment. Envoyé par le DR sur les liens Broadcast (voir section 2.7)
  • Type 3 : Route de résumé envoyée dans une autre Area par l’ABR – Area Border Router
  • Type 4 : Décrit l’ASBR – Autonomous System Border Router. Généré par l’ASBR et envoyé dans les autres zones. Permet de faire connaitre le routeur ID dans d’autres zones.
  • Type 5 : Routes redistribuées par l’ASBR (route externes, type RIP, EIGRP, etc…)
  • Type 7 (sera abordé plus tard) : Comme le type 5, mais qui peut circuler dans une NSSA. Il est transformé en Type 5 à la sortie de la NSSA

Ces différents types seront plus évidents après avoir abordé la pratique. Nous reviendrons dessus plus tard. Pas d’inquiétude pour le moment.

 

Le LSU – Link State Update

Contient plusieurs LSA

 

Le LSAck

Accusé réception des DBD, LSR, LSA, LSU (les Hello n’ont pas d’accusé réception)

 

1.5 Les relations de voisinage

Attaquons maintenant le plus gros morceau.

Nous allons étudier les relations de voisinage en OSPF.

Il y a 8 étapes dans une relation entre deux routeurs OSPF.

Il est important de bien les comprendre. Ainsi, le fonctionnement d’OSPF sera plus clair.

La configuration d’une relation de voisinage sera le sujet d’un autre article.

 

Etape 1 : Déterminer son Router ID

La première étape consiste à déterminer son ID.

L’ID identifie le routeur au sein du processus OSPF.

 

Il est possible de choisir l’ID à la main, avec la commande  « router-id » suivie d’une adresse IP.

Sinon, l’ID est choisi automatiquement.

Le routeur prend l’IP la plus haute d’une interface de loopback.

S’il n’y a pas de Loopback, le routeur prend l’IP la plus haute d’une interface physique.

S’il n’y a pas d’interface physique … et bien le routeur ne peut de toute façon pas communiquer sur le réseau !

 

Pour qu’un changement d’ID soir pris en compte, il faut redémarrer le processus OSPF.

 

Etape 2 : Ajout des interfaces au processus OSPF

Pour que le routeur envoie des messages HELLO, il faut lui dire sur quelle interface le faire.

Pour cela, nous verrons qu’il faut utiliser la commande « network … ».

Une fois cela fait, le routeur passe à l’étape 3.

 

Etape 3 : Envoi de message HELLO

Comme dit précédemment, les messages HELLO permettent de créer et d’entretenir les relations de voisinage.

 

Pour rappel, voici ce que contiennent les messages HELLO ?

  • L’ID du routeur
  • Les Timer HELLO et DEAD *
  • Le masque de sous réseau *
  • L’ID de l’Area *
  • La liste de voisin
  • La priorité du routeur (pour devenir DR, à 1 par défaut, la plus grande gagne)
  • L’adresse du DR / BDR
  • Le mot de passe pour l’authentification (si utilisée) *

 

Etape 4 : Réception d’un HELLO

Les champs marqués avec des étoiles doivent correspondre entre les routeurs, pour qu’une relation se forme.

Si l’un des champs ne correspond pas, le routeur ignore le HELLO.

Si tout est bon, il répond par un HELLO REPLY.

 

Etape 5 : Envoi d’un REPLY HELLO

Si le routeur qui reçoit le HELLO se voit dans la liste de voisin inclue dans le HELLO, cela veut dire que le routeur à l’origine du HELLO le connait déjà.

Le routeur qui a reçu le HELLO se contente alors d’envoyer un HELLO REPLY, et de remettre à zéro le DEAD TIMER de ce voisin. Le processus s’arrête alors ici. Des Hello seront tout de même envoyés toutes les 10s.

Si le routeur ne se voit pas dans la liste de voisin, une nouvelle relation commence.

Pour faire simple :

  • Déjà voisin : envoi d’un REPLY, Dead Timer de ce voisin  remit à 0, fin du processus
  • Pas encore voisin : début d’une nouvelle relation -> passage à l’étape 6

 

Etape 6 : Détermination du maitre et de l’esclave

Entre les deux voisins, le routeur ayant la plus haute priorité devient le maitre. En cas d’égalité, le plus haut routeur ID gagne l’élection.

Celui qui est devenu le maitre envoie alors un DBD – Data Base Description.

Il s’agit d’un résumé de la base de données Link State (la topologie).

Puis l’esclave fait de même.

 

Etape 7 : Demande de détails sur la topologie

A partir des résumés de la base de données, le routeur détermine ce que le voisin connait et qu’il ne connait pas.

L’esclave envoie donc des LSR – Link State Request au maitre, pour lui demander des infos plus détaillées sur certains liens

Le maitre répond par des LSU – Link State Update.

Ensuite, c’est au maitre d’envoyer des LSR, et à l’esclave de répondre par des LSU.

Après chaque message, un LSAck est envoyé comme accusé de réception.

 

Etape 8 : Les voisins sont synchronisés

Une fois cela fait, le maitre et l’esclave auront synchronisé leur base de données.

Tous les liens connus par le maitre, seront connus par l’esclave (et inversement).

 

Il est maintenant possible de lancer l’algorithme Dijkstra.

 

Il ne faut pas oublier qu’une fois les 8 étapes passée, les voisins continues de s’échanger des Hello (étape 1 à 5). Ils s’échangent aussi des LSU à chaque fois qu’un changement sur le réseau requière une MAJ.

 

A retenir :

  1. Déterminer le routeur ID (choix manuel > plus haute IP Lopback > Plus haute IP interface)
  2. Ajout d’interface (commande « network »)
  3. Envoie de Hello toutes les 10s (30s en NBMA)
  4. Réception de Hello (vérification des champs Hello, Netmask, Area ID, Password)
  5. Envoi d’un Reply (reset Dead Timer ou création d’une nouvelle relation de voisinage)
  6. Election du maitre esclave puis envoi de DBD – Data Base Description
  7. Echange LSR – Link State Request et LSU – Link State Update
  8. Synchronisation finie, lancement de l’algorithme Dijkstra

 

1.6 Etats d’une relation de voisinage

Une relation de voisinage peut passer par plusieurs états.

Down : Nous n’avons pas encore reçus de Hello du voisin, mais nous essayons de le joindre

Init : On reçoit un Hello du voisin, mais notre routeur n’est pas listé dans le champ Neighbors

2-Way : La relation est créée (notre routeur est listé dans le champ Neighbors). Election DR / BDR si nécessaire

Exchange : Echange de DBD – Data Base Description

Loading : Echange de LSU – Link State Update

Full : Bases de données synchronisées

 

 

1.7 OSPF sur un réseau Multi Access

Sur un réseau Multi Access, le protocole OSPF pet engendrer un engorgement du réseau.

Voici un exemple :

OSPF réseau NBMA

Dans ce cas-là, chaque routeur va établir une relation avec les 5 autres routeurs.

Ensuite, chaque relation va faire l’objet de multiples échanges (DBD, LSR, LSU, etc…).

De plus, à chaque changement, beaucoup de messages vont transiter.

Imaginez la même topologie avec 10 ou 20 routeurs. La quantité de message transitant va vite devenir problématique.

OSPF propose donc d’élire un routeur comme DR – Designated Router, et un autre comme BDR – Backup Designated Router.

 

Quand un routeur souhaite envoyer une MAJ de routage, il l’envoie au DR et au BDR sur l’IP 224.0.0.6.

Ensuite, le DR va renvoyer le message aux autres routeurs sur l’IP 224.0.0.5.

 

Par exemple, si R6 veut envoyer une MAJ, il va seulement l’envoyer à R4 et R3 (les DR et BDR).

Ensuite, R4 va renvoyer la MAJ aux autres routeurs.

 

Le DR et le BDR sont choisis à la suite d’une élection.

Celui qui gagne l’élection est celui qui a la priorité la plus élevée. En cas d’égalité, c’est celui qui à l’ID de routeur de plus haut.

 

Seule les relations avec le DR et BDR passent en état FULL.

Les relations avec les autres routeurs (les DROthers) restent en 2-Way.

 

A retenir :

  • En réseau Multi Access, élection DR / BDR
  • DR / BDR : plus haute priorité, sinon, plus haut ID de routeur
  • MAJ envoyé au DR / BDR sur 224.0.0.6
  • MAJ redistribué par le DR sur 224.0.0.5
  • Relation avec le DR / BDR : FULL
  • Relation avec les DROthers : 2-Way

Tagués avec : , , ,
Publié dans OSPF
2 commentaires pour “Introduction à OSPF
  1. Bwaze dit :

    Très bon article merci.

  2. elhaydi dit :

    très compréhensible, merci bien

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.