生成树协议 — STP

4.1.1 实验目的

1)理解生成树协议STP的用途

2)理解生成树协议STP的工作过程

3)掌握根桥、根端口、指定端口的选举规则

4)掌握生成树协议STP中端口角色的变化

5)掌握基本生成树协议的配置

4.1.2 实验原理

1.生成树协议STP

网络设计通常采用冗余方法提高网络的健壮性、稳定性。常见的冗余方式有:链路冗余和设备冗余。如图4-1所示。该三层结构的网络中,核心层、分布层和接入层均采用了链路冗余。

                   

不过,对网络中冗余链路会造成网络中的环路,而第二层的网络环路则会带来以下问题: 

1)广播风暴。

2)多帧复制。

3MAC地址表的不稳定。

为了解决第二层网络环路问题而又要保证网络的稳定和健壮性,引入了链路动态管理的策略。首先通过阻塞某些链路避免环路的产生,当正常工作的链路由于故障断开时,阻塞的链路立刻激活,迅速取代故障链路的位置,保证网络的正常运行。这就是生成树(STP)协议的主要思想。

2.STP的工作过程

STP通过协商阻断一些交换机端口,以确保网络中所有目的地之间只有一条逻辑路径,构建一棵没有环路的转发树。当一个端口阻止流量进入或离开时,该端口便视为处于阻塞状态。不过 STP 用来防止环路的网桥协议数据单元 (BPDU) 帧仍可继续通行。为了在网络中形成一个没有环路的拓扑,交换机要进行以下3个步骤:

1)选举根桥。

2)每个非根桥交换机计算到达根桥的最短路径。

3)选择活动端口以及端口的角色类型。

STP端口类型一共有3种,如表4-1所示种:

4-1  STP端口类型

端口类型

功能说明

根端口(root port)

存在于非根桥上,指到达根桥路径开销最小的端口,每个交换机只能有一个。

指定端口(designated port)

负责发送网段BPDU的端口,每个物理网段只能有一个。

非指定端口(non-designated )

被阻塞的端口,不能转发数据帧

  STP的根桥和根端口选择过程中,哪个交换机能获胜将取决于以下因素(按顺序进行):

最低的根桥ID,也叫BID;

l 最低的根路径代价;

最低发送者桥ID;

最低发送者端口ID。

   下面举例说明了生成树的工作过程:

              

①选举根桥:每个交换机都具有一个唯一的桥ID(BID, Bridge ID),这个ID由两部分组成,如下图所示:

                 

网桥优先级是一个2字节的数,交换机的默认优先级为32768 ;MAC地址就是交换机的MAC地址。具有最低桥ID的交换机就是根桥。

BID的信息被封装在BPDU中,每个交换机广播接收到的BPDU和发送自身的BPDU,通过BPDU泛洪,可以获知BID最小的交换机,该交换机即被选为根桥。例如在图4-2中,三台交换机的优先级(Priority)相同,SwitchA MAC地址最小,所以SwitchABID最小,被选举为根网桥。

选取根端口:选举了根桥后,其他的交换就成为了非根桥。根桥上的接口都是指定端口,会转发数据包。每台非根桥要选举一条到根桥的根路径。STP使用路径代价Cost值来决定到达根桥的最佳路径(Cost是累加的,带宽大的链路Cost低),最低Cost值的路径就是根路径,该端口就是根端口;如果Cost一样,就根据选举顺序选举根口。根口转发数据包。生成树链路开销代价如表4-2所示。

4-2 生成树链路开销代价表

链路带宽

旧标准

新标准

10Mbps

100

100

100Mbps

10

19

1Gbps

1

4

10Gps

1

2

>10Gbps

1

1

               

在图4-3中,各个非根网桥中的端口中,到根网桥路径开销最小的端口被指定为根端口,在图中,Switch B和C 的两个端口F0/1、F0/2的开销分别为19和38,所以F0/1被选定为根端口。

选举指定端口和非指定端口:当交换机确定了根端口后,还必须将剩余端口配置为指定端口 (DP) 或非指定端口(非 DP),以完成逻辑无环生成树。交换网络中的每个网段只能有一个指定端口。当两个非根端口的交换机端口连接到同一个 LAN 网段时,会发生竞争端口角色的情况。这两台交换机会交换 BPDU 帧,以确定哪个交换机端口是指定端口,哪一个是非指定端口。一般而言,交换机端口是否配置为指定端口由 BID 决定。所以在网段2所连接的2个端口,Switch B的BID值小于Switch C的BID值,所以 Switch B的F0/2为指定端口,处于转发状态。Switch C的F0/2为非指定端口,处于阻塞状态。

3.STP的收敛过程

当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些端口口。交换机的端口状态状态变换和时间如下图:

                        

从上图可以看出STP的最长收敛时间为50s。

当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些端口。交换机的端口要经过几种状态:禁用(Disable)——>阻塞(Blocking)——>监听状态(Listenning)——>学习状态(Learning)——>转发状态(Forwarding)。每种端口状态对数据的处理如表4-2所示。

4-3 生成树端口状态对数据的转发

过程

阻塞

侦听

学习

转发

禁用

接收并处理BPDU

不能

转发接口上收到的数据

不能

不能

不能

不能

转发其它接口发来的数据帧

不能

不能

不能

不能

学习MAC地址

不能

不能

不能

4.STP的配置命令

4-4 STP常用配置命令

相关命令

功能

S1#show spanning-tree

查看交换机生成树协议的配置情况

S1(config)# spanning-tree  mode  pvst/rapid-pvst

配置生成树的模式为STP或是RSTP

S1(config)# spanning-tree vlan 1  priority   <0-61440>

配置交换机在VLAN 1中的优先级(优先级为4096倍数),范围为0-61440

S1(config)#spanning-tree vlan 1 root primary 

将交换机配置为VLAN1中的根桥

S1(config)#spanning-tree vlan 1 root secondary

将交换机配置为VLAN1中的次根桥

S1(config-if) # interface  fa0

S1(config-if) # spanning-tree vlan  1  cost 18

fa0端口在VLAN1生成树的路径开销修改为18

S1(config-if) # interface  fa0

S1(config-if) # spanning-tree vlan  1  port-priority 16

fa0端口在VLAN1生成树的端口优先级修改为16,端口优先级为16的倍数,从0~240

S1#show spanning-tree  interface  fastethernet 0/1   

查看端口状态

S1# show spanning-tree vlan vlan-id

查看某个VLAN下的STP配置信息

5.STP配置实例

               

实验背景思科的交换机默认启用STP生成树协议,所以不需要做任何配置,接通电源后,交换机自动协商成功。

    实验要求:要求配置STP,确保S1为网络中交换机的根桥,S2为网络中交换机的备用根桥,将和PC1连接端口配置为Portfast端口。

步骤1:观察自动STP的根桥选举情况。(无须做任何配置)

观察S1的生成树情况。

S1#show spanning-tree  
VLAN0001
  Spanning tree enabled protocol ieee
 //根桥的信息
  Root ID    Priority    32769      // 根桥的优先级
             Address     0001.4240.48C4  // 根桥的MAC地址,可知S3为根桥
             Cost        19   //  本交换机到根桥路径开销为19             
             Port        1(FastEthernet0/1)  // 本交换机根端口为F0/1
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
  //本交换机的信息
  // 优先级 = 32768(默认优先级) +  1(VLAN 1的序号)
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1) 
             Address     0001.43E9.8859  //本交换机MAC地址
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20


Interface        Role Sts Cost           Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Root FWD 19(根端口)      128.1    P2p     
Fa0/2            Desg FWD 19(指定端口)    128.2    P2p
Fa0/3            Desg FWD 19              128.3    P2p
②观察S2的生成树情况。
S2#show spanning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769        //根桥优先级
             Address     0001.4240.48C4  //根桥MAC地址
             Cost        19 //  本交换机到根桥路径开销为19
            Port        1(FastEthernet0/1)  // 本交换机根端口为F0/1
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
//本交换机的信息
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1) //优先级
             Address     00E0.F980.4970   // MAC地址
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20


Interface        Role Sts Cost                   Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Root FWD 19(根端口)         128.1    P2p
Fa0/2            Altn BLK 19(阻塞端口)        128.2    P2p
注意:S3的F0/2端口和S1的F0/2端口竞争指定端口时失败,端口被阻塞,不转发报文。
③观察S3的生成树情况。
S3#show spanning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769  // 根桥优先级
             Address     0001.4240.48C4 //根桥MAC地址
             This bridge is the root   // 本交换机为根桥
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
  //观察可以得知自身MAC地址和根桥MAC地址相同,即本交换机为根桥。
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     0001.4240.48C4
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20


Interface        Role Sts Cost                 Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Desg FWD 19(指定端口)         128.1    P2p
Fa0/2            Desg FWD 19 (指定端口)        128.2    P2p
Fa0/3            Desg FWD 19(指定端口)         128.3    P2p
步骤2:要让S1成为根桥,S2成为备份根桥,需要修改S1和S2的优先级,将其优先级降低,提高其在选举根桥中的地位。
S1(config)#spanning-tree vlan 1 root primary  // 成为根桥
S1(config)#interface f0/3
S1(config-if)#spanning-tree portfast   //配置F0/3端口为portfast接口
S2(config)#spanning-tree vlan 1 root secondary  // 成为备用根桥
S1(config)#interface f0/3
S1(config-if)#spanning-tree portfast  // 配置f0/3端口为portfast接口


步骤3:结果与测试。
  查看S1的生成树情况。
S1#sh spanning-tree  
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577  // 已经发生改变,优先级降低
             Address     0001.43E9.8859
             This bridge is the root   // S1已经成为根桥
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
… 省略部分无关内容
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Desg FWD 19        128.1    P2p
Fa0/2            Desg FWD 19        128.2    P2p
Fa0/3            Desg FWD 19        128.3    P2p
注意:所有的端口都变成了指定端口。
查看S2的生成树情况。
S2#sh spanning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577   
             Address     0001.43E9.8859
             Cost        19
             Port        2(FastEthernet0/2) //根端口已经发生变化
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
 //S2的生成树信息
  Bridge ID  Priority    28673  (priority 28672 sys-id-ext 1) // 优先级降低,但比S1优  
                                                    先级要高
             Address     00E0.F980.4970
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20
… 省略部分无关内容
 从结果看到,我们通过改变交换机的优先级,让网络的根桥选举发生了变化,S1成为根桥,S2成为备用根桥,当S1发生故障时,S2将会取代S1成为网络中的根桥。

猜你喜欢

转载自blog.csdn.net/weixin_42442713/article/details/80909292