Juniper MX Resolve Hardware Issues: Damping and Hold-Time Guide - 夜莺博客

Juniper MX Resolve Hardware Issues: Damping and Hold-Time Guide

Juniper MX 系列路由器(MX204/MX301/MX304/MX10004/MX10008)在链路不稳定时会出现接口反复 up/down、路由振荡和不必要的故障切换。本文基于 Juniper 官方文档,系统讲解如何用 Junos OS 的接口阻尼(interface damping)与 hold-time 机制抑制瞬时故障,如何按平台级别配置 cmerror 的检测动作,以及如何通过 minimum-links、事件策略和光层检查增强硬件冗余设计,帮助网络工程师快速定位并规避数据面硬件问题。

接口阻尼:两类抑制机制

Junos 提供两种端口阻尼方法,分别应对不同时长的链路抖动:静态 hold-time 定时器与指数退避阻尼(exponential backoff damping)。二者可以叠加使用:hold-time 负责过滤毫秒级抖动,阻尼负责压制周期性反复抖动。

静态 Hold-Time Up/Down 定时器

针对毫秒级的短时抖动,可在物理接口(ge-、xe-、et-)上按链路状态配置 hold-time up 与 hold-time down 定时器。hold-time down 建议保持默认 0ms,除非特定场景需要延迟上报;链路恢复阶段 hold-time up 可抑制后续快速抖动,防止路由协议收到大量事件。

典型配置如下:

set interfaces ge-0/0/0 hold-time up 3000 down 0
set interfaces ge-0/0/0 hold-time up 5000 down 8000

第一行表示接口 up 事件延迟 3000ms 上报,down 事件立即上报(最常用于光模块重启或远端设备 reload 引发的瞬断);第二行表示 up/down 都做延迟,适合对端设备频繁触发 OIR 的场景。单位是毫秒,取值必须是 1000 的整数倍,配置生效需要重启该接口的逻辑单元。

动态阻尼(Exponential Backoff)

针对持续数秒以上的周期性抖动,可配置类似 BGP 的指数退避机制,主要参数包括 half-life、reuse、suppress、max-suppress-time。每次接口 down 事件累加 1000 惩罚值,惩罚值按指数衰减,超过 suppress 阈值后接口进入抑制状态,不再向上层协议上报 up/down 事件。

set interfaces ge-0/0/0 damping half-life 5
set interfaces ge-0/0/0 damping reuse 750
set interfaces ge-0/0/0 damping suppress 3000
set interfaces ge-0/0/0 damping max-suppress-time 20

参数含义:half-life 是惩罚值衰减到一半所需的时间(秒),决定接口恢复上报的速度;reuse 是退出抑制状态的惩罚值下限;suppress 是进入抑制状态的惩罚值上限;max-suppress-time 是单次抑制的最长时间(分钟),达到该时间后即使惩罚值仍高于阈值接口也会重新上报事件。抑制状态下的接口在 show interfaces 输出中会带有 damped 标记。

阻尼参数怎么调

  • 先测量再调整:用 show log messages | match "link down" 统计某接口一天的 up/down 次数与间隔,再决定是用 hold-time 还是阻尼。
  • 间隔小于 10 秒的抖动:优先用 hold-time up,阻尼的颗粒度对这类抖动偏粗。
  • 分钟级周期性抖动:用阻尼,把 half-life 设得比抖动周期小、max-suppress-time 设得比抖动周期大。
  • 上联口与下联口的策略应当不同:上联口一断就要快速感知(hold-time 设为 0),下联口接终端时可放宽。

阻尼不是万能药:副作用与限制

  • 阻尼会让真实故障的感知变慢。如果接口被抑制,而故障是永久性的,路由收敛要等到抑制期结束才发生,这段时间流量依赖备份路径。
  • 阻尼只在物理接口上生效,逻辑接口(ae、irb、vlan)不能配置,因此 LAG 成员口的抖动要在成员物理口上分别配置。
  • 阻尼参数是全局接口级别的,无法按 BFD 的会话级别细调,对收敛时间敏感的业务应使用 BFD 而不是阻尼。
  • 阻尼不能修复根因。反复触发的抖动通常意味着光模块劣化、线缆损伤或对端设备电源不稳,阻尼只是把影响压小的临时手段。

LAG 布线与冗余设计

以 MX10004 双 LC9600 线卡为例,每块线卡包含 6 个 Trio 6 ASIC(PFE)。上游路径建议:接口分散到至少两块线卡,同一线卡上每个 PFE 最多两个端口。例如 R1 与 R10 之间配置 6×400GbE LAG,每块 LC9600 上分布三个接口。

使用 minimum-links 控制 LAG 在部分成员失效时的行为:当活跃接口数低于配置阈值时整个 bundle 关闭以避免拥塞。例如阈值设为 4 时,LAG 只剩 3 条链路即整体 down。

set interfaces ae0 aggregated-ether-options minimum-links 4
set interfaces ae0 aggregated-ether-options minimum-bandwidth 200g

minimum-links 与 minimum-bandwidth 的区别在于统计口径:前者按链路条数,后者按聚合带宽,选用哪个取决于成员链路的速率是否一致。如果 LAG 同时承载多业务,建议使用 bandwidth 口径,避免速率不同的成员口混接时阈值失真。

硬件错误处理(cmerror)

MX 平台由 cmerror 子系统管理硬件错误,按严重程度分类并默认触发相应动作。可通过 show chassis alarms 查看告警,在 chassis fpc <slot> error 下按线卡/严重级别/类别配置处理动作,例如 fatal 错误保持线卡离线、major 错误用 disable-pfe 隔离故障 ASIC。

错误级别、作用域与动作

完整语法是在 FPC 级别按 作用域(scope)+ 类别(category)+ 严重级别(fatal/major/minor)组合配置阈值和动作:

# 在 FPC 级别配置
set chassis fpc 3 error scope fabric category fabric-link fatal threshold 1 action offline
set chassis fpc 3 error scope storage category memory major threshold 3 action disable-pfe
set chassis fpc 3 error scope io category io major threshold 2 action reset-pfe

# 或在 chassis 级别对全部线卡统一配置
set chassis error minor threshold 10 action log

常用动作的含义:alarm 只上报告警;log 只写日志;trap 发送 SNMP trap;offline 把整块 FPC 下线,让流量从其他线卡绕行;disable-pfe 只关闭出错 ASIC 对应的 PFE 接口,把影响限制在一块 ASIC 上;reset-pfe 与 reset 则尝试自动恢复。需要注意 offline、reset、disable-pfe、offline-pfe、reset-pfe 之间互斥,同一级别不能同时配置。disable-pfe 从 Junos 17.4 起可用,在 MX 上由于一块 MPC 上多个 ASIC 可能由同一个 PFE 管理,关闭 PFE 会同时影响多个 ASIC,配置前要确认冗余路径足够。

监控数据面健康的关键命令

show chassis alarms
show chassis environment
show chassis fpc
show chassis fabric errors
show pfe statistics
show log messages | match cmerror

Junos 会以 syslog、SNMP trap、gNMI 通知形式异步上报告警,可对接外部自动化流程;在冗余设计中(如成员链路跨线卡分布的 LAG),也可以配置设备本地 on-box automation 对事件自动响应,最大限度降低流量影响。

set event-options policy CMERROR_DISABLE_PFE events ECC_ERROR
set event-options policy CMERROR_DISABLE_PFE then execute-commands commands "show chassis fpc"
set event-options policy CMERROR_DISABLE_PFE then execute-commands output-filename fpc-state.txt
set event-options policy CMERROR_DISABLE_PFE then execute-commands output-format text

接口反复 up/down 的分层排查顺序

  1. 物理层:show interfaces extensive 看光功率、错误计数与 CRC,确认不是光模块或线缆问题;必要时更换光模块或跳线做交叉验证。
  2. 协调层:确认本端与对端的速率、双工、FEC 与自动协商配置一致,速率不匹配会周期性出现链路抖动。
  3. 协议层:看 show log messages 中该接口触发的协议事件,判断抖动是否被 BGP/ISIS/OSPF 放大成路由振荡。
  4. 硬件层:如果同一块线卡上的多个接口同时抖动,高度怀疑 PFE 或线卡故障,用 cmerror 日志确认。
  5. 抑制层:在确认根因不可立即修复后,再上 hold-time 或阻尼把影响控制住,并把抑制事件加入监控。

相关阅读

更多 Junos 排障命令可参考本站 Junos Troubleshooting Commands Reference;BGP/路由抖动抑制见 Juniper BGP Session and Route Flaps: Prevention Guide 与 BGP Route Flap Damping: Penalty and Timer Tuning;高可用与 LAG 设计见 Juniper MC-LAG Best Practices。

原文链接:https://juniper.net/documentation/us/en/software/platform/mx301-configuration-essentials/configuration-essentials-mx301-mx304/topics/concept/mx-resolving-hw-issues.html