Spanning-Tree Spanning-Tree est un mécanisme d'évitement de boucles de commutation réseau au sein d'un domaine de diffusion (couche 2) Terminologie Types de diffusion Unicast Une communication unicast est une donnée envoyée à une seule adresse MAC. Multicast Une communication multicast est une donnée envoyée une seule fois au commutateur mais destiné à plusieurs adresses MAC. Ceci permet l’optimisation de bande passante dans des applications telles que des appels conférence, un flux de caméras, une diffusion télévisée (ex. Twitch), le déploiement de données (ex. applications, images système), etc. Broadcast Une communication broadcast (diffusion) est une donnée envoyée à l’adresse MAC ff:ff:ff:ff:ff:ff que les switches acheminement à tous leurs ports et qui s’adresse à toutes les machines au sein d’un domaine de diffusion.   Domaine de diffusion Un domaine de diffusion, parfois aussi nommé un segment ethernet est une portée/étendue d’un réseau où deux adresses MAC peuvent communiquer directement entre elles. Celui-ci peut être étendu par l’ajout de commutateurs, ponts et points d’accès sans-fil. Si des VLANs sont mis en place, chaque VLAN est un domaine de diffusion séparé des autres. Boucle En réseautique, il y existe différents types de boucles. Une boucle de routage est composée de routeurs se retournant la balle tour à tour. Il serait possible d’établir une boucle de routage avec aussi peu que deux routeurs si par exemple le routeur A aurait une route par défaut vers le routeur B et le routeur B aurait une route par défaut vers le routeur A. Dans une situation comme celle-ci, les paquets IP tourneraient en rond jusqu’à l’épuisement de leur TTL (time to live). Une boucle de commutation survient lorsque plusieurs commutateurs sont reliés en de façon redondante (ex. en anneau). Ce genre de configuration permet l’utilisation d’un chemin alternatif si un lien coupe pour une raison où un autre et ne serait pas un problème si toute communication était unicast ou multicast mais toute diffusée à l’adresse MAC ff:ff:ff:ff:ff:ff sera retransmise à tous les ports de la switch à l’exception de celui d’où il provient.   Tempête de diffusion Lorsqu’une boucle de commutation survient, tout broadcast sera retransmis par tous les ports de toutes les switches jusqu’à ce que le réseau soit surchargé par uniquement des broadcasts. Contrairement à un paquet IP, une trame ethernet ne possède pas de “time to live” et circulera perpétuellement dans le réseau jusqu’à une coupure de la boucle de commutation. Spanning-Tree Si vos commutateurs ne sont pas des commutateurs gérables, il y a de fortes chances qu’ils ne supportent pas le protocole Spanning-Tree. Ce protocole a pour rôle de déterminer des boucles de commutation et de bloquer des ports pour couper ces boucles. Pont racine (Root bridge) Le “root bridge” ou “pont racine” est le point de convergence d’une topologie pour le protocole spanning-tree. Les liens qui resteront actifs seront les chemins les moins coûteux/les plus courts vers le pont racine. C’est aussi l’appareil qui sera responsable de déclencher un recalcul de la topologie en cas de changement BPDU Un BPDU ou “Bridge Protocol Data Unit” est le type de transmission qu’utilisent les switchs, bridges et points d’accès pour déterminer quels liens prioriser et quels liens désactiver. Un BPDU contient l'identité d'une switch (spécifiquement son adresse MAC de base) ainsi que la priorité configurée sur le bridge/commutateur. Lorsqu'il s'agit d'un BPDU pour un protocol agnostique aux VLANs, il sera acheminé sur le VLAN natif (VLAN 1) tandis que s'il s'agit d'un BPDU d'un protocole permettant l'établissement de ponts racine différents par VLANs, il circulera avec son identifiant de VLAN. Dans l'exemple suivant, le BPDU indique que l'appareil élu comme pont racine est le bridge avec l'adresse MAC aa:bb:cc:00:01:00 et que le coût pour le rejoindre par ce chemin est 100. Spanning Tree Protocol Protocol Identifier: Spanning Tree Protocol (0x0000) Protocol Version Identifier: Spanning Tree (0) Root Identifier: 4096 / 1 / aa:bb:cc:00:01:00 Root Path Cost: 100 Bridge Identifier: 32768 / 1 / aa:bb:cc:00:02:00 Port identifier: 0x8010 Hello Time: 2 Forward Delay: 15 Dans l'exemple suivant, l'appareil est directement connecté au pont racine, le coût est donc de 0 ici. Spanning Tree Protocol Protocol Identifier: Spanning Tree Protocol (0x0000) Protocol Version Identifier: Spanning Tree (0) Root Identifier: 4096 / 1 / aa:bb:cc:00:01:00 Root Path Cost: 0 Bridge Identifier: 4096 / 1 / aa:bb:cc:00:01:00 Hello Time: 2 Forward Delay: 15 Root port (port racine) Un “root port” ou port racine est l’interface d’une switch/bridge/access point qui lui permet de contacter le pont racine du réseau le plus rapidement. Domaines de diffusion et broadcasts Types de communication Tempête de diffusion Protocoles STP/RSTP STP (Spanning-Tree Protocol) ou RSTP (Rapid Spanning-Tree Protocol) permet la détection de boucles à la couche 2 mais ne prend pas en considération les VLANs. Si aucun VLAN n’existe dans ce réseau ou que tous les VLANs sont “trunked” partout, le protocole suffira à éviter des boucles de commutation dans un réseau local physique. Le protocole de STP/RSTP a une seule instance ignorant les VLANs circulant dans les liens entre les commutateurs du réseau. Si tous les domaines de diffusion concernés par ce circuit se retrouvent dans tous les appareils, le protocole devrait être en mesure d’éliminer les boucles aux endroits clés mais ne priorise pas un appareil ou un autre en fonction du VLAN. MSTP MSTP est le protocole open-source permettant l’évitement de boucles de commutation par VLAN ou par étendue de VLANs. Avec ce protocole, il est possible d’établir un pont racine différent pour chaque VLAN et ainsi d’établir des itinéraires différents pour les différents VLANs. Ceci est généralement configuré pour acheminer le trafic le plus rapidement possible  à chaque unité VRRP active. PVST/Rapid-PVST PVST (Per-Vlan Spanning Tree), Rapid-PVST ou Rapid-PVST+ est la version propriétaire de Cisco pour effectuer du spanning-tree individuellement par VLAN comme MSTP. Ce protocole bénéficie de tous les avantages de MSTP mais fonctionne uniquement avec des commutateurs Cisco. MSTP a pour avantage de permettre la gestion de plusieurs zones au sein du même domaine de diffusion. Fonctionnement Lorsqu’un commutateur supportant spanning-tree rejoint un réseau, il se considère tout d’abord comme étant le pont racine du réseau et émet en broadcast un BPDU de configuration pour signaler son existence et sera à l’écoute des BPDUs de configuration émis par les autres switches. La priorité configurée par défaut est généralement 32768 et doit être une valeur multiple de 4096. Le BPDU de configuration contient la priorité configurée ainsi que son identifiant qui est son adresse MAC de base. Si le commutateur reçoit un BPDU de configuration provenant d’un commutateur avec une priorité plus basse, il choisira ce commutateur comme nouveau pont racine. Si la configuration de spanning-tree de deux commutateurs a la même priorité, le commutateur avec la plus basse adresse MAC remportera l’élection. Les BPDUs de configuration reçus, après avoir été pris en considération par la switch reçu seront retransmis par ses autres interfaces participant à spanning-tree en incrémentant le coût associé à ce chemin. Après un certain temps, tous les commutateurs du réseau seront en accord avec quel commutateur est prioritaire ainsi que de savoir par quelles interfaces il sera possible de contacter le pont racine. L’interface ayant reçu le BPDU du pont racine avec le plus bas coût deviendra le port racine. La boucle sera coupée sur les liens les plus éloignés du pont racine. Si plusieurs liens sont établis entre deux commutateurs, à priorité égale, le lien entre les adresses MAC les plus basses (généralement le plus petit numéro de port) sera le lien actif alors que l’autre sera configuré comme lien alternatif. En cas de changement d’état d’un lien actif menant vers le pont racine, si le commutateur avait détecté un chemin alternatif vers le pont racine, le port alternatif deviendra actif. Toute modification d’état sur un appareil participant à une topologie spanning-tree déclenche un BPDU de notification de changement de topologie (TCN) qui sera acheminé uniquement au pont racine. Celui-ci pourra déclencher une réélection au besoin. Ce processus peut être exécuté de façon indépendante sur plusieurs VLANs pour élire un pont racine différent par VLAN. Il est généralement préférable de prioriser l’appareil servant de passerelle par défaut comme pont racine dans une topologie réseau mais si la majorité du trafic se passe au sein du domaine de diffusion, il est possible qu’il soit préférable de prioriser le commutateur le plus près du cœur du réseau.