Le Spanning Tree Protocol (STP) est un élément clé dans la gestion des réseaux commutés (LAN), principalement utilisé pour éviter les boucles réseau qui peuvent gravement perturber un réseau. Ce protocole est indispensable pour les administrateurs réseau souhaitant assurer la stabilité et la performance de leurs infrastructures. Cet article présente une vue d’ensemble du STP, ses principes de fonctionnement et pourquoi il reste crucial dans les réseaux modernes.
Qu’est-ce que le Spanning Tree Protocol ?
Le Spanning Tree Protocol (STP) est un protocole réseau normalisé par la norme IEEE 802.1D. Il est conçu pour prévenir les boucles de commutation (diffusion multiple), les tempêtes de broadcast dans un réseau en créant une topologie logique en forme d’arbre couvrant tous les switches du réseau. Lorsqu’une boucle est détectée, STP bloque automatiquement certains chemins de données pour assurer une seule voie entre deux points, ce qui élimine le risque de tempêtes de broadcast ou de saturation du réseau.

Pourquoi les boucles de commutation sont-elles problématiques ?
Dans un réseau où plusieurs chemins existent entre les switches, une boucle peut se former si les trames de données commencent à circuler indéfiniment sans jamais atteindre leur destination. Cela entraîne une tempête de broadcast, où les trames inondent le réseau, causant une dégradation des performances et, dans les cas extrêmes, rendant le réseau complètement inutilisable.
Exemple : Supposons trois commutateurs (A, B et C) connectés en triangle. Si A envoie un paquet à B, B pourrait le transférer à C, et C pourrait renvoyer ce paquet à A. Ce cycle peut se répéter indéfiniment, créant une tempête de broadcast.

Comment fonctionne le Spanning Tree Protocol ?
fonctionnement du STP
Le fonctionnement du STP repose sur plusieurs étapes essentielles :
Étant donné que le spanning-tree est activé, les switches vont s’envoyer des trames BPDU (Bridge Protocol Data Unit). Les parties importantes à noter sont : le champ de l’adresse MAC et celui de la priorité du bridge. Ces deux champs identifient le Bridge ID.
Bridge ID = priorité + adresse mac
C’est l’information dont le spanning-tree a besoin pour effectuer ses calculs.

1) Élection du Root Bridge :
Le protocole STP commence par l’élection d’un switch de référence, appelé Root Bridge (pont racine). Le switch qui a la plus petite priorité sera élu Root Bridge. Mais s’il y a égalité de priorité entre plusieurs commutateurs, STP sélectionnera le commutateur avec la plus petite adresse MAC (il n’est pas possible d’avoir plusieurs fois la même adresse MAC).
Par défaut, les switches ont une priorité de 32 768. Le Root Bridge sert de point central pour la topologie de l’arbre.
Exemple : Dans un réseau avec quatre switches (A, B, C, D), si A a une priorité plus basse que les autres, il sera élu comme Root Bridge. Cela signifie que tous les autres switches calculeront leurs chemins en fonction de leur distance par rapport à A.

2ᵉ Exemple : Si maintenant tous les switches ont la même priorité, STP élit le commutateur qui a la plus petite adresse MAC. On peut voir ici que le Root Bridge n’est plus le commutateur A, mais le D, car l’adresse MAC commençant par 00.1A est plus petite que 00.1B.

2) Calcul du chemin le plus court :
La seconde étape est que chaque commutateur du réseau détermine le chemin le plus rapide pour atteindre le Root Bridge. Ce calcul est basé sur un coût associé à chaque lien ; STP préférera un lien de 1 Gbps à un de 100 Mbps.
Un lien a un coût spécifique que le spanning-tree a défini par défaut.
Vitesse | Coût STP |
---|---|
10 Mbits/s | 100 |
100 Mbits/s | 19 |
1000 Mbits/s | 4 |
Exemple : Si un commutateur B peut atteindre le Root Bridge A via deux chemins, un direct à 100 Mbps ou deux liens de 1 Gbps chacun passant par le commutateur C, il choisira le chemin via C, car le coût du lien de 8 (4+4) est inférieur à 19, garantissant une transmission plus rapide.

3) Désignation des ports :
Une fois les chemins calculés, chaque commutateur désigne un Root Port (port racine) pour la communication avec le Root Bridge et un Designated Port ou Forwarding (port désigné) pour les autres liaisons. Les ports restants, susceptibles de créer des boucles, sont mis en état de blocage ND (non designated), qui seront bloqués.
Pour qu’un lien soit bloqué, il faut qu’un des deux ports de ce lien soit bloqué. Mais lequel choisir ? STP utilise la même méthode que pour l’élection du Root Bridge : il regarde la priorité des deux switches, sinon leurs adresses MAC si nécessaire. Il bloquera ainsi le port du commutateur ayant la priorité la plus haute.
Exemple : Reprenons l’exemple précédent. Ici, il y a une boucle et nous souhaitons l’éviter pour les raisons mentionnées plus haut. Dans ce cas, le lien entre le commutateur A et B sera celui à couper. Le port du commutateur B sera mis en état de « shutdown » car il a la priorité la plus élevée.

À noter : STP surveille en permanence le réseau. Si un lien tombe, comme celui entre les commutateurs B et C, STP réévalue la topologie et active un chemin bloqué pour rétablir la communication (on pourrait réactiver le lien entre A et B), tout en évitant la formation de boucles.
Configuration du Spanning Tree sur un switch Cisco
Voici un guide pratique pour vous aider à configurer le Spanning Tree Protocol (STP) sur un switch Cisco, avec les résultats attendus des commandes.
1. Vérification de votre spanning-tree
Le Spanning Tree Protocol (STP) est généralement activé par défaut sur la plupart des switches, notamment ceux des marques comme Cisco et HP. Sur Cisco, pour savoir si vous l’avez activé, faites la commande suivante :
Switch# show spanning-tree
Exemple de résultat attendu :
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0001.63f5.5c20
Cost 19
Port 1 (GigabitEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0001.63f5.5c30
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
----------- ---- --- --------- -------- --------------------------------
Gi0/1 Root FWD 19 128.1 P2p
Gi0/2 Desg FWD 19 128.2 P2p
Gi0/3 Altn BLK 19 128.
Explication : Cette sortie montre que le port GigabitEthernet 0/1 (Gi0/1) est actuellement le Root Port reliant le commutateur au Root Bridge. Le port Gi0/3 est en état de blocage pour prévenir les boucles.
2. Activer spanning-tree et ses différents modes
Si vous n’avez pas activé le spanning-tree, vous pouvez entrer la commande suivante, qui correspond au mode de base de STP :
Switch(config)#spanning-tree vlan 1
Ce mode de spanning-tree fonctionne de manière assez lente, avec une convergence qui peut prendre jusqu’à 50 secondes après une défaillance. Il existe d’autres modes plus intéressants :
Switch(config)#spanning-tree mode rapid-pvst
Ce protocole est une amélioration de STP. RSTP permet une convergence beaucoup plus rapide, généralement en quelques secondes seulement.
Voici un tableau récapitulatif des différents modes de Spanning Tree Protocol (STP) avec leurs caractéristiques principales :
Mode STP | Norme | Caractéristiques | Convergence | Cisco |
---|---|---|---|---|
STP | IEEE 802.1D | Version d’origine, convergence lente. | Lente (~50s) | Non |
RSTP | IEEE 802.1w | Amélioration de STP, convergence rapide. | Rapide | Non |
PVST | Cisco | STP par VLAN, plus de charge CPU. | Lente | Oui |
PVST+ | Cisco | Support VLAN Cisco et 802.1Q. | Lente | Oui |
MSTP | IEEE 802.1s | Groupe VLANs sous une instance STP. | Rapide | Non |
RPVST+ | Cisco | RSTP par VLAN, convergence très rapide. | Très rapide | Oui |
BPDU Guard | Cisco | Sécurise les ports contre les BPDUs. | – | Oui |
3. Configuration de la Priorité du Root Bridge
Comme vu précédemment, pour définir un switch spécifique comme Root Bridge, vous pouvez ajuster sa priorité. Une valeur de priorité plus basse augmente les chances qu’un switch soit élu Root Bridge.
Switch(config)# spanning-tree vlan 1 priority 4096
Autre façon de le mettre :
Switch(config)# spanning-tree vlan 1 root primary
il est possible de choisir un switch secondaire, en cas de panne du Root Bridge :
Switch(config)# spanning-tree vlan 1 root secondary
Explication et Configuration du Portfast
À quoi sert le portfast ?
Le PortFast permet de rendre un port d’un switch immédiatement dans l’état STP ; il est donc capable d’envoyer les paquets. À l’état normal, un port met 30 secondes à se mettre en marche, ce qui est très long.
L’intérêt est qu’il est plus rapide, car cela nous évite d’attendre que le port se mette en forwarding (up). Mais il faut être prudent à ne pas activer le PortFast n’importe comment, au risque d’avoir des boucles !
Comment bien utiliser le portfast ?
Le PortFast n’est pas rapide pour rien ; en l’activant, on contourne les états d’écoute (listening) et d’apprentissage (learning) des routes du réseau, passant simplement les différentes vérifications qu’un port effectue avant de se mettre en up.

Vu qu’on esquive les vérifications, cela peut être problématique si notre port est relié à un autre switch. Cela pourrait donc causer des tempêtes de broadcast, polluer notre réseau, créer une instabilité de la table CAM (relation entre les ports et les MAC), et entraîner une diffusion multiple.
Il est intéressant de l’activer lorsqu’il s’agit de ports qui redirigent vers des périphériques finaux, comme des ordinateurs ou des serveurs, car il n’y a pas de risque de créer une boucle. Les BPDU (Bridge Protocol Data Units) sont des trames spéciales.
Commande de configuration du portfast
Nous allons utiliser une extension du PortFast pour plus de sécurité. L’extension BPDUGuard permet, lorsque le port reçoit et détecte un BPDU (trame envoyée par des équipements réseau), de désactiver automatiquement le port.
La commande suivante permet d’activer le PortFast sur tous les ports.
Première méthode :
Switch#conf t
Switch(config)#spanning-tree portfast default
La commande suivante permet également d’activer le PortFast avec l’option BPDUGuard sur tous les ports.
Switch(config)#spanning-tree portfast bpduguard default
Ensuite, on peut supprimer le PortFast sur les ports où on ne le souhaite pas, en accédant directement à leurs interfaces.
Deuxième méthode :
Accédez directement à l’interface que vous souhaitez activer ou désactiver pour le PortFast.
Switch(config-if)#spanning-tree portfast
Switch(config-if)#spanning-tree bpduguard enable
Switch(config-if)#spanning-tree portfast disable
Switch(config-if)#spanning-tree bpduguard disable
Avec BPDUGuard, il n’y a pas de résultat immédiat visible après cette configuration, mais si un BPDU est reçu sur ce port, le port sera désactivé automatiquement pour prévenir tout risque de modification non désirée de la topologie STP.
Exemple : Si un appareil non autorisé est connecté et envoie des BPDU, le port sera immédiatement mis en err-disable pour empêcher la perturbation du réseau.
Les différents modes du Spanning Tree Protocol (STP)
Il existe plusieurs variantes du Spanning Tree Protocol, chacune adaptée à des besoins spécifiques dans les réseaux modernes. Voici les principaux modes :
STP (Spanning Tree Protocol, IEEE 802.1D)
C’est la version d’origine du STP. Il crée une topologie sans boucle dans un réseau en désactivant les chemins redondants jusqu’à ce qu’un autre chemin devienne nécessaire, par exemple en cas de panne. Cependant, sa convergence est relativement lente (30 à 50 secondes) après un changement de topologie.
RSTP (Rapid Spanning Tree Protocol, IEEE 802.1w)
RSTP est une amélioration de STP avec des temps de convergence beaucoup plus rapides, généralement de l’ordre de quelques secondes. Il est conçu pour réagir rapidement aux changements de topologie, ce qui en fait un choix plus adapté aux réseaux modernes nécessitant une haute disponibilité.
MSTP (Multiple Spanning Tree Protocol, IEEE 802.1s)
MSTP permet de regrouper plusieurs VLANs dans une seule instance de spanning tree, réduisant ainsi la charge sur les switches. Chaque instance peut avoir une topologie différente, ce qui améliore l’efficacité du réseau tout en optimisant les chemins pour différents flux de trafic. Il est largement utilisé dans les réseaux avec de nombreux VLANs.
PVST+ (Per-VLAN Spanning Tree Plus, Cisco)
Cette variante développée par Cisco crée une instance STP séparée pour chaque VLAN dans le réseau. Bien que cela puisse améliorer l’utilisation des liens et optimiser les chemins de données pour chaque VLAN, cela peut également augmenter la charge sur les commutateurs, car chaque VLAN doit maintenir sa propre topologie.
Rapid PVST+ (Rapid Per-VLAN Spanning Tree Plus, Cisco)
Comme PVST+, mais avec les avantages de la convergence rapide de RSTP. Chaque VLAN dispose d’une instance de spanning tree, ce qui permet une gestion optimisée des chemins, tout en bénéficiant de la vitesse de convergence de RSTP.
Choisir le bon mode de STP
Le choix du mode de STP dépend de la complexité du réseau, du nombre de VLANs et des besoins en termes de temps de convergence. Pour des réseaux simples, STP peut suffire, mais pour des réseaux plus grands nécessitant des temps de réponse rapides et une gestion efficace des VLANs, RSTP ou MSTP sont souvent préférés.
Conclusion
Le Spanning Tree Protocol reste un élément fondamental de la gestion des réseaux locaux, assurant une protection efficace contre les boucles de commutation. En comprenant son fonctionnement et en appliquant les meilleures pratiques, les administrateurs réseau peuvent garantir une infrastructure stable et performante, capable de résister aux défis des environnements complexes et en constante évolution.