OSPF – Fondamentaux

OSPF

Fondamentaux

 

Présentation


 

OSPF = Open Shortest Path First

Shortest Path First = Algorithme qui permet de calculer le chemin le plus cours vers toutes les destinations via le nombre de saut et le coût des liaisons.

 

OSPF :

– Protocole de routage dynamique
– Défini dans la RFC 2328 (Protocole non propriétaire).
– Protocole IGP.
– Protocole Classless.
– IP protocol type 89
– Envoi instantanément les mises à jours de routage.
– Choisi l’itinéraire à prendre en fonction de la bande passante. (metric)
– Présence d’Authentification.

 

Neighbor Table


Neighbor ID


Le Neighbor ID est le Router-ID de notre voisin.

Router-ID = Adresse IP de notre Routeur OSPF.

Le Router-ID est défini comme suit :

Priorité 1 : le Router ID renseigné dans le processus OSPF.
Priorité 2 : L’adresse IP la plus élevé configuré sur une interface loopback.
Priorité 3 : L’adresse IP la plus élevé configuré sur une interface physique.

Cette adresse IP permet de pouvoir être identifié par les routeurs OSPF voisins.

 

Neighbor


Un Neighbor (Voisin) est une relation entre deux routeurs OSPF.

Ils vont tout les deux s’envoyer des paquets « Hello » (Bonjour) afin de se présenter.

Conditions pour devenir Neighbor (Voisin) :

 

OSPF – Authentification Identique
OSPF – MTU identique
OSPF – Aire OSPF identique
OSPF – Appartenir à un même type d’aire OSPF ( Regular / Stub / NSSA )
OSPF – Hello interval + Dead Timer identique
OSPF – Appartenir à un même réseau
OSPF – Router-ID unique

 

Hello Packet


Un Paquet Hello :

– Permet de s’annoncer à ses voisins
– Permet de vérifier la disponibilité de ses voisins
– Adresse multicast 224.0.0.5 (224.0.0.6 pour les DR)

Broadcast ou point a point

– Hello interval = 10s
– Dead-interval = 40s (4×10)

NonBroadcast ou point multipoint

– Hello interval = 30s
– Dead-interval = 120s (4×30)

 

 

State


Il existe 7 états:

Down : Le Dead-interval est venue à son terme
Attempt : Le neighbor a été rentré manuellement dans la configuration de notre routeur, il envoie donc ses paquets Hello en Unicast, mais ne reçoit pas de réponse.
Init : Notre routeur a reçu un paquet Hello d’un autre routeur, mais il n’est pas encore sûr que ce dernier le voit
2-ways : notre routeur a reçu un paquet Hello d’un autre routeur. Dans ce paquet, il y a notre Router-ID. Nos deux routeurs se voient donc l’un l’autre
Ex-start : Élection du Slave et Master (Router-ID le plus haut)
Echange : Nos deux routeurs s’échangent le sommaire de leurs Link State Database (LSDB)
Loading : Nos deux routeurs s’échangent les LSA manquantes.
Full : Les LSDB de nos deux routeurs sont identiques et à jour

Afin de migrer d’un état à l’autre, le protocole OSPF utilise ce type de message :

Hello: Découvrir le réseau, se construire des nouvelles relations de voisins et de s’assurer de leurs disponibilités.
DataBase Description (DBD ou DD): Sommaire de la LSDB (Link State DataBase)
Link State Request (LSR): Demande à son voisin des LSA spécifique.
Link State Update (LSU): Envoi des LSA demandée
Link State Acknowledge (LSAck): Accusé de récéption

Link State Database


 

LSDB


LSDB = Link State DataBase

LSA = Link State Advertisement

Une LSDB est une base de données qui contient toutes les LSA apprissent et générer par notre routeur.
Pour imager tout ça :
– Une LSDB est une bibliothèque
– Une LSA est un livre
Notre bibliothèque (LSDB) est composé de plein de livres (LSA)
Pour que deux routeurs soient dans l’état FULL, il faut que la Bibliothèque (LSDB) de ces deux derniers soit identique.

 

LSA


LSA = Link State Advertisement

Nous venons de voir que notre LSDB est composé de plusieurs LSA.

Il existe plusieurs type de LSA :

– LSA de type 1 (Router)
– LSA de type 2 (Network)
– LSA de type 3 (Net Summary)
– LSA de type 4 (ASBR Summary)
– LSA de type 5 (AS External)
– LSA de type 6 (Group Membership)
– LSA de type 7 (NSSA External) – NSSA
– LSA de type 8 (Link LSAs) – IPv6
– LSA de type 9 (Intra-Area Prefix LSAs) – IPv6
– LSA de type 10,11 (Opaque)

 

Les LSA sont organisé par « type » dans notre LSDB.

 

 

Calcul du Metric 


 

 Maintenant que notre routeur est rentré dans la bulle OSPF. Il va utiliser les informations présente dans sa LSDB afin d’en conclure sa table de routage. Afin de trouver le meilleur chemin vers ses destinataires, il va exécuter l’Algorithme de Dijkstra.

     Afin d’exécuter son algorithme, il va définir un metric  pour chacune de ses liaisons avec la formule suivante :

 

100 / Débit

 

Un chemin avec un faible metric sera privilégié

Exemple :


Dans cet exemple, Le meilleur Metric a partir de R1 pour joindre le reseau 20.0.0.0/24 est de passer par R2 et R3.

R1 aura un metric de 3 pour joindre le reseau 20.0.0.0/24 via R2


R1 aura un metric de 4 pour joindre le reseau 20.0.0.0/24 via R11



R1 aura un metric de 4 pour joindre le reseau 20.0.0.0/24 via R11

R1 aura un metric de 4 pour joindre le reseau 20.0.0.0/24 via R12


 

Le metric défini ci-dessus est celui par défaut, nous pouvons le changer avec la commande:

router(config)#interface fastethernet X/X

router(config-if)#ip ospf cost XX

Cette commande peut nous servir à forcer OSPF à choisir le chemin que l’on veut ou à faire de l’équilibrage de charge. (si deux chemins ont un metric égal).

Designated Router et Backup Designated Router (DR et BDR)


Uniquement pour les Reseaux BroadCast et Non-Broadcast (NBMA)

 

Nous avons vu plus haut :

« Un Neighbor (Voisin) est une relation entre deux routeurs qui sont directement relié entre eux et qui appartiennent à un même réseau. »

Imaginons le cas de figure suivant :

Tout les routeurs présent sur cette architectures vont devenir voisins.

Ils vont donc s’échanger des packets Hello , des LSA , ect … Ce qui représente un trafic OSPF énorme !

     La Solution ? Il faut que nos routeurs élisent un « chef d’orchestre  » comme ça chaque routeurs va envoyer ses mises à jour uniquement à ce dernier. Celui ci aura la charge de remettre les mises à jours aux autres routeurs. Ce rôle s’appelle le DR (Designated Router)

     Si ce routeur viens à tomber , il faut quelqu’un qui soit prêt à le remplacer , ce routeur s’appellera le BDR (Backup Designated Router).

   Les rôles DR et BDR seront mis en place uniquement si nos routeurs sont liées entre eux via un équipement de niveau 2 et qui partagent une même plage d’adresse IP.

     Si notre réseau OSPF est uniquement en point à point. Il n’y aura pas de rôle DR et BDR

Aires OSPF


 

 

      OSPF utilise l’appellation AREA afin de découper un groupe de routeur en plusieurs petits groupe de travail. Si nous mettons tout nos routeurs OSPF dans la même aire , cela va fonctionner.

     Imaginons que nous avons une entreprise avec 500 routeurs et 1000 sous-réseaux et que tout le monde est dans la même aire OSPF. Chaque routeurs de cette aire vas exectuer l’algorithme de Dijkstra pour chaque sous-réseau. Quand une interface d’un de ses 500 routeurs va tomber, TOUT les routeurs de l’aire OSPF va recalculer l’ensemble des chemins pour tout nos réseaux. Tous nos routeurs vont mettre un temps énorme pour converger et leurs charge CPU va être tout le temps à fond…

Avantage des aires OSPF :

– Les LSDB de nos routeurs sont plus petites, nos routeurs ont donc besoin de moins de mémoire pour les acceuillir
– Diminution de la charge CPU de nos routeurs , l’algorithme SPF s’éxecute uniquement pour les réseaux présent dans son aire OSPF. Ce qui augmente la vitesse de convergence en cas de panne réseau
– Le dysfonctionnement d’une interface réseau oblige uniquement les routeurs présent dans son aire à ré-executer l’algorythme SPF.
– Le nombre de message LSA est grandement réduit, ce qui affecte moins la bande passante.

Convaincu ? Bien 🙂 Mais avant de mettre en place des aires OSPF , il est important de connaitre les règles à respecter :

– Mettre toutes les interfaces qui appartiennent à un même réseau dans la même aire OSPF
– Toute aire OSPF ne doivent pas être couper en deux par une autre aire OSPF
– Il existe deux type de routeur OSPF :

– Routeurs interne à une aire : toutes ses interfaces physique appartiennent à la même aire OSPF
– Routeur de bordure d’aire (ABR = Aera Border Routers) : Une partie de ses interface font partie d’une aire non-backbone et d’autre font partie de l’aire backbone
– Toute aire non-Backbone doivent avoir un routeur ABR racordé à une aire Bakcbone

Configuration de base


 

 

ÉTAPE 1 : Dans un premier temps , il va falloir rentrer dans le mode de configuration d’OSPF.

Pour ce faire :

Router(config)#router ospf X               ! X = Process ID

Le numéro du process ID  n’a pas d’action sur le protocole OSPF. Il permet juste d’identifier notre « router OSPF ». Tous nos routeurs  n’ont pas forcément le même « Process ID ».

Nous nous trouvons désormais dans le mode (config-router).

 

ÉTAPE 2 : Se mettre d’accord sur un Router-ID (voir plus haut)

Cette étape  est optionnel mais ne doit surtout pas être négligé.

 

Router(config)#router ospf 1 
Router(config-router)#router-id 1.1.1.1

 

ÉTAPE 3 : Cette étape consiste à mettre l’adresse réseau des interfaces de notre routeurs dans une aire OSPF.

Router(config-router)#network 10.0.1.0 0.0.0.255 area 0
Router(config-router)#network 10.0.2.0 0.0.0.255 area 0
Router(config-router)#network 10.1.1.0 0.0.0.255 area 1
Router(config-router)#network 10.1.2.0 0.0.0.255 area 1

     Vous remarquerez que les masques sont « inversé ». Le protocole OSPF demande de mettre des masques de type « Wildcard ». (Il suffi simplement d’inversé les « 1 » en « 0 » et vis et versa.

Exemple :

255.255.255.0 = 0.0.0.255

255.255.128.0 = 0.0.127.255.

Prenons pour exemple cette architecture :

 

     A ce stade là, tous nos routeurs sont configuré uniquement avec les commandes que nous avons vu au dessus.

     Les réseaux appris par le protocole OSPF sont uniquement ce qui on tété renseigner via les commandes « Network ». Dans cette architecture, nous voulons que nos LANs 192.168.1.0/24 et 192.168.2.0 /24 communiquent entres eux. Pour ce faire, deux méthodes :

Router(config-router)#network 192.168.2.0 0.0.0.255 area 0

     Cette commande va permettre de signaler aux autres routeur membre de l’aire 0 que ce routeur sais comment joindre le réseau 192.168.2.0/24

     Le soucis c’est que dans cet architecture, la passerelle du réseau 192.168.2.0/24 est sur le routeur. Ce qui veut dire que le protocole OSPF va envoyer des packets Hello sur cette interface. Ce que nous voulons pas vu qu’ils n’y à pas de membre OSPF sur cette interface. Il va donc falloir rajouté une commande afin de signaler au routeur de ne pas considéré ce réseau comme un routeur membre de l’area OSPF.

Router(config-router)#passive-interface FastEthernet 0/0

     La deuxième méthode est de redistribuer les réseaux directement connecté à notre routeur dans notre aire OSPF.

     Si on fait un « show ip route », nous allons voir les réseaux directement connecté apparaitre avec la lettre « C » devant. Nous allons donc redistribuer tout les réseaux connecté dans notre bulle OSPF.

Router(config-router)#redistribute connected subnets

     Si vous oubliez la commande « subnets ». Seuls les réseaux de catégorie A,B et C connecté vont être redistribuer. (/8 /16 et /24)

Configuration OSPF pour IPv4


 

 

Dans cette exemple nous avons 3 aires OSPF.

Je vous ai détaillé ci dessous les commandes utilisés :

router ospf 10

Nous rentrons dans le mode de configuration d’OSPF via cette commande. le numéro 10 correspond à notre « Process ID » . Ce process ID n’à aucune importante pour le protocole OSPF

 router-id 10.10.10.1

Notre routeur OSPF va être identifié par ses voisins via cette adresse. Le routeur Id sera soit le router-id spécifié , soit l’adresse IP la plus haute de nos interface loopback ou l’adresse IP la plus haute présente sur nos interface physique.

network 192.168.1.0 0.0.0.255 area 10

Cette commande va nous permettre de déclarer ce réseau à nos voisins. elle va aussi permettre de rechercher des voisins potentiel sur ce réseau via des paquets Hello.

Ceci est l’ancienne méthode pour déclarer ce réseau dans une aire.

passive-interface FastEthernet 0/0

Cette commande permet de dire à notre routeur d’arrêter de chercher de nouveau voisins sur cette interface.

ip ospf 10 area 20

Cette commande est identique à la commande « network ». Elle se rentre au niveau de l’interface.

Ceci est la nouvelle méthode pour déclarer ce réseau dans une aire. Elle sera pris en compte avant notre network !

Dans notre exemple :

– La commande network affecte le réseau 192.168.1.0 à l’aire 10

– La commande ip ospf affecte le réseau 192.168.1.0 à l’aire 20

Le réseau 192.168.1.0 sera dans l’aire 20.

default-information originate

Cette commande permet à un routeur de se signaler comme passerelle par défaut de sa backbone ospf.

ip ospf cost 100

Coût d’une liaison = Bandwidth Référence / Bandwidth de l’interface.

La Bandwidth de référence est égale à 100 par défaut

Donc les interfaces FastEthernet et GigabitEthernet ou un coût égale à 1.

La commande ip ospf cost 100 indique que notre interface FastEthernet 0/0 aura dorénavant un coût à 100.

auto-cost reference bandwidth 1000

Coût d’une liaison = Bandwidth Référence / Bandwidth de l’interface.

La Bandwidth de référence est égale à 100 par défaut.

La commande auto-cost reference bandwidth fixe à 1000 la nouvelle référence.

Dépannage OSPF IPv4.


 

 

show ip ospf

Affiche des informations concernant notre processus OSPF.

 show ip ospf interface

Affiche des informations concernant nos interfaces représenté par nos commandes « network ». Rajouter le nom d’une de vos interface physique derrière cette commande pour avoir plus de détail la concernant.

show ip ospf neighbor

Affiche une liste successive de nos voisins. Rajouter le router-id d’un de vos voisins derrière cette commande pour avoir plus de détail le concernant

show ip ospf database

Affiche la Database OSPF

show ip route

Affiche la table de routage

clear ip ospf process

Cette commande remet à zéro notre processus OSPF. C’est comme si nous avons redémarrer notre routeur. Il va oublier ses voisins , effacer sa database et supprimer les routes OSPF qu’il avait précédemment calculé.

Rentrer plus en détail dans les commandes « Show » n’a pas grand intérêt , il faut juste savoir ou chercher l’information voulu.

Noël NICOLAS

Administrateur Réseau
10 ans d’expérience
CCNA Routing and Switching
Fondateur du site FingerInTheNet

2 thoughts on “OSPF – Fondamentaux”

  1. Bonjour ,

    Je suis occupé a étudier pour passer la certification CCNA .
    Je trouve votre site particulièrement bien fait , il m’as permis de mieux comprendre certain fonctionnement et principe .
    Domage que beaucoup de liens image ne sont plus accessible .

    Bien à vous

    1. Bonjour Francois.

      Je suis ravi que mon site vous plaise.
      Quels sont les articles possédant des liens images mort ??

      J’ai migrer d’hébergeur il n’y as pas longtemps et il y a eu pas mal de problèmes …

      Je suis vraiment désolé pour la gêne occasionné

Laisser un commentaire

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