This is an old revision of the document!
Table of Contents
réseau protocole routage IEEE
OSPF
Open Shortest Path First est un protocole de routage à état de lien non propriétaire ; c'est le protocole de routage intra-domaine (IGP) le plus utilisé de nos jours.
Théorie
- protocole de routage à état de liens standardisé par l'IEEE (RFC 2328)
- update seulement sur changement de topologie
- updates périodiques toutes les 30 min
- utilisation d'IP multicast pour dialoguer : 224.0.0.5 pour les routeurs et 224.0.0.6 pour les DR/BDR
- basé sur l'algorithme de Dijkstra (SPF) qui permet de transformer la table de topologie en table de routage
- comme en EIGRP, 3 tables : la table des voisins, la table de topologie et la table de routage qui en découle.
- notion d'aire OSPF = sectorisation qui permet d'alléger les tables de routage en agrégeant les routes ; toutes les aires (regular area ou aire ordinaire) sont reliées à l'aire 0 (aire backbone ou aire de transit) par leur ABR (routeur de bordure). Chaque flux entre 2 aires passe forcément par l'aire 0. Chaque routeur ne communique qu'avec des routeurs de la même aire que lui (sauf si c'est un ABR).
- découverte du voisinage par l'échange de paquets Hello ; si les conditions sont requises, 2 voisins deviennent adjacents et peuvent ainsi échanger leurs tables de routage
- la métrique (le coût) OSPF est basé sur la bande passante (BW) du lien inter-routeur (= 108 ÷ BW)
- le protocole OSPF est encapsulé dans un paquet IP, mais le protocole OSPF inclut des paquets de type ACK qui permettent d'acquitter la réception de message
Terminologie
- PDU Protocol Data Units ; les LSAs sont des PDUs
- LSA Link-State Advertisement qui sont envoyer à tous les routeurs de l'aire
- LSU Link-State Update
- LSDB Link-State DataBase qui sont identiques sur tous les routeurs de l'aire
- DR Designated Router
- BDR Backup Designated Router
- ABR Area Border Router
- ABDR Autonomous Sytem Boundary Router = tout routeur qui redistribue des routes
- SPF Shortest Path First
- stub area aire “impasse”, qui ne reçoit pas de LSA type 5
- totally stubby area est une stub area qui ne reçoit pas non plus les LSAs de type 3
- NSSA ou Not So Stubby Area est une stub area qui annonce un réseau externe
BR, BDR et relations d'adjacence
Une relation d'adjacence permet l'échange d'informations de routage entre 2 routeurs voisins ; cela ne peut se faire que si ceux-ci ont les 4 paramètres suivants en commun :
- les intervalles Hello et dead time
- le numéro d'aire
- l'authentification mutuelle (= le même password par exemple)
- le flag stub area qui identifie une stub area càd une aire “impasse” (cf plus haut)
Selon le type de lien qui relie 2 routeurs, l'OSPF va monter différents types d'ajacence :
- avec les liens point-à-point comme du HDLC : adjacence complète (full adjacency)
- avec des liens LAN comme Ethernet, OSPF procède à l'élection d'un DR et d'un BDR par segment ; ceux-ci centralisent les échanges (un peu à la manière d'un root brige avec le protocol Spanning-Tree) et les retransmettent aux autres routeurs (DROTHERs). Cela permet de limiter les flux inter-routeur.
Il y a autant de DR dans une aire que de réseau multi-access.
Mise en place basique
Les best pratices recommandent d'utiliser une loopback pour faire de l'OSPF, car cette interface locale est toujours up. On s'en servira comme identifiant du routeur dans l'OSPF.
R1(config)interface loopback 0 R1(config-if)description Lo0 pour OSPF R1(config-if)ip address 192.168.0.23 255.255.255.255
Pour activer le routage : on créer une instance OSPF (ici le processus 111 qui est un ID local), et on spécifie l'identifiant OSPF du routeur (NB : ce n'est pas forcément une adresse IP du routeur, on peut mettre une valeur aléatoire sur 32bits ; cependant il est préférable d'utiliser l'IP de la loopback du routeur) :
R1(config)#router ospf 111 R1(config-router)#router-id 192.168.0.23
Puis on annonce les réseaux connus, avec la syntaxe network <adresse du réseau> <masque inversé (wildcard)> area <numéro de l'aire>
. Cette commande :
- va activer l'OSPF sur la ou les interfaces qui matchent
- va annoncer dans l'OSPF les réseaux des interfaces qui matchent, avec les masques définis sur ces interfaces.
Ce dernier point signifie que si on a network 10.0.0.1 0.0.0.0 area 0
(/32) et une interface en ip address 10.0.0.1 255.255.255.0
(donc un /24), c'est bien le réseau 10.0.0.0 /24 qui va être annoncé. C'est pour ne pas confondre cela qu'il est souvent conseiller de déclarer dans l'OSPF les interfaces de routage (en /32, comme l'exemple que je viens de donner) et non les réseaux.
On annonce la loopback 0 ainsi que les réseaux connus que l'on veut injecter dans l'OSPF.
R1(config-router)#network 192.168.0.23 0.0.0.0 area 0 R1(config-router)#network 192.168.1.0 0.0.0.255 area 0
Si l'interface de routage du réseau 192.168.1.0/24 est le .254, la dernière lignes peut également s'écrire ainsi :
R1(config-router)#network 192.168.1.254 0.0.0.0 area 0
Le routeur Cisco va automatiquement détecter l'interface reliée à ce réseau et activer le routage OSPF dessus.
area 0
c'est l'aire backbone (dorsale). En effet, afin d'éviter de propager la totalité de la base de données des liens, l'OSPF permet de sectoriser un réseau en différentes aires (~domaines). Les routeurs à la frontière des aires sont appelés Area Border Router (ABR).
Une autre méthode alternative pour déclarer le réseau 192.168.1.0/24 consiste à activer explicitement l'OSPF sur son interface de routage :
R1(config-if)#ip ospf 111 area 0
Configuration avancée
Authentification
Sur l'interface voulue participant à l'OSPF :
int gi0/0 ip ospf authentication ip ospf authentication-key san-fran
Cela va sans dire qu'il vaut mieux que le routeur d'en face ait les mêmes paramètres pour que ça marche bien.
Passive interface
Pour désactiver l'OSPF sur une interface de routage, on utilise la commande passive-interface
:
router ospf 111 passive-interface se0/0/0
Cette interface ne participera plus à l'OSPF, mais son réseau continuera d'être annoncé/routé (s'il y a bien la ligne network <réseau> etc..
)
agrégation de routes
Ne peut se faire que sur les ABR :
R1(config-router)#area 1 range 10.1.0.0 255.255.0.0
Ici on aggrège pour n'annoncer qu'un réseau en /16.
stub area
Doit se configurer sur chaque routeur de l'aire (ici l'aire 3) :
R1(config-router)#area 3 stub
Cela provoque l'apparition d'une route par défaut :
sh ip route [..] O*IA 0.0.0.0/0 [110/2] via 10.3.2.2, 00:01:23, FastEthernet0/0
totally stubby area
Ne se configure que sur l'ABR de l'aire.
R1(config-router)#area 3 stub no-summary
virtual-link
Pour connecter une aire à l'aire 0 via une autre aire, on créé un lien virtuel (tunnel) entre l'ABR de l'aire “distante” et l'ABR de l'aire contigüe à l'aire 0. Le vlink se déclare sur les 2 routeurs d'extrémité en pointant vers le routeur-id d'en face :
Dans l'exemple suivant
- R1 (id=192.168.0.2) est l'ABR situé entre l'aire 33 (qui veut se connecter à l'aire 0) et l'aire 3 (connecté à l'aire 0)
- R2 (id=192.168.0.1) est l'ABR situé entre l'aire 0 et l'aire 3.
L'aire 3 ne doit pas être une stub-area.
R1(router-config)#area 3 virtual-link 192.168.0.2 R1(router-config)#network 10.0.10.0 0.0.0.255 area 33
R2(router-config)#area 3 virtual-link 192.168.0.1
Vérifs avec sh ip ospf virtual-links
.
Vérification
debug ip ospf adj debug ip ospf events
(Pour désactiver le debugging : undebug all
)
sh ip ospf interface sh ip ospf neighbor sh ip protocols sh ip route ospf