第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
# ========== 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 (频繁震荡)

根因分析

  1. 光模块老化,链路反复 Up/Down
  2. Smart Link 未配置延迟回切,主端口恢复后立即切回
  3. 每次切换产生 GRSM 泛洪,下游 MAC 表频繁刷新
  4. 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 模式 + 指定泛洪端口 + 合理延迟回切

思考

  1. 延迟回切设置为 300 秒后,在 300 秒的等待期间流量仍然走备端口。如果主端口在等待 299 秒后再次 Down,Smart Link 会如何处理?之前的延迟计时会重置吗?

  2. GRSM 报文泛洪到所有 Trunk 端口。如果下游有一台不支持 GRSM 的第三方交换机,它收到 GRSM 报文后会如何处理?是否会造成问题?

  3. 在多 VLAN 的 Smart Link 场景中,GRSM 报文携带 VLAN 信息吗?如果 Smart Link 端口配置为 Access VLAN 10,GRSM 是否会影响 VLAN 20 的 MAC 表?

下篇预告:第123篇:DLDP 单向链路检测:防光模块故障