Les fonctionnalités avancées du protocole STP sont peut-être l’un des sujets les moins compris dans l’un des niveaux d’étude de la certification Cisco. D'après ce que nous avons vu, ces fonctionnalités n'ont pas été clairement documentées ou même la documentation existante contient des erreurs. Cet article décrit en détail le fonctionnement de PortFast, BPDU Guard, et BPDU Filter.
S1#show run interface eth0/2
interface Ethernet0/2
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast
S1#show interface eth0/2 switchport
Name: Et0/2
Switchport: Enabled
Administrative Mode: trunk
Operational Mode: trunk
S1#show spanning-tree interface eth0/2 portfast
VLAN0001 disabled
S1#show interface eth0/2 switchport
Name: Et0/2
Switchport: Enabled
Administrative Mode: trunk
Operational Mode: trunk
S1#show spanning-tree interface eth0/2 portfast
VLAN0001 enabled
Si l'interface est modifiée en mode d'accès, la fonctionnalité PortFast restera activée.
S1#show run interface eth0/2
interface Ethernet0/2
switchport mode access
spanning-tree portfast trunk
S1#show interface eth0/2 switchport
Name: Et0/2
Switchport: Enabled
Administrative Mode: static access
Operational Mode: static access
S1#show spanning-tree interface eth0/2 portfast
Une convergence plus rapide est peut-être le principal avantage de la fonctionnalité PortFast, mais ce n’est pas le seul. Le commutateur ne génère jamais de Notification de Changement de Topologie (TCN) lorsque le statut d'un port activé est modifié avec PortFast. Dans les très grands réseaux (et plats), vous pouvez atteindre un point où le réseau change constamment de topologie. Cela peut entraîner des problèmes majeurs, tels qu'un flot excessif de trafic unicast, pouvant entraîner un ralentissement du réseau. C'est pourquoi il est important d'implémenter correctement PortFast sur le réseau.
BPDU Guard empêche un port de recevoir des BPDUs. Si le port reçoit une unité BPDU, il est placé dans un état error-disabled pour protéger le port.
De la même manière que la fonction PortFast, le BPDU Guard dispose de deux options de configuration : Globale (spanning-tree portfast bpduguard default) et par interface (spanning-tree bpduguard enable). Comme le montre la syntaxe de la commande, si BPDU Guard est configuré de manière globale, cela dépend du statut opérationnel de PortFast. Quelle que soit la configuration de PortFast, une fois la protection BPDU activée, celle-ci sera active. Dans le cas de la configuration par interface, BPDU Guard est activé de manière inconditionnelle sur le port, quel que soit le mode PortFast ou le mode access/trunk.
Nous verrons ce comportement sur la ligne de commande.
Les commutateurs S1 (root) et S2 sont directement connectés aux deux extrémités du port Eth0/0. Nous vérifierons que la commande globale n'a aucun effet sauf si elle est liée à la fonctionnalité avec PortFast.
Les interfaces sont configurées en mode d'accès, le BPDU Guard est activé de manière globale et la valeur de PortFast n'est pas configurée. La configuration est identique sur les deux commutateurs.
Comme on peut le constater, le BPDU Guard est activé globalement. En regardant le résultat de cette commande uniquement, une conclusion erronée pourrait être tirée, car le port pouvait être en err-disabled après la réception des BPDUs. Cependant, des BPDUs sont en cours de réception, mais le port transmet toujours. Dans ce cas, PortFast n'est pas activé, de sorte que BPDU Guard ne déclenche jamais le port dans l'état err-disable.
S2#show spanning-tree interface eth0/0 detail | include BPDU
BPDU: sent 0, received 136
S2#show spanning-tree interface eth0/0 portfast
VLAN0001 disabled
S2#show spanning-tree | begin Interface
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- ------
Et0/0 Root FWD 100 128.1 Shr
Nous allons activer PortFast globalement dans S1.
S1(config)#spanning-tree portfast default
S1#show spanning-tree summary
Switch is in pvst mode
Root bridge for: VLAN0001
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is enabled
S1#show spanning-tree interface eth0/0 portfast
VLAN0001 enabled
S1#show spanning-tree | begin Interface
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- ----------
Et0/0 Desg FWD 100 128.1 Shr Edge
À ce stade, certaines questions peuvent se poser : pourquoi le port transfère-t-il toujours les images après l'activation de la fonctionnalité PortFast ? Pourquoi n'y a-t-il pas de messages de log ? La réponse réside dans le fonctionnement normal du STP. Le commutateur exécute PVST+, et seul le commutateur root envoie des BPDU à chaque intervalle, sauf modification de la topologie. Étant donné que S1 le root switch et qu'aucun événement entraînant l'envoi d'un TCN par S2 n'a été signalé, S1 n'a reçu aucun de BPDUs.
S1#show spanning-tree interface eth0/0 detail | include BPDU|Bpdu
Bpdu guard is enabled by default BPDU: sent 631, received 0
S2(config)#spanning-tree portfast default
Dès que S2 a reçu la prochaine BPDU de S1, le port devient err-disabled et les messages d'erreur sont affichés sur la console.
*Mar 3 11:26:15.503: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Ethernet0/0 with BPDU Guard enabled. Disabling port.
*Mar 3 11:26:15.503: %PM-4-ERR_DISABLE: bpduguard error detected on Et0/0, putting Et0/0 in err-disable state
*Mar 3 11:26:16.504: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0, changed state to down
*Mar 3 11:26:17.503: %LINK-3-UPDOWN: Interface Ethernet0/0, changed state to down
S2#show interface status err-disabled
Port Name Status Reason Err-disabled Vlans
Il existe deux manières de récupérer un port dans l'état err-disabled, l'une en entrant manuellement les commandes shutdown et no shutdown et l'autre en utilisant la commande errdisable recovery cause bpduguard. L'intervalle de récupération par défaut est de 300 secondes, mais il peut être modifié à l'aide de la commande errdisable recovery interval.
S2#show errdisable recovery
ErrDisable Reason Timer Status
----------------- --------------
arp-inspection Disabled
bpduguard Enabled
channel-misconfig (STP) Disabled
--- output omitted ---
Timer interval: 300 seconds
Interfaces that will be enabled at the next timeout:
Interface Errdisable reason Time left(sec)
--------- ----------------- --------------
Et0/0 bpduguard 275
De toute évidence, la récupération automatique ne résout pas la cause du problème. Après 300 secondes, le port doit être réhabilité pendant une courte période jusqu'à ce qu'il revienne à l'état err-disabled à la réception de la prochaine unité BPDU du commutateur root.
Maintenant, vérifions rapidement que la configuration du niveau d'interface de BPDU Guard est en réalité indépendante de l'état opérationnel de PortFast ou du mode access/trunk.
S2(config)#no spanning-tree portfast default
S2(config)#no spanning-tree portfast bpduguard default
S2(config)#interface Eth0/0
S2(config-if)#spanning-tree bpduguard enable
S2#show spanning-tree interface eth0/0 portfast
VLAN0001 disabled
S2#show spanning-tree interface eth0/0 detail | include Bpdu|BPDU
Bpdu guard is enabled
BPDU: sent 0, received 140
Lorsque la première BPDU est reçue, l’interface est placée comme err-disabled.
*Mar 3 12:55:33.953: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Et0/0 with BPDU Guard enabled. Disabling port.
*Mar 3 12:55:33.953: %PM-4-ERR_DISABLE: bpduguard error detected on Et0/0, putting Et0/0 in err-disable state
*Mar 3 12:55:35.325: %LINK-3-UPDOWN: Interface Ethernet0/0, changed state to down
S2#show interface status err-disabled
Port Name Status Reason Err-disabled Vlans
Et0/0 err-disabled bpduguard
La fonction BPDU Filter empêche certains ports spécifiques d'envoyer ou de recevoir des BPDUs.
À nouveau, il existe deux méthodes pour configurer cette fonctionnalité : Globalement (spanning-tree portfast bpdufilter default) et par interface (spanning-tree bpdufilter enable). La configuration de l'interface filtre inconditionnellement les BPDUs entrantes et sortantes - quel que soit le statut opérationnel du mode PortFast ou du mode access/trunk.
Cela équivaut en fait à désactiver le STP. Mais cela peut être très dangereux car vous pouvez facilement créer une boucle (loop) permanente. Il est frappant que l'IOS n'affiche pas de message d'avertissement lorsque cette commande est appliquée. Activer PortFast sur la mauvaise interface ne représente pas un risque important, comme dans le cas du BDPU Filter, mais l'IOS envoie alors un avertissement à l'administrateur.
Voyons cela en action. Les commutateurs S1 (root) et S2 sont connectés aux liaisons. Eth0 / 1 sur S2 est verrouillé.
S1#show spanning-tree | begin Interface
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------
Et0/0 Desg FWD 100 128.1 Shr
Et0/1 Desg FWD 100 128.2 Shr
S2#show spanning-tree | begin Interface
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------
Et0/0 Root FWD 100 128.1 Shr
Que se passe-t-il si le BPDU Filter est activé sur S2 ?
S2(config)#interface range eth0/0 - 1
S2(config-if-range)#spanning-tree bpdufilter enable
S1#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address aabb.cc00.1f00
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address aabb.cc00.1f00
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- -----------------------
Et0/0 Desg FWD 100 128.1 Shr
Et0/1 Desg FWD 100 128.2 Shr
S2#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address aabb.cc00.2000
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address aabb.cc00.2000
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- -----------------------
Et0/0 Desg FWD 100 128.1 Shr
Et0/1 Desg FWD 100 128.2 Shr
Les deux commutateurs pensent maintenant qu'ils sont root et que toutes leurs interfaces sont en état de transfert. Les BPDU ne sont ni envoyées ni reçues dans S2.
S2#show spanning-tree interface eth0/0 detail | include Bpdu|BPDU
Bpdu filter is enabled
BPDU: sent 0, received 0
S2#show spanning-tree interface eth0/1 detail | include Bpdu|BPDU
Bpdu filter is enabled
BPDU: sent 0, received 0
Jetons un coup d'œil à l'utilisation de la bande passante. Il y a beaucoup de paquets !
S2#show interface eth0/0
Ethernet0/0 is up, line protocol is up (connected)
30 second input rate 12481000 bits/sec, 20262 packets/sec
30 second output rate 12482000 bits/sec, 20264 packets/sec
S2#show interface eth0/1
Ethernet0/1 is up, line protocol is up (connected)
30 second input rate 12477000 bits/sec, 20256 packets/sec
30 second output rate 12474000 bits/sec, 20250 packets/sec
Ceci est un exercice émulé dans IOL. En plus des deux commutateurs, il n'y a pas d'autres périphériques, ni aucun autre trafic. Alors, vous pouvez imaginer comment cette configuration pourrait rapidement effondrer le réseau. Utilisez cette commande avec précaution.
La configuration globale est plus complexe. Semblable à la fonction de BPDU Guard, le BPDU Filter global est activé sur les interfaces ayant le statut PortFast operational. En mode global, le commutateur ne filtre pas les BPDU d'entrée, mais la plupart des BPDU de sortie sont filtrés (bien que pas tous). Lorsqu'un port est activé, 11 BPDUs sont envoyés. Si des BPDU sont reçus, les fonctionnalités PortFast et BPDU Filter sont désactivées.
Voyons comment cela fonctionne. Les deux interfaces de S1 ont été configurées avec l'interface de BPDU Filter. Les deux interfaces de S2 ont configuré le spanning-tree portfast trunk puis PortFast sera opérationnel et le BPDU Filter sera activé globalement.
S1#show spanning-tree interface eth0/0 detail | include Bpdu|BPDU
Bpdu filter is enabled
BPDU: sent 0, received 0
S1#show spanning-tree interface eth0/1 detail | include Bpdu|BPDU
Bpdu filter is enabled
BPDU: sent 0, received 0
S2#show spanning-tree summary
Switch is in pvst mode
Root bridge for: VLAN0001
Extended system ID is enabled
Portfast Default is disabled
PortFast BPDU Guard Default is disabled
Le port envoie 11 BPDUs et s’arrête.
S2#show spanning-tree interface eth0/0 detail | include Bpdu|BPDU
Bpdu filter is enabled by default
BPDU: sent 11, received 0
S2#show spanning-tree interface eth0/1 detail | include Bpdu|BPDU
Bpdu filter is enabled by default
Notez ce qui se passe dans S2 lorsque l'interface de BPDU Filter est désactivée dans S1.
S1(config)#interface range eth0/0 - 1
S1(config-if-range)#no spanning-tree bpdufilter enable
S2#debug spanning-tree events
*Mar 3 15:01:09.027: STP: VLAN0001 heard root 32769-aabb.cc00.1f00 on Et0/1
*Mar 3 15:01:09.027: supersedes 32769-aabb.cc00.2000
*Mar 3 15:01:09.027: STP: VLAN0001 new root is 32769, aabb.cc00.1f00 on port Et0/1, cost 100 *Mar 3 15:01:09.027: STP: VLAN0001 new root port Et0/0, cost 100
*Mar 3 15:01:09.027: STP: VLAN0001 sent Topology Change Notice on Et0/0
*Mar 3 15:01:09.027: STP[1]: Generating TC trap for port Ethernet0/1
Le S2 écoute les BPDU supérieures, désactive efficacement le BPDU Filter et ramène le STP à son fonctionnement normal. Eth0/0 devient le root port et Eth0/1 est bloqué.
S2#show spanning-tree | begin Interface
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------
Et0/0 Root FWD 100 128.1 Shr
Dans cet article, nous avons présenté de manière exhaustive les fonctionnalités avancées de STP, mais nous voudrions ensuite souligner les points les plus importants :
Publié par: Jose R. Torrico Gumucio / Version originale en espagnol
Pour ajouter un commentaire ici, vous devez être inscrit. Si vous êtes déjà inscrit, connectez-vous. Dans le cas contraire, inscrivez-vous puis connectez-vous.
La communauté est un hub pour vous connecter avec vos pairs et les spécialistes Cisco, pour demander de l'aide, partager votre expertise, développer votre réseau et évoluer professionnellement.
Vous êtes un nouvel arrivant ? Cliquez ici pour en savoir plus.
Nous voulons que votre navigation soit la meilleure, donc vous trouverez des liens pour vous aider à être rapidement familiarisé avec la Communauté Cisco :