视频加载失败

STP / RSTP / MSTP 详解

3155 字
16 分钟
STP / RSTP / MSTP 详解

STP / RSTP / MSTP 详解#

一、生成树协议概述#

1.1 为什么需要生成树#

二层网络中,冗余链路可以提升可靠性,但会引入三个问题:

  • 广播风暴:广播帧在环路中无限循环
  • MAC 表不稳定:同一 MAC 从不同端口学习,导致 MAC 表抖动
  • 重复帧:目的主机收到多份相同帧

1.2 发展历程#

协议标准收敛时间特点
STPIEEE 802.1D30-50秒经典协议,收敛慢
RSTPIEEE 802.1w秒级快速收敛,端口角色增多
MSTPIEEE 802.1s秒级多实例负载分担,兼容STP/RSTP
PVST+Cisco 私有-每VLAN一个STP实例

1.3 生成树核心思想#

  1. 选举根桥作为树根
  2. 计算到根桥的最短路径
  3. 阻塞非最短路径上的端口(阻断环路)
  4. 拓扑变化时重新计算,动态调整

二、STP(IEEE 802.1D)原理 🏷️高频考点#

2.1 STP 基本概念#

Bridge ID(BID)#

Bridge ID = Bridge Priority(2字节) + MAC Address(6字节)
= 优先级(高4位取值0-15,步长4096) + 系统ID扩展(低12位,PVST+用) + MAC
  • 默认优先级:32768(即优先级值 = 8,对应 8×4096 = 32768)
  • 优先级范围:0-65535,步长 4096
  • 比较规则:先比优先级(值小优),再比 MAC 地址(值小优)

端口开销(Path Cost)#

链路速率旧标准(802.1D-1998)新标准(802.1D-2004)
10 Mbps1002,000,000
100 Mbps19200,000
1 Gbps420,000
10 Gbps22,000
100 Gbps-200

根路径开销(RPC, Root Path Cost)#

从当前交换机到根桥的累计端口开销总和。

端口角色#

角色功能转发状态
Root Port(RP)到根桥开销最小的端口,每台非根桥有且仅有一个Forwarding
Designated Port(DP)每条链路上到根桥开销最小的端口Forwarding
Blocked Port(BP)既非 RP 也非 DP,被阻塞的端口Blocking

2.2 STP 选举过程 🏷️高频考点#

选举顺序:根桥 → 根端口 → 指定端口 → 阻塞端口

第1步:选举根桥#

所有交换机初始都认为自己是根桥,通过 Configuration BPDU 交互比较 BID:

  • BID 最小者成为根桥
  • 比较顺序:Bridge Priority 小优 → MAC 地址小优

第2步:选举根端口(每台非根桥上)#

每台非根桥基于以下标准(按顺序)选举一个根端口:

比较标准说明
① RPC 最小到达根桥的累计路径开销最小
② 对端 BID 最小上游邻居的 Bridge ID 最小
③ 对端 PID 最小上游邻居的 Port ID 最小
④ 本端 PID 最小本交换机上的 Port ID 最小

Port ID = Port Priority(默认128) + Port Number

第3步:选举指定端口(每条链路上)#

每条网段上基于标准(按顺序)选举:

比较标准说明
① RPC 最小该端口到达根桥的 RPC 最小
② BID 最小该端口所在交换机的 BID 最小
③ PID 最小该端口的 Port ID 最小

根桥上的所有端口都是指定端口

第4步:剩余端口 → 阻塞端口#

未成为 RP 或 DP 的端口进入 Blocking 状态。

2.3 STP BPDU 报文#

Configuration BPDU(配置 BPDU)#

  • 用于选举和维护生成树拓扑
  • 根桥每 Hello Time(默认 2s)发送一次
  • 非根桥从 RP 收到后,从自己的 DP 转发出去

BPDU 关键字段:

字段说明
Root Identifier根桥 BID
Root Path Cost到根桥的累计开销
Bridge Identifier发送者 BID
Port Identifier发送端口 PID
Message AgeBPDU 在网络中的存活时间
Max AgeBPDU 最大老化时间(默认 20s)
Hello Time根桥发送 BPDU 间隔(默认 2s)
Forward Delay监听/学习状态持续时间(默认 15s)

TCN BPDU(拓扑变化通知)#

  • 拓扑变化时,检测到变化的交换机向上游(RP方向)发送 TCN BPDU
  • 根桥收到后发送TC 置位的 Configuration BPDU 通知全网
  • 交换机收到 TC 置位的 BPDU 后将 MAC 地址表老化时间缩短到 Forward Delay(15s)

2.4 STP 端口状态与计时器 🏷️高频考点#

状态收发BPDU学习MAC转发数据持续时间
Disabled-
BlockingMax Age(20s)
ListeningForward Delay(15s)
LearningForward Delay(15s)
Forwarding持续
端口状态变迁时间线:
初始化/故障恢复 → Blocking(20s) → Listening(15s) → Learning(15s) → Forwarding
从阻塞到转发共耗时约30-50秒

2.5 STP 拓扑示例#

STP 拓扑示例

DP 开销4

DP 开销4

DP / BP

DP

DP

SW-A

根桥(Root Bridge)

BID=32768.AAAA

SW-B

BID=32768.BBBB

SW-C

BID=32768.CCCC

STP 拓扑示例

DP 开销4

DP 开销4

DP / BP

DP

DP

SW-A

根桥(Root Bridge)

BID=32768.AAAA

SW-B

BID=32768.BBBB

SW-C

BID=32768.CCCC


三、RSTP(IEEE 802.1w)改进 🏷️高频考点#

3.1 RSTP vs STP 对比#

特性STPRSTP
收敛时间30-50秒秒级
端口状态5种3种(Discarding/Learning/Forwarding)
端口角色3种5种(+Alternate/+Backup)
BPDU 发送仅根桥触发每台交换机独立发送
BPDU 超时Max Age(20s)3×Hello Time
拓扑变化TCN BPDU → TC BPDU直接 TC BPDU
快速收敛P/A 机制、边缘端口

3.2 RSTP 端口角色 🏷️高频考点#

角色功能转发状态对应STP
Root Port到根桥最优路径端口ForwardingRP
Designated Port链路上到根桥最优端口ForwardingDP
Alternate Port根端口备份,收到更优 BPDUDiscardingBP
Backup Port指定端口备份,同一交换机上收到自己 BPDUDiscarding-
Edge Port边缘端口,直接转终端Forwarding-
根端口故障 → Alternate Port 立即切换为根端口(无需等待计时器)
指定端口故障 → Backup Port 立即切换为指定端口

3.3 端口状态映射#

STPRSTP
DisabledDiscarding
BlockingDiscarding
ListeningDiscarding(合并)
LearningLearning
ForwardingForwarding

3.4 RSTP 快速收敛机制 🏷️高频考点#

P/A(Proposal/Agreement)机制#

指定端口快速进入 Forwarding 流程:
SW-A(DP) SW-B(AP/RP)
| |
|------ Proposal 置位 BPDU -------->| (1) 提议
| | (2) 进入 Sync 过程:
| | 阻塞所有非边缘DP
|<------ Agreement 置位 BPDU -------| (3) 同意
| |
| 端口立即 → Forwarding | (4) RP 快速 Forwarding
| |

P/A 机制使得点到点链路上端口可以在数秒内进入 Forwarding

边缘端口(Edge Port)#

  • 连接终端主机的接口,不参与 STP 计算
  • 接口 UP 直接进入 Forwarding,不经过 Discarding/Learning
  • 收到 BPDU 则丧失边缘端口属性(或触发 BPDU Guard)
  • 配置:stp edged-port enable

根端口快速切换#

  • 当前 RP 失效 → 网络中质量最好的 AP 立即切换为新 RP → 直接进入 Forwarding

3.5 RSTP BPDU 改进#

  • 每台交换机独立发送 BPDU:即使不是根桥,每个 Hello Time 也从指定端口发送 BPDU
  • 邻居丢失快速检测:连续 3 个 Hello Time 未收到 BPDU = 邻居失效(比 STP Max Age 20s 快得多)
  • Flag 字段充分利用:Proposal、Agreement、TC、TCA 等标志位
  • BPDU 作为 Keepalive:BPDU 不仅用于选举,还作为邻居存活检测

3.6 RSTP 拓扑变化#

  • 检测到拓扑变化时,发送 TC 置位的 BPDU(不再使用 TCN BPDU)
  • 收到 TC BPDU 后,立即清除非边缘接口的 MAC 地址表项(不仅是缩短老化时间)

四、MSTP(IEEE 802.1s) 🏷️高频考点#

4.1 MSTP 核心思想#

将多个 VLAN 映射到不同的生成树实例(MSTI),每个实例独立计算生成树:

  • 不同实例可选举不同的根桥 → 负载分担
  • 同一实例内 VLAN 共享同一颗生成树
  • 兼容 STP/RSTP

4.2 MSTP 基本概念#

概念全称说明
MST RegionMST 域相同域名、修订级别、VLAN映射表的交换机集合
MSTI多生成树实例每个实例独立运行 RSTP
IST内部生成树Instance 0,域内所有交换机参与
CST公共生成树连接所有 MST 域的生成树
CIST公共与内部生成树IST + CST 合并,整个网络的单一生成树
总根(CIST Root)整个网络 CIST 的根桥
域根(Regional Root)MST 域内距离 CIST Root 最近的交换机

4.3 MSTP 端口角色#

在 RSTP 基础上增加:

端口角色说明
Master Port域根上到 CIST 根桥的最优路径端口,各 MSTI 中为 Root Port
Boundary Port连接不同 MST 域或 STP/RSTP 设备的端口(域边界端口)
RP / DP / AP / BP与 RSTP 相同

4.4 VLAN 到实例映射#

MST 域配置示例:
Instance 1 → VLAN 10, 20, 30 (根桥 = SW-A,流量走左侧)
Instance 2 → VLAN 40, 50, 60 (根桥 = SW-B,流量走右侧)
Instance 0 (IST) → 其余VLAN (默认根桥 = SW-A)

4.5 MSTP 负载分担拓扑图#

VLAN映射

MST Region(域名: REGION1, 修订级别: 1)

LAG

LAG

域间链路

SW-A

CIST Root

MSTI 1 Root

SW-B

MSTI 2 Root

SW-C

Access

MSTI 1: VLAN 10,20,30 → 主走左侧

MSTI 2: VLAN 40,50,60 → 主走右侧

VLAN映射

MST Region(域名: REGION1, 修订级别: 1)

LAG

LAG

域间链路

SW-A

CIST Root

MSTI 1 Root

SW-B

MSTI 2 Root

SW-C

Access

MSTI 1: VLAN 10,20,30 → 主走左侧

MSTI 2: VLAN 40,50,60 → 主走右侧

4.6 MSTP BPDU#

MSTP BPDU 包含:

  • MSTP 通用头部:CIST 相关参数
  • MSTI 配置消息:每个实例的 BPDU 信息
  • MST 配置 ID:域名、修订级别、哈希值(VLAN映射摘要)

MST 域要求:域名、修订级别、VLAN-to-Instance Mapping 必须完全一致,否则视为不同域


五、STP 保护机制 🏷️高频考点#

保护机制作用配置位置命令
BPDU Guard边缘端口收到 BPDU 时立即关闭端口(Error-Down),防止非法交换机接入边缘端口stp bpdu-protection
BPDU Filter边缘端口不发送/不处理 BPDU边缘端口stp bpdu-filter enable
Root Guard指定端口收到更优 BPDU 时置为 Discarding,防止根桥被抢占指定端口stp root-protection
Loop Guard防止阻塞端口因单向链路故障错误迁移为指定端口导致环路根端口/Alternate端口stp loop-protection
TC Guard限制 TC-BPDU 处理频率,防止恶意 TC 报文频繁刷新 MAC 表全局/接口stp tc-protection
TC-BPDU Guard设置 TC-BPDU 处理阈值,超阈值则丢弃全局stp tc-protection threshold 5

5.1 BPDU Guard 触发后的恢复#

Terminal window
# 手动恢复
interface GigabitEthernet0/0/1
undo shutdown
# 自动恢复(配置Error-Down自动恢复)
error-down auto-recovery cause bpdu-protection interval 30

5.2 Root Guard 原理#

指定端口收到更优 BPDU(包含更小 BID 的根桥信息)时:

  • 端口暂时进入 Root-Inconsistent 状态(等同于 Discarding)
  • 不再收到更优 BPDU 后,自动恢复为 Forwarding

5.3 Loop Guard 原理#

Alternate Port 或 Root Port 在连续 3 个 Hello Time 未收到 BPDU 时:

  • 端口进入 Loop-Inconsistent 状态(阻断)
  • 防止因单向链路故障导致环路

六、华为设备配置命令示例#

6.1 STP 模式选择#

Terminal window
# STP模式
stp enable
stp mode stp
# RSTP模式
stp mode rstp
# MSTP模式(默认)
stp mode mstp

6.2 STP/RSTP 基础配置#

Terminal window
# 修改交换机优先级(根桥)
stp priority 0 # 使本机成为根桥(最常用)
stp root primary # 一键配置根桥(优先级=0)
# 修改端口的开销
interface GigabitEthernet0/0/1
stp cost 2000
# 修改端口优先级
interface GigabitEthernet0/0/1
stp port priority 16 # 步长16

6.3 MSTP 配置#

Terminal window
# 进入MST域配置
stp region-configuration
region-name REGION1
revision-level 1
instance 1 vlan 10 20 30
instance 2 vlan 40 50 60
active region-configuration # 必须激活
quit
# 配置实例优先级
stp instance 1 priority 0 # Instance 1 中本机为根桥
stp instance 2 priority 4096

6.4 边缘端口配置#

Terminal window
interface GigabitEthernet0/0/1
stp edged-port enable # 配置为边缘端口(连接终端)
quit
# 全局启用边缘端口自动检测(BPDU保护前推荐)
stp edged-port default

6.5 STP 保护机制配置#

Terminal window
# BPDU保护(全局,对边缘端口生效)
stp bpdu-protection
# BPDU过滤(接口级)
interface GigabitEthernet0/0/1
stp bpdu-filter enable
# 根桥保护(接口级)
interface GigabitEthernet0/0/1
stp root-protection
# 环路保护(接口级)
interface GigabitEthernet0/0/1
stp loop-protection
# TC防护(全局)
stp tc-protection # 默认开启
stp tc-protection threshold 10 # 设置阈值
stp tc-protection interval 10 # 设置处理间隔(秒)

6.6 STP 计时器配置#

Terminal window
# 修改STP计时器(仅在根桥上生效)
stp timer hello 200 # 以厘秒为单位,200 = 2秒
stp timer forward-delay 1500 # 1500 = 15秒
stp timer max-age 2000 # 2000 = 20秒

七、常见故障排查#

7.1 故障场景与排查#

故障现象可能原因排查命令
STP 收敛慢未使用 RSTP/MSTP,端口非边缘端口display stp
环路未消除VLAN 映射错误,MST 域配置不一致display stp region-configuration
根桥非预期优先级配置错误display stp information
端口频繁UP/DOWNBPDU Guard 误触发display stp port-state-history
拓扑变化频繁TC-BPDU 攻击display stp tc-bpdu statistics

7.2 常用诊断命令#

Terminal window
# 查看STP基本信息
display stp
# 查看STP接口摘要
display stp brief
# 查看接口STP详细信息
display stp interface GigabitEthernet0/0/1
# 查看MST域配置
display stp region-configuration
# 查看MSTP实例信息
display stp instance 1
# 查看STP拓扑变化统计
display stp topology-change
# 查看错误端口(BPDU Guard/Err-Down)
display error-down recovery

7.3 排错思路#

  1. display stp brief → 确认根桥、端口角色是否正确
  2. display stp region-configuration → 确认 MST 域配置一致性
  3. display stp interface xxx → 检查端口状态、收发 BPDU
  4. display logbuffer → 检查是否有 BPDU Guard/Root Guard 告警

关键知识点总结:

  • STP 选举:根桥(BID最小)→ 根端口(RPC最小)→ 指定端口 → 阻塞
  • RSTP 改进:3状态、P/A机制、边缘端口、秒级收敛
  • MSTP 核心:VLAN映射到实例,各实例独立选举,实现负载分担
  • 保护机制:BPDU Guard(边缘口防攻击)、Root Guard(防根桥抢占)、Loop Guard(防单向链路环路)

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
STP / RSTP / MSTP 详解
https://blog.zs13.tech/posts/网络/02-交换技术/stp-rstp-mstp详解/
作者
zs13
发布于
2026-08-05
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
zs13
Hello, I'm Zs13.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
22
分类
1
标签
46
总字数
64,717
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.15.10
文章许可
CC BY-NC-SA 4.0