Wiki GeRgOsNet Notes d’administration système, réseau et domotique

Vous consultez une ancienne version, enregistrée le 12 août 2026 par GreG. Voir la version actuelle.

Coûts OSPF : prioriser un chemin de secours

Création

Coûts OSPF : prioriser un chemin de secours#

Le principe#

Le coût OSPF est porté par l'interface de sortie et il est directionnel. Le coût configuré sur une interface s'applique au trafic qui quitte ce routeur par cette interface. Le coût total d'un chemin est la somme des coûts de chaque interface traversée dans le sens de la marche.

Conséquence pratique : pour influencer le chemin mappy → spoke → jesapelrout, il faut modifier le coût sur le spoke, pas sur jesapelrout.

SegmentCoût porté par
mappy → spokeinterface de mappy vers le spoke
spoke → jesapelroutinterface du spoke vers jesapelrout

Le problème résolu#

Avec les trois spokes à coût 50 vers jesapelrout, si le lien inter-hubs tombe, trois chemins de coût identique (60) existent pour joindre jesapelrout :

  • via minimappy : 10 + 50 = 60
  • via lsmc : 10 + 50 = 60
  • via lsmab : 10 + 50 = 60

OSPF fait alors de l'ECMP ou choisit arbitrairement. Pour un ordre de secours déterministe, il faut différencier les coûts.

Plan de coûts retenu#

LienCoûtRang de secours
mappy ↔ jesapelrout (inter-hubs)20chemin normal
spoke ↔ mappy (10.99.0.x)10—
minimappy ↔ jesapelrout501er secours
lsmab ↔ jesapelrout552e secours
lsmc ↔ jesapelrout603e secours

Coûts totaux résultants, depuis mappy vers jesapelrout :

CheminCalculTotal
direct2020 ← normal
via minimappy10 + 5060
via lsmab10 + 5565
via lsmc10 + 6070

Configuration — sens mappy → jesapelrout#

Ces commandes se passent sur les spokes, chacun sur son interface vers jesapelrout.

minimappy (RouterOS 7)#

/routing ospf interface-template set [find interfaces=jesappelrout] cost=50

lsmab (RouterOS 6)#

/routing ospf interface set [find interface=jesapelrout] cost=55

lsmc (RouterOS 6)#

/routing ospf interface set [find interface=jsapelrout] cost=60

Attention aux noms d'interfaces, ils diffèrent d'un routeur à l'autre : jesappelrout sur minimappy (deux p), jesapelrout sur lsmab, jsapelrout sur lsmc. Un find qui ne matche rien échoue silencieusement. Vérifier avec /interface print avant de taper.

Configuration — sens jesapelrout → mappy#

Pour obtenir la même préférence dans l'autre sens, il faut différencier les coûts côté jesapelrout. Or son template unique networks=10.99.1.0/24 couvre les trois liens d'un coup.

Le plan d'adressage permet de les séparer en /30 :

LienAdressesPréfixe /30
minimappy.5 / .610.99.1.4/30
lsmc.9 / .1010.99.1.8/30
lsmab.13 / .1410.99.1.12/30
# Modifier d'abord le template existant, ajouter les deux autres ensuite :
# ne jamais se retrouver sans template couvrant un lien actif.
/routing ospf interface-template set [find networks="10.99.1.0/24"] \
    networks=10.99.1.4/30 cost=50

/routing ospf interface-template
add area=backbone networks=10.99.1.12/30 type=ptp cost=55 \
    auth=md5 auth-id=1 auth-key="Gx7-Mesh26-Kd9p"
add area=backbone networks=10.99.1.8/30 type=ptp cost=60 \
    auth=md5 auth-id=1 auth-key="Gx7-Mesh26-Kd9p"

Ne jamais faire remove puis add sur un template. La suppression casse l'adjacence, et si l'area est recréée entre-temps les templates pointent sur un identifiant interne mort (cas area=*4, voir « Pièges rencontrés en production »). Toujours set sur l'existant.

Vérification#

Un changement de coût ne coupe pas l'adjacence. Le LSA est refloodé et le SPF recalculé en quelques secondes.

# Sur mappy — le LSA de minimappy doit annoncer metric=50 vers 10.255.0.2
/routing ospf lsa print detail where originator=10.255.0.3

Le corps doit contenir une ligne du type :

type=p2p id=10.255.0.2 data=10.99.1.6 metric=50

Test de bascule#

# Sur mappy — couper le lien inter-hubs
/interface l2tp-client disable jesapelrout

# Attendre ~40 s (dead-interval), puis :
/ip route print where dst-address="10.100.0.0/24"

# Retablir
/interface l2tp-client enable jesapelrout

Résultat attendu : la route passe par minimappy (10.99.0.6), avec un coût total de 60. Le flag ECMP (+) doit avoir disparu, contrairement à la configuration précédente où trois chemins étaient équivalents.

Dans OSPFView, la ligne 10.100.0.0/24 affiche alors mappy → minimappy → jesapelrout et la mention ECMP disparaît.

Règles à retenir#

  • Le coût est sur l'interface de sortie, et il est directionnel — un chemin peut être asymétrique si les deux sens ne sont pas configurés pareil.
  • Modifier un coût ne coupe pas l'adjacence, contrairement à modifier une clé d'authentification ou supprimer un template.
  • Des coûts égaux produisent de l'ECMP. C'est parfois souhaitable (répartition de charge), mais pas pour un ordre de secours.
  • Toujours set, jamais remove + add.
  • Après modification, reporter les nouvelles valeurs dans le tableau « Plan d'adressage » — une doc qui ment coûte plus cher qu'une doc absente.