STP variations et protection des ports
Définition
Rapid PVST+ accélère la convergence STP par VLAN et les mécanismes de protection (PortFast, BPDU guard, BPDU filter, root guard, loop guard) verrouillent le design STP contre les erreurs humaines: un switch non prévu qui devient root, un câble en boucle sur un bureau, un BPDU qui arrive sur un port censé être un bord de réseau. Ces outils sont la partie "configure and verify" du thème 2.5 du blueprint 200-301.
Pourquoi la convergence legacy était lente
Avec 802.1D, un lien défaillant doit attendre: max age 20 s (le BPDU oublié devient invalide) + forward delay 15 s en Listening + 15 s en Learning = 50 s de trou de service. RSTP (802.1w) introduit les rôles alternate/backup et le handshake proposal/agreement: la reconvergence sur un lien point à point tombe à moins d'une seconde quand les deux côtés supportent RSTP.
PortFast et son danger
PortFast court-circuite les états intermédiaires sur un port bord. Risque: brancher un switch sur ce port et boucler le réseau. La parade est systématique:
S1(config-if)# interface GigabitEthernet1/0/5
S1(config-if)# spanning-tree portfast
S1(config-if)# spanning-tree bpduguard enable
spanning-tree portfast default place tous les accès en mode edge; spanning-tree portfast disable exclut un port. Un AP, un téléphone et un PC acceptent PortFast; un cluster de virtualisation avec bridge interne NON: vérifier avant d'activer.
BPDU guard
Dès qu'un BPDU arrive sur un port PortFast, le port est mis en err-disable (motif: bpdu guard err-disable) et doit être remis en service manuellement ou par errdisable recovery cause bpdu-guard:
Switch(config)# errdisable recovery interval 300
Switch(config)# errdisable recovery cause bpdu-guard
Cas typique: un employé branche un mini-switch 5 ports dégoté en ligne sous son bureau. Sans BPDU guard, ce switch peut devenir root (priorité 32768 par défaut, MAC parfois basse) et détourner tout le trafic de l'étage. Avec, le port s'éteint proprement.
BPDU filter
Plus doux et plus dangereux: le port ignore les BPDUs reçus et n'en émet plus. Sur un port bord, ça masque simplement STP; appliqué globalement ou sur un trunk, il peut créer une boucle silencieuse car le voisin bloque un port inutilement ou, pire, les deux forwardent. Recommandation: privilégier BPDU guard, réserver filter aux cas où un voisin non-Cisco ne comprend pas les BPDUs natifs, et jamais l'associer à PortFast sans comprendre le risque.
Root guard
Sur un port qui ne doit JAMAIS devenir root port (par exemple le lien montant d'un switch d'accès vers le root prévu), root guard force le port en root-inconsistent dès qu'un BPDU meilleur (annonçant un root inférieur) arrive:
S1(config-if)# spanning-tree guard root
Un root bridge secondaire mal configuré avec priorité 4096 sur un branchement sauvage ne détrône pas le root légitime: le port amont est gelé, alarme dans les logs, le design reste. À placer sur TOUS les ports montant non-root.
Loop guard
Protège contre la perte unidirectionnelle de BPDUs (câble fibre monomode encrassé, une seule paire de fibres fonctionnelle sur un lien): sans BPDUs reçus, un port blocked peut se croire désigné et forwarder, bouclant le réseau. Loop guard maintient le port en loop-inconsistent tant qu'il n'a plus de BPDUs entrants:
S1(config-if)# spanning-tree guard loop
spanning-tree guard both par interface permet le mix root guard sur certains ports et loop guard sur d'autres (par exemple EtherChannel: LACP et loop guard seules combinaisons autorisées).
Tableau de synthèse
| Outil | Où | Effet d'une violation | Usage type |
|---|---|---|---|
| PortFast | Port bord | Forwarding immédiat | PC, IP phone, AP |
| BPDU guard | Port bord | err-disable du port | Anti switch non autorisé |
| BPDU filter | Port bord ou global | BPDUs ignorés | Déconseillé globalement |
| Root guard | Port non root prévu | root-inconsistent, bloqué | Anti vol de root |
| Loop guard | Ports alternates | loop-inconsistent, bloqué | Anti BPDU loss |
Exemple concret
Dans un hôpital, le switch du bloc opératoire est root du VLAN 30 avec priorité 8192. Un stagiaire ajoute un switch Dell en cascade dans un local technique; il envoie des BPDUs avec sa priorité par défaut 32768 mais une MAC plus basse que celle du switch root: sans protection, il gagne et tout le trafic de l'étage converge chez lui à 100 Mbps, les moniteurs se déconnectent. Avec root guard sur les ports montant du bloc: port du stagiaire bloqué en root-inconsistent, syslog SPANTREE-2-ROOTGUARDBLOCK, le design tient.