devis switch : le mode STP se dérive, et le devis dit son incertitude
`underlay.stp.mode` passe à `mstp` — le mode d'usine du commutateur, vérifié par `show spanning-tree`. Sur une étoile sans lien redondant, l'instance 0 de MSTP se comporte comme un RSTP : changer de mode aurait donné le même résultat, au risque près de toucher à un protocole qui fonctionne déjà. Le devis énonce son incertitude là où elle est : en MSTP la priorité se règle souvent par instance, alors que la forme émise est globale. Il le dit plutôt que de laisser croire à une syntaxe vérifiée — `show spanning-tree` donne l'état du protocole, jamais la forme d'entrée des commandes. Corrigé : le commentaire de la section 6 disait « RSTP » en dur alors que le mode est déclaré. Il le dérive. Preuves : 24 OK, 0 échec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
38965824d6
commit
0c55986e81
2 changed files with 29 additions and 4 deletions
15
CHANGELOG.md
15
CHANGELOG.md
|
|
@ -1,5 +1,20 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-08-02 (suite 15) — `underlay.stp.mode` aligné sur le matériel
|
||||
|
||||
`mode: mstp`, parce que c'est le mode d'usine du commutateur (`show spanning-tree` :
|
||||
IEEE 802.1s, *Force Version 3*). Sur une étoile sans lien redondant, l'instance 0 de MSTP se
|
||||
comporte comme un RSTP : changer de mode aurait donné le même résultat, au risque près de
|
||||
toucher à un protocole qui fonctionne déjà.
|
||||
|
||||
Le devis énonce désormais sa propre incertitude là où elle est : **en MSTP la priorité se
|
||||
règle souvent par instance**, alors que la forme émise est globale. Le générateur le dit
|
||||
plutôt que de laisser croire à une syntaxe vérifiée — `show spanning-tree` donne l'état du
|
||||
protocole, jamais la forme d'entrée des commandes.
|
||||
|
||||
Corrigé au passage : le commentaire de la section 6 disait « RSTP » en dur alors que le mode
|
||||
est déclaré. Il le dérive.
|
||||
|
||||
## 2026-08-02 (suite 14) — le spanning-tree du matériel : MSTP, actif, priorité par défaut
|
||||
|
||||
`show spanning-tree` sur le commutateur Binardat corrige une déduction fausse et en apporte
|
||||
|
|
|
|||
|
|
@ -174,13 +174,23 @@ def _stp_lignes(dialecte: str, mode: str, priorite: int) -> list[str]:
|
|||
"""Mode + priorite de pont, dans la forme du dialecte.
|
||||
|
||||
Cisco IOS parle `rapid-pvst` (RSTP par VLAN) ; les plateformes generiques parlent
|
||||
`rstp` et une priorite globale. NON VERIFIE sur Binardat : a confronter au
|
||||
`show running-config` du materiel, comme les `ip route`.
|
||||
`rstp`/`mstp` et une priorite globale.
|
||||
|
||||
FORME NON VERIFIEE : `show spanning-tree` donne l'ETAT du protocole, pas la syntaxe
|
||||
d'entree. En MSTP notamment, la priorite se regle souvent PAR INSTANCE — la forme
|
||||
globale ci-dessous pourrait etre refusee. A confronter a `spanning-tree ?` en mode
|
||||
configuration.
|
||||
"""
|
||||
if dialecte == "cisco":
|
||||
return [f"spanning-tree mode {'rapid-pvst' if mode == 'rstp' else mode}",
|
||||
f"spanning-tree vlan 1-4094 priority {priorite}"]
|
||||
return [f"spanning-tree mode {mode}", f"spanning-tree priority {priorite}"]
|
||||
lignes = [f"spanning-tree mode {mode}", f"spanning-tree priority {priorite}"]
|
||||
if mode == "mstp":
|
||||
lignes.append(f"! ^ en MSTP, la priorite est souvent portee par une INSTANCE "
|
||||
f"(ex. `spanning-tree mst 0 priority {priorite}`).")
|
||||
lignes.append("! Forme a confirmer par `spanning-tree ?` ; celle-ci reprend la "
|
||||
"syntaxe globale.")
|
||||
return lignes
|
||||
|
||||
|
||||
def section_stp(underlay: dict | None, dialecte: str) -> list[str]:
|
||||
|
|
@ -203,7 +213,7 @@ def section_stp(underlay: dict | None, dialecte: str) -> list[str]:
|
|||
f"! {r_nom} est le CENTRE de l'etoile : tous les chemins passent par lui.",
|
||||
"! On en fait le pont racine plutot que de laisser une election arbitraire",
|
||||
"! le decider — l'arbre logique suit alors le cablage physique.",
|
||||
"! Aucun lien redondant en etoile : RSTP est un filet, pas une necessite."]
|
||||
f"! Aucun lien redondant en etoile : {mode.upper()} est un filet, pas une necessite."]
|
||||
out += _stp_lignes(dialecte, mode, underlay_mod.STP_PRIORITE_RACINE)
|
||||
out += ["!",
|
||||
"! Les ports de bord sont declares AVEC leur interface (sections 4 et 4b),",
|
||||
|
|
|
|||
Loading…
Reference in a new issue