Le protocole Spanning Tree

1. Qu'est-ce que le protocole Spanning Tree ?

1.1 Les boucles de commutation (bridging loops)

Dans un réseau commuté (qui utilise des commutateurs), il peut arriver que plusieurs chemins redondants relient deux commutateurs.
Cette redondance est en général souhaitée pour :

Cependant, s'il n'y a pas de mécanisme de contrôle, la redondance en couche 2 (du modèle OSI) peut créer des boucles de commutation.
Une boucle se produit lorsque des trames circulent en continu entre des commutateurs sans jamais s'arrêter, saturant alors le réseau.

Voici un exemple typique de boucle :

Capture d'écran

Dans cette configuration, il existe plusieurs chemins entre COM_1, COM_2 et COM_3 (triangle), ce qui offre de la redondance.
Cependant, si on n'active pas STP, on va créer une bouche en couche 2.
Imaginons les étapes suivantes :

Pour éviter cette situation, surtout lorsque vous utilisez des commutateurs qui ne disposent pas du protocole STP (et oui, ça existe encore !), une topologie est toute indiquée :
- la topologie en étoile.


1.2 Le rôle de STP

Le Spanning Tree Protocol (décrit initialement dans la norme IEEE 802.1D) a pour but de prévenir ces boucles de commutation.
Il agit en :

Lorsque STP est activé, le réseau se comporte comme un arbre (d'où le nom « spanning tree ») :

Si un lien actif tombe, STP est capable de réactiver un lien bloqué pour rétablir la connectivité.


2. Le fonctionnement général de STP

2.1 Les BPDUs (Bridge Protocol Data Units)

Les commutateurs s'échangent régulièrement des BPDUs (Bridge Protocol Data Units) pour :

Les BPDUs sont envoyés en multidiffusion (multicast) sur les adresses réservées au spanning tree.
Chaque commutateur compare les informations reçues pour décider de la structure logique du réseau.


2.2 L'élection du Root Bridge

Au démarrage du réseau, chaque commutateur se considère initialement comme candidat au rôle de root bridge et envoie ses BPDUs.
Le root bridge est finalement le commutateur ayant la plus faible valeur de priorité (bridge priority).
En cas d'égalité, on compare son adresse MAC (le plus petit MAC l'emporte).

Remarque : on peut configurer manuellement la priorité d'un commutateur pour le forcer à devenir root bridge. Souvent, on choisit un commutateur central et puissant (ou redondant) pour remplir ce rôle.


2.3 Les rôles de port (port roles)

Une fois le root bridge élu, chaque commutateur détermine :


2.4 Les états de port

Historiquement, en STP classique (IEEE 802.1D), un port peut se trouver dans l'un des cinq états suivants :

STP introduit un temps de latence avant le passage à l'état Forwarding (à cause des périodes Listening et Learning), ce qui évite les boucles mais peut ralentir la convergence.

Reprenons notre exemple précédent.
Admettons que COM_1 soit élu Root Bridge (soit parce qu'il a la plus basse adresse MAC, soit parce qu'on a configuré sa priorité STP pour être la plus faible).
En tant que Root Bridge, COM_1 n'a PAS de root port, il ne possède que des ports désignés.

Voici alors la répartition des rôles de ports sur chaque commutateur :

En général, tous les ports d'un root bridge sont en état désigné (sauf cas particuliers comme un port administrativement éteint).

Dans un triangle de commutateurs, il y a nécessairement un lien bloqué pour éviter la boucle.

Comment choisir le port bloqué entre COM_2 et COM_3 ?

Cas typique

Ou inversement, si COM_3 avait la plus basse bridge ID que COM_2. il deviendrait désigné, et le port de COM_2 bloquerait.


3. Principales variantes de STP

Le STP d'origine (IEEE 802.1D) a évolué pour améliorer la rapidité de convergence et la gestion de multiples VLANs.

3.1 RSTP (Rapid Spanning Tree Protocol, IEEE 802.1w)

Le RSTP a été introduit pour accélérer la convergence (quelques secondes) par rapport à STP classique (qui pouvait prendre jusqu'à ~50 secondes dans certains cas). Principales améliorations :


3.2 MSTP (Multiple Spanning Tree Protocol, IEEE 802.1s)

Le MSTP gère plusieurs instances de spanning tree pour un ensemble de VLANs.
Cela permet de :


4. Résumé des points clés à retenir


5. Conseils de configuration et bonnes pratiques

Le Spanning Tree Protocol est un mécanisme essentiel dans les réseaux Ethernet pour prévenir les boucles de commutation, assurer la fiabilité et la redondance.
Grâce à l'élection d'une racine et à la détermination automatique de rôles de ports, STP garantit qu'un seul chemin logique est actif entre chaque pair de commutateurs.

Au fil du temps, STP a évolué pour offrir des versions plus performantes (RSTP, MSTP).
Dans la majorité des réseaux modernes, on conseille fortement d'utiliser RSTP (IEEE 802.1w) au minimum, car il offre une convergence beaucoup plus rapide que la version STP classique. Pour des environnements complexes et multi-VLAN, MSTP est souvent utilisé.

En suivant les bonnes pratiques (choix d'un root bridge, réduction des liens redondants superflus, surveillance des changements de topologie), on obtient un réseau Ethernet performant et résilient.


Commandes usuelles sur Packet Tracer

Commandes pour afficher l'état du STP

Afficher le résumé STP de tous les VLANs :

show spanning-tree

Afficher les détails STP pour un VLAN spécifique :

show spanning-tree vlan <vlan_id>

Par exemple, pour VLAN 10 :

show spanning-tree vlan 10

Afficher les informations sur les ports participant au STP :

show spanning-tree interface <interface_id>

Exemple pour une interface spécifique :

show spanning-tree interface GigabitEthernet1/0/1

Afficher le rôle des ports STP :

show spanning-tree detail

Voir les changements de topologie STP :

show spanning-tree detail | include Topology

Commandes de diagnostic STP

Afficher les root bridges pour tous les VLANs :

show spanning-tree root

Vérifier le statut du port en tant que root port ou autre :

show spanning-tree interface <interface_id> detail

Vérifier la priorité et l'état du switch dans le STP :

show spanning-tree bridge

Commandes de configuration rapide pour STP (en mode configuration)

Activer Rapid PVST (mode rapide STP) :

spanning-tree mode rapid-pvst

Configurer une priorité plus basse pour faire de ce switch le root bridge :

spanning-tree vlan <vlan_id> priority 0

Activer PortFast sur une interface (pour les ports connectés à des hôtes) :

interface <interface_id>
spanning-tree portfast

Activer BPDU Guard sur une interface :

interface <interface_id>
spanning-tree bpduguard enable

⬆️ Retour en haut de la page