OSPFv3 est la déclinaison du protocole OSPF pour les réseaux IPv6, d’ailleurs, il reprend beaucoup de caractéristiques de son grand frère OSPFv2 conçu uniquement pour les réseaux IPv4, en effet :

  • OSPFv3 est aussi un protocole de routage à état de liens (Link State Protocol) et s’appuie sur une base locale LSDB pour le calcul du meilleur chemin de routage (Dijkstra algorithme).
  • OSPFv3 implémente aussi les mêmes mécanismes pour échanger les LSA (Link State Advertisements) ainsi que l’établissement et la maintenance des sessions de voisinage (paramètres area, hello-interval, dead-interval, authentification, MTU, Network-type, Stub-Flags).
  • OSPFv3 s’appuie aussi dans son fonctionnement sur deux niveaux de hiérarchie : une aire centrale (aire backbone 0) et des aires périphériques : L’aire 0 est autonome dans son fonctionnement et centralise toutes les informations de routage, les aires périphériques doivent être connectés sur l’aire 0 pour recevoir les routes en provenance des autres aires. (à noter que cette hiérarchie par aire permet de fournir nativement un mécanisme anti-boucle du routage).
OSPF – Hiérarchie avec les aires

Cependant, un point différenciateur important existe dans OSPFv3 : contrairement à l’OSPFv2, les informations de topologie « topology » et d’accessibilité « reachability » sont séparées dans différents LSA.
Pour bien visualiser cette différence, commençons d’abords par quelques définitions, ensuite nous allons faire un petit Lab pour mieux comprendre.

  • Une information de topologie permet aux routeurs de construire la topologie entière du réseau, elle contient la liste des routeurs, les types d’interfaces (Broadcast, NBMA,P2P et P2MP), les liens qui connectent les routeurs ainsi que leur coût. Avec ces informations, chaque routeur est capable de savoir que par exemple le routeur 1 est connecté avec le routeur 2 à travers une liaison point à point et un métrique (cost) égale à 10, il pourra ensuite exécuter l’algorithme SPF pour calculer les meilleurs chemin (best paths).
  • Une information d’accessibilité permet de visualiser l’adressage et les préfixes implémentés dans l’architecture : exemple le routeur 1 connecte l’adressage 10.10.10.0/24 et utilise l’adresse IP 10.10.10.1 dans ce segment.

Cette séparation permet  aussi de rapprocher OSPFv3 dans son fonctionnement du protocole IS-IS qui implémente nativement cette séparation avec les champs TLV, ce qui permet d’apporter plus de stabilité et de fiabilité dans l’architecture réseau que je vais détailler dans la suite.

La séparation des informations de topologie et d’accessibilité est réalisée dans le protocole OSPFv3 par l’introduction de nouveaux LSA :

  • LSA Type 8 : Link LSA
  • LSA Type 9 : Intra-Area Prefix LSA

Le premier avantage immédiat de cette séparation en OSPFv3 est qu’en cas d’évènement réseau (exemple nouvelle interface loopback, désactivation interface cliente, ..) qui n’introduit aucun changement de la topologie du réseau, alors les routeurs qui composent cette topologie n’auront pas à exécuter un SFP complet (Full SPF RUN) pour calculer tous les meilleurs chemins réseaux et ensuite les installer dans la FIB.

Ceci permet de conserver les ressources CPU limitées des équipements et d’apporter surtout plus de stabilité et de fiabilité de l’architecture dans sa globalité.
Imaginons que vous avez un backbone MPLS composé de 500 routeurs et déployé sur toute la France, l’underlay utilisé pour ce backbone est l’OSPFv2 en mono-area 0, dans la configuration par défaut, si on ajoute une interface loopback ou une interface cliente dans l’OSPFv2 sur un des routeurs alors les 499 autres routeurs restants vont tous exécuter l’algorithme SPF RUN pour le calcul du meilleur chemin, ce calcul est inutile et consomme les ressources des routeurs car la topologie du réseau n’a pas changé.

Pour mieux illustrer les différences entre OSPFv2 et OSPFv3, nous allons exécuter un petit Lab en IPv4 et IPv6, prenons le cas de deux routeurs (R1 et R2) connectés en OSPF en point à point :

LAB OSPFv2

La configuration OSPFv2 est assez simple et basique:

R1 :
interface FastEthernet0/0
 ip address 10.10.12.1 255.255.255.0
 ip ospf network point-to-point
 ip ospf 1 area 0
!
router ospf 1
 router-id 1.1.1.1

R2 :
interface FastEthernet0/0
 ip address 10.10.12.2 255.255.255.0
 ip ospf network point-to-point
 ip ospf 1 area 0
!
router ospf 1
 router-id 2.2.2.2

En OSPFv2, les informations de topologie et d’accessibilité sont mélangés au sein du LSA Type 1 (Router Link State) comme on peut le constater dans le contenu de la database OSPF (LSDB) :

R1#sh ip ospf database router 1.1.1.1    
            OSPF Router with ID (1.1.1.1) (Process ID 1)
                Router Link States (Area 0)

  LS age: 380
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 1.1.1.1
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000002
  Checksum: 0x765A
  Length: 48
  Number of Links: 2

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 10.10.12.1
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.10.12.0
     (Link Data) Network Mask: 255.255.255.0
      Number of MTID metrics: 0
       TOS 0 Metrics: 

Maintenant, si on déclare une nouvelle interface cliente (exemple une loopback) sur un des routeurs, aucun changement topologique (best path) ne sera observé sur l’architecture cependant les routeurs vont quand même exécuter inutilement un calcul complet du chemin le plus court ce qui consommera inutilement les ressources CPU :

R1 :
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf 1 area 0
!

Un debug OSPF sur le routeur R2 permet de constater qu’il execute le SPF Run complet (de 8 ms) suite à l’ajout de l’interface loopback0 ainsi qu’une mise à jour de la table de routage (FIB)

2R :
*Dec 30 16:09:04.062: OSPF-1 SPF : Detect change in LSA type 1, LSID 1.1.1.1 from 1.1.1.1 area 0
*Dec 30 16:09:04.062: OSPF-1 MON : Schedule Full SPF in area 0, change in LSID 1.1.1.1, LSA type R
*Dec 30 16:09:04.062: OSPF-1 MON : reset throttling to 5000ms next wait-interval 10000ms
*Dec 30 16:09:09.066: OSPF-1 INTRA: Running SPF for area 0, SPF-type Full
*Dec 30 16:09:09.066: OSPF-1 INTRA: Initializing to run spf
*Dec 30 16:09:09.066: OSPF-1 INTRA: spf_intra() - rebuilding the tree
*Dec 30 16:09:09.066: OSPF-1 INTRA: It is a router LSA 2.2.2.2. Link Count 2
*Dec 30 16:09:09.066: OSPF-1 INTRA: Processing link 0, id 1.1.1.1, link data 10.10.12.2, type 1
*Dec 30 16:09:09.066: OSPF-1 SPF : Add better path to LSA ID 1.1.1.1, gateway 10.10.12.1, dist 1
*Dec 30 16:09:09.066: OSPF-1 INTRA: Putting LSA on the clist LSID 1.1.1.1, Type 1, Adv Rtr. 1.1.1.1
*Dec 30 16:09:09.066: OSPF-1 SPF : Add path: next-hop 10.10.12.1, interface FastEthernet0/0
*Dec 30 16:09:09.066: OSPF-1 INTRA: Processing link 1, id 10.10.12.0, link data 255.255.255.0, type 3
*Dec 30 16:09:09.066: OSPF-1 SPF : Add better path to LSA ID 10.10.12.255, gateway 10.10.12.0, dist 1
*Dec 30 16:09:09.066: OSPF-1 SPF : Add path: next-hop 10.10.12.2, interface FastEthernet0/0
*Dec 30 16:09:09.066: OSPF-1 INTRA: Downheap LSA ID 1.1.1.1, Type 1, Adv 1.1.1.1 on clist from index 1 to 1
*Dec 30 16:09:09.066: OSPF-1 INTRA: It is a router LSA 1.1.1.1. Link Count 3
*Dec 30 16:09:09.066: OSPF-1 INTRA: Processing link 0, id 1.1.1.1, link data 255.255.255.255, type 3
*Dec 30 16:09:09.066: OSPF-1 SPF : Add better path to LSA ID 1.1.1.1, gateway 1.1.1.1, dist 2
*Dec 30 16:09:09.066: OSPF-1 SPF : Add path: next-hop 10.10.12.1, interface FastEthernet0/0
*Dec 30 16:09:09.066: OSPF-1 INTRA: Processing link 1, id 2.2.2.2, link data 10.10.12.1, type 1
*Dec 30 16:09:09.066: OSPF-1 INTRA: Ignore newdist 2 olddist 0
*Dec 30 16:09:09.066: OSPF-1 INTRA: Processing link 2, id 10.10.12.0, link data 255.255.255.0, type 3
*Dec 30 16:09:09.066: OSPF-1 SPF : Add better path to LSA ID 10.10.12.255, gateway 10.10.12.0, dist 2
*Dec 30 16:09:09.066: OSPF-1 SPF : Add path: next-hop 10.10.12.1, interface FastEthernet0/0
*Dec 30 16:09:09.066: OSPF-1 INTRA: Adding Stub nets
*Dec 30 16:09:09.066: OSPF-1 INTRA: Route update succeeded for 1.1.1.1/255.255.255.255, metric 2, Next Hop: FastEthernet0/0/10.10.12.1 area 0
*Dec 30 16:09:09.070: OSPF-1 INTRA: Route update succeeded for 10.10.12.0/255.255.255.0, metric 1, Next Hop: FastEthernet0/0/10.10.12.2 area 0

R2#show ip ospf statistics detail 
            OSPF Router with ID (2.2.2.2) (Process ID 1)

  Area 0: SPF algorithm executed 2 times
<snip>

SPF 2 executed 00:04:43 ago, SPF type Full
  SPF calculation time (in msec):
  SPT    Intra  D-Intr Summ   D-Summ Ext7   D-Ext7 Total
  0      4      0      0      4      0      0      8
  LSIDs processed R:2 N:0 Stub:3 SN:0 SA:0 X7:0
  Change record 0x0
  LSIDs changed 1
  Changed LSAs. Recorded is LS ID and LS type:
  1.1.1.1(R)

Cette nouvelle interface (Loopback0) est ainsi insérée dans la LSDB en LSA-1 « Router Link States » :

R1#show ip ospf database router 1.1.1.1
            OSPF Router with ID (1.1.1.1) (Process ID 1)
                Router Link States (Area 0)
  LS age: 1676
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 1.1.1.1
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000003
  Checksum: 0xAB0F
  Length: 60
  Number of Links: 3

Link connected to: a Stub Network
(Link ID) Network/subnet number: 1.1.1.1
(Link Data) Network Mask: 255.255.255.255
Number of MTID metrics: 0
TOS 0 Metrics: 1

Link connected to: another Router (point-to-point)
(Link ID) Neighboring Router ID: 2.2.2.2
(Link Data) Router Interface address: 10.10.12.1
Number of MTID metrics: 0
TOS 0 Metrics: 1

Link connected to: a Stub Network
(Link ID) Network/subnet number: 10.10.12.0
(Link Data) Network Mask: 255.255.255.0
Number of MTID metrics: 0
TOS 0 Metrics: 1

Par conséquent, pour des topologies OSPF plus complexes constituées de plusieurs centaines de routeurs et avec un nombre important de préfixes à gérer (exemple opérateur ou grande entreprise), l’exécution complète du SFP sera très intensive en ressources CPU et pourra impacter dans certains cas le fonctionnement de certains routeurs entrée de gamme disposant de ressources materielles limitées.

Pour des raisons historiques, ce fonctionnement par défaut du protocole OSPFv2 n’est pas optimale et s’avére très consommateur en ressources CPU, OSPFv3 permet de corriger ce point de faiblesse par la séparation des informations de topologie de d’accessibilité avec l’introduction des LSA Type 8 et 9 .
Nous allons maintenant refaire le même Lab mais avec un adressage en IPv6 only :

LAB OSPFv3

Comme en OSPFv2, la configuration OSPFv3 est assez basique et simple :

R1 :
ipv6 unicast-routing
!
interface FastEthernet0/0
 no ip address
 ipv6 enable
 ipv6 ospf 1 area 0
 ipv6 ospf network point-to-point
!
router ospfv3 1
 router-id 1.1.1.1

R2 :
ipv6 unicast-routing
!
interface FastEthernet0/0
 no ip address
 ipv6 enable
 ipv6 ospf 1 area 0
 ipv6 ospf network point-to-point
!
router ospfv3 1
 router-id 2.2.2.2
!

L’adressage IPv6 Link Local par défaut qui permet de configurer automatiquement les interfaces (à partir de leur adresse MAC) permet de simplifier la configuration du protocole OSPFv3, en effet, il n’est plus nécessaire de définir statiquement une adresse IP pour établir la session OSPF, ce qui est très pratique pour les architectures réseaux disposant de plusieurs liens d’interconnexions en point à point (exemple Leaf & Spines en DC) :

R1#show ipv6 interface fastEtherne0/0
FastEthernet0/0 is up, line protocol is up
  IPv6 is enabled, link-local address is FE80::C801:5CFF:FE16:8

Comme on peut le constater, la session OSPF est établie entre les deux sans avoir à définir statiquement aucune adresse IP sur les interfaces :

R2#show ipv6 ospf neighbor 
            OSPFv3 Router with ID (2.2.2.2) (Process ID 1)
Neighbor ID     Pri   State           Dead Time   Interface ID    Interface
1.1.1.1           0   FULL/  -        00:00:33    2               FastEthernet0/0C

Dans cette configuration, le contenu de la LSDB indique déja une séparation entre les informations de topologie (LSA-1) et d’accéssibilité LSA-8 « Link (Type-8) Link States » :

R1#show ipv6 ospf database 
            OSPFv3 Router with ID (1.1.1.1) (Process ID 1)
                Router Link States (Area 0)
ADV Router       Age         Seq#        Fragment ID  Link count  Bits
 1.1.1.1         430         0x80000002  0            1           None
 2.2.2.2         431         0x80000001  0            1           None

                Link (Type-8) Link States (Area 0)
ADV Router       Age         Seq#        Link ID    Interface
 1.1.1.1         445         0x80000001  2          Fa0/0
 2.2.2.2         431         0x80000001  2          Fa0/0

Les informations de topologie (routeurs voisins, point-to-point, metric, ..) sont toujours renseignés dans les LSA Type 1 (Routeur Link States) :

R1#show ipv6 ospf database router adv-router 1.1.1.1
            OSPFv3 Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)
  LS age: 586
  Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
  LS Type: Router Links
  Link State ID: 0
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000002
  Checksum: 0xE40A
  Length: 40
  Number of Links: 1

    Link connected to: another Router (point-to-point)
      Link Metric: 1
      Local Interface ID: 2
      Neighbor Interface ID: 2
      Neighbor Router ID: 2.2.2.2

Cependant, les informations d’accessibilité (adressage, préfixes) sont maintenant dissociées et renseignés dans un nouveau LSA Type 8 réservé pour l’adressage en Link Local (FE80 ::/10) qui sera utilisé uniquement par les routeurs d’un même segment (Link) :

R1#show ipv6 ospf database link adv-router 1.1.1.1
            OSPFv3 Router with ID (1.1.1.1) (Process ID 1)

                Link (Type-8) Link States (Area 0)
  LS age: 758
  Options: (V6-Bit, E-Bit, R-bit, DC-Bit)
  LS Type: Link-LSA (Interface: FastEthernet0/0)
  Link State ID: 2 (Interface ID)
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000001
  Checksum: 0xB19B
  Length: 44
  Router Priority: 1
  Link Local Address: FE80::C801:5CFF:FE16:8
  Number of Prefixes: 0

Si on déclare une nouvelle interface loopback sur un des routeurs et qui n’implique donc aucun changement topologique de l’architecture :

R1 :
interface Loopback0
 ipv6 address 2001:1:1:1::1/128
 ipv6 ospf 1 area 0

Un debug OSPF sur le routeur R2 permet de confirmer qu’il exécute en 4 ms un SPF Partiel moins consommateur en ressources CPU.

R2#
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA: Running SPF for area 0, cause P
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA: Intra-Area SPF (Prefix), Area 0
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA: Process Prefix LSAs
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA:   Router 1.1.1.1/0, 1 prefix, ref 1.1.1.1/0 type 2001
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA:     install 2001:1:1:1::1/128 metric 1
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA:       adding path FastEthernet0/0/FE80::C801:5CFF:FE16:8
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA: Adding deferred prefixes, area 0
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 INTRA:     prefix 2001:1:1:1::1/128
*Dec 30 17:05:10.826: OSPFv3-1-IPv6 SPF  : Add Intra route to 2001:1:1:1::1/128 via FastEthernet0/0 FE80::C801:5CFF:FE16:8 succeeded
R2#show ipv6 ospf statistic detail 
            OSPFv3 Router with ID (2.2.2.2) (Process ID 1)
  Area 0: SPF algorithm executed 1 times
SPF 4 executed 00:00:32 ago, SPF type Incremental
  SPF calculation time (in msec):
  SPT    Prefix D-Int  Sum    D-Sum  Ext    D-Ext  Total
  0      4      0      0      0      0      0      4
  RIB manipulation time (in msec):
  RIB Update    RIB Delete
  0             0             
  LSIDs processed R:0 N:0 Prefix:1 SN:0 SA:0 X7:0
  Change record P
  LSAs changed 1
  Changed LSAs. Recorded is Advertising Router, LSID and LS type:
  1.1.1.1/0(P)

Par ailleurs, cette nouvelle interface (Loopback0) est insérée dans la LSDB en LSA-9 « Intra Area Prefix Link States » :

R2#show ipv6 ospf database prefix adv-router 1.1.1.1
            OSPFv3 Router with ID (2.2.2.2) (Process ID 1)
                Intra Area Prefix Link States (Area 0)

  Routing Bit Set on this LSA
  LS age: 228
  LS Type: Intra-Area-Prefix-LSA
  Link State ID: 0
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000001
  Checksum: 0xCA84
  Length: 52
  Referenced LSA Type: 2001
  Referenced Link State ID: 0
  Referenced Advertising Router: 1.1.1.1
  Number of Prefixes: 1
  Prefix Address: 2001:1:1:1::1
  Prefix Length: 128, Options: LA, Metric: 0

Ainsi, en OSPFv3, comme on peut le constater, le calcul complet de tous les meilleurs chemins (SPF Run Best Path) n’est pas exécuté si la topologie réseau ne change pas, ce fonctionnement permet d’apporter plus de fiabilité et de stabilité aux architectures réseaux.

Conclusion :

Bien que le protocole OSPFv3 partage beaucoup de choses avec le protocole OSPFv2, OSPFv3 se rapproche dans son fonctionnement du protocole IS-IS par la séparation dans la LSDB des informations de topologie et d’accessibilité, ce point permet d’améliorer le fonctionnement du protocole OSPF et de soulager la CPU des routeurs qui n’ont plus besoin d’exécuter un calcul complet de tous les chemins pour un changement mineur n’impliquant pas de changement de la topologie du réseau (exemple ajout ou suppression d’une interface loopback).

Certains constructeurs comme Cisco proposent iSPF (incremental SPF) qui permet d’exécuter un Full SPF uniquement en cas de changement topologique, cependant, aucun standard ne décrit cette fonctionnalité et elle n’est pas présente sur toutes les plateformes et chez tous les constructeurs.

Autre point important est qu’aujourd’hui la technologie a beaucoup évolué et les ressources matérielles (CPU/Mémoire) sur les équipements réseaux leur permettent de traiter facilement plusieurs opérations à la seconde, donc certains pourront argumenter qu’exécuter plusieurs fois un SFP Run n’est plus vraiment un problème pour une grande majorité d’équipements de nouvelle génération (ce qui est vrai), cependant, en tant qu’architecture réseau, il faut toujours penser à simplifier, optimiser et fiabiliser au maximum les opérations au sein des architectures réseaux.

Enfin, OSPFv3 prend aussi en charge l’adressage IPv4 par l’implémentation du concept des Adresses Family (AF), il est ainsi possible de couvrir les deux besoins (IPv4/IPv6) par un seul protocole OSPFv3 et donc consommer moins de ressources sur les équipements.

Comme d’habitude, Il ne faut pas oublier qu’en terme de design dans le réseau, il est souvent question de compromis (trade-offs), on peut améliorer un point au risque de pénaliser un autre (ex exploitation), dans certains cas, le déploiement d’OSPFv3 peut être compliqué pour plusieurs raisons (compatibilité materielle, mise à jour logicielle, maturité, outillage adequât, formation, coût, ..) ce qui pousse au final à rester en OSPFv2 en attendant une opportunité de remplacement (network refresh), c’est pour cette raison que le choix de la meilleure option va surtout dépendre du contexte ainsi que des contraintes associées (budget, exploitation, outillage, ..)

J’espère qu’avec cet article, vous savez mieux maintenant comment différencier entre les protocoles OSPFv2 et OSPFv3 et aussi lequel sélectionner dans vos choix de conception.

Si vous avez des questions, n’hésitez pas à me laisser un message en commentaire de la page ou nous contacter à l’adresse : contact@mhd-experts.com.

Author

Hicham est un architecte réseau avec plus de 22 ans d’expérience dans le domaine des réseaux et essentiellement sur les environnements Cisco, il dispose d’un diplôme d’ingénieur d’état dans le domaine des Réseaux et Télécoms et aussi de quatre certifications CCIE dans les domaines (Routing & Switching, Security, Service Provider et Datacenter). Durant son expérience, Hicham est intervenu sur des projets importants et complexes chez les opérateurs ainsi que les grandes entreprises sur différents domaines (LAN, WAN, DATACENTER), il réalise souvent des audits sur des architectures complexes pour les optimiser ainsi que des formations auprès de ses clients afin de démystifier les technologies pour une meilleure compréhension et simplification de l’exploitation au quotidien. Hicham est contributeur du blog MHD Experts et joignable à l’adresse : hicham.tahri@mhd-experts.com

Write A Comment