Spanning Tree – Configuration

Suite à l’article sur la théorie de Spanning Tree, voyons comment ce protocole se configure.

Nous mettrons en pratique les notions précédemment vues, et nous chercherons à analyser le comportement de Spanning Tree.

A l’issue de cet article, vous serez en mesure de mettre en place Spanning Tree dans un réseau, et ce en comprennent son fonctionnement.

 

1) La topologie

 

Voici la topologie que nous utiliserons :

Topologie STP

Le but sera de configurer Spanning Tree pour qu’il désactive les liens redondants.

Nous verrons quel est le lien désactivé, puis nous influencerons l’élection du Root Bridge.

Nous verrons aussi les timers de Spanning Tree, le Peer Vlan Spanning Tree, etc…

 

2) Première approche

 

Vous vous demandez certainement comment activer Spanning Tree.

Et bien sachez qu’il est déjà activé, et déjà en action.

 

En utilisant la commande « Show Running Config », nous pouvons voir quelle est la version utilisée :

Spanning-Tree Mode PVST

La version activée actuellement est la PVST.

Pour rappel, cette version fonctionne comme le STP classique, sauf qu’il peut y avoir un Root Bridge par VLAN.

Dans les exemples que je donnerai, il sera parfois fait mention du VLAN 99.

Il s’agit du VLAN que j’utilise pour accéder à distance à mes switchs. Il n’est pas nécessaire de s’en soucier.

En dehors de cela, nous n’avons que le VLAN 1 (pour le moment).

 

Voyons donc qui est le Root Bridge sur la topologie précédente.

Les critères de choix du Root Bridge sont les suivants :

  • Priorité la plus basse
  • Adresse MAC la plus basse

 

La commande « Show Spanning Tree » permet de voir l’état Spanning Tree :

Show Spanning Tree

Les informations affichées sont celles du VLAN 1

Nous retrouvons deux groupes d’information.

La partie Root ID, concerne le Root Bridge (ici il s’agit de S2 lui-même)

Quand le Switch en question est le Root Bridge, nous pouvons voir le message « This bridge is the root ».

La deuxième partie, « Bridge ID » concerne le switch en lui-même.

Forcément, pour S2 nous y retrouvons les mêmes informations.

 

3) Etats des ports

 

Dans la partie interface, il est indiqué le rôle des ports, et leur état.

Ici, comme S2 est le Root Bridge, les ports sont tous en Designated / Forwarding.

 

Voyons maintenant le résultat de la même commande sur S1 :

Show Spanning Tree

 

La partie Root ID fait bien référence à S2.

Nous pouvons voir que le port Fa 0/1 a le rôle Root.

Le port Fa 0/2 a été bloqué.

 

4) Choix du meilleur lien / désactivation des liens redondants

 

Nous parlions, dans le précédent article, du choix des liens à désactiver.

Ici, tous les liens sont en 100 Mb/s.

Le coût est effectivement de 19 :

Spanning Tree Link Cost

Le choix du meilleur chemin sera donc relativement simple.

 

Mais pourquoi S1 a-t’il choisit le lien vers S4 comme étant le meilleur chemin ?

En effet, S1 a 2 chemins égaux à disposition.

 

Dans l’article précédent, nous avions dit qu’en cas d’égalité, c’est le voisin avec le plus petit BID qui gagne.

Comparons S3 et S4 :

Show Spanning Tree

Show Spanning Tree

Les deux switchs ont la même priorité.

En revanche, S4 a une adresse MAC plus élevée.

S3 a donc un BID plus petit.

Ce qui explique pourquoi S1 a coupé le port Fa 0/2.

 

5) Les Timers STP

 

Voyons en fonction les Timers STP.

Pour étudier les Timers, nous allons couper le port Fa 0/2 de S2, de manière à ce que S1 réactive son pot Fa 0/2.

Pour cela, nous commençons par désactiver le port.

 

Switch-2(config-if)#interface fastEthernet 0/2
Switch-2(config-if)#shutdown

 

Rapidement, nous passons sur S1, et nous affichons l’état Spanning Tree :

Show Spanning Tree VLAN 1

Nous constatons que le port reste en mode Blocking pendant les 20 secondes dont nous avions parlé.

Ensuite, le port passe en mode Listening pendant 15 secondes (il écoute les BPDU).

 

Show Spanning Tree

Après quoi il passe en mode Learning (pendant 15 secondes) :

Show Spanning Tree

Enfin, le port arrive en mode Forwarding :

Show Spanning Tree

 

6) Portfast

 

La première solution pour réduire les timers, est d’utiliser le Portfast sur certains ports.

Comme dit dans l’article précédent, cela aura pour effet de désactiver Spanning Tree sur le port en question.

Cette fonctionnalité n’est à activer que sur les ports connectés à des PC.

Entre les switchs, Porfast est proscrit, pour des raisons évidentes.

 

La configuration est très simple :

Switch-1(config)#interface fastEthernet 0/3
Switch-1(config-if)#spanning-tree portfast

 

Afin de prévenir les erreurs, le message suivant est affiché :

Spanning Tree Portfast

 

7) Rapid-PVST

 

Afin de rendre le processus Spanning Tree plus rapide, nous allons mettre en place le protocole Rapid PVST.

Encore une fois, pour plus de détails, je vous renvoie vers l’article traitant de la théorie de Spanning Tree.

 

Voici comment changer le mode Spanning Tree :

Spanning Tree Mode

Vous aurez alors le choix entre plusieurs modes.

Ici nous choisirons Rapid-PVST. Il fonctionne comme PVST, mais il est plus rapide.

Attention, lors du changement de protocole, cela peut causer des boucles. En effet, selon le protocole choisi, les switchs ne pourront plus discuter entre eux. Rapid-PVST, RSTP et MSTP sont compatibles.

 

Switch-1(config)#spanning-tree mode rapid-pvst

La manipulation est à faire sur tous les switchs.

 

Le résultat ressemble beaucoup à ce que nous avions en PVST :

Show Spanning Tree

Maintenant la question qui se pose : la bascule se fait-elle plus vite ?

Refaisons la manipulation précédente.

 

Nous désactivons le port Fa 0/2 de S2, de manière à forcer le port FA 0/2 de S1 à passer en mode Forwarding.

Voici l’état actuel de S1 :

Show Spanning Tree

Procédons à la coupure :

 

Switch-2(config)#interface fastEthernet 0/2
Switch-2(config-if)#shutdown

 

Passons rapidement sur S1, et voyons l’état Spanning Tree :

Show Spanning Tree

Le changement a déjà été fait !

La bascule se fait si rapidement, qu’il est très difficile de la percevoir.

Néanmoins, d’un point de vu des transmissions réseau, le temps de bascule est tout de même significatif.

 

8) MSTP – Muliple Spanning Tree Protocol

 

Le MSTP est l’équivalent de Rapid-PVST mais en version standard.

La configuration est un peu différente.

En voici un aperçu :

Switch-1(config)#spanning-tree mode mst

Il faut ensuite rentrer dans la configuration de MST, et créer des instances.

Une instance peut contenir un ou plusieurs VLAN.

Un switch va ensuite être le Root Bridge pour une instance, et donc potentiellement pour plusieurs VLAN.

Switch-1(config)#spanning-tree mst configuration
Switch-1(config-mst)#instance 1 vlan 1 2 3 4 5
Switch-1(config-mst)#instance 2 vlan 6 7 8 9 10

Si nous le souhaitons, nous pouvons forcer un switch à devenir le Root Bridge :

Switch-1(config)#spanning-tree mst 1 root primary

 

Libre à vous d’implémenter le protocole MST dans notre topologie, néanmoins, nous resterons sur du Rapid-PVST pour la suite de cet article.

 

9) Plusieurs instances Spannign Tree

 

Nous avons dit précédemment qu’en PVST et Rapid-PVST, il est possible d’avoir plusieurs instances Spanning Tree.

Le Root Bridge ne sera alors pas le même pour tous les VLAN.

 

Nous allons modifier notre topologie pour profiter pleinement de cette fonctionnalité.

Topologie MSTP

PC 1 et PC 3 seront dans le VLAN 10, et PC 2 et PC 4 dans le VLAN 20.

Le but est que S3 soit le Root Bridge du VLAN 10, et S2 le Root Bridge du VLAN 20.

 

Voici les modifications à apporter :

 

Switch-1(config)#interface fastEthernet 0/3
Switch-1(config-if)#switchport mode access
Switch-1(config-if)#switchport access vlan 10

 

Switch-1(config)#interface fastEthernet 0/4
Switch-1(config-if)#switchport mode access
Switch-1(config-if)#switchport access vlan 20

 

Switch-1(config)#interface range fastEthernet 0/1 - 2
Switch-1(config-if-range)#switchport mode trunk

 

Switch-2(config)#interface fastEthernet 0/3
Switch-2(config-if)#switchport mode access
Switch-2(config-if)#switchport access vlan 10

 

Switch-2(config)#interface fastEthernet 0/4
Switch-2(config-if)#switchport mode access
Switch-2(config-if)#switchport access vlan 20


Switch-2(config)#interface range fastEthernet 0/1 - 2
Switch-2(config-if-range)#switchport mode trunk

 

Switch-3(config)#interface range fastEthernet 0/1 - 2
Switch-3(config-if-range)#switchport mode trunk

 

Switch-4(config)#interface range fastEthernet 0/1 - 2
Switch-4(config-if-range)#switchport mode trunk

 

Comme convenu, nous forçons S3 comme Root Bridge pour le VLAN 10 :

Switch-3(config)#spanning-tree vlan 10 root primary

 

Puis S4 pour le VLAN 20 :

Switch-4(config)#spanning-tree vlan 20 root primary

 

Voyons le résultat :

Show Spanning Tree

Comme prévu, S1 utilise son port Fa 0/1 pour le VLAN 10, et son port FA 0/2 pour le VLAN 20.

 

Les frames du VLAN 10 transiteront par S3, et celles du VLAN 20 par S4.

La charge sera donc « répartie », la bande passante ne sera pas gaspillée.

 

10) Autres fonctionnalités

 

Voyons à présent quelques autres fonctionnalités qui peuvent être utiles en Spanning Tree.

 

BPDU Guard

En activant le BPDU Guard sur un port, ce dernier va se désactiver (état Err-Disable) s’il reçoit un BPDU.

C’est une fonctionnalité à activer sur les ports faisant face à des PC.

Switch-1(config-if)#interface fastEthernet 0/3
Switch-1(config-if)#spanning-tree bpduguard enable

 

BPDU Filter

Le BPDU Filter permet de désactiver l’envoie de BPDU sur ce port.

Par contre, si un BPDU est reçu sur ce même port, le port fera à nouveau partie du processus Spanning Tree (Portfast sera aussi désactivé).

 

Switch-1(config)#interface fastEthernet 0/4
Switch-1(config-if)#spanning-tree bpdufilter enable

 

Backbone Fast et UplinkFast

Backbone Fast et UplinkFast sont deux fonctionalité (crées par Cisco) qui permettent d’améliorer le temps de convergence de processus Spanning Tree.

La configuration de ces fonctionnalités est inutile en Rapid-PVST, RSTP et MSTP, car elles sont déjà prises en charge.

Reprenons cette topologie pour étudier les deux fonctionnalités précédemment citées :

Topologie STP

S3 étant le Root Bridge, le port de Fa 0/2 sera en mode Blocking.

En activant UplinkFast, la convergence sera plus rapide en cas de panne.

Si le switch S3 tombe en panne, S1 va automatiquement activer son port Fa 0/2 car il a gardé en mémoire que c’est un chemin alternatif vers le Root Bridge.

La convergence sera donc plus rapide, car il ne sera pas nécessaire de repasser par les différentes phases d’écoute et d’apprentissage.

Cette fonctionnalité est à activer sur les switchs au niveau Access. Aux niveaux Distribution et Core, cela peut parfois amener à des boucles.

Pour améliorer la sécurité, la priorité du switch est augmentée lors de l’activation d’UplinkFast. De même que le coût des ports.

 

Voici comment activer UplinkFast :

Switch-5(config)#spanning-tree uplinkfast

 

Et voici l’évolution de la priorité et du coût :

Avant UplinkFast :

Show Spanning Tree

 

Après :

Show Spanning Tree

La priorité a augmenté de 2^14 et le coût du lien, de 3000.

 

A l’inverse, Backbone Fast permet de détecter des pannes distantes. C’est-à-dire des pannes qui se produisent sur des switchs distants et qui font que nous n’accédons plus au Root Bridge.

A la détection d’une telle panne, le switch passe directement le port concerné en mode Listening, et n’attend pas l’expiration du Max Age Timer (temps après lequel le port passe en Listening si on ne reçoit plus de BPDU du Root Bridge).

 

Le gain de temps est donc de 20 secondes.

 

Pour activer Backbone Fast, utiliser la commande suivante sur tous les switchs :

Switch-5(config)#spanning-tree backbonefast

 

Encore une fois, il n’est pas nécessaire d’activer UplinkFast et BackboneFast en RSTP, Rapid-PVST et MSTP.

 

11) Storm Control

 

Sur les switchs Cisco, il existe une fonctionnalité qui permet de limiter les tempêtes de broadcast.

Il est possible de choisir la quantité maximale de broadcast qui peut transiter sur un port.

Il est même possible de désactiver le port en cas d’excès.

 

Switch-5(config-if)#storm-control broadcast level 20

Dans ce cas-ci, seul 20% de la bande passante du lien peut être utilisée pour transmettre des broadcast.

Si le seuil est dépassé, tout le broadcast sera bloqué, jusqu’à ce que le débit de transmission tombe en dessous de 20%.

 

Il est possible de faire de même pour le multicast et l’unicast.

 

Pour désactiver le port en cas d’excès (error-disabled) :

Switch-5(config-if)#storm-control action shutdown

 

Il est aussi possible de configure deux niveaux :

Switch-5(config-if)#storm-control broadcast level 20 15

Dans ce cas-ci, le trafic de broadcast sera bloqué s’il dépasse 20%, et ne sera autorisé à nouveau que s’il tombe en dessous de 15%.

 

12) Conclusion

 

Nous arrivons au terme de cette présentation du protocole Spanning Tree.

Nous avons pu voir la théorie (dans l’article précédent), et la pratique.

La partie pratique aura été l’occasion de configurer Spanning Tree et ces différentes fonctionnalités, mais aussi d’étudier le fonctionnement du protocole.

 

Tagués avec : , , , , ,
Publié dans Spanning Tree
5 commentaires pour “Spanning Tree – Configuration
  1. yahya dit :

     » Mais pourquoi S2 a-t’il choisit le lien vers S4 comme étant le meilleur chemin ?  »
    voulez vous dire S3 je pense??

  2. douodu dit :

    Bonjour Valentin.
    Merci pour votre article. Mais je pense qu’il doit avoir une erreur de frappe.
    Vous avez écrit « pourquoi S2 a-t’il choisit le lien vers S4 comme étant le meilleur chemin ? »
    Je pense que c’est plutôt S1 qu’il faut mettre car c’est le port Fa0/2 sur la liaison entre S1 et S4 qui a été bloqué. Parce que S4 a une adresse MAC supérieure à celle de S3. Merci

    Cordialement

    • Valentin Weber dit :

      Bonjour, effectivement, c’est bien S1 et non S2. J’ai corrigé l’article, merci pour la remarque

      • doudou dit :

        Une autre préoccupation. Tellement votre blog est intéressant que je voulais vous demander si vous n’avez pas fait un article sur les ACL (Access-list)

Répondre à yahya Annuler la réponse

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

*

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.