Le protocole OSPF permet de définir le meilleur chemin en ayant connaissance de la topologie complète, comme un système GPS qui recherche le plus court chemin à partir de la cartographie complète. Seulement voilà, la première étape consiste à réunir toutes les informations topologiques. Pour cela, chaque routeur génère ses informations topologiques (« à quels réseaux suis-je raccordé ») et ces informations sont diffusées vers les autres noeuds du réseau OSPF. Les informations topologiques s’appellent des LSAs (Link State Advertisements) et sont détaillées dans cet article à l’attention du candidat à la certification Cisco CCNA.
Dans cet article, nous allons nous limiter aux deux premiers types de LSA que l’on peut retrouver sur un réseau OSPF:
- Router LSA,
- Network LSA.
Router LSA
On parle de Router-LSA (ou LSA de type 1) pour désigner les informations de topologie générées par chacun des routeurs du réseau. En effet, dans un LSA de type 1, le routeur précise les réseaux auxquels il accède (les réseaux directement connectés). Toutes les interfaces du routeur pour lesquelles le protocole OSPF est activé sont considérées comme des liens (link). Dans un Router-LSA, le routeur décrit donc à la fois les réseaux et les routeurs qui lui sont voisins avec, à chaque fois, le coût OSPF associé.
Il faut noter que ces LSA sont échangés et diffusés entre tous les routeurs d’une même aire OSPF. D’ailleurs, tous les routeurs d’une même aire OSPF disposent des mêmes informations topologiques.
Network LSA
On parle de Network-LSA ou de LSA de type 2 pour désigner les informations générées par le Designated Router (DR) du réseau local. Ce type de LSA vise à simplifier le graphe (ou la topologie) OSPF dans le cas des réseaux de type broadcast lorsque plusieurs routeurs accèdent à ce réseau.
D’un point de vue de la topologie, le DR joue le rôle d’un routeur virtuel qui serait à la place de l’infrastructure de broadcast. Ainsi, en connaissant le coût pour atteindre le DR, les autres routeurs savent qu’ils peuvent atteindre les autres routeurs qui sont sur ce réseau (avec le même coût que pour atteindre le DR). Cela évite d’avoir des informations redondantes dans la base de données topologiques.
Le noeud « NET » n’existe pas réellement, mais le DR génère un LSA à la place de ce noeud virtuel pour décrire tous les routeurs raccordés sur le réseau. Ainsi, dans leur LSA de type 1, les routeurs R1 à R5 indiquent qu’ils sont adjacents avec le DR ; et le DR, lui, indique dans le LSA de type 2 tous les routeurs présents sur le réseau: bien plus simple et moins d’informations redondantes !
Comme les LSA de type 1, ces LSA sont diffusés vers tous les routeurs de la même aire OSPF.
Exemple Pratique
Toutes ces notions sont très abstraites, je peux le comprendre. Je vais essayer d’illustrer cela par un exemple concret. Pour cela, reprenons notre topologie OSPF déjà utilisée dans les précédents articles pour OSPF:
Dans un premier temps, je désactive les interfaces FastEthernet pour pouvoir traiter le cas des seuls liens séries.
Base de données OSPF & Liens Séries
Je ne m’intéresse donc qu’aux seuls routeurs R1, R2 et R3.
Je vais simplifier l’architecture en n’attribuant pas d’adresse IP sur les interfaces séries:
interface Serial2/0 ip unnumbered Loopback0 ip ospf 1 area 0 end
Dans cette configuration, je vérifie que chaque routeur est bien adjacent avec les deux autres routeurs:
R1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 0 FULL/ - 00:00:37 2.2.2.2 Serial2/1 3.3.3.3 0 FULL/ - 00:00:34 3.3.3.3 Serial2/0 R1#
Donc, R1 est bien adjacent avec R2 (2.2.2.2) et R3 (3.3.3.3).
Regardons désormais la base de données topologique:
R1#show ip ospf database OSPF Router with ID (1.1.1.1) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 796 0x80000004 0x002058 2 2.2.2.2 2.2.2.2 791 0x8000000C 0x004D1F 2 3.3.3.3 3.3.3.3 787 0x8000000C 0x000365 2
R2#show ip ospf database OSPF Router with ID (2.2.2.2) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 797 0x80000004 0x002058 2 2.2.2.2 2.2.2.2 790 0x8000000C 0x004D1F 2 3.3.3.3 3.3.3.3 787 0x8000000C 0x000365 2
R3#show ip ospf database OSPF Router with ID (3.3.3.3) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 796 0x80000004 0x002058 2 2.2.2.2 2.2.2.2 791 0x8000000C 0x004D1F 2 3.3.3.3 3.3.3.3 786 0x8000000C 0x000365 2
Les bases de données topologiques sont identiques (seul le champ âge peut être différent d’un router à l’autre). Il n’y a que des LSA de type 1 (notez l’indication Router Link States dans le retour de la commande show).
On remarque bien que chaque routeur génère les informations topologiques (2 liens par routeur dans la colonne Link Count). Quels sont les liens annoncés par un routeur ? On peut pour cela utiliser la commande show ip ospf datables router x.x.x.x comme ici:
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: 1162 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: 80000004 Checksum: 0x2058 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: 0.0.0.8 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 3.3.3.3 (Link Data) Router Interface address: 0.0.0.7 Number of TOS metrics: 0 TOS 0 Metrics: 64 R1#
Le routeur R1 indique bien qu’il dispose de liens point-à-point vers les autres routeurs (métrique = 64). Notez que la valeur indiquée pour l’adresse IP n’est pas une adresse IP autorisée…
On voit ici donc très clairement que seuls les liens entre routeurs sont décrits dans le LSA de type 1. Maintenant, nous allons affecter une adresse IP aux interfaces séries. Il faut que le routeur annonce le lien direct entre les routeurs mais désormais il y a un réseau accessible qui doit être connu des autres routeurs. Voyons comment les informations sont échangées entre les routeurs.
R3#show ip ospf database OSPF Router with ID (3.3.3.3) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 8 0x80000008 0x00E8C1 4 2.2.2.2 2.2.2.2 18 0x80000010 0x00EEAB 4 3.3.3.3 3.3.3.3 7 0x80000010 0x00761C 4
On remarque que le nombre de liens est multiplié par deux. Regardons cela de plus près:
R3#show ip ospf database router 1.1.1.1 OSPF Router with ID (3.3.3.3) (Process ID 1) Router Link States (Area 0) LS age: 576 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: 80000008 Checksum: 0xE8C1 Length: 72 Number of Links: 4 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 2.2.2.2 (Link Data) Router Interface address: 10.1.2.1 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 10.1.2.0 (Link Data) Network Mask: 255.255.255.0 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 3.3.3.3 (Link Data) Router Interface address: 10.1.3.1 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 10.1.3.0 (Link Data) Network Mask: 255.255.255.0 Number of TOS metrics: 0 TOS 0 Metrics: 64 R3#
On constate que l’adresse IP de l’interface est une valeur valide (c’est d’ailleurs celle que j’ai configuré, rien d’étonnant). Par contre, il apparait des réseaux de type « stub » pour indiquer que le routeur R1 (ici, on observe la base de données topologique générée par R1 – depuis le routeur R3) accède aux réseaux 10.1.3.0/24 et 10.1.2.0/24 qui sont les réseaux IP associés aux interfaces séries. C’est exactement le comportement attendu tel qu’il est décrit dans le RFC 2328 (OSPF version 2). On voit d’ailleurs qu’il existe une piste d’optimisation des bases de données OSPF en n’utilisant pas d’adresse IP sur les ports série.
Base de données OSPF & Réseau Ethernet
Pour observer la description topologique faite par les routeurs, nous allons activer les ports Fast Ethernet. Puis vérifier que les 6 routeurs sont voisins sur le réseau Ethernet:
R1#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 1 2WAY/DROTHER 00:00:33 10.10.123.2 FastEthernet0/0 3.3.3.3 1 2WAY/DROTHER 00:00:33 10.10.123.3 FastEthernet0/0 6.6.6.6 1 2WAY/DROTHER 00:00:37 10.10.123.6 FastEthernet0/0 10.10.123.4 1 FULL/BDR 00:00:37 10.10.123.4 FastEthernet0/0 10.10.123.5 1 FULL/DR 00:00:37 10.10.123.5 FastEthernet0/0 2.2.2.2 0 FULL/ - 00:00:37 10.1.2.2 Serial2/1 3.3.3.3 0 FULL/ - 00:00:36 10.1.3.3 Serial2/0
Effectivement, R1 est bien voisin avec les routeurs R2 (2.2.2.2), R3 (3.3.3.3), R6 (6.6.6.6), R4 (10.10.123.4) et R5 (10.10.123.5). Notons au passage que le choix d’un router-ID explicite est tout de même plus simple pour le travail de diagnostic !
L’adjacence totale est assurée avec le DR (R5) et le BDR (R4). Voyons les informations supplémentaires que l’on retrouve dans la base de données de R1:
R1#show ip ospf database router self-originate OSPF Router with ID (1.1.1.1) (Process ID 1) Router Link States (Area 0) LS age: 251 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: 8000000A Checksum: 0x303A Length: 84 Number of Links: 5 Link connected to: a Transit Network (Link ID) Designated Router address: 10.10.123.5 (Link Data) Router Interface address: 10.10.123.1 Number of TOS metrics: 0 TOS 0 Metrics: 10 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 2.2.2.2 (Link Data) Router Interface address: 10.1.2.1 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 10.1.2.0 (Link Data) Network Mask: 255.255.255.0 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 3.3.3.3 (Link Data) Router Interface address: 10.1.3.1 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 10.1.3.0 (Link Data) Network Mask: 255.255.255.0 Number of TOS metrics: 0 TOS 0 Metrics: 64 R1#
Un seul lien a été ajouté (pour un réseau de type transit): le lien vers le DR 10.10.123.5 avec une métrique de 10. C’est ce que j’expliquais plus haut, les autres routeurs ne sont pas décrits dans le router-LSA (type 1) de R1 puisque seul le lien vers le DR apparait et le DR va générer un Network-LSA (type 2) avec tous les routeurs qui peuvent être accédés depuis ce réseau transit.
R1#show ip ospf database network OSPF Router with ID (1.1.1.1) (Process ID 1) Net Link States (Area 0) Routing Bit Set on this LSA LS age: 189 Options: (No TOS-capability, DC) LS Type: Network Links Link State ID: 10.10.123.5 (address of Designated Router) Advertising Router: 10.10.123.5 LS Seq Number: 80000009 Checksum: 0xC4DB Length: 48 Network Mask: /24 Attached Router: 10.10.123.5 Attached Router: 1.1.1.1 Attached Router: 2.2.2.2 Attached Router: 3.3.3.3 Attached Router: 6.6.6.6 Attached Router: 10.10.123.4 R1#
Il n’y a pas de coût mais on voit qu’en accédant au DR (on accède également aux 6 routeurs présents sur le réseau de broadcast!).
Quelle simplification ! Chaque routeur n’a pas besoin de décrire qu’il est voisin avec les autres: il dit je suis voisin avec le DR dans son LSA de type 1 et le DR, dans un LSA de type 2, décrit tous les routeurs attachés au même segment Ethernet !
Voilà pour cette présentation illustrée des deux premiers types de LSA. Laissez moi un commentaire si quelque chose n’est pas clair, j’y répondrai avec grand plaisir (et ça m’aide à améliorer ma façon de présenter les choses: alors, n’hésitez surtout pas !).
Bonjour Je confirme votre expe9rience sur le 100M : toouujrs spe9cifier le duplex, parce que l’autone9gociation est en ge9ne9ral source de proble8mes.Mais j’y mettrais un be9mol:-Uniquement sur des liens backbones/infrastructure. Jamais sur des postes clients/visiteurs (qui ne sauront jamais comment configurer le duplex).-Cette re8gle ne s’applique pas sur du gigabit, qui posse8de un protocole d’autone9gociation standardise9. Les risques de cre9er un duplex mismatch sont plus importants si on modifie la config e0 la main.C’est en tous cas la politique que l’on applique e0 mon boulot, nous n’avons jamais eu le moindre proble8me avec des interfaces gig, contrairement aux duplex mismatch qui arrivent (arrivaient) souvent quand on connectait un client en 100M.C’est e9videmment mon avis, le plus important est d’avoir une politique cohe9rente et connue du personnel technique.Aris