一文读懂生成树协议 STP:原理、选举与应用

引言

在以太网交换网络中,冗余链路虽然提升了网络可靠性,但也带来了二层环路问题。生成树协议 STP(Spanning Tree Protocol)应运而生,它能够在增强网络可靠性的同时,有效规避环路引发的系列问题,确保网络的稳定运行。

一、STP 技术介绍

1. STP 功能

二层环路产生的问题

在复杂的二层网络环境中,冗余链路会引发严重的问题:

  • 广播风暴:广播帧在二层环路中会沿顺时针和逆时针方向无休止地循环传播,网络流量呈指数级增长,最终导致设备因资源耗尽而宕机。
  • MAC 地址表翻摆(漂移):由于数据帧在环路中持续传输,交换机的 MAC 地址表中 MAC 地址与接口的对应关系会不断变动,进而导致数据转发异常。
  • 多帧复制:同一数据帧在环路中反复传输,设备会重复接收到相同的数据帧,浪费网络带宽和设备资源。

STP 解决方案

为了解决上述问题,STP 通过在二层交换网络中逻辑堵塞部分接口,构建从根交换机到所有节点的最短路径树型结构,从而生成一个无环路的拓扑。当网络中的最佳路径出现故障时,STP 会自动将个别阻塞的接口打开,实现链路资源的备份,保障网络的连通性。

2. 生成树协议类型

  • STP(802.1D):经典的生成树协议,收敛速度较慢,但为后续协议的发展奠定了基础。
  • RSTP(802.1W):快速生成树协议,相比 STP,大大缩短了收敛时间,提升了网络的响应速度。
  • MSTP(802.1S):多生成树协议,允许在一个网络中创建多个生成树实例,提高了网络的灵活性和资源利用率。
  • PVST、PVST+:思科私有的生成树协议,每个 VLAN 都有一个独立的生成树实例,能够为不同的 VLAN 提供精细化的网络管理。

二、BPDU 报文

BPDU报文包括配置BPDUTCN BPDU

1. 配置 BPDU

配置 BPDU 在生成树的角色选举过程中发挥着关键作用,其包含以下重要字段:

  • 协议版本 ID:802.1D(STP)为 0,802.1W(RSTP)为 2,802.1S(MSTP)为 3。
  • 根网桥 ID(RID):标识根交换机的身份,用于确定网络中的根节点。
  • 网桥 ID(BID):每台交换机的唯一身份标志,由 8 字节构成,前 2 字节表示优先级,后 6 字节表示 MAC 地址。在三层交换机中,会选择数值最小的 MAC 地址作为 BID 中的 MAC 地址。
  • 根路径开销(RPC):表示发出该 BPDU 的设备到达根网桥的开销值,用于衡量路径的优劣。
  • 接口 ID(PID):用于区分和标识交换机的不同接口,由 2 字节构成,前 4 位表示优先级,后 12 位表示接口的标识。

配置PBDU的发送过程:

在交换网络初始化阶段,所有设备都认为自己是根网桥,会从所有激活 STP 协议的接口发送配置 BPDU。通过相互交换 BPDU,网络中的设备进行角色选举,最终确定真正的根网桥。此后,非根网桥不再主动发送配置 BPDU,仅负责转发根网桥的配置 BPDU。根网桥每隔 2 秒周期性发送配置 BPDU,配置 BPDU 的老化时间为 20 秒。

2. TCN BPDU

TCN BPDU的发送过程:

当本地交换链路出现故障时,STP 需要重新收敛。为了快速刷新交换机 MAC 地址表中的错误信息,故障设备会首先发送 TCN BPDU。对端设备收到 TCN BPDU 后,会回复一个 TCA 置 1 的配置 BPDU。TCN BPDU 会逐级上报到根网桥,根网桥收到后,会下发一个 TC 置 1 的配置 BPDU。该配置 BPDU 会逐级下发到所有设备,收到 TC 置 1 配置 BPDU 的设备会将 MAC 地址的老化时间由 360 秒临时缩短到 15 秒,以加速网络的收敛。

三、STP 的选举

1. 根网桥

在 802.1D 标准下,一个交换网络中只生成一棵生成树,且仅选举一个根网桥。根网桥选举规则如下:

  • 优先选择优先级数值小的交换机作为根网桥。
  • 若优先级相同,则选择 MAC 地址数值最小的交换机作为根网桥。

网桥 ID(BID)由 8 字节构成,前 2 字节为优先级,后 6 字节为 MAC 地址。优先级理论取值范围为 0 - 65536,实际取值范围为 0 - 61330,默认值为 32768。优先级仅使用前 4 位,后 12 位为拓展系统 ID,仅在 802.1S 中启用,因此修改优先级需以 4096 的倍数进行。

2. 根端口

所有非根网桥上都有且仅有一个距离根网桥最近的端口,该端口被称为根端口,用于接收根网桥的 BPDU。根端口选举规则如下:

  • 优先选择接收根网桥 BPDU 时 RPC 最小的端口作为根端口。
  • 若 RPC 相同,选择对端 BID 较小的设备所对应的接口作为根端口。
  • 若对端 BID 相同,选择对端 PID 小的接口对应的接口作为根端口。
  • 若对端 PID 也相同,选择本地 PID 小的接口作为根端口。

接口 ID(PID)由 2 字节构成,前 4 位表示优先级,后 12 位表示接口标识。优先级取值范围为 0 - 240,默认值为 128,修改优先级需以 16 的倍数进行。

RPC(路径开销值)计算表:

修改RPC计算方法:(华为默认使用的标准为802.1t)

3. 指定端口

每一条链路上都有且仅有一个端口作为指定端口,用于发送或转发根网桥的 BPDU。指定端口选举规则如下:

  • 优先选择发出根网桥 BPDU 时 RPC 最小的端口作为指定端口。
  • 若 RPC 相同,选择接口连接设备 BID 小的设备接口作为指定端口。
  • 若本端的 BID 相同,选择接口 PID 小的作为指定端口。
  • 若本端 PID 也相同,则直接堵塞该端口。

需要注意的是,根网桥的所有接口都是指定端口,根端口的对端一定是指定端口。

4. 非指定端口

所有没有被选举为根端口、指定端口的端口都是非指定端口,非指定端口需要被阻塞,以防止网络环路的产生。

四、STP 接口状态

1. 禁用(Disable)

接口处于禁用状态有两种情况:一是接口被手动关闭;二是接口没有激活生成树协议。

2. 堵塞(Blocking)

接口激活生成树协议后,首先会进入堵塞状态。在该状态下,接口只能侦听 BPDU,不能发送 BPDU,也不能处理业务数据帧。如果设备在 20 秒内没有侦听到 BPDU,会认为根网桥不存在或失效,从而进入下一个状态。

3. 侦听(Listening)

在侦听状态下,设备进行角色选举。接口可以接收和发送 BPDU,但不能处理业务数据帧。侦听状态持续 15 秒(转发延迟时间),其目的是为了防止部分角色没有选举出来而造成临时环路。

4. 学习(Learning)

进入学习状态后,接口开始接收业务数据帧,但只记录 MAC 地址和接口信息,并不转发业务数据帧。学习状态持续 15 秒,其目的是为了尽可能多地记录 MAC 地址信息,以减少未知单播帧的泛洪。

5. 转发(Forwarding)

在转发状态下,接口既可以进行 BPDU 的处理,也可以转发业务数据帧,实现网络的正常通信。

  • 首次收敛——50s
  • 根网桥故障——50s
  • 直连链路故障——30s
  • 非直连链路故障——50s

五、STP配置

1、实验拓扑

2.拓补分析

3、STP配置

1)启动生成树协议

[sw1]stp enable
# 华为默认开启生成树

2)选择生成树版本

[sw1]stp mode ?
  mstp  Multiple Spanning Tree Protocol (MSTP) mode
  rstp  Rapid Spanning Tree Protocol (RSTP) mode
  stp   Spanning Tree Protocol (STP) mode
# 华为设备默认选择MSTP

3)查看生成树信息

[sw1]display stp brief

4)修改BID中的优先级

[sw1]stp priority 12288

5)设置生成树根

# 将设备设置为生成树的主根,相当于将设备BID中的优先级改为0
[sw1]stp root primary
 
# 将设备设置为生成树的备份主根,相当于将设备BID中的优先级改为4096
[sw2]stp root secondary

6)修改PID的优先级

[sw2-GigabitEthernet0/0/1]stp port priority ? 
 INTEGER<0-240> Port priority, in steps of 16

7)修改接口的开销值

[sw2-GigabitEthernet0/0/1]stp cost ?
 INTEGER<1-200000000> Port path cost

4、验证分析

在验证前需要将设备的模式改为STP,且优先级要依次进行设置,保证SW1>SW2>......>SW6。设置完成后再进行查看。

补充:​

接口编号的影响

  • 当两个接口的优先级和路径开销均相同时,系统会进一步比较接口的 ​ID(Port ID)​,而接口ID由两部分组成:
    • 高4位:接口优先级(默认128)。
    • 低12位:接口的索引号(Port Number)​,通常与接口的物理编号相关(如GigabitEthernet 0/0/1的索引号比GigabitEthernet 0/0/2小)。
  • 结论:接口编号数字越小,其索引号越低,在优先级和路径开销相同的情况下,会被优先选为根端口或指定端口。

LSW1的STP信息表:

得出LSW1成为根网桥,且其余接口全为指定接口,验证成功!

LSW2的STP信息表:

得出g0/0/1成为根端口,g0/0/2为非指定端口,其余接口均为指定端口,验证成功!

LSW3的STP信息表:

得出g0/0/3成为根端口,g0/0/4、5、6为非指定端口,其余接口均为指定端口,验证成功!

LSW4的STP信息表:

得出g0/0/5成为根端口,g0/0/7、8为指定端口,其余接口为非指定端口,验证成功!

LSW5的STP信息表:

得出g0/0/7成为根端口,g0/0/8为非指定端口,验证成功!

LSW6的STP信息表:

得出g0/0/8成为根端口,g0/0/7为非指定端口,验证成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值