首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >生成树协议STP原理 及实验案例

生成树协议STP原理 及实验案例

作者头像
YueXuan
发布2025-12-21 08:25:02
发布2025-12-21 08:25:02
90
举报

生成树协议STP

一、STP 概述

1、概述

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

二、STP 工作原理

1、基本原理

  • 任意一交换机中如果到达根网桥有两条或者两条以上的 链路.生成树协议都根据算法仅仅保留一条,把其他切断, 从而保证任意两个交换机之间只有一条单一的活动链路。因 为这种生成的这种拓扑结构,很像是以根交换机为树干的树 形结构

2、生成树算法及验证

  • 选择根网桥(Root Bridge)
    • 选择交换网络中网桥ID最小的交换机成为根网桥,网桥 ID 是唯一的
  • 选择根端口(Root Ports)
    • 到根网桥最低的根路径成本
      • 网桥到根网桥的路径上所有链路的成本之和
    image-20240401112629609
    image-20240401112629609
    • 直连的网桥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、配置命令

启用生成树命令

代码语言:javascript
复制
Switch(config)#spanning-tree vlan 1 #在vlan 1上启用生成树

指定根网桥

代码语言:javascript
复制
Switch(config)#spanning-tree vlan 1 priority 4096 #设置网桥的优先级,必须是 4096 的倍数  
Switch(config)#spanning-tree vlan 1 root primary #直接指定为根网桥

修改端口成本

代码语言:javascript
复制
Switch(config-if)#spanning-tree vlan 1 cost 19 

修改端口优先级

代码语言:javascript
复制
Switch(config-if)#spanning-tree vlan 1 port-priority 64

查看生成树的配置

代码语言:javascript
复制
Switch#show spanning-tree 

查看某个VLAN的生成树信息

代码语言:javascript
复制
Switch#show spanning-tree vlan 1 detail

四、实验案例

1、单生成树配置案例

  • 实验拓扑

实验要求

    1. 配置生成树,设置交换机1为根网桥
    2. 指定交换机 2 的 F0/1 接口为阻塞端口

实验步骤

    1. 配置交换机 1 的网桥 ID
    2. 配置交换机 0 的网桥 ID

实验脚本

image-20240401115159448
image-20240401115159448
代码语言:javascript
复制
//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、多生成树配置案例

  • 实验拓扑

实验要求

    1. 设置交换机 0 为 vlan 10 的根网桥,交换机 2 的 F0/2 接口为 vlan 10 的阻塞端口
    2. 设置交换机 1 为 vlan 20 的根网桥,交换机 3 的 F0/1 接口为 vlan 20 的阻塞端口

实验步骤

    1. 配置交换机 0 的中 vlan 10 网桥 ID 使其为 vlan 10 的根网桥
    2. 配置交换机 1 的中 vlan 10 网桥 ID 使交换机 2 的 F0/2 接口为阻塞
    3. 配置交换机 1 的中 vlan 20 网桥 ID 使其为 vlan 20 的根网桥
    4. 配置交换机 0 的中 vlan 20 网桥 ID 使交换机 3 的 F0/1 接口为阻塞

实验脚本

image-20240401141318484
image-20240401141318484
代码语言:javascript
复制
//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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成树协议STP
    • 一、STP 概述
    • 二、STP 工作原理
    • 三、STP的配置(PVSTP+多生成树)
    • 四、实验案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档