Coûts OSPF : prioriser un chemin de secours
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…
Sommaire
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.
| Segment | Coût porté par |
|---|---|
| mappy → spoke | interface de mappy vers le spoke |
| spoke → jesapelrout | interface 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#
| Lien | Coût | Rang de secours |
|---|---|---|
| mappy ↔ jesapelrout (inter-hubs) | 20 | chemin normal |
| spoke ↔ mappy (10.99.0.x) | 10 | — |
| minimappy ↔ jesapelrout | 50 | 1er secours |
| lsmab ↔ jesapelrout | 55 | 2e secours |
| lsmc ↔ jesapelrout | 60 | 3e secours |
Coûts totaux résultants, depuis mappy vers jesapelrout :
| Chemin | Calcul | Total |
|---|---|---|
| direct | 20 | 20 ← normal |
| via minimappy | 10 + 50 | 60 |
| via lsmab | 10 + 55 | 65 |
| via lsmc | 10 + 60 | 70 |
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=50lsmab (RouterOS 6)#
/routing ospf interface set [find interface=jesapelrout] cost=55lsmc (RouterOS 6)#
/routing ospf interface set [find interface=jsapelrout] cost=60Attention aux noms d'interfaces, ils diffèrent d'un routeur à l'autre :
jesappelroutsur minimappy (deux p),jesapelroutsur lsmab,jsapelroutsur lsmc. Unfindqui ne matche rien échoue silencieusement. Vérifier avec/interface printavant 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 :
| Lien | Adresses | Préfixe /30 |
|---|---|---|
| minimappy | .5 / .6 | 10.99.1.4/30 |
| lsmc | .9 / .10 | 10.99.1.8/30 |
| lsmab | .13 / .14 | 10.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
removepuisaddsur un template. La suppression casse l'adjacence, et si l'area est recréée entre-temps les templates pointent sur un identifiant interne mort (casarea=*4, voir « Pièges rencontrés en production »). Toujourssetsur 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.3Le corps doit contenir une ligne du type :
type=p2p id=10.255.0.2 data=10.99.1.6 metric=50Test 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 jesapelroutRé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, jamaisremove+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.