16/01/2025

Cisco

Cisco : comment configurer le Spanning Tree pour éliminer les boucles sur un réseau ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à mettre en place le protocole Spanning Tree sur Cisco IOS, à l’aide d’une mise en pratique avec Cisco Packet Tracer. Nous évoquerons aussi son fonctionnement.

Déjà, le Spanning Tree, c’est quoi ?

Le protocole Spanning Tree (que l’on appelle aussi STP) est conçu pour prévenir les boucles dans les réseaux locaux (LAN). Son principal objectif est d'éliminer ces boucles en identifiant les chemins redondants dans le réseau et en les désactivant. Il existe aujourd’hui plusieurs versions du protocole, la version originale est la STP (IEEE 802.1D).

Par ailleurs, il garantit également la redondance en maintenant des chemins alternatifs, assurant ainsi la résilience en cas de défaillance d’un lien ou d’un commutateur. Il y aura un chemin unique et certains ports seront bloqués, au niveau logique. Il permet également de s'assurer que les commutateurs disposent d'une vision cohérente et stable du réseau. En effet, les boucles réseau peuvent entraîner des problèmes tels que des tempêtes de diffusion, une dégradation des performances, voire un arrêt complet du réseau.

II. Les versions de Spanning Tree

Aujourd’hui, le Spanning Tree possède différentes versions. Ci-dessous un aperçu des différentes versions du protocole STP :

  • STP (IEEE 802.1D) :

Version originale du protocole Spanning Tree. Comme indiquée dans l’introduction, cette version va nous permettre d’éliminer les boucles réseaux. Elle fonctionne avec des délais relativement longs pour la convergence.

Remarque : la convergence correspond au temps de changement de l’état du lien.

  • RSTP (Rapid Spanning Tree Protocol - IEEE 802.1w)

Version améliorée du STP (IEEE 802.1D) introduite pour réduire le temps de convergence. Utilise une approche plus rapide pour réagir aux changements dans la topologie réseau.

  • MSTP (Multiple Spanning Tree Protocol - IEEE 802.1s)

Permet de créer plusieurs instances de Spanning Tree dans un même réseau, afin de mieux gérer le trafic et optimiser l'utilisation des liaisons. Il permet de segmenter les VLANs et d’appliquer un Spanning Tree spécifique à chaque groupe de VLANs.

L’avantage de cette version est surtout plus de flexibilité et une meilleure répartition du trafic.

  • PVST+ (Per VLAN Spanning Tree Plus)

Une extension propriétaire de Cisco du protocole STP. Crée une instance de Spanning Tree pour chaque VLAN, ce qui permet un contrôle fin des chemins de données pour chaque VLAN individuellement.

Nous aborderons donc dans ce tuto la version la plus classique « STP (IEEE 802.1D) »

III. Découverte et mise en œuvre du Spanning-Tree

A. Élection du Root Bridge

L’élection du root bridge est effectuée automatiquement. Ce processus va permettre de choisir le commutateur qui servira de « Root Bridge », ce sera le commutateur de référence dans le réseau, soit le switch principal dans un réseau où STP est activé.

C'est comme le chef d'orchestre : il sert de référence pour organiser et gérer le trafic réseau, en veillant à ce qu'il n'y ait pas de boucles dans les connexions. Chaque commutateur se considère initialement comme le "root bridge".

Une élection est menée en comparant les identifiants de pont (Bridge ID), qui incluent une priorité (valeur par défaut : 32768) et l'adresse MAC du commutateur. Nous aborderons son fonctionnement dans la suite du tutoriel.

Le commutateur avec le plus faible Bridge ID devient le Root Bridge ou si l’ID est identique, l’élection se fera sur l’adresse MAC la plus faible.

Il est important de noter que sur les équipements Cisco, le protocole Spanning Tree Protocol (STP) est activé par défaut !

Exemple d’une infrastructure classique avec des boucles :

Après l’élection du root bridge, nous obtenons le résultat suivant :

Dans notre topologie tous les ID sont identiques, le protocole regarde alors les adresses MAC. C’est donc celui qui possède l’adresse MAC la plus faible, donc celle “AAAA” qui correspond à notre commutateur SW04, d’après le schéma. L’élection du Root bridge a été faite.

De base, les adresses MAC ne doivent pas être identiques puisque l’adresse MAC est comme l’immatriculation des voitures, mais sur des équipements informatiques : elle est unique.

Voyons maintenant en pratique sur Cisco Packet Tracer. Je vous invite à télécharger le fichier PKT pour vous exercer :

Prenons une topologie très simple avec 3 switchs. Par défaut, lors de la connexion entre les switchs, le Spanning Tree va élire directement le root bridge. Dans notre cas, il a désactivé la liaison entre le SW00 et SW01, car ce n’est pas le chemin le plus rapide.

Pourquoi ce lien est désactivé et pas la liaison directe entre le SW00 et le SW02 ?

Une fois le root bridge élu, chaque switch calcule le chemin le plus court vers le root bridge en utilisant le coût STP des liens (basé sur la bande passante des liens). Les chemins avec le coût le plus faible sont maintenus actifs, ce qui est logique. Dans notre cas, il est plus rapide d’avoir une liaison directe du SW00 vers SW02 que de passer par le SW01 puis par le SW02 en partant du SW00.

Vérifions si tout cela est correct.

Comment voir qui est le Root bridge ?

En réalisant la commande suivante, nous pouvons constater que le SW02 est le root bridge. Nous pouvons le vérifier en exécutant la commande suivante depuis SW01, Nous avons également l’état des ports.

SW01#show spanning-tree

Nous pouvons même forcer l’élection du root bridge manuellement :

Pour s’assurer que le root bridge est celui attendu, nous pouvons ajuster la priorité. Une priorité plus basse force l’élection, à savoir que la valeur par défaut est de 32768 sur la plupart des équipements réseau. La priorité est composée d'un multiple de 4096 auquel on ajoute l'identifiant du VLAN.

Exemple de configuration pour modifier la priorité :

# spanning-tree vlan 1 priority 4096

B. Sélection des chemins

Pour chaque commutateur, STP détermine un chemin unique vers le root bridge (le plus court ou le plus économique). Chaque port est marqué avec un rôle spécifique :

  • Root Port (RP) : Le port utilisé pour atteindre le root bridge.
  • Designated Port (DP) : Le port qui est actif pour transmettre les données sur un segment spécifique.
  • Blocked Port : Les ports non utilisés pour éviter les boucles.

Comment modifier le cout d’un chemin et comment fonctionne-t-il ?

Par exemple, si deux chemins existent, un via FastEthernet et l'autre via GigabitEthernet, et que vous souhaitez que le chemin via FastEthernet soit utilisé, vous pouvez réduire son coût en dessous de celui de GigabitEthernet. Le protocole choisi le chemin qui coute le moins, donc le plus rapide au final.

Exemple de configuration :

# interface FastEthernet0/1
# spanning-tree cost 10

Tableau des coûts STP par défaut, selon la vitesse de la liaison (IEEE 802.1D) :

Bande-passante

Coût par défaut

10 Mbps

100

100 Mbps

19

1 Gbps

4

10 Gbps

2

C. Les différents états

Les états des ports sont :

  • Blocking : pas de transfert ou de réception de données.
  • Listening : observation pour identifier les boucles.
  • Learning : apprentissage des adresses MAC sans transfert de données.
  • Forwarding : transfert des données.
  • Disabled : le port est désactivé.

Après avoir vu les différents états, vérifions maintenant l’état du chemin entre SW01 et SW00. Exécutez la commande ci-dessous pour constater que le lien désactivé.

SW01#show spanning-tree interface fastEthernet 0/1

Le lien est bien bloqué avec le statut « BLK » qui correspond à « Blocking ».

D. Algorithme de convergence

Lors de la panne d’un lien, l’algorithme de convergence du STP doit recalculer la meilleure façon de faire circuler les données dans le réseau. Pour cela, il va passer par plusieurs états que nous avons évoqués juste au-dessus pour chaque port du switch afin de déterminer quel chemin doit être activé ou désactivé, ce qui prend un certain temps (jusqu’à 50 secondes). En raison des délais introduits par les différents états.

Ci-dessous la liste des différents temps par état (les délais qui peuvent changer) :

  • 20 secondes dans l’état Blocking.
  • 15 secondes dans l’état Listening.
  • 15 secondes dans l’état Learning.

Essayons dans notre cas en débranchant la liaison entre le SW00 et SW02 :

Le Spanning Tree a bien réactivé la liaison entre le SW00 et SW01 qui permet de joindre le SW02. Nous pouvons de nouveau vérifier son statut :

SW01#show spanning-tree interface fastEthernet 0/1

Le port a bien changé de statut passant de « BLK » à « FWD » : le port est bien sur écoute.

IV. Limitations et évolutions

Le temps de convergence de STP, dans sa version classique, peut atteindre jusqu'à 50 secondes. Ce qui est relativement long. En effet, pendant le temps de convergence, certaines parties du réseau peuvent devenir inaccessibles, ce qui peut avoir un impact sur l’accès aux services et aux ressources de l’entreprise.

En réponse à cette problématique, il y a le « Rapid Spanning Tree Protocol » (RSTP) correspondant à la norme « IEEE 802.1w ». Il constitue une amélioration majeure, permettant de réduire considérablement ce délai, nous allons aborder son fonctionnement et les différentes possibilités d’évolution.

A. Comptabilité entre les protocoles

Maintenant, abordons les différences entre les deux STP et RSTP, pourquoi ne pas utiliser directement RSTP s’il est plus rapide ?

STP (Spanning Tree Protocol) et RSTP (Rapid Spanning Tree Protocol) sont des protocoles conçus pour prévenir les boucles dans les réseaux de type Ethernet. Nous le savons, car nous l’avons vu précédemment, mais ils diffèrent sur plusieurs aspects clés : lesquels ?

  • Temps de convergence : pour STP, il utilise des états de port (Blocking, Listening, Learning, Forwarding) pour prévenir les boucles, et cela est long environ 30 à 50 secondes pour converger (passage d’un port Blocking à Forwarding) en cas de changement de topologie. Pour RSTP, il accélère la convergence en utilisant des états simplifiés et une détection plus rapide des changements de topologie. La convergence est quasi-instantanée (moins de 1 seconde dans certains cas).
  • États des ports : avec STP, les ports passent par beaucoup d’états avant l’état final, or RSTP introduit trois rôles principaux pour les ports : Discarding, Learning, et Forwarding. Il réduit donc les étapes intermédiaires, ce qui accélère les transitions.

Mais, est-ce que les deux sont compatibles entre eux ?

Oui, RSTP est rétrocompatible avec STP.

Lorsqu’un switch configuré avec RSTP détecte un voisin utilisant STP, il bascule automatiquement en mode STP pour cette liaison. Cela garantit la continuité dans un réseau mixte, donc oui, les deux sont bien compatibles et ils s’adaptent en fonction du voisin.

B. Portfast

PortFast et BPDU Guard sont des fonctionnalités essentielles pour améliorer les performances et renforcer la sécurité dans un réseau avec STP ou RSTP.

Quel est l’intérêt ?

En résumé, PortFast permet à un port de passer directement à l’état Forwarding sans attendre les étapes normales de STP (Listening, Learning). Cela est particulièrement utile pour les connexions de terminaux, car les appareils comme les PC n'introduisent pas de boucles.

Ci-dessous un exemple de configuration :

SW00#interface fastethernet 1/0
SW00# spanning-tree portfast

Attention : appliquer uniquement sur des ports connectés à des terminaux finaux (jamais entre switchs).

Par exemple, dans notre cas, en configurant mon port 1/1 du SW00, il m’indique bien un avertissement de ne pas connecter un switch mais plus tôt un terminal comme un PC ou autre (voir image précédente).

C. BPDU Guard

Étudions maintenant BPDU Guard : que permet-il ?

BPDU Guard permet de protéger le réseau contre les boucles accidentelles. Le principe est le suivant, il désactive immédiatement un port si celui-ci reçoit une BPDU (Bridge Protocol Data Unit, est un message STP utilisé pour échanger des informations sur la topologie réseau). Cela évite qu’un appareil non autorisé, comme un switch connecté par erreur, perturbe le réseau.

Voyons maintenant la configuration :

SW01#interface fastethernet 0/1
SW01# spanning-tree bpduguard enable

Une fois l’activation de BPDU Guard sur notre switch SW01, il détecte bien qu’il y’a une boucle réseau en détectant le switch SW00, il désactive donc la liaison complète entre le SW01 et SW00.

Combiner les deux fonctionnalités que nous avons évoquées, est-ce possible ?

Oui, c'est tout à fait possible. Mais, attention à une condition, il faut que le port concerné soit connecté à un terminal comme je l’évoquais ci-dessus pour le protocole PortFast.

Exemple de configuration classique :

SW05#interface FastEthernet 0/1
SW05#spanning-tree portfast
SW05#spanning-tree bpduguard enable

En résumé, avec STP et RSTP, vous pouvez optimiser la gestion des boucles et accélérer la convergence. Les fonctionnalités comme PortFast et BPDU Guard ajoutent à la sécurité et à l’efficacité pour les terminaux finaux. Ce sont des éléments clés pour un réseau bien conçu.

V. Conclusion

Le protocole STP est essentiel dans les réseaux Ethernet pour garantir la disponibilité et la stabilité en évitant les effets indésirables des boucles réseaux. Nous avons également vu comment améliorer ce protocole, notamment avec RSTP qui améliore STP, et les fonctionnalités PortFast et BPDU Guard abordées en fin d’article. Cela nous démontre aussi l’utilité et l’importance de mettre en place ces différents protocoles pour assurer la pérennité de notre réseau.

Merci pour votre lecture.

Pour en savoir plus sur Cisco et poursuivre votre apprentissage, retrouvez ce cours disponible sur IT-Connect :

author avatar
Jules Itier
Alternant Bachelor Cybersécurité Administrateur réseau et systèmes. Je partage des articles, dans le but de rendre la cybersécurité et l'informatique plus accessibles à tous.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.