大型企业园区、数据中心,我们经常可能会遇到环路的情况,遇到该情况时,企业的整体网络会出现卡顿,一会好,一会卡,网络无法使用,造成整个企业的业务中断,对企业的正常生产经营带来的灾难,本文章从环路的发现,确定故障原因,及时终止环路以及项目中交换设备配置的最佳实践,另外附上华三、华为、锐捷三家产商交换机环路检测的配置案例。
一、环路故障的条件
1、大型全交换的的网络,生成树协议的使用;
原本交换网络中的生成树协议用在链路防环,生成树对数据传输链路进行环路修剪,做到了线路冗余和环路的避免,但是在实际的使用中根桥的不确定,随意接入交换设备,设备间线路的冗余等都有可能导致环路的产生。
2、接入交换机的环路检测功能未使用,造成环路流量上行,波及整个交换网络。
从接入测来看,由于接入的是终端设备,私拉乱接的情况非常严重,在这种环境下,我们可以配置交换机的环路检测,并对出现环路的情况进行端口block或者shutdown,从而减少环路的影响波及范围,同时对终端接入测接入带有stp协议的交换机,自接入测配置交换机bpdu防护,阻止交换机的异常接入。
二、环路的发现
1、环路生成过程中用到的协议:生成树协议、环路检测协议
(1)生成树协议
https://www.h3c.com/cn/d_200804/603182_30003_0.htm#_Toc331494792
(2)单机环路检测
设备自身的环路检测功能,当检测到设备本身出现环路的情况,将对现有的环路端口进行关闭(有三种模式,建议选择shutdown模式)
https://www.h3c.com/cn/d_202503/2386076_30005_0.htm
2、发现方式
(1)终端到网关的通讯状态
表现为终端到核心网关的出现间歇性的丢包或者网络中断,网络通讯异常,并表现为大面积的影响范围非一台机器的情况。
(2)交换机日志及流量
当配置了交换机环路检测的情况,日志会显示端口出现环路检测的状况,并出现关闭该端口的情况;其次交换机的端口出现流量饱和,超出历史使用流量的最高阈值。
出现mac地址漂移的情况,同一个mac地址在多个端口之间同时学习,来回切换次数暴增(在有无线终端接入的情况下,可能会出现mac地址在多个ap或者交换机之间来回切换的情况,这种情况需要区分开)
(3)交换机的物理内存和cpu的使用量发生变化
当出现环路时,交换机的cpu和内存出现暴增的情况,对排查者来看表现为终端登录卡顿,远程连接可能出现无法连接的情况。
(4)上层的交换机生成树状态的变化
如果未配置接入交换机的环路检测的功能,环路会随着vlan及交换机向上层交换设备泛洪,从而导致上层交换机或全局出实现环路的情况,在交换机日志中会出现生成树拓扑变更的情况。(通过拓扑变更的情况找到对应的交换机并排查)
三、故障定位
1、在核心交换机上查看日志情况及生成树转发情况,核心交换机作为生成树的根,是所有流量转发的根设备,经常性的接收到拓扑变更的情况,需要检查同步变更的源头交换设备,并登录到该设备上进行检查设备工作状态;
2、地址漂移的情况,固网的情况下,出现mac地址漂移次数暴增的情况,找到该漂移端口的具体位置及所接的设备,分级找到该设备的具体接入故障点;
3、找到环路设备或多余的线缆,需要确认后,将其关闭或者清除,整体网络才能恢复正常。
四、生成树协议和单机防环使用环境
1、生成树和单机防环的协议两者的工作原理不一样,生成树是协议级防环(主动协商阻塞),环路检测是机制级防环(被动检测流量回环),前者适用于复杂网络拓扑,后者专防接入层私接小交换机造成的微环。
2、生成树在3层网络中,通过生成树计算阻塞环路端口,实现数据的正常转发,阻止环路的发生,在实际环境中会通过计算阻塞掉一个端口,形成单一的数据流转数;
3、单交换机防环,通过检测本交换机上的流量回环,将发生回环的2个端口shutdown,从而阻止环路的发生,其他端口流量正常转发不会收到环路的影响。
概念及命令里表:
(1)生成树根桥、指定端口、根端口
(2)root-protection(防抢根桥)指定端口配置
(3)loop-protection(防单通环路)根端口配置
(4)edged-port(边缘端口,接主机或AP等)
(5)bpdu-protection(接入交换机,防止非授权交换机接入)
(6)loopback-detection(单体交换机防环)
五、项目中的最佳实践
三层环境:
1、核心交换机(数据中心)
(1)核心交换机建议开启生成树,并开启根桥,确认核心交换机的生成树核心交换地位;(默认:mstp)
[H3C]stp instance 0 root primary 全局开启 级别:4096 (默认交换机级别:32768)其他端口也就默认开启了stp协议
(2)其他指定端口开启根保护:root-protection
[H3C-GigabitEthernet1/0/1]stp root-protection(防止抢根,非授权交换机的接入)
2、汇聚交换机(楼宇汇聚交换设备)
(1)汇聚交换机开启生成树协议(命令同上)
(2)上联端口开启loop-protection(根端口开启防环)
(3)其他指定端口开启根保护:root-protection
3、接入交换机(纯粹终端接入)
(1)开启全局生成树协议
(2)其他端口开启单体交换机防环(loopback-detection)
(3)上联端口关闭单体防环
(4)其他端口配置bpdu-protection(有交换机接入的情况,关闭该选项,可以配置root-protection)
二层环境:(少了汇聚层,接入直接接入核心,常见于数据中心区域)
1、核心层(核心层配置如同上三层配置)
2、接入层(配置如同三层模式接入配置)
六、具体品牌交换机配置
1、H3C交换机
(1)核心交换机
启用生成树协议:[H3C]stp mode mstp (默认情况H3C交换机已经启用了MSTP协议)
启用并确定根桥:[H3C]stp instance 0 root primary
启用指定端口根防护:[H3C-GigabitEthernet1/0/1]stp root-protection
(2)汇聚交换机
启用生成树协议:[H3C]stp mode mstp (默认情况H3C交换机已经启用了MSTP协议)
启用上联根端口:[H3C-GigabitEthernet1/0/2]stp loop-protection
启用下联口根防护:[H3C-GigabitEthernet1/0/3]stp root-protection
(3)接入交换机
启用生成树协议:[H3C]stp mode mstp (默认情况H3C交换机已经启用了MSTP协议)
启用上联根端口:[H3C-GigabitEthernet1/0/4]stp loop-protection
启用其他端口本机防环:
【端口视图下开启环路检测】
#进入接口二,在SW1开启接口视图下所有vlan的环路检测。
<H3C>system-view
[H3C]interface gigabitethernet 1/0/2
[H3C-GigabitEthernet1/0/5] loopback-detection global enable vlan all
#接口二下配置环路检测处理的模式为端口shutdown。
[H3C-GigabitEthernet1/0/5] loopback-detection global action shutdown
[H3C-GigabitEthernet1/0/5]quit
#保存配置
[H3C]save force
启用其他边缘端口:[H3C-GigabitEthernet1/0/5]stp edged-port
启用其他端口BPDU防护:[H3C]stp bpdu-protection(全局开启)
[H3C]errdisable recovery cause bpdu-protection
[H3C]errdisable recovery interval 300
2、华为交换机
(1)核心交换机
system-view
sysname Core-Master
stp enable
stp mode mstp # 设置实例0为主根桥,优先级自动4096 stp instance 0 root primary
【核心 ↔ 汇聚 下联Trunk口(DP指定端口)】
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan all stp root-protection
(2)汇聚交换机
定位:上行连接核心,下联接入交换机
- 上行口:loop-protection,关闭环路检测
- 下联接入口:root-protection,关闭环路检测
- 汇聚交换机不配置 edge-port、bpdu-protection
【上行Trunk 连接核心】
interface GigabitEthernet0/0/24
port link-type trunk
port trunk allow-pass vlan all
stp loop-protection
undo loopback-detect enable
【下联接入交换机 Trunk口】
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan all
stp root-protection
undo loopback-detect enable
(3)接入交换机
全局默认边缘端口 + BPDU 保护
上行口取消边缘端口、配置 loop-protection、关闭环路检测
下行用户口开启 loopback-detect 自环检测
增加 errdisable 自动恢复
system-view
sysname Access
stp enable
stp mode mstp
stp region-configuration
region-name MST-A
revision-level 1
active
# 全部端口默认边缘端口
stp edged-port default
# 全局启用BPDU保护
stp bpdu-protection
# 配置error-disable自动恢复(BPDU保护触发端口关闭后自动恢复)
errdisable recovery cause bpdu-protection
errdisable recovery interval 300
# 【上联汇聚端口】
interface GigabitEthernet0/0/24
port link-type trunk
port trunk allow-pass vlan all
undo stp edged-port
stp loop-protection
undo loopback-detect enable
# 【下行终端端口 批量配置】
port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/23
port link-type access
loopback-detect enable
loopback-detect action shutdown
3、锐捷交换机
(1)核心交换机
configure terminal
sysname Core-Master
spanning-tree mode mstp
# MST域配置(全网必须相同)
spanning-tree mst configuration
name MST-A
revision 1
exit
# 设置实例0为主根桥
spanning-tree instance 0 root primary
# =========下联汇聚Trunk口(DP指定端口)=========
interface GigabitEthernet 0/1
switchport mode trunk
switchport trunk allowed vlan all
spanning-tree rootguard
(2)汇聚交换机
定位:上行核心、下联接入;不配置 portfast、bpduguard
configure terminal
sysname Agg
spanning-tree mode mstp
spanning-tree mst configuration
name MST-A
revision 1
exit
# =========上行连接核心=========
interface GigabitEthernet 0/24
switchport mode trunk
switchport trunk allowed vlan all
spanning-tree loopguard
no loop-detection enable
# =========下联接入交换机Trunk口=========
interface GigabitEthernet 0/1
switchport mode trunk
switchport trunk allowed vlan all
spanning-tree rootguard
no loop-detection enable
(3)接入交换机
重点:
- 全局 portfast + bpduguard
- 上行口关闭 portfast、开启 loopguard、关闭环路检测
- 下行 Access 口开启 loop-detection 端口自环检测
- 配置 errdisable 自动恢复
configure terminal
sysname Access
spanning-tree mode mstp
spanning-tree mst configuration
name MST-A
revision 1
exit
# 所有端口默认PortFast边缘端口
spanning-tree portfast default
# 全局开启BPDU保护
spanning-tree bpduguard enable
# errdisable自动恢复(bpduguard触发端口关闭后自愈)
errdisable recovery cause bpduguard
errdisable recovery interval 300
# =========上联汇聚Trunk口=========
interface GigabitEthernet 0/24
switchport mode trunk
switchport trunk allowed vlan all
no spanning-tree portfast
spanning-tree loopguard
no loop-detection enable
# =========批量下行用户端口=========
interface range GigabitEthernet 0/1-23
switchport mode access
loop-detection enable
loop-detection action shutdown
功能 | 锐捷命令 | 部署位置 | 作用 |
Root 根保护 | spanning-tree rootguard | 核心 / 汇聚下联交换机 Trunk 口(DP) | 阻止下游设备抢占全网根桥 |
Loop 环路保护 | spanning-tree loopguard | 汇聚 / 接入上行 Trunk 口(RP/Alternate) | 光纤单向通信故障防止环路 |
BPDU 保护 | spanning-tree bpduguard enable | 接入交换机(配合 portfast) | 边缘端口收到 BPDU 直接 errdisable |
端口环路检测 | loop-detection enable | 接入下行 Access 用户口 | 终端自环、私接傻瓜交换机 |
备注:spanning-tree mst configuration
name MST-A
revision 1
默认情况下:如果不手动配置实例映射,所有 VLAN 默认归属 instance 0(CIST 实例)
七、总结
通过以上分析,大型园区使用stp的情况下,通过stp和环路防护完全可以实现交换网络环路控制,减少业务的中断的风险,提高企业的经营效益。
2026-07-12
合肥