Le protocole spanning-tree est la base de toute architecture basée sur le switching et est défini dans la norme 802.1d. En effet, une des règles d’or du réseau au niveau 2 du modèle OSI est d’éviter systématiquement les boucles et donc les tempêtes de broadcast qui peuvent potentiellement paralyser le réseau et l’ensemble des machines et équipements raccordés (et cela peut être parfois de manière définitive pour certaines d’entre elles !). En revanche, les boucles réseaux ont l’avantage d’apporter la redondance des équipements et donc la haute disponibilité des infrastructures. C’est donc dans ce contexte que le protocole spanning-tree (STP) oeuvre. Les messages échangés entre équipements compatibles avec cette norme s’appellent BPDUs pour Bridge Protocol Data Units.
Le but du spanning-tree est donc de gérer les boucles sur un réseau afin de n’obtenir qu’un arbre qui permet d’aller sur l’ensemble des équipements du réseau par un unique chemin (en général, le plus court). Comme tout arbre, celui-ci doit avoir une racine à partir de laquelle la topologie est dessinée. Cette racine n’est ni plus ni moins qu’un switch qui va être élu par l’algorithme du spanning-tree. Sa terminologie exacte est root bridge.
Comment s’effectue l’élection ? Chaque switch dispose d’une adresse MAC qui lui est propre. En outre, l’algorithme du spanning-tree alloue une priorité à chacun d’entre eux. S’il y a bien une règle à retenir en spanning-tree, c’est le fait que « le plus petit a toujours la plus grande priorité ». Autrement dit, le root bridge sera celui qui aura la valeur concaténée PRIORITE.MACADDR la plus basse. Admettons que tous les switches aient par défaut la priorité 32767, le root bridge sera donc celui qui possède l’adresse MAC la plus petite. Si l’administrateur souhaite forcer l’élection d’un switch en particulier, il suffit donc de descendre la priorité de ce switch.
Chaque switch qui n’est pas root bridge possède un root port qui n’est ni plus ni moins que le port du switch qui permet de rejoindre le root bridge. En temps normal, il s’agit donc du port qui possède le coût de lien le plus faible selon les coûts normalisés suivants :
Vitesse | Coût |
10Mbits | 100 |
100Mbits | 19 |
1Gbits | 4 |
10Gbits | 2 |
En cas d’égalité de coûts du chemin, le port dont le switch distant possède la plus basse MAC Adresse sera privilégié. En outre, dans le cas où deux switchs sont doublement attachés entre eux, l’adresse MAC est identique et ne peut donc pas être utilisée pour définir le port à utiliser. Il s’agit donc en général du numéro de port physique le plus bas qui sera retenu comme root port. Les ports qui transmettent juste les BPDUs sont appelés Designated Ports.
L’algorithme de spanning-tree repose sur les modes de fonctionnement suivants pour les ports des switchs :
- Blocking : le port est coupé par l’algorithme et empêche donc le passage du traffic
- Forwarding : le port n’est pas coupé et l’ensemble des trames sont transmises comme en fonctionnement normal
Le passage d’un port du mode « Blocking » jusqu’à « Forwarding » s’opère de la manière suivante :
- Mode Blocking : Le port est coupé et empêche le passage du traffic hors BPDUs
- Mode Listening : Le switch écoute les BPDUs reçues sur le port et détermine la topologie
- Mode Learning : Le switch remplit sa table CAM (table de correspondance entre les adresses MAC et les ports physiques du switch)
- Mode Forwarding : Le port laisse transiter l’ensemble du traffic
L’ensemble de ces étapes fait que le temps de convergence du spanning-tree classique se situe aux alentours de 50 secondes, ce qui peut s’avérer une éternité surtout par rapport aux types de flux qui peuvent transiter de nos jours sur un réseau (je pense notamment aux flux temps réels). En effet, les étapes 2 et 3 prennent chacune 15 secondes, et la toplogie reste stable tant que les BPDU dites « HELLO » transmises à la fréquence de toutes les deux secondes et que le délai de mise en cache des informations dans la table de MAC n’ont pas expiré (paramètre MAX AGE à 20 s).
Cette première approche nous permet donc de soulever une problématique pour les machines qui nécessiteraient une connexion au réseau rapide. En effet, nous avons vu que le délai maximum standard pour pouvoir bénéficier d’un port en mode forwarding est d’environ 50s. Admettons qu’une machine nécessite d’obtenir un accès au réseau en 30s, elle doit donc nécessairement attendre l’intégralité du délai. Il existe un mode dit « portfast » chez Cisco ou learning mode fast permettant de s’affranchir des phases de learning et et de listening pour un port dont on est sur qu’il s’agit bien d’un équipement terminal (PC, poste IP …).
Il existe ensuite des extensions du STP qui permettent de gérer plusieurs process de STP en fonction des VLANs en présence. Il est alors possible de définir des root bridges différents en fonction des VLANs et donc d’éventuellement mettre en place du load balancing de niveau 2 en fonction de ces critères (PVST). L’autre extension la plus connue et certainement utilisée est le RSTP pour Rapid Spanning Tree normalisé 802.1w. Le temps de convergence est alors ramené de 50s à environ 10s pour ce protocole, ce qui n’est pas négligeable. L’amélioration de ce temps de convergence est liée à l’introduction d’un nouvel état pour les ports du switchs, l’état « Discarding » qui permet au switch de recevoir les BPDUs sans pouvoir les retransmettre.
Enfin, le RSTP est plus ou moins rétrocompatible avec le STP, mais une hétérogénéité de cette configuration sur un parc de switch entrainera inévitablement la propagation du fonctionnement en STP classique de l’ensemble de ces switchs, les switchs STP n’interprétant pas les BPDUs générées par les switchs opérant le RSTP.
Aucun commentaire:
Enregistrer un commentaire