STP : Spanning Tree Protocol
Le but de spanning-tree est d'éviter le bouclage de trames, tempêtes de broadcast, instabilité des tables de forwarding MAC sur des réseaux redondants de switches.
Généralités
Afin de résoudre les problèmes énoncés ci-dessus, il faut à partir d'un réseau
redondant former un réseau non bouclé.
Spanning-tree répond à cette exigence. Spanning-tree est définit par le standard
IEEE 802.1d-1998. 802.1d fonctionne sur une instance unique (un seul VLAN).
Fonctionnement
Afin d'éviter les boucles, le processus spanning-tree place les ports des switches dans un
état, soit 'FORWARDING', soit 'BLOCKING'.
En état 'FORWARDING', le switch forwarde les trames ethernet et
suit son processus normal d'apprentissage de sa table de forwarding.
En état 'BLOCKING', le switch ne forwarde pas les trames ethernet et n'est
pas dans un état d'apprentissage. Néanmoins, le switch est toujours capable de
recevoir des trames appelées BPDU (Bridge Protocol Data Unit).
Le passage d'un état 'BLOCKING' à 'FORWARDING' d'un port ne peut s'opérer qu'en passant
par les états 'LISTENING' et 'LEARNING'.
L'état 'LISTENING' correspond à un état où la table de correspondance MAC/interface de sortie
va expirer.
L'état 'LEARNING' correspond à un état où le switch va remplir sa table de correspondance
MAC/interface de sortie, mais ne forwardera toujours pas de trame.
Le passage d'un état 'LISTENING' à 'LEARNING' et de 'LEARNING' à 'FORWARDING' se fait dans
un délai de 15s. Ce délai est appelé : Forward Delay.
Une fois que le processus spanning-tree est complètement déroulé, une topologie stable est établie.
Cette topologie reste stable tant que les message BPDU envoyés tous les 2s
(Hello BPDU) indiquent toujours le même état et que le time
Max Age(20s) n'est pas expiré. Si la topologie n'est plus stable,
le processus de résolution et de création d'un topologie non-bouclée peut commencer après
le délai Max Age(20s) (avec Max Age = 10 * Hello BPDU, soit 10 * 2s).
Le temps de convergence d'une topologie à une autre est donc d'environ : 10 * 2 + 15 + 15 = 50s.
Afin d'établir une topologie le processus spanning-tree effectue les étapes suivantes :
Etape 1:
Sélectionner le 'Root Bridge' au moyen de son BID(Bridge ID)

Tous les switches émettent des BPDU avec pour Root ID leur Bridge ID.
Le root ID indique le switch qui est la racine de la topologie.
Celui qui a le plus bas BID gagne l'élection. Une fois, le 'Root Bridge' élu, celui-ci continue
d'émettre des BPDU, alors que les autres switchs re-transmettent ces derniers.
Etape 2:
Ensuite, pour les switchs non-root, il faut élire un 'Root-port (RP)'. Ce port est le port qui reçoit les BPDU avec un root-path-cost le plus faible. Le root-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. Chaque port selon son type possède
un coût.
Coûts révisés IEEE:
| Vitesse | Coût |
| 10Mbits | 100 |
| 100Mbits | 19 |
| 1Gbits | 4 |
| 10Gbits | 2 |
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 Bridge-ID(==BID) du switch qui forwarde les BPDU émis par le Root Bridge, ceci depuis chaque bout du segment. Suivant le path-cost(le plus faible), 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é.
A la fin de ce processus, il n'y a plus de boucle dans le réseau de switch.
Voyons cela par la pratique...
Par la pratique
Dans cette topologie, quels vont être le Root Bridge, les Root Port, Designated Port et Non-Root Port ?
Si l'on suit le processus, nous aurons :
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.
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.
Finalement pour tous les segments LAN du réseau de switch, il faut déterminer les 'Designated'Port (DP)' et donc aussi les 'Non-Designated Port'.
- Segment sw1-sw2 : sw1(fa0/1): DP , sw2(fa0/1): DP
- Segment sw1-sw3 : sw1(fa0/9): DP , sw2(fa0/13): DP
- Segment sw2-sw3 : sw2(fa0/17): DP, sw2(fa0/24): NDP(bloqué)
- sw2(fa0/17): path-cost=19+19 et BID=0002.4bc7.d9c0
- sw3(fa0/24): path-cost=19+19 et BID=0004.9aeb.61c0
- 0002.4bc7.d9c0 < 0004.9aeb.61c0 => fa0/17 est DP
On arrive donc à la solution suivante :

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
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.
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
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 fSi vous voyez une coquille n'hésitez surtout pas à me joindre...
sw3(conf)# int fa0/13
sw3(conf-if)# spanning-tree vlan 1 cost 39
sw3(conf-if)#
RSTP
RSTP (Rapid Spanning Tree Protocol)(802.1w) vient au secours du problème du temps de convergence très long de STP (50s). RSTP tient son nom du fait que les états 'LISTENING' et 'LEARNING' sont réduits au minimum et que Max Age est maintenant de 3 * Hello BPDU (6s). Le temps de convergence n'est plus maintenant que d'environ 6s.
VLAN
Tout ce qui a été expliqué est vrai pour une instance unique du processus spanning-tree.
Ceci implique que le processus ne fonctionne pas pour plusieurs VLANs sur ces mêmes
trois switchs.
MST (Multiple Spanning Tree) vient au secours de ce genre de problème. Il est
issue du standard 802.1s. Les modes de trunking utilisés sont : 802.1Q et ISL.
Je n'ai pas parlé ici de PVST, PVST+, RPVST+, ceux-ci étant uniquement utilisé et définit par Cisco.
Christophe Lucas - http://odie.mcom.fr/~clucas/blog/
Delicious


Commentaires
Sympa l'article

Dommage qu'il ne soit pas possible de le commenter sur son site directement. (J'ai fait un petit billet sur cet article).
Sinon, je viens de publier un article sur NAP, n'hésitez pas à passer
Une minuscule coquille, étape 3
sw3(fa0/17): path-cost=19+19 et BID=0004.9aeb.61c0
au lieu de
sw3(fa0/23): path-cost=19+19 et BID=0004.9aeb.61c0
Mais bon c'est du chipotage la
Bonjour
Je suis en ce moment en stage, pour faire de l'optimisation réseau et je suis tombé avec Wireshark sur le STP. Beaucoup (trop) de STP. Après plusieurs recherches, j'ai trouvé des informations sur ce protocole, et sur d'autres, comme OSPF et RIP.
Dans un premier temps, je n'ai pas trop compris la différence entre OSPF/RIP et STP. Les deux premiers ont (si j'ai bien compris) les mêmes fonctions. Est ce que le STP a la même fonctionnalité que les deux autres ?
Si oui, et comme l'optimisation du réseau passe (en partie) sur la réduction des trames inutiles, j'aurais voulu savoir si le STP est le plus approprié comme protocole, ou si je devrais passer sur de l'OSPF ou du RIP (de ce que j'en ai lu, l'OSPF est le plus approprié deux deux).
De plus, toutjours dans le cas, ou les 3 protocoles sont équivalents, est ce que OSPF ou RIP permettent d'éviter d'éventuels broadcast storms ?
Si non, existe t-il un moyen pour réduire ce trafic STP ? Ou bien je peux me brosser ?
Merci d'avance
Enjoy
The lsd
RIP & OSPF sont des protocoles de routage (pour permettre aux paquets d'arriver à destination). Par contre STP est un protocole qui facilite la commutation de paquets (enfin pour simplifier l'explication). Il ne font pas du tout la même chose.
Quel est le problème réellement dans ton réseau? Hésite pas à m'envoyer une capture de trame faite avec wireshark à johan-blog@digital-connexion.info. je pourrais éventuellement te dire s'il y a quelque-chose à faire.
Johan
Salut,
@Flo : Merci pour la correction de la coquille. J'ai modifié cela sur mon propre blog, mais pas la main ici (normal -> Johan, je te laisse faire la modification).
Amicalement,
Christophe
C'est rectifié ici
Johan
Merci pour la réponse rapide.
En fait, le réseau comporte plus ou moins 800 postes (constitué de VPN, VLAN...) quasiment tous sur le même réseau (128.100.X.X). Je suis là actuellement pour optimiser le réseau, et donc une grande partie de cette optimisation est de supprimer tout ce qui est superflu en terme de trafic (par exemple les imprimantes utilisent IP et IPX pour faire les mêmes choses, je dois donc virer l'IPX afin d'homogénéiser et alléger).
En ce qui concerne le STP, il prend de la place dans la bande passante (pas énormément, mais en additionnant plein de petites choses, je peux améliorer le débit), et je voulais essayer de supprimer le STP qui me semblait superflu. Sauf qu'il y a de nombreuses boucles sur le réseau qui risque de provoquer des broadcasts storms.
Je suis obligé de garder le STP si il y a des boucles ?
A coté de cela, je n'ai pas de RIP/OSPF mis en place, est ce avantageux de mettre en place ces protocoles (en terme d'amélioration de bande passante toujours) ?
Je ferais une capture demain.
Merci d'avance
Enjoy
The lsd
Oui, tu es obligé si tu as des boucles.
une erreur de frappe au niveau de etapes 3 (par la pratique):
au lieu de
trois questions :
quelle est la config par défaut sur un switch catalyst (3750) spanning-tree mode PVST ??? ou autre.
Selon ce que j'ai vu on peut jouer sur des coûts individuel associant interface et VLAN pour déplacer le port forwarding et /ou bloqué, est ce apliquable à plusieurs VLAN d'un coup en mode PVST ?
Le mode MST garanti -t-il que pour tous les vlan les switches auront le même comportement à svoir un seul et même port bloqué dans la topologie ?
Merci pour cette présentation claire et rapide
1/ pvst
2/ S(config-if)# spanning-tree vlan 10 {cost 10 | port-priority 32}
3/ Justement le but de MST est de contre-carré le problème d'avoir de multiple instance STP qui consomment mémoire et CPU, mais qui finalement ont la même topologie en une ou plusieurs instances MST. Une instance MST a une topologie pour plusieurs VLANs, alors que PVST a une topologie par VLAN.
Amicalement,
Christophe
je voulais savoir si le temps du spanning peut tout de même être affecter celon la taille du réseau par exemple une réseau de 1500 poste par rapport à un réseau de 100 poste et si oui comment il augmente. merci