第122篇:Smart Link 主备切换与回流保护
关键词:Smart Link、主备切换、回切策略、RSM/GRSM 报文、防环机制、延迟回切、华为
一、引言
第121篇介绍了 Smart Link 和 Monitor Link 的基本原理。但当链路故障发生并修复后,Smart Link 的行为就需要更加精细的控制:主端口恢复后是否立即切回?切换过程中如何防止产生临时环路?如果链路反复震荡(Flapping),Smart Link 如何应对?本文将深入探讨 Smart Link 的切换时序、回流保护和防环机制。
二、核心概念
2.1 切换方向与回切策略
Smart Link 的切换包含两个方向:
| 方向 | 触发条件 | 说明 |
|---|---|---|
| 正向切换(主→备) | 主端口 Down | 流量立即切换到备端口 |
| 反向切换/回切(备→主) | 主端口恢复 Up | 受回切策略控制 |
回切策略决定了主端口恢复后的行为:

2.2 回切策略类型
| 策略 | 命令 | 说明 |
|---|---|---|
| 立即回切(默认) | 无特殊配置 | 主端口恢复后立即切回 |
| 延迟回切 | delay-recovery <seconds> |
主端口恢复后等待指定秒数再切回 |
| 不回切 | recovery-mode none |
主端口恢复后保持备端口转发,需手动切换 |
2.3 防环机制
Smart Link 切换时存在一个危险窗口:本地已经将流量切换到备端口,但对端设备的 MAC 表还没有更新,仍将从旧端口转发回来,从而形成环路。

三、技术细节
3.1 完整的切换时序

3.2 RSM 报文格式与泛洪控制
GRSM 报文的关键字段:
| 字段 | 长度 | 说明 |
|---|---|---|
| EtherType | 2 字节 | 0x88E8 |
| Smart Link Group ID | 2 字节 | 标识 Smart Link 组 |
| Source MAC | 6 字节 | 源 MAC 地址(可配置) |
| Options | 可变 | 可选字段 |
GRSM 泛洪控制:
| 方式 | 说明 |
|---|---|
| 默认泛洪 | GRSM 从备端口泛洪到所有 Trunk 端口 |
| 指定泛洪端口 | flush-mode grsm flood-port 指定从哪些端口发送 GRSM |
| VLAN 过滤 | GRSM 报文的 VLAN 可配置,控制泛洪范围 |
3.3 链路震荡防护
当链路频繁 Up/Down 时,每次切换都会触发 GRSM 泛洪和 MAC 表刷新,对网络造成冲击。Smart Link 提供了防震荡机制:
| 参数 | 默认值 | 说明 |
|---|---|---|
| 延迟恢复时间 | 0 秒 | 主端口恢复后等待的时间 |
| 抑制时间 | 设备相关 | 抑制短时间内频繁切换 |
四、实战配置/案例分析
4.1 延迟回切配置
# ========== 场景:避免主端口恢复后立即回切 ==========
[Access-SW] smart-link group 0
[Access-SW-smartlink-group0] active interface GigabitEthernet 0/0/2
[Access-SW-smartlink-group0] standby interface GigabitEthernet 0/0/3
[Access-SW-smartlink-group0] enabled
[Access-SW-smartlink-group0] flush-mode grsm
# 配置延迟回切:主端口恢复后等待 300 秒(5 分钟)再切回
# 目的:确保主链路稳定后再回切,避免链路反复震荡
[Access-SW-smartlink-group0] delay-recovery 300
# 配置 GRSM 泛洪端口(仅从备端口发送)
[Access-SW-smartlink-group0] flush-mode grsm flood-port GigabitEthernet 0/0/3
[Access-SW-smartlink-group0] quit
# ========== 验证 ==========
[Access-SW] display smart-link group 0
# Smart Link Group ID : 0
# State : Enabled
# Active Interface : GigabitEthernet0/0/2
# Standby Interface : GigabitEthernet0/0/3
# Flush Mode : GRSM
# Flood Port : GigabitEthernet0/0/3
# Delay Recovery : 300 seconds
4.2 Monitor Link 联动回切配置
# ========== Monitor Link 控制回切 ==========
# 当 Monitor Link 监控的上行接口恢复时,Smart Link 也回切
[Access-SW] smart-link monitor link-group 0 interface GigabitEthernet 0/0/1
# 含义:
# 1. GE0/0/1 Down → Smart Link Group 0 切换(主→备)
# 2. GE0/0/1 Up → Smart Link Group 0 回切(备→主,受 delay-recovery 控制)
# ========== 多接口监控 ==========
# 监控多个上行接口,任一接口状态变化都触发切换
[Access-SW] smart-link monitor link-group 0 interface GigabitEthernet 0/0/1
[Access-SW] smart-link monitor link-group 0 interface GigabitEthernet 0/0/4
4.3 故障案例:链路反复震荡导致广播风暴
场景描述
某办公楼接入交换机的主上联光模块存在老化问题,在一天内频繁 Up/Down。每次链路恢复后 Smart Link 立即回切,但光模块在几秒后又 Down。反复的切换导致 GRSM 报文大量泛洪,下游交换机的 MAC 表频繁刷新,最终引发广播风暴,整层楼的终端断网约 15 分钟。
排查过程
# 查看 Smart Link 切换日志
[Access-SW] display logbuffer | include SMARTLINK | head 20
# Jan 15 08:15:01 %%01SMARTLINK/4/PORT_SWITCH(l):Smart-link group 0 switched from GE0/0/2 to GE0/0/3.
# Jan 15 08:15:05 %%01SMARTLINK/4/PORT_SWITCH(l):Smart-link group 0 switched from GE0/0/3 to GE0/0/2.
# Jan 15 08:15:08 %%01SMARTLINK/4/PORT_SWITCH(l):Smart-link group 0 switched from GE0/0/2 to GE0/0/3.
# Jan 15 08:15:12 %%01SMARTLINK/4/PORT_SWITCH(l):Smart-link group 0 switched from GE0/0/3 to GE0/0/2.
# ... (反复切换)
# 查看端口 Up/Down 计数
[Access-SW] display interface GigabitEthernet 0/0/2
# Input/Output statistics
# last 300 seconds input rate 0 bytes/sec, 0 packets/sec
# link up/down counter: 47 times (频繁震荡)
根因分析
- 光模块老化,链路反复 Up/Down
- Smart Link 未配置延迟回切,主端口恢复后立即切回
- 每次切换产生 GRSM 泛洪,下游 MAC 表频繁刷新
- MAC 表项反复删除和重新学习期间,未知单播报文泛洪
处理方案
# 紧急处理:配置延迟回切,抑制频繁切换
[Access-SW] smart-link group 0
[Access-SW-smartlink-group0] delay-recovery 300
# 主端口恢复后等待 300 秒再回切
# 长期处理:更换老化的光模块
[Access-SW] display transceiver interface GigabitEthernet 0/0/2 verbose
# TxPower: 1.2 dBm (偏低)
# RxPower: -18.5 dBm (接近接收灵敏度)
# 光功率异常,需要更换光模块
后续验证
# 更换光模块后验证
[Access-SW] display transceiver interface GigabitEthernet 0/0/2 verbose
# TxPower: 2.8 dBm (正常)
# RxPower: -8.3 dBm (正常)
# 查看链路状态稳定
[Access-SW] display interface GigabitEthernet 0/0/2
# link up/down counter: 0 times
4.4 故障案例:GRSM 泛洪范围过大影响无关 VLAN
场景描述
Smart Link 切换后,不仅本 VLAN 的业务恢复正常,其他 VLAN 的 MAC 表也被 GRSM 报文刷新,导致短时间内跨 VLAN 的通信中断。
排查
# 查看 GRSM 泛洪端口
[Access-SW] display smart-link group 0
# Flood Port: All Trunk Ports(默认泛洪到所有 Trunk 端口)
# 问题:GRSM 从所有 Trunk 端口泛洪,影响了不属于 Smart Link 的 VLAN
处理
# 指定 GRSM 仅从备端口泛洪,避免影响其他 Trunk 端口
[Access-SW] smart-link group 0
[Access-SW-smartlink-group0] flush-mode grsm flood-port GigabitEthernet 0/0/3
# 精确控制 GRSM 只从备端口发出
五、总结
| 项目 | 说明 |
|---|---|
| 正向切换(主→备) | 主端口 Down 时立即切换,无需等待 |
| 回切策略 | 立即回切(默认)/ 延迟回切 / 不回切 |
| 延迟回切 | 抑制链路震荡,避免频繁切换 |
| GRSM 泛洪控制 | 指定泛洪端口,避免影响无关 VLAN |
| 防环机制 | 先断后通 + GRSM 刷新对端 MAC 表 |
| 链路震荡 | 配置 delay-recovery 抑制频繁切换 |
| 华为推荐 | GRSM 模式 + 指定泛洪端口 + 合理延迟回切 |
思考
-
延迟回切设置为 300 秒后,在 300 秒的等待期间流量仍然走备端口。如果主端口在等待 299 秒后再次 Down,Smart Link 会如何处理?之前的延迟计时会重置吗?
-
GRSM 报文泛洪到所有 Trunk 端口。如果下游有一台不支持 GRSM 的第三方交换机,它收到 GRSM 报文后会如何处理?是否会造成问题?
-
在多 VLAN 的 Smart Link 场景中,GRSM 报文携带 VLAN 信息吗?如果 Smart Link 端口配置为 Access VLAN 10,GRSM 是否会影响 VLAN 20 的 MAC 表?
下篇预告:第123篇:DLDP 单向链路检测:防光模块故障