生成树协议STP原理 及实验案例
生成树协议STP
一、STP 概述
1、概述
-
是一种工作在OSI网络模型中的第二层(数据链路层)的通信 协议,基本应用是防止交换机冗余链路产生的环路.用于确 保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大 量占用交换机的资源
-
逻辑上断开环路,防止广播风暴的产生
-
当线路故障,阻塞接口被激活,恢复通信,起备份线路的作用

二、STP 工作原理
1、基本原理
- 任意一交换机中如果到达根网桥有两条或者两条以上的 链路.生成树协议都根据算法仅仅保留一条,把其他切断, 从而保证任意两个交换机之间只有一条单一的活动链路。因 为这种生成的这种拓扑结构,很像是以根交换机为树干的树 形结构
2、生成树算法及验证
- 选择根网桥(Root Bridge)
- 选择交换网络中网桥ID最小的交换机成为根网桥,网桥 ID 是唯一的

-
选择根端口(Root Ports)
-
到根网桥最低的根路径成本
- 网桥到根网桥的路径上所有链路的成本之和

- 直连的网桥ID最小
- 端口ID最小

-
-
选择指定端口(Designated Ports)
- 根网桥上的端口全是指定端口
- 在每个网段上,选择1个指定端口
- 非根桥上的指定端口,选择顺序:
- 根路径成本较低
- 所在的交换机的网桥ID的值较小
- 端口ID的值较小
3、BPDU(桥协议数据单元)
- STP 利用 BPDU 选择根网桥
- 使用组播发送BPDU
- 配置BPDU
- 拓扑变更通告(TCN)BPDU
- BPDU通告过程
- 当交换机启动时,假定自己是根网桥,在向外
- 当接收到其他交换机发出的BPDU后,比较网桥 ID,选择较小的添加到根网桥ID中
- 当全网所有的交换机接收到全部的BPDU并作比较 后,就可以选择出唯一的一个根网桥
4、STP的收敛
-
交换机端口的五种 STP 状态
-
禁用(Disable):该接口不能收发BPDU,也不能 收发业务数据帧,例如接口为down
- 当交换机接口被关闭,的时候这个接口就是禁 用状态
-
阻塞(Blocking):该接口被 STP 阻塞。处于阻塞 状态的接口不能发送BPDU,但是会持续侦听 BPDU,而且不能收发业务数据帧,也不会进行 MAC 地址学习
- 当交换机端口被激活之后,这个端口就会进入 堵塞状态,堵塞状态会监听BPDU(BPDU是stp的 数据帧类型)
-
侦听(Listening):当接口处于该状态时,表明 STP 初步认定该结构为根接口或指定接口,但接口依 然处于STP 计算的过程中,此时接口可以收发 BPDU,但是不能收发业务数据帧,也不会进行 MAC 地址学习
- 当交换机端口要被选举为根端口或者指定端口 的时候,就会从堵塞状态转换成侦听状态,这个状 态会保持15s
-
学习(Learning):当接口处于该状态时,会侦听 业务数据帧(但是不能转发业务数据帧),并且在收到 业务数据帧后进行 MAC 地址学习
- stp这个接口状态是为了学习最新的mac地址 表,以免导致广播风暴,学习状态会保持15s
-
转发(Forwarding):处于该状态的接口可以正常色需是根接口或指定接口才能进入转发状态
- 本接口状态可以处理业务数据帧,也可以进行 BPDU的处理,只有根端口或者指定端口才可以是 转发状态
-
-
STP的三种计时器
- Hello Timer(Hello时间):STP交换机发送BPDU 的时间间隔。当网络拓扑稳定之后,该计时器的修改只 有在根桥修改才有效。根桥会在之后发出的BPDU中填 充适当的字段以向其他非根桥传递该计时器修改信息。 但当拓扑变化之后,TCN BPDU的发送不受这个计时 器的管理
- Forwarding Delay Timer(转发延时):指一个端 口Listening 和Learning的各自时间,默认为15秒,即 Listening状态持续15秒,随后Learning状态再持续15 秒。这两个状态下的端口会处Blocking状态,这是STP 用于避免临时环路的关键
- Max Age(最大老化时间):端口会根据接收到的 BPDU存储所接收到的最好的四个信息(根桥BID、累计 根路径开销、发送者BID和发送端口PID)。每次接收到 合适的BPDU,端口都会启动这个Max Age计时器。超 过这个Max Age时间端口接收不到合适BPDU,就会认 为网络直径过大。这个时间默认为20秒
5、选举举例

三、STP的配置(PVSTP+多生成树)
1、生成树的分类
- 单生成树(STP)
- 多生成树(PVSTP+)
- IEEE标准的生成树(CST)
- RSTP(快速生成树)
- MSTP(多业务传送平台)
2、配置命令
-
启用生成树命令
Switch(config)#spanning-tree vlan 1 #在vlan 1上启用生成树 -
指定根网桥
Switch(config)#spanning-tree vlan 1 priority 4096 #设置网桥的优先级,必须是 4096 的倍数 Switch(config)#spanning-tree vlan 1 root primary #直接指定为根网桥 -
修改端口成本
Switch(config-if)#spanning-tree vlan 1 cost 19 -
修改端口优先级
Switch(config-if)#spanning-tree vlan 1 port-priority 64 -
查看生成树的配置
Switch#show spanning-tree -
查看某个VLAN的生成树信息
Switch#show spanning-tree vlan 1 detail
四、实验案例
1、单生成树配置案例
- 实验拓扑

-
实验要求
-
- 配置生成树,设置交换机1为根网桥
- 指定交换机 2 的 F0/1 接口为阻塞端口
-
-
实验步骤
-
- 配置交换机 1 的网桥 ID
- 配置交换机 0 的网桥 ID
-
-
实验脚本

//SW1 spanning-tree vlan 1 priority 4096 ! interface FastEthernet0/1 switchport trunk allowed vlan 1 switchport mode trunk ! interface FastEthernet0/2 switchport trunk allowed vlan 1 switchport mode trunk //SW0 interface FastEthernet0/1 switchport trunk allowed vlan 1 switchport mode trunk ! interface FastEthernet0/2 switchport trunk allowed vlan 1 switchport mode trunk //SW2 interface FastEthernet0/1 switchport trunk allowed vlan 1 switchport mode trunk spanning-tree cost 100 ! interface FastEthernet0/2 switchport trunk allowed vlan 1 switchport mode trunk
2、多生成树配置案例
- 实验拓扑

-
实验要求
-
- 设置交换机 0 为 vlan 10 的根网桥,交换机 2 的 F0/2 接口为 vlan 10 的阻塞端口
- 设置交换机 1 为 vlan 20 的根网桥,交换机 3 的 F0/1 接口为 vlan 20 的阻塞端口
-
-
实验步骤
-
- 配置交换机 0 的中 vlan 10 网桥 ID 使其为 vlan 10 的根网桥
- 配置交换机 1 的中 vlan 10 网桥 ID 使交换机 2 的 F0/2 接口为阻塞
- 配置交换机 1 的中 vlan 20 网桥 ID 使其为 vlan 20 的根网桥
- 配置交换机 0 的中 vlan 20 网桥 ID 使交换机 3 的 F0/1 接口为阻塞
-
-
实验脚本

//SW0 vlan 10 vlan 20 exit ! spanning-tree vlan 10 priority 4096 ! interface FastEthernet0/1 switchport trunk allowed vlan 10,20 switchport mode trunk ! interface FastEthernet0/2 switchport trunk allowed vlan 10,20 switchport mode trunk ! interface FastEthernet0/3 switchport trunk allowed vlan 10,20 switchport mode trunk //SW1 vlan 10 vlan 20 exit ! spanning-tree vlan 20 priority 4096 ! interface FastEthernet0/1 switchport trunk allowed vlan 10,20 switchport mode trunk ! interface FastEthernet0/2 switchport trunk allowed vlan 10,20 switchport mode trunk ! interface FastEthernet0/3 switchport trunk allowed vlan 10,20 switchport mode trunk //SW2 vlan 10 vlan 20 exit ! interface FastEthernet0/1 switchport trunk allowed vlan 10,20 switchport mode trunk ! interface FastEthernet0/2 switchport trunk allowed vlan 10,20 switchport mode trunk spanning-tree vlan 10 cost 100 //SW3 vlan 10 vlan 20 exit ! interface FastEthernet0/1 switchport trunk allowed vlan 10,20 switchport mode trunk spanning-tree vlan 20 cost 100 ! interface FastEthernet0/2 switchport trunk allowed vlan 10,20 switchport mode trunk
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)