防环没配好,STP 吊死全网?教你用 display 找元凶

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部


很多人一听到 STP、RSTP、MSTP,脑袋就开始抽风:

“啥根桥?啥阻塞口?为啥这口不转发?为啥这台突然成了根?”

更别说碰到环路,一大片设备红灯狂闪,全网断网,直接懵圈。

这篇文章说两件事:

1.STP 出问题,到底怎么排查

2.display 系列命令,怎么用得明明白白


一、出环路之前:你可能没注意这几个坑

大多数环路现场,问题都出在下面这些细节上:


1. STP 根桥没指定

默认 STP 会自动选“桥 ID 最小”的做根,结果一台小接入交换机当了根,整个拓扑炸裂。


2. 接入交换机没开 BPDU 保护

某台带防火墙的接入口收到 BPDU,误当根桥,整网漂移。


3. 私接双网口设备 / 路由器

用户自己接了个交换机,两个口插在两个接入上,直接物理环路 + 广播风暴


4. STP 协议类型乱用

有的用 STP,有的 RSTP,有的 MSTP,跨协议邻居识别不了,阻塞口失效,问题更复杂。


配置STP功能组网图


二、真出事了,怎么用 display 找出问题?

一共三个关键命令,排 STP 问题非常高效:


1. 看根桥是谁

display stp brief

输出重点看这几项:

  • Root Bridge ID → 看是不是你想指定的核心设备
  • Bridge ID → 当前设备自己的 ID
  • Role → 每个端口的角色(根口、指定口、替代口)
  • State → 转发、阻塞、监听?

实战 tips:

  • 如果你在一台汇聚/接入设备上发现“我自己是 Root”,赶紧排查是不是你忘了在核心上加 stp root primary。


2. 看邻居口状态

display stp interface GigabitEthernet 1/0/1

这个命令能单看某一个接口的 STP 状态,尤其适合排查接入口是不是误收 BPDU、状态反常。

输出关注这些点:

  • Port Role(口的角色)
  • Port State(状态,是否阻塞)
  • Peer Bridge ID(邻居是谁)

如果你发现一个非汇聚/核心口处于“转发”状态,那就警觉了 ——

有可能已经出环了。


3. 看 BPDU 报文统计

display stp statistics

这个命令可以看到 BPDU 收发次数,尤其适合判断某口是否在收到异常 BPDU,比如:

  • 某接入口 BPDU 收包数突然猛增
  • 某汇聚口 BPDU 丢包严重,可能是环路中断


三、推荐配置模板:防环机制要全上

出了事才补洞,不如一开始就配好这几个:

1. 手动指定根桥

stp mode mstp
stp region-configuration
 region-name campus
 instance 1 vlan 1 to 4094
 active region-configuration
quit

# 在核心设备上
stp root primary

2. 打开 BPDU 保护

在接入层强烈建议:

interface GigabitEthernet 1/0/1
 stp edged-port enable
 stp bpdu-protection

一旦收到 BPDU,自动把口 shutdown,避免接入设备误成根桥。

3. 环路检测(loopback-detect)

interface GigabitEthernet 1/0/2
 loopback-detect enable

有时候不是 STP,而是本地环,loopback-detect 能快速识别自环。


四、排查思路

[全网异常]
   ↓
[登录任意设备 display stp brief]
   ↓
[根桥是谁?正常吗?]
   ↓
[检查有异常的口 → display stp interface ...]
   ↓
[找出收到异常 BPDU 的口,锁定接入设备]
   ↓
[用 loopback-detect 辅助检查环路口]
   ↓
[现场排查 + 补齐防环机制]


写在最后

STP 不难,难的是怎么高效排查

别等全网挂了才临时百度,“STP 是个啥?”

只要——

  • 指定了根桥
  • 配好了 BPDU 防护
  • 掌握了 display stp 的三板斧

那再复杂的环路问题,基本也能分分钟定位、解决。


原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

### 生成树协议 (STP) 的机制原理 生成树协议 (STP, Spanning Tree Protocol) 是一种工作在网络参考模型的数据链路层的通信协议,其核心目标是止因冗余链路而导致的网络路问题[^3]。具体来说,STP 协议通过一系列算法和规则,在存在物理路的交换网络中动态计算并构建一棵逻辑上的无拓扑结构——即生成树。 #### STP 的工作机制 1. **根桥选举**: 在整个交换网络中,所有参与 STP 的设备会共同选出一个作为“根桥”的交换机。这个过程基于优先级、MAC 地址以及配置消息中的其他参数完成。通常情况下,默认优先级最低的交换机会被选作根桥[^1]。 2. **端口角色定义**: 每台交换机都会为其每一个端口分配特定的角色,这些角色包括: - 根端口(Root Port):通往根桥的最佳路径所在的端口。 - 指定端口(Designated Port):负责转发流量到下游设备的端口。 - 替代端口(Alternate Port)/阻塞端口(Blocked Port):当某个端口不是最优路径的一部分时,则会被置于阻塞状态以消除潜在的路风险[^2]。 3. **BPDU 报文传递**: Bridge Protocol Data Units (BPDUs) 被用来在各交换机间传播关于当前网络状况的信息。每台交换机会定期发送 BPDU 来通告自己的身份以及其他相关信息;接收到 BPDUs 后,它们将依据其中的内容更新本地数据库,并重新评估自身的端口状态以便维持正确的生成树结构。 4. **收敛过程**: 当初始启动或者网络拓扑发生变化时,例如新增加了一条新的链接或是某部分失效了,那么整个系统就需要经历一次短暂但必要的调整期称为“收敛”。在此期间内,所有的交换机会再次协商确定最新的根桥位置及其关联的各项设置直至达成一致为止。 #### 实现方式总结 综上所述,STP 主要依靠以下几个方面来实现其预状回路的功能: - 自动化地选择唯一的根桥; - 明确规定各个端口的具体职责范围; - 利用周期性的控制报文交互保持全局视图同步; - 动态响应实际境变化及时作出相应修改决策。 ```python # Python伪代码展示简单的STP模拟流程 class Switch: def __init__(self): self.root_bridge = False self.port_roles = {} def elect_root(switches): """选举根桥""" lowest_priority_switch = min(switches, key=lambda s: s.priority) lowest_priority_switch.root_bridge = True def assign_port_roles(switches): """分配端口角色""" for switch in switches: if not switch.root_bridge: calculate_best_path_to_root(switch) def handle_topology_change(): """处理拓扑变更事件""" pass # 这里省略具体的实现细节 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值