Spanning Tree Protocol (STP) : éviter les boucles réseau

Intermédiaire 7 min de lecture 30 août 2026

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.

lien actif bloqué (STP) Switch A Root Bridge Switch B Switch C
Topologie en triangle : STP bloque un des trois liens pour supprimer la boucle, tout en gardant un chemin de secours en cas de panne.

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.