annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 
cancel
Modérateur Cisco
Frequent Contributor
Frequent Contributor

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.

PortFast

La fonctionnalité PortFast a été développée à l'origine pour résoudre une situation dans laquelle un PC ne parvient pas à obtenir une adresse via DHCP car le port du commutateur n'effectue pas la transition vers l'état de transfert (Forwarding) dans le temps. Cela est dû au STP qui passe par les états d’écoute (Listening) et d’apprentissage (Learning), qui prennent normalement 30 secondes.

 

 
PortFast permet au port d'entrer immédiatement dans un état de transfert (Forwarding), en contournant les états d'écoute (Listening) et d'apprentissage (Learning). 
Parce que l'objectif de PortFast est de minimiser le temps pendant lequel le port doit attendre que le STP converge. Les états de la transition normale doivent être configurés uniquement sur les ports de périphérie (Edge ports) connectés aux périphériques finaux.
Si PortFast est connecté à une autre interface connectée Switch, une boucle (loop) STP temporaire peut être créée. Ceci est potentiellement dangereux pour le réseau. Par conséquent, Cisco IOS affiche un message d'avertissement lorsque PortFast est activé.
 
 
Il y a beaucoup de désinformation sur les détails opérationnels de PortFast circulant sur Internet.
Une des erreurs les plus courantes est que PortFast désactive efficacement le STP et que les BPDU ne sont ni envoyés ni reçus. Absolument tout dans cette déclaration est faux. 
Le port activé avec PortFast non seulement TRANSMIT BPDU, mais le statut opérationnel de PortFast dépend en fait des BPDU en entrée. Si le port reçoit des BPDU, la fonctionnalité PortFast est désactivée.
Maintenant, il est important de comprendre la différence entre le statut administratif et opérationnel de PortFast. Le statut administratif fait référence à ce qui est configuré sur le périphérique et le statut opérationnel définit si la fonctionnalité est réellement activée ou désactivée.
Il existe essentiellement deux manières d'activer PortFast : Globalement (spanning-tree portfast default) ou par interface (spanning-tree portfast). Les deux commandes activent PortFast sur les ports utilisés comme ports d'accès. Par exemple, un port configuré administrativement pour négocier un lien de jonction, mais ne le fait pas, fonctionne ensuite en mode d'accès.
Jetons un coup d'œil à la ligne de commande. Un PC est connecté au commutateur S1 dans Eth0/2. Le port est configuré en mode dynamic desirable et le PortFast est configuré dans cette interface. C'est le statut administratif. Le commutateur S1 n'établira pas de liaison réseau avec le PC, le port reviendra en mode d'accès et PortFast sera activé. C'est l'état opérationnel.
S1#show run interface eth0/2
interface Ethernet0/2  
switchport mode dynamic desirable
spanning-tree portfast

S1#show interface eth0/2 switchport
Name: Et0/2
Switchport: Enabled
Administrative Mode: dynamic desirable

Operational Mode: static access
S1#show spanning-tree interface eth0/2 portfast
VLAN0001           
enabled 
Et qu'en est-il des BPDU ? Sont-ils toujours envoyés depuis ce port ? Découvrons-le !
S1#show spanning-tree interface eth0/2 detail | include BPDU
  BPDU: sent 580, received 0
Clairement, le port envoie des BPDU. Le STP est actif et en cours d'exécution.
Et que se passe-t-il si nous connectons temporairement un Switch Root à ce port ? Le port recevra BPDU et la fonctionnalité PortFast est effectivement désactivée.
S1#show spanning-tree interface eth0/2 detail | include BPDU
BPDU: sent 724, received 10   
S1#show spanning-tree interface eth0/2 portfast
VLAN0001            disabled
Pour l'exemple suivant, le PC est à nouveau connecté au S1 Eth0/2. Que se passe-t-il si nous configurons explicitement l'interface en tant que Trunk ? La fonctionnalité PortFast n'est plus activée.

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

Il existe une commande supplémentaire au niveau de l’interface, spanning-tree portfast trunk, , qui active PortFast sur les liaisons Trunk. La documentation peut être un peu trompeuse concernant cette commande. Le document indique "Cette commande active PortFast sur l'interface, même en mode Trunk", puis indique : "Cette commande vous permet de configurer PortFast sur des liaisons Trunk". La première phrase est exacte. La seconde pourrait être interprétée comme n'activant PortFast que sur les liaisons de liaisons trunk, ce qui est faux et, en fait, impossible. Aucune commande ne permet de configurer PortFast uniquement sur des ports Trunk opérationnels.
S1(config)#interface eth0/2
S1(config-if)#no spanning-tree portfast
S1(config-if)#spanning-tree portfast trunk   

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   

VLAN0001            enabled

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

 

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.

S2#show interface eth0/0 switchport
Name: Et0/0
Switchport: Enabled
Administrative Mode: static access                  
Operational Mode: static access
 
S2#show spanning-tree interface eth0/0 portfast
VLAN0001            disabled
 
S2(config)#spanning-tree portfast bpduguard default
S2#show spanning-tree summary
Switch is in pvst mode
Root bridge for:            none
Extended system ID          is enabled
Portfast Default            is disabled
PortFast BPDU Guard Default is enabled

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

Exécutons la même commande en S2.

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

Et0/0              err-disabled  bpduguard

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

 

BPDU Filter

 


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

Et0/1              Altn BLK 100      128.2    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        

Portfast BPDU Filter Default is enabled

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

  BPDU: sent 11, received 0

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

*Mar  3 15:01:09.027: STP: VLAN0001 Et0/1 -> blocking

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

Et0/1              Altn BLK 100      128.2    Shr
 

Résumé

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 :

  • PortFast déplace immédiatement le port à l'état de transfert (forwarding), en contournant les états d'écoute (listening) et d'apprentissage (learning).
  • Un port avec PortFast activé continue à envoyer des BPDUs.
  • Si un BPDU est reçu, PortFast est désactivé.
  • Le commutateur ne génère jamais de TCN lorsqu'un port activé avec PortFast bascule entre up et down.
  • Il existe une différence entre le statut administratif et le statut opérationnel.
  • La commande spanning-tree portfast trunk hactive PortFast sur les ports d'accès et trunk.
  • BPDU Guard et BPDU Filter en mode global dépendent de PortFast opérationnel.
  • BPDU Guard et BPDU Filter en mode interface sont inconditionnels.
  • Un BPDU Filter mal configuré est beaucoup plus dangereux qu'un PortFast mal configuré, cependant l'IOS ne génère pas de message d'avertissement à ce sujet.
  • PortFast peut créer une boucle (loop) temporaire de 2 secondes maximum (intervalle par défaut de Hello) jusqu'à la réception de la BPDU suivante et la désactivation de PortFast. Le BPDU Filter peut créer une boucle (loop) permanente car toutes les BPDU sont ignorés.
  • Rappelez-vous le fonctionnement du STP - dans quels cas les BPDU sont envoyés et quand est-ce qu’ils ne le sont pas.

Tiré de:https://learningnetwork.cisco.com/blogs/vip-perspectives/2016/03/10/advanced-stp-features-portfast-bpdu-guard-and-bpdu-filter

Publié par: Jose R. Torrico Gumucio / Version originale en espagnol

Mise en Route
Bienvenue dans la Communauté !

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 :