STP – Spanning Tree Protocol
1
Généralités
·
·
Versions
STP:
PVST:
Protocole de base.
Per VLAN STP, une instance de STP par
VLAN. Uniquement avec ISL.
PVST+: Per VLAN STP fonctionnant avec dot1q.
RSTP+: STP Amélioré pour réduire la durée du
passage d’un port en « blocking » à
« forwarding ». (IEEE 802.1w)
MSTP: Multiple Spanning Tree Protocol. Une
instance de RSTP par groupe de VLANs.
Protocole réseau permettant de définir
une topologie sans boucle dans un
LAN composé de switches.
Protocol Standardisé IEEE 802.1d
Bridge ID
16 bits
48 bits
Priorité STP
Adresse MAC du switch
Dangers des boucles dans un LAN
·
·
0 … 65535
Dans le cas de PVST, la priorité est composée
d’un multiple de 4096 auquel on ajoute
l’identifiant du VLAN.
Exemple: 32769 = 32768 + 1 (priorité par défaut
Tempête de broadcast (Broadcast Storm).
Instabilité des tables d’adresses MAC.
D: ffff.ffff.ffff
pour le VLAN1).
1 - Election du Root Bridge
Le switch dont le BridgeID est le plus petit remporte l’élection du Root Bridge.
·
·
Chaque Switch s’annonce comme le root.
Quand un switch découvre un meilleur BID que le RootBridge qu’il connait actuellement (luimême au début du processus), il remplace ce RootID par celui qu’il vient de découvrir.
BID:
28672-deab.9878.9945
BID:
32769-abcd.1234.5678
Root
BID:
32769-aacd.ab12.cd34
Une fois l’élection terminée, seul le Root Bridge envoi des BPDUs.
Structure d’un BPDU (Bridge Protocol Data Unit)
Protocole
ID
Version
Message
Type
Flags
Root ID
Root Path
Cost
Bridge ID
Port ID
Message
Age
Maximum
Age
Hello
Time
Forward
Delay
Root Path Cost: Représente le coût du trajet depuis le root vers le switch en fonction du chemin utilisé.
http://www.ciscomadesimple.be
STP – Spanning Tree Protocol
Rôles des ports STP
2
Coûts standards des interfaces
Ethernet:
Fast-Ethernet:
Gigabit:
Etherchannel Gigabit:
Ten-Gigabit:
Rp (Root port) Meilleur chemin vers le Root bridge.
Dp (Designated port) Port non-Rp en « forwarding ».
Un port qui n’est ni Rp ni Dp est un port bloqué.
100
19
4
3
2
Définition des rôles des ports
Le Root-Bridge envoi un BPDU dans chaque direction.
S1
S2
BPDU: cost 0
BID:
28672-deab.9878.9945
Fa0/1 19
19 Fa0/1
BID:
32769-abcd.1234.5678
Root
Gig0/1
4
Gig0/1
4
BPDU: cost 0
Gig0/1
4
Gig0/2
4
BID:
32769-aacd.ab12.cd34
S3
A chaque entrée sur une interface, le cost de l’interface est additionné au « Root Path Cost » du BPDU.
S1
BID:
28672-deab.9878.9945
BPDU: cost 0 + 19 = 19
Dp
Fa0/1 19
Root
Gig0/1
4
19 Fa0/1
Dp
Rp
Rp
S2
BID:
32769-abcd.1234.5678
Gig0/1
4
BPDU: cost 0 + 4 + 4 = 8
Dp
Gig0/1
4
Gig0/2
4
BID:
32769-aacd.ab12.cd34
S3
S2 reçoit deux BPDUs, l’un venant directement de S1, l’autre par le côté de S3.
Celui provenant de S3 a un « Root Path Cost » de 8, inférieur à celui venant de S1 (19), le chemin passant par S3
est donc le meilleur chemin vers le Root Bridge, l’interface Gig0/1 de S2 sera donc un Rp.
Un port faisant face à un Rp ne peut être qu’un Designated Port (Dp). Gig0/2 sur S3 sera donc un Dp.
Les ports d’un Root Bridge sont toujours des Designated Ports. Fa0/1 et Gig0/1 de S1 seront donc des Dp.
Pour ouvrir la boucle il suffit de bloquer un seul port. Dans ce cas, la seule possibilité est Fa0/1 sur S2.
http://www.ciscomadesimple.be
STP – Spanning Tree Protocol
3
Définition des rôles des ports
Si le « Root Path Cost » est égal des deux côtés de la boucle, le Bridge ID est utilisé pour définir le côté du lien
ou le port sera bloqué. Ici, S2 a un BID plus grand que S3 (donc moins bon), le lien entre S3 et S2 sera alors
bloqué du côté de S2.
S1
BID:
28672-deab.9878.9945
S2
Rp 4
Gig0/2
4 Dp
Gig0/2
BID:
32769-abcd.1234.5678
Root
Gig0/1
Dp 4
Gig0/1
4
Rp
4
Gig0/1
Dp
4
Gig0/2
BID:
32769-aacd.ab12.cd34
S3
Si ni le « Root Path Cost », ni le BID ne permettent de faire un choix, c’est alors le nom de l’interface qui est
utilisé. LE « plus petit » nom d’interface sera le meilleur. ( A est plus petit que Z, 1 est plus petit que 2 )
Dp 4
Gig0/1
BID:
28672-deab.9878.9945
Root
4
Gig0/2
Dp
4 Rp
Gig0/1
BID:
32769-abcd.1234.5678
Gig0/2
4
Dans ce cas, S1 est Root Bridge, tous ses ports sont donc Dp. C’est alors du côté de S2 qu’il y aura un port
bloqué. Les costs sont égaux, le BID aussi. C’est donc le nom de l’interface qui va permettre de choisir. Gig0/1
est plus petit que Gig0/2, donc meilleur. Gig0/2 sera donc le port bloqué.
Etats des ports STP
Initialisation
Activation du port
Blocking
20 sec (*)
Le port jette les trames entrantes.
Le port accepte les BPDUs mais ne les retransmets pas.
Le port ne complète pas sa table d’adresses MAC.
Listening
15 sec
Le port jette les trames entrantes.
Le port accepte les BPDUs et les retransmets.
Le port ne complète pas sa table d’adresses MAC.
Learning
15 sec
Le port accepte les trames entrantes mais ne les retransmet pas.
Le port accepte les BPDUs et les retransmets.
Le port incorpore les nouvelle adresse MAC dans sa table.
Forwarding
Le port accepte et retransmets les trames entrantes.
Le port accepte les BPDUs et les retransmets.
Le port incorpore les nouvelle adresse MAC dans sa table.
(*) Lors d’un changement d’état un port restera en « Blocking » pendant 20 secondes afin d’éviter un recalcul
de la topologie STP si ce n’est pas nécessaire (Un câble débranché et directement rebranché par exemple).
http://www.ciscomadesimple.be
STP – Spanning Tree Protocol
4
Configurer la priorité STP
MLS1>enable
MLS1#configure terminal
MLS1(config)#spanning-tree vlan 1 root primary
MLS1>enable
MLS1#configure terminal
MLS1(config)#spanning-tree vlan 1 priority 24576
·
·
·
L’effet de ces deux commandes est identique. L’option « root primary » est
un raccourci pour définir une priorité de 24576 (soit 32768 – 2x 4096).
La commande « spanning-tree vlan 1 root secondary » revient à définir une
priorité de 28672 (soit 32768 – 1x 4096).
Si la priorité est définie explicitement via la commande « spanning-tree vlan 1
priority XXXXX », la valeur donnée doit être un multiple de 4096.
Priorité STP par défaut
32768
Configurer le « cost » STP d’une interface
MLS1(config)#interface FastEthernet 0/1
MLS1(config-if)#spanning-tree vlan 1 cost 16
REMARQUE:
Sur les switches Cisco modernes, c’est PVST « Per Vlan Spanning-Tree» qui fonctionne par défaut. Chaque
paramétrage de priorité ou de « cost » d’une interface se fait PAR VLAN !
Afficher les informations STP
SW1#show spanning-tree vlan 1
Nom du VLAN concerné
Protocol STP utilisé
VLAN0001
Spanning tree enabled protocol ieee
Root ID
Priority
24577
Address
0013.c3ff.2580
Cost
19
Port
1 (FastEthernet0/1)
Hello Time
2 sec Max Age 20 sec
Priorité configurée
Bridge ID
Adresse MAC
Root Path Cost
Interface à laquelle le switch
actuel est connecté
Forward Delay 15 sec
Priority
32769 (priority 32768 sys-id-ext 1)
Address
0009.7cd5.1a40
Hello Time
2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface
---------------Fa0/1
Fa0/2
Role
---Root
Altn
Sts
--FWD
BLK
Cost
--------19
19
Prio.Nbr
-------128.1
128.2
Informations concernant
le Root Bridge
Le switch où l’on se
trouve
Type
-------------------------------P2p
P2p
Root Port (Rp)
SW1#
Port en « Blocking »
« Cost » de l’interface
Les priorités affichées ne correspondent pas exactement à celles configurées, et ce parce que STP inclut l’identifiant du
VLAN dans la valeur de la priorité. Par exemple 24577 c’est 24576 (priorité configurée) + 1 (pour le VLAN 1).
La commande « show spanning-tree » sans argument complémentaire affichera la liste des informations STP VLAN
après VLAN.
http://www.ciscomadesimple.be
STP – Spanning Tree Protocol
SW1#show spanning-tree interface FastEthernet 0/1
5
Afficher les informations STP
pour une interface spécifique
Vlan
Role Sts Cost
Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------VLAN0001
Root FWD 19
128.1
P2p
SW1#
SW1#show spanning-tree root
Root Hello Max Fwd
Vlan
Root ID
Cost Time Age Dly
---------------- -------------------- ------ ----- --- --VLAN0001
24577 0013.c3ff.2580
19
2
20 15
SW1#
Nom du VLAN
Priorité du Root Bridge
Adresse MAC du Root Bridge
Root Path Cost
SW1#show spanning-tree blockedports
Affiche les informations sur le(s)
Root Bridge, par VLAN
Root Port
---------------Fa0/1
Root Port sur le switch actuel
Affiche les liste des ports en
« blocking » par VLAN.
Name
Blocked Interfaces List
-------------------- -----------------------------------VLAN0001
Fa0/2
Number of blocked ports (segments) in the system : 1
SW1#
Ces commandes peuvent être utilisées en ciblant un VLAN précis, par exemple:
SW1#show spanning-tree vlan 1 interface FastEthernet 0/1
SW1#show spanning-tree vlan 1 root
SW1#show spanning-tree vlan 1 blockedports
Debug des états d’interfaces STP
SW1#debug spanning-tree events
Un nouveau Root bridge est élu
Spanning Tree event debugging is on
SW1#
01:16:16: STP: VLAN0001 heard root 4097-000c.85de.0f00 on Fa0/2
01:16:16:
supersedes 24577-0013.c3ff.2580
01:16:16: STP: VLAN0001 new root is 4097, 000c.85de.0f00 on port Fa0/2, cost 19
01:16:16: STP: VLAN0001 Fa0/2 -> listening
01:16:16: STP: VLAN0001 sent Topology Change Notice on Fa0/2
La topologie a changé, STP
01:16:16: STP: VLAN0001 Fa0/1 -> blocking
redéfini les rôles des
interfaces concernées.
SW1#
01:16:31: STP: VLAN0001 Fa0/2 -> learning
SW1#
01:16:46: STP: VLAN0001 Fa0/2 -> forwarding
SW1#un all
All possible debugging has been turned off
SW1#
ATTENTION: Ne jamais laisser un debug fonctionner sans raison. Eviter dans la mesure du possible de les utiliser dans
un environnement de production.
http://www.ciscomadesimple.be
">