A l'issue d'un cours que j'ai donné sur les protocoles Spanning Tree, voici une simulation que j'avais faite sous GNS3. A noter que GNS3 ne permet que la mise en oeuvre de PVST (Per Vlan Spanning Tree) qui est basé sur l'IEEE 802.1d mais c'est amplement suffisant pour comprendre les mécanismes de base.
C'est une topologie très simple, donc une bonne opportunité pour regarder d'un peu plus près comment ça marche
Voici la topologie. Tous les liens sont des trunks avec un Cost 19, et on n'utilise qu'un seul VLAN (VLAN 10).
Je propose de faire la configuration minimale sans aucun réglage puis on regarde ce qui se passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 If_Vlan10 1.1.1.1/24 +----+ | R1 | +----+ f1/0/ \f1/1 / \ / \ / \ / \ f1/0/ \f1/1 +----+f1/1 f1/0+----+ | R3 |----------| R2 | +----+ +----+ If_Vlan10 If_Vlan10 1.1.1.3/24 1.1.1.2/24
Voici la configuration sur R1 :
C'est la même config sur R2 et R3 (hormis les interfaces Vlan10 bien sûr).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 R1#vlan data R1(vlan)#vlan 10 VLAN 10 modified: R1(vlan)#exit APPLY completed. Exiting.... R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#spanning-tree vlan 10 R1(config)#int f1/0 R1(config-if)#switchport trunk encap dot1q R1(config-if)#switchport mode trunk R1(config-if)#no shut R1(config-if)#int f1/1 R1(config-if)#switchport trunk encap dot1q R1(config-if)#switchport mode trunk R1(config-if)#no shut R1(config-if)#int vlan 10 R1(config-if)#ip add 1.1.1.1 255.255.255.0 ip add 1.1.1.1 255.255.255.0 R1(config-if)#^Z R1#wr Building configuration... *Mar 1 00:05:01.651: %SYS-5-CONFIG_I: Configured from console by console [OK]
Voyons l'état du Spanning Tree sur les 3 switches :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 R1#sh span vlan 10 brief VLAN10 Spanning tree enabled protocol ieee Root ID Priority 32768 Address c800.0da8.0001 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32768 Address c800.0da8.0001 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 0 Interface Designated Name Port ID Prio Cost Sts Cost Bridge ID Port ID -------------------- ------- ---- ----- --- ----- -------------------- ------- FastEthernet1/0 128.41 128 19 FWD 0 32768 c800.0da8.0001 128.41 FastEthernet1/1 128.42 128 19 FWD 0 32768 c800.0da8.0001 128.42
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 R2#sh span vlan 10 brief VLAN10 Spanning tree enabled protocol ieee Root ID Priority 32768 Address c800.0da8.0001 Cost 19 Port 42 (FastEthernet1/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32768 Address c801.0da8.0001 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 0 Interface Designated Name Port ID Prio Cost Sts Cost Bridge ID Port ID -------------------- ------- ---- ----- --- ----- -------------------- ------- FastEthernet1/0 128.41 128 19 FWD 19 32768 c801.0da8.0001 128.41 FastEthernet1/1 128.42 128 19 FWD 0 32768 c800.0da8.0001 128.42Le port f1/1 de R3 est passé Blocking :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 R3#sh span vlan 10 brief VLAN10 Spanning tree enabled protocol ieee Root ID Priority 32768 Address c800.0da8.0001 Cost 19 Port 41 (FastEthernet1/0) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32768 Address c802.0da8.0001 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 0 Interface Designated Name Port ID Prio Cost Sts Cost Bridge ID Port ID -------------------- ------- ---- ----- --- ----- -------------------- ------- FastEthernet1/0 128.41 128 19 FWD 0 32768 c800.0da8.0001 128.41 FastEthernet1/1 128.42 128 19 BLK 19 32768 c801.0da8.0001 128.41
Que s'est-il passé ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 If_Vlan10 1.1.1.1/24 +----+ | R1 | +----+ f1/0/ \f1/1 / \ / \ / \ / \ f1/0/ \f1/1 +----+f1/1 f1/0+----+ | R3 |-X--------| R2 | +----+ +----+ If_Vlan10 If_Vlan10 1.1.1.3/24 1.1.1.2/24
1) Il y a d'abord eu élection du Root Bridge. L'algorithme STP le détermine de la façon suivante :
- c'est le Bridge qui a la plus petite priorité,
- si les Bridges ont la même priorité, c'est le plus petit Bridge ID (généralement égal à la MAC adresse) qui remporte l'élection.
Dans notre cas de figure, tous les Bridges avaient comme priorité 32768. R1 ayant le plus petit Bridge ID (c800.0da8.0001), il devient Root Bridge.
2) Tous les Bridges calculent ensuite le Cost Spanning Tree pour joindre le Root Bridge.
Les interfaces f1/0 de R3 et f1/1 de R2 ont un Cost égal à 19 pour joindre R1.
L'algorithme intervient pour "ouvrir" le lien entre R2 et R3 de la façon suivante :
- R3 calcule que le coût pour joindre R1 au travers de R2 sera de 19+19=38
- R2 calcule que le coût pour joindre R1 au travers de R3 sera de 19+19=38
Pourquoi f1/1 de R3 va-t-il bloquer ?
Parce que, R2 et R3 ayant la même priorité, c'est encore une fois le Bridge ID qui va servir de tie-break : R2 ayant un Bridge ID inférieur à celui de R3, c'est R3 qui va bloquer.
Si depuis R3, je lance un ping sur l'interface Vlan10 de R2, ce traffic passera par R1 :
ce qu'on peut vérifier en scrutant le switching cache de R3 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 R3#ping 1.1.1.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 1.1.1.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/10/28 ms
Comment influencer la décision de l'algorithme lorsqu'il bloque le lien R2-R3 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 R3#sh mac-address-table Destination Address Address Type VLAN Destination Port ------------------- ------------ ---- -------------------- c802.0da8.0000 Self 1 Vlan1 c802.0da8.0000 Self 10 Vlan10 c800.0da8.0000 Dynamic 10 FastEthernet1/0 c801.0da8.0000 Dynamic 10 FastEthernet1/0
On peut jouer sur la priorité. On peut par exemple augmenter la priorité Spanning Tree de R2 :
C'est alors l'interface f1/0 de R2 qui passe Blocking et bien sûr l'interface f1/1 de R3 passe Forwarding :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 R2#conf t Enter configuration commands, one per line. End with CNTL/Z. R2(config)#span vlan 10 priority 33000 R2(config)#^Z ^Z
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 R2#sh span vlan 10 brief VLAN10 Spanning tree enabled protocol ieee Root ID Priority 32768 Address c800.0da8.0001 Cost 19 Port 42 (FastEthernet1/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 33000 Address c801.0da8.0001 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 0 Interface Designated Name Port ID Prio Cost Sts Cost Bridge ID Port ID -------------------- ------- ---- ----- --- ----- -------------------- ------- FastEthernet1/0 128.41 128 19 BLK 19 32768 c802.0da8.0001 128.42 FastEthernet1/1 128.42 128 19 FWD 0 32768 c800.0da8.0001 128.42qui donne la topologie suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 R3#sh span vlan 10 brief VLAN10 Spanning tree enabled protocol ieee Root ID Priority 32768 Address c800.0da8.0001 Cost 19 Port 41 (FastEthernet1/0) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32768 Address c802.0da8.0001 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 0 Interface Designated Name Port ID Prio Cost Sts Cost Bridge ID Port ID -------------------- ------- ---- ----- --- ----- -------------------- ------- FastEthernet1/0 128.41 128 19 FWD 0 32768 c800.0da8.0001 128.41 FastEthernet1/1 128.42 128 19 FWD 19 32768 c802.0da8.0001 128.42
Revenons au scenario où c'est la l'interface f1/1 de R3 qui bloque. Pour ça, je remets la priorité 32768 à R2 puis j'attends un peu pour laisser agir l'algo :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 If_Vlan10 1.1.1.1/24 +----+ | R1 | +----+ f1/0/ \f1/1 / \ / \ / \ / \ f1/0/ \f1/1 +----+f1/1 f1/0+----+ | R3 |--------X-| R2 | +----+ +----+ If_Vlan10 If_Vlan10 1.1.1.3/24 1.1.1.2/24
Une autre façon de contrôler le blocage du lien R2-R3 consiste à agir sur le Cost Spanning Tree d'un des liens R2-R1 ou R3-R1. On peut par exemple augmenter le Cost R2-R1 (baisser le Cost R3-R1 reviendrait au même) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 R2(config)#span vlan 10 prior 32768 R3#sh span vlan 10 brief VLAN10 Spanning tree enabled protocol ieee Root ID Priority 32768 Address c800.0da8.0001 Cost 19 Port 41 (FastEthernet1/0) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32768 Address c802.0da8.0001 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 0 Interface Designated Name Port ID Prio Cost Sts Cost Bridge ID Port ID -------------------- ------- ---- ----- --- ----- -------------------- ------- FastEthernet1/0 128.41 128 19 FWD 0 32768 c800.0da8.0001 128.41 FastEthernet1/1 128.42 128 19 BLK 19 32768 c801.0da8.0001 128.41
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 R2(config)#int f1/1 R2(config-if)#span vlan 10 cost 20 R2(config-if)#^ZVoilà
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 R2#sh span vlan 10 brief VLAN10 Spanning tree enabled protocol ieee Root ID Priority 32768 Address c800.0da8.0001 Cost 20 Port 42 (FastEthernet1/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32768 Address c801.0da8.0001 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 0 Interface Designated Name Port ID Prio Cost Sts Cost Bridge ID Port ID -------------------- ------- ---- ----- --- ----- -------------------- ------- FastEthernet1/0 128.41 128 19 BLK 19 32768 c802.0da8.0001 128.42 FastEthernet1/1 128.42 128 20 FWD 0 32768 c800.0da8.0001 128.42
Steph
Partager