Skip to content

🌳 生成树协议(STP)

环路是二层网络的癌症——STP 是化疗方案,自动阻断冗余链路防环

为什么会有环路

两台交换机之间连两根线(做冗余):

交换机A ═══ 线1 ═══ 交换机B
    ║                ║
    ╚═══ 线2 ═══════╝

看起来挺好——断一根还有备份。但是:

  1. A 发广播帧给 B
  2. B 从线1收到,从线2又转发出去
  3. A 从线2收到,从线1又转发出去
  4. 循环往复 → 广播风暴 → 网络瘫痪

这就是二层环路。STP 的工作就是:在有环路的拓扑里,逻辑上阻断冗余链路,物理环路变逻辑无环。


STP 怎么工作

物理拓扑(有环)            逻辑拓扑(STP 阻断后,无环)

A ═══ B ═══ C              A ═══ B ═══ C
║           ║                        ║
╚═══════════╝                        C(端口 Blocked)
  1. 选举根桥(Root Bridge)——MAC 最小或优先级最低的交换机
  2. 每个非根桥选一个根端口(到根桥最近的口)
  3. 每个网段选一个指定端口(到根桥最近的口)
  4. 剩下的端口 → Blocking(阻断,不转发数据)

STP 端口状态

状态转发数据?学习 MAC?说明
Blocking被阻断,防止环路
Listening过渡态,15秒
Learning学 MAC,15秒
Forwarding正常转发
Disabled管理员关闭

从 Blocking → Forwarding 需要 30 秒(Listening + Learning 各 15 秒),这是传统 STP 的痛点。


STP 版本演进

版本标准收敛时间说明
STPIEEE 802.1D30-50 秒原始版,太慢了
RSTPIEEE 802.1w1-2 秒快速生成树,主流
MSTPIEEE 802.1s1-2 秒多实例,不同 VLAN 走不同路径
PVST+思科私有按需每个 VLAN 一棵树

新设备全部用 RSTP 或 MSTP。


华为/华三配置 STP/RSTP

bash
system-view

# 开启 STP(华为默认是 MSTP,可切换)
stp enable

# 切换到 RSTP 模式
stp mode rstp

# 设为根桥(优先级最低,确保当选)
stp root primary

# 或者手动设优先级(0 最高,61440 最低,步进 4096)
stp priority 4096

# 边缘端口:接 PC 的口不需要参与 STP,立即进入 Forwarding
interface GigabitEthernet 0/0/1
 stp edged-port enable
 quit

# 查看 STP 状态
display stp
display stp brief

save

BPDU 保护

防止有人恶意接交换机发更优 BPDU 抢根桥:

bash
# 在边缘端口上开 BPDU 保护
stp bpdu-protection

# 收到 BPDU 的端口自动 shutdown
interface GigabitEthernet 0/0/1
 stp bpdu-protection enable

思科配置

bash
enable
configure terminal

spanning-tree mode rapid-pvst      # 开快速 PVST+
spanning-tree vlan 10 priority 4096  # 让本交换机当 VLAN 10 的根桥

interface gigabitEthernet 0/1
 spanning-tree portfast            # 边缘端口(立即 Forwarding)
 spanning-tree bpduguard enable    # BPDU 保护
 exit

show spanning-tree
show spanning-tree vlan 10

write memory

常见问题与排故

问题1:新接电脑等 30 秒才通

原因:端口走 STP Listening → Learning → Forwarding 全流程

解决:设为边缘端口(stp edged-port enable / portfast

问题2:换了交换机后全网断

原因:新交换机抢了根桥,STP 重新收敛期间全网不通

解决:新交换机上线前设高优先级值(低优先级),别让它竞选根桥

问题3:某 VLAN 不通其他正常

原因:PVST+/MSTP 下该 VLAN 的生成树有问题

排查

bash
display stp vlan 10         # 看 VLAN 10 的 STP 状态
display stp abnormal-port   # 查看异常端口

STP 最佳实践

  1. 核心交换机固定为根桥——stp priority 0root primary
  2. 接入端口配边缘端口——接 PC 的口不需要跑 STP
  3. 开 BPDU 保护——防止有人恶意/误接交换机
  4. 用 RSTP 别用老 STP——收敛从 30 秒降到 2 秒
  5. 多 VLAN 环境用 MSTP——不同 VLAN 走不同路径,充分利用链路

🎯 本章要点

  • STP 自动阻断冗余链路防环路,物理有环逻辑无环
  • RSTP 收敛 1-2 秒(老 STP 要 30-50 秒),新设备标配
  • 核心交换机固定为根桥(stp priority 0
  • 接 PC 的口设边缘端口 + BPDU 保护,加速接入防攻击
  • 换交换机前先设低优先级,别让它抢根桥导致全网断
加载练习题中...

有问题或补充?欢迎留言