Lorsque Spanning-Tree (STP) résout une boucle dans un réseau de 
switches, il respecte une série de paramètres permettants de déterminer 
le meilleur chemin vers le Root Bridge, ce « chemin » sera identifié sur
 chaque switch par le « Root Port »…
Ces critères sont, par ordre décroissant de priorité:
- Le « Root Path Cost »: la somme des costs des interfaces par lesquelles le BPDU entre.
 - Le Bridge ID du switch voisin.
 - Le Port-ID du switch voisin.
 
Le Root path cost peut être influencé en modifiant le cost des interfaces par lesquelles les BPDUs entrent.
Le Bridge ID quant à lui peut être manipulant en ajustant le priorité de
 STP. C’est ce que l’on fait généralement pour s’assurer qu’un switch 
précis soit élu le Root-Bridge. Il est donc délicat de la modifier afin 
d’influencer le choix du RP (root-port).
Il peut arriver que deux liens, mènent au Root Bridge avec le même cost,
 et que le Bridge ID du voisin soit identique (deux liaisons parallèles 
entre deux mêmes switches), c’est là qu’intervient le Port-ID. Comme 
pour tout le reste dans STP, le plus petit Port-ID sera le meilleur.
En réalité le port ID est constitué de deux élements…
- La priorité du port codée sur 8 bits (0-255)
 - L’identifiant du port codé sur 8 bits, dépendant du matériel donc non modifiable.
 
En général ce détail est simplifié en disant qu’à cost égal et à 
bridge-id voisin égal, le switch choisi la plus petit interface (par 
classement alphanumérique)… par exemple fastEthernet0/0 est plus petit 
que fastEthernet0/1 … mais en réalité, chacun de ses ports a un numéro 
d’identification qui lui est associé (qui reflète d’ailleurs la logique 
simplifiée décrite ci-dessus).
Bien que le principe semble simple, sa compréhension peut-être délicate.
 En effet, la modification du cost d’une interface a un effet sur le 
switch local… parce qu’il est additionné au Root-Path-Cost présent dans 
le BPDU … par contre … La priorité du port quant à elle a un effet 
indirect. Le switch choisira l’interface par laquelle il reçoit le 
Port-ID le plus faible … ce qui implique que l’information est donnée 
par le switch voisin.
Voyons cela dans la pratique…
Topologie utilisée
SWITCH-B et SWITCH-C sont connectés par leurs interfaces respectives 
Fa0/1, Fa0/2, FA0/9 et Fa0/10. Les interfaces Fa0/1 et Fa0/2 sont 
configurée en un Etherchannel statique, il en va de même pour Fa0/9 et 
Fa0/10.
De la sorte, nous avons deux switches liées par deux etherchannel parallèles, de cost égaux etc.
Analyse de la topologie de base
SWITCH-B#show spanning-tree vlan 1
VLAN0001
 Spanning tree enabled protocol ieee
 Root ID Priority 32769
 Address 000e.84fd.c440
 This bridge is the root
 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
 Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
 Address 000e.84fd.c440
 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
 Aging Time 300
Interface        Role Sts    Cost   Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Po1              Desg FWD        12   128.65 P2p
Po2              Desg FWD        12   128.66 P2p
SWITCH-B#
Actuellement SWITCH-B est le root-bridge. Les deux Etherchannels (Po1 et
 Po2) sont donc des DP (Designated Port) et sont dans un état 
« forwarding ». C’est donc du côté de SWITCH-C qu’il y aura un port 
bloquant.
SWITCH-C#show spanning-tree vlan 1 VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 32769 Address 000e.84fd.c440 Cost 12 Port 65 (Port-channel1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address 000f.28a2.d740 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Po1 Root FWD 12 128.65 P2p Po2 Altn BLK 12 128.66 P2p SWITCH-C#
On note ici que Po2 est bloquant (Altn BLK). Pourquoi ? … Po1 et Po2 ont
 le même Root Path Cost, dés lors le switch tente de les départager avec
 le BID du voisin… hors c’est le même … il lui reste alors le Port-ID du
 voisin… Po1 sur SWITCH-B a une valuer de 128.65, contre 128.66 pour 
Po2, dés lors quand SWITCH-C reçoit le BPDU provenant de Po1 de SWITCH-B
 il le considère comme meilleur et Po1 devient alors le RP.
Modifier le RP en agissant sur le cost
Sans doute la méthode la plus simple, il suffit de modifier le cost de 
l’interface par laquelle entre le BPDU. Par exemple ici on peut réduire 
le cost de Po2 sur SWITCH-C. Ce qui diminuera le Root Path Cost par ce 
lien et le définira comme RP.
SWITCH-C(config)#interface port-channel 2 SWITCH-C(config-if)#spanning-tree vlan 1 cost 11
Vérifions…
SWITCH-C#show spanning-tree vlan 1 VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 32769 Address 000e.84fd.c440 Cost 11 Port 66 (Port-channel2) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address 000f.28a2.d740 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Po1 Altn BLK 12 128.65 P2p Po2 Root FWD 11 128.66 P2p SWITCH-C#
Le résultat correspond à nos attentes, Po2 a maintenant un cost de 11 et
 est donc le meilleur chemin vers le root, et donc élu RP … Po1 devient 
donc le port bloquant.
Simple … efficace … mais … modifier le cost d’une interface a un impact 
sur l’ensemble de la topologie. Si plusieurs switches sont en cascade, 
modifier le cost sur une interface impacte tous les switches en aval.
On peut donc procéder autrement…
Modifier le RP en agissant sur le Port-ID
Ici c’est plus délicat. On va devoir modifier la priorité du port par 
lequel est émis le BPDU reçu. Donc pour favoriser Po2 sur SWITCH-C, il 
va falloir réduire la valeur de priorité de PO2 (plus petit = meilleur) 
sur SWITCH-B…
Remarque: dans un « show spanning-tree », la colonne  « Prio.Nbr » 
indique la valeur que le switch inscrira dans le BPDU quand il l’émettra
 par cette interface.
Tout d’abord on remet le cost par défaut sur SWITCH-C…. (SWITC-C Po1 redevient donc le RP et Po2 redevient bloquant).
SWITCH-C(config)#interface port-channel 2 SWITCH-C(config-if)#no spanning-tree vlan 1 cost 11
Ensuite on passe sur SWITCH-B et on défini une valeur de priorité de 
port plus faible pour Po2 de sorte que SWITCH-C préfère les BPDU émis 
par cette interface…
SWITCH-B(config)#interface port-channel 2 SWITCH-B(config-if)#spanning-tree vlan 1 port-priority 112
Notez que la valeur de priorité (128 par défaut) doit être un incrément 
de X … où X dépend du switch, de l’IOS etc… par exemple sur le c2950 que
 j’utilise pour l’exemple, il faut utiliser des incréments de 16 
(128-16=112).
Vérifions d’abord le résultat sur SWITCH-B…
SWITCH-B#show spanning-tree vlan 1
VLAN0001
 Spanning tree enabled protocol ieee
 Root ID Priority 32769
 Address 000e.84fd.c440
 This bridge is the root
 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
 Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
 Address 000e.84fd.c440
 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
 Aging Time 300
Interface        Role Sts    Cost   Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Po1              Desg FWD        12   128.65 P2p
Po2              Desg FWD        12   112.66 P2p
SWITCH-B#
On voit bien ici que la priorité de Po2 a été ajustée … mais il ne faut 
pas oublié que cela n’a pas d’effet local, c’est la valeur indiquée dans
 le BPDU lorsqu’il est transmis par cette interface.
Voyons maintenant sur SWITCH-C…
SWITCH-C#show spanning-tree vlan 1
VLAN0001
 Spanning tree enabled protocol ieee
 Root ID Priority 32769
 Address 000e.84fd.c440
 Cost 12
 Port 66 (Port-channel2)
 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
 Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
 Address 000f.28a2.d740
 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
 Aging Time 300
Interface        Role Sts    Cost   Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Po1              Altn BLK        12   128.65 P2p
Po2              Root FWD        12   128.66 P2p
SWITCH-C#
L’interface Po2 est bien devenue le RP sans modifier son cost. Par 
contre on ne voit pas ici le changement de priorité … de nouveau cette 
commande n’affiche que la valeur de l’interface locale … pour voir la 
valeur reçue dans le BPDU il faut gratter plus loin…
SWITCH-C#show spanning-tree vlan 1 detail VLAN0001 is executing the ieee compatible Spanning Tree protocol Bridge Identifier has priority 32768, sysid 1, address 000f.28a2.d740 Configured hello time 2, max age 20, forward delay 15 Current root has priority 32769, address 000e.84fd.c440 Root port is 66 (Port-channel2), cost of root path is 12 Topology change flag not set, detected flag not set Number of topology changes 8 last change occurred 00:14:48 ago from Port-channel1 Times: hold 1, topology change 35, notification 2 hello 2, max age 20, forward delay 15 Timers: hello 0, topology change 0, notification 0, aging 300 Port 65 (Port-channel1) of VLAN0001 is blocking Port path cost 12, Port priority 128, Port Identifier 128.65. Designated root has priority 32769, address 000e.84fd.c440 Designated bridge has priority 32769, address 000e.84fd.c440 Designated port id is 128.65, designated path cost 0 Timers: message age 1, forward delay 0, hold 0 Number of transitions to forwarding state: 4 Link type is point-to-point by default BPDU: sent 4, received 2207 Port 66 (Port-channel2) of VLAN0001 is forwarding Port path cost 12, Port priority 128, Port Identifier 128.66. Designated root has priority 32769, address 000e.84fd.c440 Designated bridge has priority 32769, address 000e.84fd.c440 Designated port id is 112.66, designated path cost 0 Timers: message age 1, forward delay 0, hold 0 Number of transitions to forwarding state: 4 Link type is point-to-point by default BPDU: sent 4, received 2202 SWITCH-C#
Cette commande affiche le détail de STP pour le VLAN1, et plus 
particulièrement les informations reçues dans les BPDU pour les 
différentes interfaces concernées (PO& et Po2 dans ce cas-ci).
On voit bel et bien ici que Po2 (le port 66) a reçu un BPDU avec un 
port-id de 112.66 (112 est la priorité, 66 est le n° du port sur 
SWITCH-B).







0 commentaires:
Enregistrer un commentaire