I - Architecture traditionnelle Core, Aggregation, Access

8. Qu'est-ce que MSTP et RPVST+ ?

RPVST+ et MSTP sont tous les deux des protocoles dérivés de STP (Spanning-Tree Protocol). En effet le protocole STP standardisé par l’IEEE en 1990 sous le 802.1D, a connu de nombreuses déclinaisons standardisées et propriétaires en vue d’offrir des fonctionnalités de plus en plus performantes. Parmi elles, nous retrouvons notamment PVST (propriétaire CISCO), PVST+ (propriétaire CISCO), RPVST+ (propriétaire CISCO), RSTP (IEEE 802.1w), MSTP (IEEE 802.1s). Afin de pouvoir comprendre les différents intérêts de toutes ces déclinaisons, il est indispensable au préalable de maîtriser STP.

Chronnologie des RFC

Ce protocole permet d'empêcher les boucles de manière dynamique, afin d’interconnecter des équipements avec plusieurs chemins possibles, le but étant d’assurer la redondance en cas de défaillance d’un lien ou d’un équipement, tout en évitant une boucle réseaux qui conduirait à une tempête de diffusion.

Une fois configuré Spanning-Tree va échanger des paquets BPDU (Bridge Protocol Data Units) afin de déterminer et maintenir à jour les différents chemins réseaux. Il existe deux types de BPDU :

  • Configuration BPDU, qui crée et maintient la topologie avec tous les chemins possibles sans boucle.
  • Topology Change Notification BPDU, qui met à jour la topologie en cas de changement.

  • Nous allons aborder et expliquer les différents champs qui composent un paquet BPDU Spanning-Tree :

    paquet BPDU MSTP
  • Protocol Identifier :Champ sur 2 octets identifiant le protocole utilisé.
  • Protocol Version Identifier :Champ sur 2 octets identifiant la version du protocole utilisé, la valeur 0 pour SPT, la valeur 2 pour RSTP et la valeur 3 pour MSTP.
  • BPDU Type :Champ sur 1 octet pour identifier le type de BPDU, soit les Configuration BPDU , soit les TCN BPDU . Le paquet Configuration BPDU a toujours la valeur 0x00 peu importe la version du protocole utilisé, à l’inverse du TCN BPDU dont la valeur varie en fonction de la version du protocole. La valeur 0x01 pour STP et la valeur 0x02 pour RSTP et MSTP.
  • BPDU flags :Champ sur 1 octet fournissant des informations sur l’état du port émetteur et la topologie.
  • Root Identifier : Regroupe les trois champs ci-dessous :
  • Root Path Cost : Indique sur 4 octets le coût du chemin vers le Root Bridge , dans le but de déterminer le chemin préféré.
  • Bridge Identifier :Regroupe les trois champs ci-dessous :
  • Port identifier : Indique sur 2 octets l’identifiant unique du port du switch émetteur. Cet identifiant est composé du numéro de port et de la priorité du port. A l’inverse du numéro de port, la priorité du port peut être personnalisée par l’administrateur de 0 à 240, sous condition d’être un multiple de 16. A noter que la valeur par défaut est 128 .
  • Message Age : Indique sur 2 octets le temps en secondes depuis l’envoi du message par le Root Bridge .
  • Max Age : Indique sur 2 octets la durée de validité du BPDU avant qu’il ne soit considéré comme obsolète.
  • Hello Time : Indique sur 2 octets l’intervalle entre les BPDU, afin d’assurer que la topologie soit mise à jour régulièrement.
  • Forward Delay : Indique sur 2 octets le délai en secondes durant lequel un port est en état Listening et Learning avant de passer en Forwarding . Cela permet d’éviter les boucles réseaux durant un changement topologique.
  • Version 1 Length : Indique sur 1 octet la longueur des données spécifiques à STP et RSTP.
  • Version 3 Length : Indique sur 1 octet la longueur des données spécifiques à MSTP.
  • MST Extension ou Originating VLAN (PVID) : sont des champs avec plusieurs valeurs dédiées aux diverses déclinaisons de STP, ils seront détaillés plus tard dans ce cours.

  • Maintenant que vous connaissez mieux la composition des BPDU, nous allons aborder les mécanismes de fonctionnement de STP. Afin de créer une topologie sans boucle, Spanning-Tree doit en premier lieu sélectionner un switch qui sera le point central de notre topologie, le Root Bridge . L’élection du Root Bridge se fait via la sélection du switch qui dispose du plus faible Bridge ID . Cet ID est composé du Bridge Priority et du Bridge System ID dans le cadre de STP, le champ Bridge System ID Extension est utilisé uniquement dans le cadre de RSTP et MSTP. A noter que ces champs ont été précédemment détaillés dans la présentation du BPDU.


    Une fois le Root Bridge élu, chaque switch (sauf le Root Bridge élu) procède à la sélection d’un Root Port , ce port est celui qui dispose du chemin avec le coût le plus faible (le Root Path Cost) à destination du Root Bridge . Le Root Path Cost est incrémenté par le coût de la liaison réseaux traversée à chaque arrivée sur un nouveau switch. Le coût de la liaison peut être personnalisé par l’administrateur pour influencer le choix du Root Port . En l’absence de modification par l’administrateur, le coût dépend de la bande passante, vous pouvez trouver ci-dessous le tableau de correspondance défini par IEEE 802.1D en 2004 :

    Bande passante Coût de la liaison réseaux
    10 Mbps 2 000 000
    100 Mbps 200 000
    1 Gbps 20 000
    10 Gbps 2 000
    100 Gbps 200
    1 Tbps 20

    Dans le cas d’une égalité de coût entre deux liaisons réseaux, le Bridge ID le plus faible sera préféré. Si les Bridge ID venaient eux aussi à être égaux, le numéro de port le plus faible sera préféré. A noter que le Root Port est toujours en état Forwarding.

    Une fois le Root Port choisi, le Designated Port doit-être sélectionné sur chacune des liaisons réseaux. Tout comme le Root Port , le port préféré pour être Designated Port est celui qui disposera du Root Path Cost le plus faible, en cas d'égalité le Bridge ID et le numéro de port pourront servir à les départager. A noter que le Designated Port est également toujours en état Forwarding .

    Rôle du Port État Fonction
    Root Port Forwarding Transmet le flux réseaux vers le Root Bridge.
    Designated Port Forwarding Fait office de passerelle sur la liaison réseaux.
    paquet BPDU STP

    Comme vous l’avez sans doute compris, les ports peuvent se trouver dans plusieurs états. On dénombre cinq états de port que vous pouvez retrouver dans le tableau ci-dessous :

    Etat du port Transfert de données Réception BPDU Envoi BPDU Apprentissage MAC Etat
    Blocking NON OUI NON NON Stable
    Listening NON OUI OUI NON Temporaire
    Learning NON OUI OUI OUI Temporaire
    Forwarding OUI OUI OUI OUI Stable
    Disabled NON NON NON NON Stable

    En cas de changement sur la topologie réseaux, la topologie Spanning-Tree est, elle aussi, impactée. Par exemple, dans le cas d’une défaillance d’un lien, le chemin vers le Root Bridge sera recalculé. Si nous nous référons au schéma ci-dessus, en cas défaillance du lien actif entre switch 1 et switch 2, le port Eth0/2 sur switch 2 prendra 20 secondes pour passer du mode blocking à Listening . Le port va ensuite rester durant 15 secondes dans cet état, recevoir les BPDU, les interpréter et mettre à jour la topologie du switch. Il entrera ensuite en mode Learning durant un second cycle de 15 secondes, au cours duquel il apprendra les adresses MAC, pour finir par devenir le nouveau Root Port du switch 2 et entrer en mode Forwarding . Dans le cas d’une défaillance, STP prendra donc environ 50 secondes pour mettre en oeuvre un nouveau chemin.

    Ce processus de 50 secondes est également déclenché à la connexion d’un poste utilisateur sur la couche Access . C'est pourquoi il est fortement conseillé d’activer la fonctionnalité PortFast sur les interfaces destinées aux postes clients. Attention, cette option rend STP inopérant sur les ports concernés, l’option doit être uniquement utilisée sur les interfaces clients.

    La vitesse de convergence de Spanning-Tree étant trop lente pour répondre aux besoins réseaux de nos jours, le protocole RSTP qui fonctionne de la même manière avec des temps de convergence plus rapide (maximum 6 secondes) sera préféré.

    Maintenant que vous maîtrisez STP, nous allons aborder MSTP et RPVST+ qui ont un fonctionnement de base semblable à STP. Cependant, ils intègrent, une fonctionnalité de répartition de charge, mais également, tout comme RSTP, une vitesse de convergence plus rapide.


    Je vous propose de continuer, par l’analyse des champs spécifiques au BPDU de Multiple Spanning- Tree ; en effet nous détaillerons ici uniquement les champs contenus dans MST Extension , les autres champs étant communs avec STP :

    paquet BPDU MSTP
  • MST Config ID format selector : Indique sur 1 octet le format de présentation des informations de configuration MSTP, la valeur à 0 signifie une présentation standardisée.
  • MST Config name : Indique le nom d’identification de la région MSTP, tous les switch de la région doivent avoir le même nom.
  • MST Config revision : Indique sur 2 octets le numéro de version de configuration, ce numéro doit être le même sur tous les switch de la région. Il est à incrémenter de manière manuelle par l’administrateur au moment de la révision de la configuration.
  • MST Config digest : Indique le Hachage des paramètres de configuration de la région MSTP, en vue de vérifier l’unicité de cette configuration sur les switch de la région.
  • CIST Internal Root Path Cost : Indique sur 4 octets le coût du chemin vers le Root Bridge de l’arbre Spanning-Tree commun ou CIST (notion expliquée ci-dessous).
  • CIST Bridge Identifier : Indique l’identifiant du Bridge CIST , cet identifiant est composé des valeurs suivantes :
  • CIST Remaining hops : Indique sur 1 octet le nombre de sauts restant au sein du CIST avant que le BPDU ne soit abandonné, ce champ est décrémenté au fur et à mesure. Cela permet de limiter la propagation des BPDU, afin de maîtriser l’impact sur la charge réseau.
  • MSTID : Indique sur 2 octets l’identifiant de l’instance MSTI.
  • Regional Root Identifier : Indique sur 8 octets l’identifiant du Root Bridge régional de l’instance.
  • MSTI flags : Champ sur 1 octet fournissant des informations sur l’état du port émetteur et la topologie au sein de l’instance.
  • Priority : Indique sur 1 octet la priorité de cette instance MSTP.
  • Internal root path cost : Indique sur 4 octets le coût du chemin à destination du Root Bridge régional pour cette instance MSTP.
  • Bridge Identifier Priority : Indique la priorité du switch dans cette instance MSTP.
  • Port identifier priority : Indique la priorité utilisée dans le choix du rôle du port au sein de l’instance MSTP.
  • Remaining hops : Indique sur 1 octet le nombre de sauts restant au sein de l’instance avant que le BPDU ne soit abandonné.
  • Télécharger le paquet Wireshark MSTP BPDU

    Le BPDU MSTP, en dehors des champs MST Extension , est composé exactement des mêmes champs que les BPDU de STP et RSTP, cela permet d’assurer une rétrocompatibilité.

    Comme vous avez pu le constater en analysant les champs du BPDU, MSTP ajoute le concept d’instance (MSTI), ces instances sont configurées par l’administrateur pour regrouper un certain nombre de VLAN. A noter qu'en l’absence de configuration, tous les VLAN seront placés dans l’IST (Internal Spanning- Tree) qui est l’instance STP par défaut. Le protocole va calculer et déterminer un arbre Spanning-Tree par instance, l’administrateur pourra influencer de manière ciblée les topologies de chacune des instances pour répartir la charge réseaux. Les instances sont toutes déclarées dans un seul BPDU en vue de garantir la cohérence tout en limitant le nombre de paquets circulant sur les réseaux.

    En plus du concept d’instance, MSTP inclut un concept de région. Une région regroupe tous les switch qui ont la même configuration pour les valeurs MST Config name , MST Config révision et MST Config digest . Les instances MSTP sont attachées à une seule région et ne peuvent pas s’étendre au dehors. Les switch d’une région partagent donc la même vision de la topologie et de la répartition des VLAN. Chacune des régions dispose de sa topologie avec notamment un CIST Regional Root qui est le point d’interconnexion entre les régions MSTP et leurs diverses instances avec le CIST.

    Le CIST ou Common and Internal Spanning Tree est la topologie Spanning par défaut qui permet l’interconnexion des topologies MSTP régionales entre elles, mais également la rétrocompatibilité avec les topologies STP et RSTP. Afin d’assurer cette interconnexion sans boucles réseaux, l’arbre CIST dispose également d’un CIST Root Bridge point central de la topologie. A noter que le CIST n’a pas de vision détaillée des topologies de chaque région, pour vulgariser, considérer que le CIST voit une région comme un seul switch.

    A la différence de Spanning-Tree, MSTP procède à plusieurs élections. Pour commencer, le CIST Root Bridge est élu en fonction de Priorité Bride Indentifer la plus faible et de l’adresse MAC la plus basse en cas d’égalité. Dans un deuxième temps, le CIST Regional Root est élu sur la base du chemin le plus court vers CIST Root Bridge , en cas d'égalité le switch avec le Bride Indentifer le plus faible sera sélectionné. La dernière élection est celle du Root Bridge de chacune des instances MSTP, cette élection se déroule de la même manière que l’élection du Root Bridge dans STP abordée précédemment.

    MSTP inclut trois nouveaux rôles de port, de plus que STP, qui sont récapitulés ci-dessous :

    Rôle du port Etat Fonction
    Master Port Forwarding Transmet les flux entre la région MSTP et le CIST Root.
    Bakcup Port Blocking Port de secours sur un même segment réseau pour transmettre les flux en cas de défaillance
    d'un Designated Port.
    Alternate Port Blocking Port de secours pour transmettre les flux en cas de défaillance d'un Root Port.

    La sélection du Master Port repose sur le port qui a le coût de chemin vers le CIST Root Bridge le plus faible ; en cas d’égalité entre deux ports, le Bridge Identifier du switch connecté aux ports concurrents le plus faible sera préféré. Dans le cas d’une seconde égalité, c’est le switch avec le Port Identifier le plus bas qui sera utilisé pour les départager.

    Pour ce qui est de la sélection du Backup Port , il est choisi parmi les ports concurrents au Designated port sélectionnés sur un même segment réseau. Dans le cas où plusieurs ports peuvent prétendre à être Backup Port , le Bridge Identifier le plus faible, ou à défaut le Port Identifier le plus faible sera préféré.

    Le choix du Alternate Port se fait par le coût de chemin vers le Root Bridge le plus faible. Dans le cas de deux ports concurrents, le Bridge Identifier et le Port Identifier seront utilisés pour les départager.

    Etat du port Transfert de données Réception BPDU Envoi BPDU Apprentissage MAC Etat
    Discarding NON OUI OUI NON Stable
    paquet BPDU MSTP

    Je vous propose d’aborder la version propriétaire CISCO du protocole RPVST+.


    Nous allons commencer par analyser les champs spécifiques au BPDU de RPVST+ :

  • Originating VLAN : Contient les 3 valeurs suivantes.
  • Télécharger le paquet Wireshark RPVST+ BPDU

    A noter que les autres champs du paquet RPVST+ sont semblables au paquet STP présenté précédemment. La fonctionnalité PortFast pour les interfaces reliant les clients existe également dans le cadre de RPVST+.

    Comme vous pouvez le constater, à la différence de MSTP, RPVST+ n’intègre pas le concept d’instance qui regroupe plusieurs VLAN, il crée un arbre Spanning-Tree par VLAN. La constitution de l'arborescence RPVST+ s’effectue de manière identique à l'arborescence STP, en intégrant la vitesse de convergence de RSTP.

    Comme tous protocoles réseaux, la sécurisation de MSTP et RPVST+ est une étape majeure. Cette sécurisation passe par une sécurisation des protocoles en eux-mêmes, mais aussi par une gestion rigoureuse de l’accès aux réseaux.

    Il existe plusieurs mécanismes de gestion des paquets BPDU permettant la mise en place d’un axe de sécurité.


    Le BPDU Guard est l’un des mécanismes de sécurisation directement intégré dans les protocoles dérivés de STP (propriétaires ou non). Il est à configurer sur les interfaces clients qui sont reliées à des périphériques finaux, ces interfaces sont en principe en mode Portfast . Ce mécanisme désactive les interfaces sur lequel il est configuré en cas de réception d’un BPDU. Cependant, il est à noter que le port en mode BPDU Guard, qui n’est pas désactivé, continue d’émettre des BPDU comme tous les autres ports Spanning-Tree. Ce mécanisme offre une sécurisation contre les tentatives de détournement de l'arbre Spanning-Tree volontaires de la part d’un acteur malveillant mais également, accidentelles si un utilisateur décide de son propre chef de brancher un petit switch dans son bureau. Cela n’empêche en rien un acteur malveillant de procéder à une reconnaissance de la topologie en analysant les BPDU avec WireShark ou TCPDUMP.


    BPDU Filter est un second mécanisme de sécurisation intégré à STP et ses variantes. Ce mode est activé par l’administrateur sur les interfaces mode Portfast , soit au cas par cas, soit de manière globale. A noter que le comportement de BPDU Filter est impacté par la manière dont il a été configuré. Dans le cadre d’une configuration globale, l’envoi des BPDU est désactivé, cependant en cas de réception d’un BPDU, le BPDU Filter et le Portfast seront désactivés sur le port récepteur. Dans le cadre d’une configuration manuelle, les ports ne peuvent ni recevoir ni envoyer de BPDU. Tout comme BPDU Guard cela permet de protéger la topologie Spanning-Tree de toute modification, mais aussi d’empêcher la reconnaissance topologique. Cela réduit également le nombre de paquets inutiles sur le réseau. Il est important de souligner que cette couche de sécurité doit être implémentée avec précaution, en effet l’implémenter sur un lien reliant deux switch peut créer une boucle réseau.

    Le Root Guard est un mécanisme qui est configuré par l’administrateur sur les ports souhaités. Une fois mis en place, ce mécanisme rejette les BPDU qui disposent d’une Root Bridge Priority favorable à l’émetteur, en vue d’empêcher un changement de Root Bridge . Le port sera donc placé dans le mode root-inconsistent afin de ne pas impacter la topologie. Cela est utile pour s’assurer qu’aucun acteur, malveillant ou non, n’usurpe les fonctions cruciales du Root Bridge .


    Loop Guard permet de protéger la topologie d’une boucle en cas de défaillance Spanning-Tree. En effet, un port en mode blocking Listening qui ne reçoit plus de paquets BPDU pourrait passer en mode Forwarding et ainsi créer une boucle réseaux. L’implémentation de Loop Guard par l’administrateur permet de remédier à ce problème, quand un port en mode Blocking ou Listening ne reçoit plus de BPDU, il passe en état loop-inconsistent . Dans cet état, le port ne transmet plus aucun trafic, il sera automatiquement réintégré dans son rôle Spanning-Tree dès une nouvelle réception de BPDU. A noter que, de la même manière que les autres mécanismes de sécurité STP, Loop Guard peut être configuré de manière globale ou au cas par cas.


    La gestion rigoureuse de l’accès aux réseaux est également un axe de sécurisation indirecte de Spanning- Tree et de ses variantes. Cette gestion des accès aux réseaux peut passer par l’implémentation de Port Sécurity qui limite les clients pouvant se connecter aux réseaux via l’identification de leur MAC. Une gestion des accès réseaux peut passer par la mise en place du 802.1x pour limiter la connexion aux périphériques authentifiés par un certificat. Cela est bien plus sécurisé que le Port Sécurity mais bien plus complexe à mettre en oeuvre. Il est également possible d’ajouter des ACL pour affiner les conditions d’accès et de communication sur les réseaux.


    Les possibilités d’intégration des variables du protocole Spanning-Tree sont nombreuses. Dans le cadre de l’architecture à trois niveaux, l’implémentation sera le plus souvent réservée aux couches Aggregation et Access ; en effet la couche Core interagissant au niveau 3 du modèle OSI, STP n’est pas adaptée. L’utilisation de STP est de nos jours considérée comme obsolète, RSTP lui sera préféré pour sa vitesse de convergence. Cependant, dans un environnement nécessitant une répartition de charge réseaux, MSTP et RPVST+ seront préférés. RPVST+ étant uniquement compatible dans les environnements CISCO, il sera bien souvent délaissé au profit du standard MSTP. En plus de sa compatibilité universelle, MSTP permet de regrouper plusieurs VLAN afin de réduire le nombre d’arbres STP à prendre en compte durant la configuration. La gestion des BPDU de MSTP est également très avantageuse dans le cas d’un environnement avec un grand nombre de VLAN, car les informations sont regroupées dans un seul BPDU contrairement à RPVST+ qui émet un BPDU par VLAN. RPVST+ peut donc se montrer rapidement plus gourmand que MSTP en ressources. L’intégration multi-régions de MSTP, bien que complexe à mettre en oeuvre, représente un véritable atout pour la gestion d’infrastructures très étendues.


    Dans le cadre de notre maquette, nous mettrons en place MSTP et RPVST+ sur nos couches Aggregation et Access . Nous modifierons des valeurs telles que le Bridge Priority pour influencer les arbres STP. Nous créerons plusieurs instances MSTP pour la répartition de charge et mettrons en place certains mécanismes de sécurité présentés ci-dessus.