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.
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