Spanning Tree Protocol (STP) : éviter les boucles réseau
Sur un réseau avec des liens redondants entre switches, une boucle peut provoquer une tempête de diffusion (broadcast storm) capable de saturer tout le réseau en quelques secondes. Le Spanning Tree Protocol (STP) existe précisément pour éviter ce scénario.
Le problème que résout STP
Relier deux switches par plusieurs câbles améliore la disponibilité (si un lien tombe, l’autre prend le relais) mais crée aussi une boucle physique. Sans protection, une trame de diffusion envoyée sur cette boucle est dupliquée indéfiniment, saturant la bande passante et faisant grimper le CPU des équipements jusqu’au blocage complet du réseau.
Le principe de STP
STP construit un arbre logique sans boucle à partir de la topologie physique : il élit un pont racine (root bridge), calcule le chemin le plus court vers celui-ci depuis chaque switch, et place les ports redondants en état blocking pour ne pas les utiliser tant que le chemin actif fonctionne.
Les états d’un port STP
- Blocking — ne transmet pas de trafic, écoute uniquement les BPDU (messages de contrôle STP).
- Listening — étape transitoire, le port commence à participer à l’élection.
- Learning — le switch apprend les adresses MAC vues sur ce port, sans transmettre de trafic utilisateur.
- Forwarding — le port transmet normalement le trafic.
Cette transition complète prend jusqu’à 30-50 secondes en STP classique (802.1D) — c’est ce délai que les versions plus récentes comme Rapid STP (802.1w) réduisent drastiquement, à quelques secondes seulement.
Voir l’état de STP sur un switch Cisco
Switch# show spanning-tree
Cette commande affiche le pont racine élu, le rôle et l’état de chaque port, ainsi que la priorité configurée.
Un point de vigilance : la priorité du pont racine
Switch(config)# spanning-tree vlan 10 priority 4096
Sur un réseau avec plusieurs switches, il est recommandé de choisir explicitement quel équipement doit être le pont racine (généralement le switch cœur de réseau) plutôt que de laisser l’élection se faire au hasard sur la seule adresse MAC — un mauvais choix peut créer des chemins de trafic sous-optimaux.
Portfast : accélérer la connexion des postes utilisateurs
Pour un port relié à un simple poste de travail (pas à un autre switch), l’attente de 30 secondes avant transmission est inutile et gênante. La commande spanning-tree portfast sur ce port fait basculer directement en forwarding, tout en gardant la protection STP active en cas de mauvais branchement accidentel.
Commandes utiles : application et supervision
Configuration
Configurer STP correctement va au-delà d’activer le protocole : il s’agit de choisir le bon mode, de désigner explicitement le pont racine, et d’ajouter des protections complémentaires sur les ports d’accès.
Choisir le mode STP
Trois variantes principales existent sur les équipements Cisco :
- PVST+ — le mode STP classique (802.1D) par instance de VLAN ; convergence lente (30-50s).
- Rapid-PVST+ — basé sur 802.1w, convergence en quelques secondes ; c’est le mode recommandé par défaut aujourd’hui, avec une instance STP indépendante par VLAN.
- MST (Multiple Spanning Tree) — regroupe plusieurs VLANs dans une même instance STP, réduisant la charge CPU sur les réseaux avec un grand nombre de VLANs ; plus complexe à mettre en place.
Switch(config)# spanning-tree mode rapid-pvst
Désigner explicitement le pont racine
Plutôt que de calculer une priorité manuellement, Cisco propose une commande dédiée qui ajuste automatiquement la priorité du switch pour qu’il devienne pont racine (ou racine de secours) sur un VLAN donné :
Switch(config)# spanning-tree vlan 10 root primary Switch(config)# spanning-tree vlan 10 root secondary
Sur le switch désigné comme racine de secours, cette commande définit une priorité suffisamment basse pour qu’il prenne le relais automatiquement si le pont racine principal tombe en panne. La méthode manuelle reste possible pour un contrôle plus fin :
Switch(config)# spanning-tree vlan 10 priority 4096
PortFast : accélérer les ports utilisateurs
À activer uniquement sur un port relié à un poste de travail, jamais sur un port relié à un autre switch — sous peine de créer une boucle non détectée le temps que STP s’en aperçoive.
Switch(config)# interface gi0/5 Switch(config-if)# spanning-tree portfast
BPDU Guard : protéger les ports PortFast
Complète PortFast en désactivant automatiquement (err-disable) tout port qui reçoit une BPDU alors qu’il est configuré en PortFast — un signe qu’un switch non autorisé (ou mal branché) a été connecté à cet endroit.
Switch(config-if)# spanning-tree bpduguard enable
Pour l’activer globalement sur tous les ports PortFast du switch plutôt qu’interface par interface :
Switch(config)# spanning-tree portfast bpduguard default
Root Guard : protéger la position du pont racine
À placer sur les ports orientés vers des switches qui ne doivent jamais devenir pont racine (typiquement les liens vers des switches d’accès). Si une BPDU de meilleure priorité est reçue sur ce port, il passe en état « root-inconsistent » plutôt que de laisser le nouveau venu prendre la racine.
Switch(config-if)# spanning-tree guard root
Loop Guard : une protection complémentaire à UDLD
Empêche un port de passer en forwarding s’il cesse de recevoir des BPDU sans qu’il s’agisse d’une déconnexion normale — un scénario proche de celui que couvre UDLD, mais au niveau de STP directement.
Switch(config-if)# spanning-tree guard loop
Supervision (monitoring)
Chaque commande de supervision STP répond à une question différente : quel est l’état global, que se passe-t-il sur ce VLAN précis, ce port a-t-il un problème ?
show spanning-tree : la vue d’ensemble
Switch# show spanning-tree
Affiche, pour chaque VLAN, les informations clés à surveiller :
- Root ID — la priorité et l’adresse MAC du pont racine actuel du VLAN.
- Bridge ID — les mêmes informations pour le switch local, à comparer au Root ID pour savoir s’il est lui-même la racine.
- Port roles — Root (chemin vers la racine), Designated (port qui transmet normalement), Alternate ou Backup (ports de secours en attente).
- Port states — Blocking, Listening, Learning, Forwarding pour chaque interface.
show spanning-tree vlan X : cibler un VLAN précis
Switch# show spanning-tree vlan 10
Même contenu que la commande générale, mais filtré sur un seul VLAN — plus rapide à lire sur un switch qui en gère des dizaines.
show spanning-tree summary : l’état des protections
Switch# show spanning-tree summary
Indique le mode STP actif, et surtout si PortFast, BPDU Guard, BPDU Filter, Loop Guard et Root Guard sont activés par défaut sur le switch — une vérification rapide pour confirmer que les protections attendues sont bien en place.
show spanning-tree interface X detail : le détail d’un port
Switch# show spanning-tree interface gi0/5 detail
Donne, pour un port précis, le nombre de BPDU envoyées/reçues, le nombre de transitions vers l’état forwarding (un chiffre élevé indique une instabilité à investiguer), et le rôle/état actuel du port.
show spanning-tree root : identifier rapidement la racine
Switch# show spanning-tree root
Affiche uniquement les informations du pont racine pour chaque VLAN (priorité, adresse MAC, coût du chemin depuis ce switch) — pratique pour vérifier rapidement que c’est bien l’équipement attendu qui a été élu.
show spanning-tree inconsistentports : repérer les ports bloqués par une protection
Switch# show spanning-tree inconsistentports
Liste les ports actuellement bloqués par Root Guard ou Loop Guard suite à une anomalie détectée — le premier réflexe en cas de port qui semble down sans raison apparente après une intervention sur le câblage.
Besoin d’aide pour sécuriser la topologie de votre réseau ? Contactez-nous.