5. Configurer les démons OSPFv2 et OSPFv3

Dans cette section, on introduit les premières commandes de configuration du protocole de routage dynamique OSPF qui permettent d'activer le protocole puis d'ajouter des entrées de réseau dans la base de données de ce protocole.

Q4.

Comment peut on contrôler que le protocole OSPF est actif ou non sur un routeur ?

Une fois la console vtysh ouverte, lancer les commandes de visualisation de l'état du protocole listées ci-dessous. Ces commandes peuvent être lancées sur chacun des trois routeurs.

show ip ospf
show ipv6 ospf6
show daemons

Dans les informations données dans la copie d'écran ci-dessous, il apparaît qu'aucune configuration du protocole de routage dynamique n'a été activée.

# vtysh

Hello, this is FRRouting (version 1.2.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

R1# show ip ospf
R1# show ipv6 ospf6
R1# sh daemons
 zebra ospfd ospf6d watchfrr staticd

Q5.

Quelles sont les opérations à effectuer pour activer les protocoles de routage OSPFv2 et OSPFv3 ? Comment affecter manuellement l'identifiant du routeur ?

[Avertissement] Avertissement

Les identifiants à utiliser lors de la séance de travaux pratiques sont donnés dans les tableaux des plans d'adressage. Voir Section 2, « Topologie réseau étudiée ».

La liste des commandes utiles en mode configuration dans la console vtysh est la suivante.

router ospf
router ospf6
ospf router-id X.X.X.X
ospf6 router-id X.X.X.X
log detail

Toujours à partir de la console vtysh, on accède au mode configuration à l'aide de la commande conf t. Voici un exemple de séquence sur le troisième routeur.

R3-bleu(config)# router ospf
R3-bleu(config-ospf6)# ospf router-id 7.0.4.3
R3-bleu(config-ospf6)# log detail
R3-bleu(config-ospf6)# exit

R3-bleu(config)# router ospf6
R3-bleu(config-ospf6)# ospf6 router-id 7.0.6.3
R3-bleu(config-ospf6)# log detail
R3-bleu(config-ospf6)# exit
R3-bleu# sh run
Building configuration...

Current configuration:
!
frr version 8.0.1
frr defaults traditional
hostname R3-bleu
log syslog informational
service integrated-vtysh-config
!
interface enp0s2.291
 bandwidth 1000
!
interface enp0s2.293
 bandwidth 1000
!
router ospf
 ospf router-id 7.0.4.3
 log-adjacency-changes detail
 exit
!
router ospf6
 ospf6 router-id 7.0.6.3
 log-adjacency-changes detail
!
line vty
!
end

Le choix de codage des identifiants OSPF a pour but d'éviter une confusion avec les adresses des réseaux actifs sur chaque routeur.

Si on reprend l'instruction de la question précédente, on obtient l'état de chacun des démons de protocole de routage dynamique.

R3-bleu# sh ip ospf
 OSPF Routing Process, Router ID: 7.0.4.3
 Supports only single TOS (TOS0) routes
 This implementation conforms to RFC2328
 RFC1583Compatibility flag is disabled
 OpaqueCapability flag is disabled
 Initial SPF scheduling delay 0 millisec(s)
 Minimum hold time between consecutive SPFs 50 millisec(s)
 Maximum hold time between consecutive SPFs 5000 millisec(s)
 Hold time multiplier is currently 1
 SPF algorithm has not been run
 SPF timer is inactive
 LSA minimum interval 5000 msecs
 LSA minimum arrival 1000 msecs
 Write Multiplier set to 20
 Refresh timer 10 secs
 Maximum multiple paths(ECMP) supported  256
 Number of external LSA 0. Checksum Sum 0x00000000
 Number of opaque AS LSA 0. Checksum Sum 0x00000000
 Number of areas attached to this router: 0
 All adjacency changes are logged
R3-bleu# sh ipv6 ospf6
 OSPFv3 Routing Process (0) with Router-ID 7.0.6.3
 Running 00:05:40
 LSA minimum arrival 1000 msecs
 Maximum-paths 256
 Initial SPF scheduling delay 0 millisec(s)
 Minimum hold time between consecutive SPFs 50 millsecond(s)
 Maximum hold time between consecutive SPFs 5000 millsecond(s)
 Hold time multiplier is currently 1
 SPF algorithm has not been run
 SPF timer is inactive
 Number of AS scoped LSAs is 0
 Number of areas in this router is 0
 All adjacency changes are logged

Q6.

Quelles sont les opérations à effectuer pour activer les protocoles de routage OSPFv2 et OSPFv3 pour les réseaux d'interconnexion de chaque routeur ?

Il faut activer le protocole de routage dynamique sur chaque interface de la topologie qui participe à la construction du triangle.

La liste des commandes utiles en mode console et en mode configuration dans vtysh est la suivante.

show ip route connected
show ip route ospf
show ipv6 route connected
show ipv6 route ospf
ip ospf area 0
ipv6 ospf6 area 0

Voici un exemple de séquence d'instructions pour le routeur R1-rouge.

On commence par lister les entrées marquées C ou connected de la table de routage IPv4 de façon à reconnaître les deux côtés de la topologie triangle connus du "sommet" R1-rouge.

R1-rouge# sh ip route connected
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

C>* 10.2.90.0/29 is directly connected, enp0s2.290, 1d00h04m
C>* 10.2.91.0/29 is directly connected, enp0s2.291, 1d00h04m
C>* 10.2.92.0/24 is directly connected, sw-vlan292, 1d00h04m
C>* 10.141.0.160/27 is directly connected, enp0s2.300, 1d00h04m

À partir de cette identification, on doit activer le protocole OSPFv2 pour les deux interfaces : enp0s2.290 et enp0s2.291.

R1-rouge# conf t
R1-rouge(config)# interface enp0s2.290
R1-rouge(config-if)# ip ospf area 0
R1-rouge(config-if)# exit
R1-rouge(config)# interface enp0s2.291
R1-rouge(config-if)# ip ospf area 0
R1-rouge(config-if)# ^Z
R1-rouge#

On reprend le même processus pour le protocole OSPFv3. Voici une copie des entrées connectées de la table de routage IPv6.

R1-rouge# sh ipv6 route connected
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

C>* 2001:678:3fc:124::/64 is directly connected, sw-vlan292, 1d00h14m
C>* 2001:678:3fc:12c::/64 is directly connected, enp0s2.300, 1d00h14m
C * fe80::/64 is directly connected, asw-host, 1d00h14m
C * fe80::/64 is directly connected, enp0s2.290, 1d00h14m
C * fe80::/64 is directly connected, enp0s2.291, 1d00h14m
C * fe80::/64 is directly connected, sw-vlan292, 1d00h14m
C * fe80::/64 is directly connected, enp0s2.300, 1d00h14m
C>* fe80::/64 is directly connected, enp0s2, 1d00h14m

On active le protocole OSPFv3 sur les mêmes interfaces.

R1-rouge# conf t
R1-rouge(config)# interface enp0s2.290
R1-rouge(config-if)# ipv6 ospf6 area 0
R1-rouge(config-if)# exit
R1-rouge(config)# interface enp0s2.291
R1-rouge(config-if)# ipv6 ospf6 area 0
R1-rouge(config-if)# ^Z

Q7.

Comment visualiser l'état des interfaces actives pour chaque processus de protocole de routage dynamique OSPFv2 ou OSPFv3 ?

Les interfaces sont dites actives pour les protocoles OSPFv2 ou OSPFv3 dès qu'elles ont été ajoutées aux processus de routage dynamique en précisant l'aire à laquelle elles appartiennent.

La liste des commandes utiles dans la console vtysh est la suivante.

show ip ospf interface
show ipv6 ospf6 interface

En reprenant l'exemple du routeur R1-rouge, on obtient les résultats suivants.

R1-rouge# sh ip ospf interface
enp0s2.290 is up
  ifindex 4, MTU 1500 bytes, BW 1000 Mbit <UP,BROADCAST,RUNNING,MULTICAST>
  Internet Address 10.2.90.1/29, Broadcast 10.2.90.7, Area 0.0.0.0
  MTU mismatch detection: enabled
  Router ID 7.0.4.1, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State Backup, Priority 1
  Designated Router (ID) 7.0.4.2 Interface Address 10.2.90.2/29
  Backup Designated Router (ID) 7.0.4.1, Interface Address 10.2.90.1
  Multicast group memberships: OSPFAllRouters OSPFDesignatedRouters
  Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
    Hello due in 9.193s
  Neighbor Count is 1, Adjacent neighbor count is 1
enp0s2.291 is up
  ifindex 5, MTU 1500 bytes, BW 1000 Mbit <UP,BROADCAST,RUNNING,MULTICAST>
  Internet Address 10.2.91.1/29, Broadcast 10.2.91.7, Area 0.0.0.0
  MTU mismatch detection: enabled
  Router ID 7.0.4.1, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State Backup, Priority 1
  Designated Router (ID) 7.0.4.3 Interface Address 10.2.91.3/29
  Backup Designated Router (ID) 7.0.4.1, Interface Address 10.2.91.1
  Multicast group memberships: OSPFAllRouters OSPFDesignatedRouters
  Timer intervals configured, Hello 10s, Dead 40s, Wait 40s, Retransmit 5
    Hello due in 9.193s
  Neighbor Count is 1, Adjacent neighbor count is 1

La copie d'écran ci-dessus permet d'identifier les éléments suivants :

  • L'indicateur is up confirme que l'interface est bien active pour le protocole de routage.

  • L'identifiant de routeur correspond bien à celui défini dans le processus OSPFv2 et le type de réseau du protocole indique un réseau de diffusion Ethernet.

  • Les paquets Hello sont bien émis toutes les 10 secondes pour un réseau de diffusion.

On reprend la même démarche pour le protocole OSPFv3. On extrait de liste complète les interfaces des deux côtés du triangle.

R1-rouge# sh ipv6 ospf6 interface enp0s2.290
enp0s2.290 is up, type BROADCAST
  Interface ID: 4
  Internet Address:
    inet : 10.2.90.1/29
    inet6: fe80::baad:caff:fefe:64/64
  Instance ID 0, Interface MTU 1500 (autodetect: 1500)
  MTU mismatch detection: enabled
  Area ID 0.0.0.0, Cost 1
  State BDR, Transmit Delay 1 sec, Priority 1
  Timer intervals configured:
   Hello 10, Dead 40, Retransmit 5
  DR: 7.0.6.2 BDR: 7.0.6.1
  Number of I/F scoped LSAs is 2
    0 Pending LSAs for LSUpdate in Time 00:00:00 [thread off]
    0 Pending LSAs for LSAck in Time 00:00:00 [thread off]

R1-rouge# sh ipv6 ospf6 interface enp0s2.291
enp0s2.291 is up, type BROADCAST
  Interface ID: 5
  Internet Address:
    inet : 10.2.91.1/29
    inet6: fe80::baad:caff:fefe:64/64
  Instance ID 0, Interface MTU 1500 (autodetect: 1500)
  MTU mismatch detection: enabled
  Area ID 0.0.0.0, Cost 1
  State BDR, Transmit Delay 1 sec, Priority 1
  Timer intervals configured:
   Hello 10, Dead 40, Retransmit 5
  DR: 7.0.6.3 BDR: 7.0.6.1
  Number of I/F scoped LSAs is 2
    0 Pending LSAs for LSUpdate in Time 00:00:00 [thread off]
    0 Pending LSAs for LSAck in Time 00:00:00 [thread off]

Q8.

Comment vérifier que l'identifiant de routeur a correctement été attribué ?

À partir des résultats des questions précédentes, rechercher l'information demandée.

Quelque soit la version du protocole OSPF, l'identifiant de routeur est toujours codé sous la forme d'une adresse IPv4.

R1-rouge# sh ip ospf
 OSPF Routing Process, Router ID: 7.0.4.1
R1-rouge# sh ipv6 ospf6
 OSPFv3 Routing Process (0) with Router-ID 7.0.6.1

Q9.

Comment identifier le type de réseau d'une interface ?

À partir des résultats des questions précédentes, rechercher l'information demandée.

Comme on utilise uniquement des liens Ethernet dans ce contexte de travaux pratiques, le type de réseau est nécessairement diffusion ou BROADCAST.

R1-rouge# sh ip ospf interface enp0s2.290
enp0s2.290 is up
  ifindex 4, MTU 1500 bytes, BW 1000 Mbit <UP,BROADCAST,RUNNING,MULTICAST>
  Internet Address 10.2.90.1/29, Broadcast 10.2.90.7, Area 0.0.0.0
  MTU mismatch detection: enabled
  Router ID 7.0.4.1, Network Type BROADCAST, Cost: 1
R1-rouge# sh ipv6 ospf6 interface enp0s2.290
enp0s2.290 is up, type BROADCAST

Q10.

Comment obtenir la liste du ou des routeurs voisins pour chaque processus de protocole de routage dynamique OSPFv2 ou OSPFv3 ?

Dès qu'une interface est active, il y a émission de paquets HELLO et si un routeur avec un démon OSPF envoie aussi des paquets HELLO dans le même VLAN, les deux routeurs cherchent à former une adjacence.

La liste des commandes utiles dans la console vtysh est la suivante.

show ip ospf neighbor
show ipv6 ospf6 neighbor

Toujours à partir du routeur R1-rouge, voici un exemple de liste de routeurs OSPF voisins dans laquelle on reconnaît les identifiants des routeurs R2-vert et R3-bleu.

R1-rouge# sh ip ospf neighbor

Neighbor ID  Pri State      Dead Time Address      Interface                RXmtL RqstL DBsmL
7.0.4.2        1 Full/DR      34.442s 10.2.90.2    enp0s2.290:10.2.90.1         0     0     0
7.0.4.3        1 Full/DR      34.442s 10.2.91.3    enp0s2.291:10.2.91.1         0     0     0
R1-rouge# sh ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime    State/IfState         Duration I/F[State]
7.0.6.2           1    00:00:35     Full/DR            1d01:05:34 enp0s2.290[BDR]
7.0.6.3           1    00:00:35     Full/DR            1d01:05:33 enp0s2.291[BDR]

Q11.

Comment identifier le rôle des différentes interfaces des routeurs pour chacun des liens du triangle de la topologie logique ?

[Avertissement] Avertissement

La réponse à cette question suppose que les démons OSPF des trois routeurs de la topologie logique en triangle aient convergé. On doit repérer l'état Full pour les listes de routeurs voisins.

De plus, la réponse varie en fonction de l'ordre d'activation des démons OSPF des différents routeurs. En effet, un routeur peut être élu routeur désigné (DR) en l'absence de routeurs voisins. Cette élection n'est pas remise en cause tant qu'il n'y pas de changement d'état de lien.

À partir des résultats des questions précédentes sur les interfaces actives, il est possible de compléter le schéma de la topologie étudiée avec l'état des interfaces pour chacun des trois liens.

Topologie logique OSPF et rôle des interfaces de routeurs

Sur un même réseau de diffusion, il est possible de trouver plusieurs routeurs OSPF. Établir une relation de voisinage et procéder aux échanges de bases de données topologiques entre chaque routeur revient à constituer un réseau de relations complètement maillé. À chaque nouveau calcul de topologie, ce réseau complètement maillé est inefficace. C'est la raison pour laquelle la notion de routeur référent ou Designated Router a été introduite. Lors d'un recalcul de topologie, tous les routeurs s'adressent au routeur référent qui correspond au cœur d'un réseau en topologie étoile.

Dans le contexte de la topologie triangle étudiée, il y a bien élection d'un routeur référent et d'un routeur référent de secours. Cependant, comme il n'y a que deux routeurs par domaine de diffusion ou VLAN, on ne peut pas caractériser l'utilité de cette élection.

Q12.

Quels sont les réseaux IPv4 et IPv6 présents dans la base calcul du protocole OSPF ?

On cherche a visualiser la liste des préfixes des réseaux connus des deux démons OSPF.

La liste des commandes utiles dans la console vtysh est la suivante.

show ip ospf route
show ipv6 ospf6 route

Une fois que les trois routeurs de la topologie ont convergé, chaque démon connaît les trois préfixes qui correspondent aux trois côtés du triangle. Un routeur correspond à un sommet du triangle et il doit apprendre le préfixe réseau du côté opposé via ses deux routeurs voisins.

Voici la vue depuis le routeur R1-rouge.

R1-rouge# sh ip ospf route
============ OSPF network routing table ============
N    10.2.90.0/29          [1] area: 0.0.0.0
                           directly attached to enp0s2.290
N    10.2.91.0/29          [1] area: 0.0.0.0
                           directly attached to enp0s2.291
N    10.2.93.0/29          [2] area: 0.0.0.0
                           via 10.2.90.2, enp0s2.290
                           via 10.2.91.3, enp0s2.291

============ OSPF router routing table =============

============ OSPF external routing table ===========

Les valeurs notées entre crochets correspondent à la métrique du lien pour joindre le réseau noté à gauche. Pour le protocole OSPF, le calcul de métrique se fait à partir de l'expression : 108 / Bande_Passante_du_lien.

La valeur du numérateur (108) correspond à un débit de 100Mbps. À l'époque de la rédaction du standard OSPFv2, ce débit a servi de référence. Aujourd'hui, cette valeur est complètement dépassée. C'est la raison pour laquelle on adapte le calcul de métrique en changeant le coefficient du numérateur. Voir la Section 8, « Adapter de la métrique de lien au débit ».

Les deux premiers réseaux de la table sont joignable via un lien Ethernet à 1000Mbps ; soit une métrique de 1. Le troisième réseau est joignable via deux liens Ethernet à 1000Mbps ; d'où la métrique de 2.

Pour les préfixes IPv6, aucun préfixe n'est présent sachant que les relations de voisinage entre routeurs utilisent obligatoirement les adresses de lien local appartenant au préfixe fe80::/10.

R1-rouge# sh ipv6 ospf6 route

Les préfixes des réseaux de conteneurs apparaitront dès que le protocole de routage aura été activé pour les interfaces SVI.

Q13.

Comment visualiser les tables de routage depuis la console vtysh ?

L'affichage demandé illustre les mécanismes de choix entre différentes solutions pour une même destination. Cet affichage est à comparer avec celui demandé à la question suivante.

La liste des commandes utiles dans la console vtysh est la suivante.

show ip route
show ipv6 route

On reprend à nouveau l'exemple du routeur R1-rouge.

R1-rouge# sh ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/0] via 10.141.0.161, enp0s2.300 onlink, 1d02h04m
O   10.2.90.0/29 [110/1] is directly connected, enp0s2.290, weight 1, 1d02h04m
C>* 10.2.90.0/29 is directly connected, enp0s2.290, 1d02h04m
O   10.2.91.0/29 [110/1] is directly connected, enp0s2.291, weight 1, 1d02h04m
C>* 10.2.91.0/29 is directly connected, enp0s2.291, 1d02h04m
C>* 10.2.92.0/24 is directly connected, sw-vlan292, 1d02h04m
O>* 10.2.93.0/29 [110/2] via 10.2.90.2, enp0s2.290, weight 1, 1d02h04m
  *                      via 10.2.91.3, enp0s2.291, weight 1, 1d02h04m
C>* 10.141.0.160/27 is directly connected, enp0s2.300, 1d02h04m
R1-rouge# sh ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* ::/0 [0/1024] via 2001:678:3fc:12c::1, enp0s2.300 onlink, 1d02h05m
C>* 2001:678:3fc:124::/64 is directly connected, sw-vlan292, 1d02h05m
C>* 2001:678:3fc:12c::/64 is directly connected, enp0s2.300, 1d02h05m
C * fe80::/64 is directly connected, asw-host, 1d02h05m
C * fe80::/64 is directly connected, enp0s2.290, 1d02h05m
C * fe80::/64 is directly connected, enp0s2.291, 1d02h05m
C * fe80::/64 is directly connected, sw-vlan292, 1d02h05m
C * fe80::/64 is directly connected, enp0s2.300, 1d02h05m
C>* fe80::/64 is directly connected, enp0s2, 1d02h05m
  • Les entrées marquées avec le caractère * correspondent aux routes retenues et mémorisées par le sous-système réseau du noyau. Les autres entrées sont placées en réserve au cas où la solution initialement retenue serait en défaut.

  • L'entrée notée K correspond à une route apprise depuis le sous-système réseau du noyau.

  • Les entrées notées C correspondent à des routes pour lesquelles il existe une interface sur le routeur. Les métriques de ses routes ont la valeur 0. Ce sont les routes les plus prioritaires.

  • Les entrées notées O correspondent aux routes apprises via le protocole OSPF. La métrique de ces routes se décompose en deux parties. La valeur figée à 110 définit le niveau de priorité du protocole OSPF (Administrative Distance) relativement aux autres protocoles de routage. Les valeurs notées après le / sont les métriques de liens calculées comme indiqué ci-dessus.

Q14.

Comment visualiser les tables de routage au niveau système ?

Utiliser une commande usuelle de visualisation de la table de routage.

ip route ls
ip -6 route ls

Avec la commande ip, on voit apparaître les «sources» d'alimentation de la table de routage finale du système.

  • kernel pour les entrées connues du sous-système réseau du noyau. Ce sont les entrées avec le caractère C dans la console vtysh.

  • ospf pour les entrées apprises via le protocole de routage dynamique. Le réseau correspond au côté opposé au sommet du triangle est appris via OSPF puisque le sous-système réseau du noyau ne le connaît pas.

etu@R1-rouge:~$ ip route ls
default via 10.141.0.161 dev enp0s2.300 onlink
10.2.90.0/29 dev enp0s2.290 proto kernel scope link src 10.2.90.1
10.2.91.0/29 dev enp0s2.291 proto kernel scope link src 10.2.91.1
10.2.92.0/24 dev sw-vlan292 proto kernel scope link src 10.2.92.1
10.2.93.0/29 nhid 50 proto ospf metric 20
        nexthop via 10.2.91.3 dev enp0s2.291 weight 1
        nexthop via 10.2.90.2 dev enp0s2.290 weight 1
10.141.0.160/27 dev enp0s2.300 proto kernel scope link src 10.141.0.162
etu@R1-rouge:~$ ip -6 route ls
::1 dev lo proto kernel metric 256 pref medium
2001:678:3fc:124::/64 dev sw-vlan292 proto kernel metric 256 pref medium
2001:678:3fc:12c::/64 dev enp0s2.300 proto kernel metric 256 pref medium
fe80::/64 dev enp0s2 proto kernel metric 256 pref medium
fe80::/64 dev enp0s2.300 proto kernel metric 256 pref medium
fe80::/64 dev enp0s2.290 proto kernel metric 256 pref medium
fe80::/64 dev enp0s2.291 proto kernel metric 256 pref medium
fe80::/64 dev sw-vlan292 proto kernel metric 256 pref medium
fe80::/64 dev asw-host proto kernel metric 256 pref medium
default via 2001:678:3fc:12c::1 dev enp0s2.300 metric 1024 onlink pref medium