Spanning-Tree Portfast & BPDU Guard

Spanning-Tree (STP), pour rappel, est un protocole prenant en charge la résolution des boucles dans un réseau de switches. Bien qu’efficace, ce protocole est lent … très lent … trop lent, une interface qui passe up/up va transiter par différents états avant de pouvoir fonctionner normalement (forwarder les trames), cela prend 30 secondes (pour la version standard de STP).
Imaginons une minute le cas d’un PC moderne, qui essaie d’obtenir son configuration IP par DHCP….
Temps 0: Le PC se met en route, son interface s’active, l’interface du switch passe up/up, Spanning Tree la place dans un état « LISTENING », aucune trame n’entre ou ne sort à l’exception des BPDUs (Bridge Protocol Data Unit, message de STP).
Temps 0+15s: L’interface du switch passe dans l’état « LEARNING », elle accepte désormais les trames provenant du PC mais ne les forwarde pas, son seul but ici est de peupler sa table d’adresses MAC.
Et pendant ce temps ….
Le PC est dans les starting-blocks, il émet des requêtes DHCP, espérant (en vein) d’obtenir sa configuration… Ces trames sont purement et simplement éliminées par le switch. Après quelques essais, le PC abandonne, et passe sur la roue de secours en s’auto-configurant une adresse APIPA.
Temps  0+30s: L’interface passe enfin en état « FORWARDING », elle accepte maintenant les trames et les forwarde normalement.
Résultat … pas d’accès réseau fonctionnel pour le PC jusqu’à ce qu’il se décide de retenter sa chance.

PortFast … une solution dangereuse mais nécessaire

Afin de palier à ce problème, Cisco a mise en place une fonctionnalité permettant de by-passer les états LISTENING et FORWARDING sous certaines conditions. Cette fonctionnalité c’est le « PortFast ».
Configuration de l’interface en portfast:
Switch(config)#interface FastEthernet 0/1
Switch(config-if)#spanning-tree portfast
Vérifier si PortFast est activé ou non sur l’interface:
Switch#spanning-tree interface FastEthernet0/1 portfast
VLAN1            enabled
Attention:
  • PortFast n’est actif qu’à condition de l’interface ne soit pas un trunk
  • PortFast désactive le comportement normal de STP et expose donc le switch aux dangers de boucles. Il faut donc s’en prémunir et se servir de fonctionnalités complémentaires

BPDUGuard … « You shall not pass! »

Autre fonctionnalité, complémentaire à PortFast, BPDUGuard a pour but de désactiver une interface qui recevrait un BPDU alors qu’elle n’aurait pas dû. Une interface pour laquelle BPDUGuard est activé, et qui reçoit un BPDU, sera placée en état errDisabled (down/down, même état qu’en cas de violation de Port-Security).
Pour être à nouveau fonctionnelle, l’interface devra être manuellement remise à zéro (shutdown / no shutdown) ou alors il faut utiliser les fonctionnalités « errdisable recovery » (ce sera pour un autre article).
Configuration de BPDUGuard:
Switch(config)#interface FastEthernet 0/1
Switch(config-if)#spanning-tree bpduguard enable
Remarque: Ne confondez pas BPDUGuard et BPDUFilter, ce dernier a pour but d’empêcher une interface d’émettre des BPDUs mais aussi de les ignorer quand ils entrent, mais ne résout en rien le problème de base, bien au contraire.
Exemples de dangers écartés grâce à BPDUGuard:
  • L’utilisateur Lambda connecte sans le savoir deux ports du même switch entre eux (Ho! Le joli câble qui traîne… Si je le branchais juste à côté ?)
  • Une erreur de configuration/cablâge qui entraîne une boucle entre plusieurs switches par des interfaces en PortFast.

0 commentaires:

Enregistrer un commentaire