STP par la pratique (802.1d)

"Parce qu'un dessin vaut mieux qu'un long discours" (proverbe euh je ne sais pas d'où il provient, si vous avez une idée n'hésitez pas à m'en faire part) est vrai dans mon cas. En tous cas pour ma compréhension.
Dans ce cadre là et mes révisions pour le CCNA, je me suis livré à de petits tests.
Soit cette architecture de switch :



Ok, alors quel port va bloquer ?!

STP fonctionne en s'envoyant des messages. Ces messages s'appellent des BPDU (Bridge Protocol Data Unit) (Contenu voir plus bas).
Ces message sont envoyés tous les 2s (Hello Time).

Une fois une topologie STP, un switch doit attendre Max Age si un changement de topologie est opéré (Max Age = 10 * Hello Time = 20s).

Le changement d'un état (bloqué/forward) d'un port ne peut s'opérer qu'en passant par les états 'Listening', puis 'Learning'. Le passage de l'état 'Listening' à 'Learning' se fait en 15s (Forward Delay), puis de l'état 'Learning' à 'Forwarding' en 15s aussi.

Le temps de convergence d'une topologie à une autre est donc d'environ : 10 * 2 + 15 + 15 = 50s.

Après ce bref rappel, voyons comment s'établit la topologie STP de notre exemple:
Pour arriver à la solution suivant, il faut utiliser les étapes ci-contre:

  • Etape 1. Sélectionner le 'Root Bridge' au moyen de son BID(Bridge ID)

    Le plus bas BID gagne.

    Ici sw1 avec 0002.4b64.4540

  • Etape 2. Ensuite, pour les switchs non-root, soit sw2 et sw3 trouver leur 'Root-port (RP)'. Ce port est le port qui reçoit les BPDU avec un path-cost le plus faible. Le path-cost est le coût indiqué dans le BPDU afin d'atteindre le Root Bridge. Depuis le Root Bridge, le path-cost est de 0.

    Coûts révisés IEEE:
    VitesseCoût
    10Mbits100
    100Mbits19
    1Gbits4
    10Gbits2

    Prenons le cas de sw2, ici il reçoit sur fa0/1 un BPDU avec comme path-cost de 0 + 19, et sur fa0/17: 19 + 19. Fa0/1 est donc le root-port.
    Idem pour sw3.

  • Etape 3. Finalement pour tous les segments LAN du réseau de switch, il faut déterminer les 'Designated'Port (DP)'. On identifie ces ports en utilisant de nouveau le path-cost et le le Sender-ID(==BID) du switch qui forwarde les BPDU du Root Bridge, ceci depuis chaque bout du segment. Suivant le path-cost, on identifie le DP, si égalité le BID le plus faible gagne :-)
    Les ports qui ne sont ni 'Root Port', ni 'Designated Port' sont des 'Non-Designated Port'. Ils se trouvent dans un état bloqué.



Très marrant de débrancher différentes jarretières ethernet et voir comment le processus STP se comporte :-)
Ne pas oublier :debug spanning-tree events
sw3# debug spanning-tree events
sw3#
00:22:06: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to down
00:22:06: ST: FastEthernet0/13 vlan 1 -> blocking
00:22:06: ST: Max-age timer has expired on port FastEthernet0/13 vlan 1
00:22:06: ST: FastEthernet0/24 vlan 1 -> listening
00:22:07: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to down
00:22:08: ST: sent Topology Change Notice on FastEthernet0/24 vlan 1
00:22:21: ST: FastEthernet0/24 vlan 1 -> learning
00:22:36: ST: sent Topology Change Notice on FastEthernet0/24 vlan 1
00:22:36: ST: FastEthernet0/24 vlan 1 -> forwarding
Ceci est le résultat que l'on peut obtenir en débranchant la jarretière ethernet sur le port Fa0/13 sur le sw3.

On voit bien que Fa0/13 passe en mode 'Disabled', et que le port Fa0/24 qui était bloqué passe quant à lui en mode 'Listening'(Temps durant lequel la table MAC va être invalidée)(15s), puis en mode 'Learning'(Apprentissage de sa nouvelle table MAC)(15s), puis finalement en mode 'Forwarding'.

Les états pour passer d'un état 'Blocking' à 'Forwarding':
Blocking -> Listening -> Learning -> Forwaring

Tout ceci car le sw3 ne recevait plus les Hellos BPDU depuis le path-cost le plus court (sw1-sw3), mais uniquement celui entre sw2-sw3 (path-cost=38).

On aurait pu tout autant arriver au même genre de comportement en faisant :
sw3# cont f
sw3(conf)# int fa0/13
sw3(conf-if)# spanning-tree vlan 1 cost 39
sw3(conf-if)#
Si vous voyez une coquille n'hésitez surtout pas à me joindre...

$Id: lab_stp.txt,v 1.3 2009/01/07 14:42:30 clucas Exp clucas $