Le Spanning Tree Protocol (algorithme de l’arbre recouvrant, aussi appelé STP) est un protocole réseau de niveau 2 permettant de déterminer une topologie réseau sans boucle (appelée arbre) dans les LAN avec ponts. Il est défini dans la norme IEEE 802.1D et est basé sur un algorithme décrit par Radia Perlman en 1985.
L’objectif des réseaux est de faire en sorte que les paquets arrivent à destination. Une solution est de dupliquer les équipements physique pour qu’en cas de panne sur l’un d’eux, l’autre équipement prenne le relai; on appelle ça la redondance ou la résilience.
Sur le schéma ci-dessus, on voit bien que si le switch tombe (panne électrique, bug…), plus aucune communication entre les ordinateurs A et B n’est possible.
Maintenant que l’on souhaite que les paquets entre les ordinateurs A et B transitent même en cas de panne matériel, créons cette nouvelle architecture:
Avec cette architecture, on voit bien que si le switch du haut ne fonctionne plus, le switch du bas peut tout même transmettre les paquets de A vers B et de B vers A.
Sur l’architecture redondée précédente, imaginons que la station A envoi un message de broadcast (trame niveau 2 avec comme adresse MAC de destination FFFF.FFFF.FFFF). Que se passe-t-il?
Ce phénomène s’appelle la tempête de broadcast, ou broadcast storm en anglais.
Maintenant, imaginons que la station A envoi une trame vers la station B, donc la trame sera forgée avec les informations suivantes:
Que se passe-t-il?
Ce phénomène s’appelle la duplication de trame (pas top comme optimisation réseau 🙂)
Maintenant, regardons un peu ce qu’il se passe côté table CAM – Content Addressable Memory – du switch.
Pour ceux qui ont oublié cette notion, je vous renvoi vers cet article.
Reprenons la trame précédente (message de A vers B):
Maintenant que chaque switch a extrait l’adresse MAC source pour l’insérer dans sa table, chacun extrait l’adresse MAC de destination (B) et la compare à sa table. Comme aucune entrée n’est trouvée, chaque switch va dupliquer la trame sur tous ses ports:
Et c’est là où ça devient cocasse car chaque switch recoit la trame de l’autre switch…
On voit ici que les switchs mettent à jour leur table CAM à chaque fois qu’ils reçoivent une trame.
Ce phénomène s’appelle l’instabilité de la table CAM.
Pour éviter ces 3 problèmes (tempête de broadcast, duplication de trame etinstabilité de la table CAM), le protocole spanning-tree a été créé. Comme ces problèmes proviennent du fait que le réseau commuté est face à une boucle physique, le spanning-tree permet d’identifier cette boucle et de la bloquer “logiciellement”.
Dans notre exemple, tout le trafic passera par le switch du haut pour joindre la station B, le chemin du bas étant bloqué au niveau du port du switch du bas.
Si le switch du haut tombe en panne, le protocole spanning-tree va le détecter et va débloquer le port du bas. A ce moment, tout le trafic passera pour le switch du bas.
Voilà à quoi sert le spanning-tree !