【网络运维】记一次 ASR 9901 业务线卡 SW_INACTIVE 故障修复与 FPD 固件强刷全过程 - 夜莺博客

【网络运维】记一次 ASR 9901 业务线卡 SW_INACTIVE 故障修复与 FPD 固件强刷全过程

最近在维护一台思科 Cisco ASR 9901(ASR 9902 机箱)核心路由器时,遇到了一个非常棘手的底层硬件总线死锁问题。在一场常规的固件调整或业务重启后,发现整机最核心的业务线卡 0/0/CPU0(ASR9001-LC)死活无法正常工作,状态死死卡在 SW_INACTIVE(软件未激活)

通过查阅日志,系统在引导时频繁抛出背板集群通信和千兆以太网控制器刷写失败的底层硬件报错:

BCM5482 cluster port-1 reset done !!
Port 0. SFP Not Ready (0:0). Init failed using TSEC.
No MBI confirmation received from dSC

故障底层逻辑:由于主控板(dSC)与线卡之间的集群/槽位内部通信总线由于微码过低产生死锁,主控层无法将 IOS-XR 6.3.3 的 MBI(引导镜像)同步推送给业务线卡,导致线卡及其上的子卡接口全部瘫痪。

本篇文章将完整记录如何打破经典 32 位 Classic IOS-XR(cXR)精简系统下的加包限制,通过强制强刷底层 FPD(现场可编程器件)固件至 Rommon 3.04,最终彻底救活线卡、激活全盘端口的实战全过程。

第一阶段:打破 cXR 系统限制,强行导入 FPD 软件包

由于该 ASR 9901 当前仅激活了最精简的基础包 disk0:asr9k-mini-px-6.3.3,系统软件层极度缺乏解析复合 .pie 软件包的必要组件。

1. 踩坑排错(常见的异步静默失败)

起初在 admin 模式下直接尝试使用本地相对路径加包:

RP/0/RSP0/CPU0:ios(admin)# install add disk0:/asr9k-fpd-px.pie-6.3.3

系统虽然提示 The install operation will continue asynchronously.,但通过 show install log 5 detail 查看会发现任务被底层安全机制直接拦截,显示 No log information available,实质上是静默失败,加包并未成功。

2. 正确解法:利用 Source 源路径参数强行分发

在经典 cXR 系统的 admin 模式下,必须使用系统的 source 语法。这会强制调用最底层的传输和文件释放机制,绕过上层的组件依赖检查:

RP/0/RSP0/CPU0:ios(admin)# install add source disk0: asr9k-fpd-px.pie-6.3.3

注意:source disk0: 后面必须紧跟一个空格,再接纯文件名。

执行后,系统开始在后台真正调用解压引擎,将 512MB 的 FPD 包解析并导入到系统的非激活存储库中。随后顺利生成了 Operation 6 成功日志。

3. 激活(Activate)与固化提交(Commit)

包成功导入后,立刻在 admin 模式下下达异步激活指令。激活由于文件巨大需要几分钟时间,可通过 show install request 观察百分比进度:

# 激活 FPD 软件包 (Operation ID: 6)
RP/0/RSP0/CPU0:ios(admin)# install activate id 6
# 进度走到 100% 并提示成功后,立刻提交固化,防止重启丢失
RP/0/RSP0/CPU0:ios(admin)# install commit

第二阶段:强刷物理芯片固件(迎接风扇暴走考验)

软件层的 FPD 库激活后,我们正式开始对物理芯片的 Flash 进行微码烧录。注:经典 32 位 cXR 系统的 FPD 硬件刷新必须在 admin 模式下执行。

1. 触发全机箱强制强刷

RP/0/RSP0/CPU0:ios(admin)# upgrade hw-module fpd all force location all

系统会弹出长篇的 90 分钟超时安全警告,坚定地键入 y 并回车。

2. 烧录阵痛:风扇 CBC 升级引发的短暂暴走

在烧录过程中,系统滚屏打印出主控板(RP)、线卡(LC)、子卡(SPA)以及风扇框(FAN)的物理芯片固件对比:

  • 主控/线卡 Rommon:从古老的 1.29 / 1.30 强刷到全新的 3.04!
  • 各类 FPGA 芯片:全面刷新(例如线卡 fpga4 从 2.06 升级到 2.10)。

当固件写入到风扇模块 0/FT0/SP 的 cbc 芯片(从 24.114 到 24.115)时,系统突然抛出 Major 级别红色警报:

canb-server[155]: %PLATFORM-CANB_SERVER-3-ALARM_INDICATION : Raise alarm from CBC in slot 0/FT0/SP, alarm code CBC_ALRM_FT_LED_RED_FAILED

同时现场风扇开始全速狂飙、发出剧烈咆哮并亮起红灯。

💡 运维避坑心得:此时千万不要慌张!这是风扇控制芯片升级完成后自动重载,导致内部 CAN 总线产生了几秒钟的通信震荡。作为底层硬件的安全保护机制,风扇会自动切换至物理最高转速(保护性暴走)。此时绝对不能断电、不能拔插单板或取消命令,否则 Rommon 烧录中断,设备将直接变砖!

第三阶段:整机冷启动,见证全盘复活

随着屏幕弹出 FPD upgrade has ended. 的终结提示,整机所有核心物理芯片的微码全线 100% 完美写入。

1. 检查固件暂存状态

RP/0/RSP0/CPU0:ios(admin)# show hw-module fpd location all

此时会发现 rommon 已变为 3.04,但其余的 fpga2、fpga4 等组件虽然 Successfully 写入了,其 Current SW Version 在表中依然显示旧版,且 Upg/Dng? 依旧提示 Yes。

技术要点:新的微码已经送进闪存(Flash),但运行内存中依然挂载着旧的逻辑代码。必须通过整机冷启动/重载,触发物理芯片下电重新初始化,新微码才会正式归位。

2. 执行整机重载(Reload)

退出 admin 模式,将命令行交还给常规 XR 层,安全重启整机:

RP/0/RSP0/CPU0:ios(admin)# exit
RP/0/RSP0/CPU0:ios# reload

3. 重启后的完美成果

整机经历约 5~10 分钟的重新初始化冷引导后,再次登入系统,迎来了极其舒适的画面:

  1. 风扇恢复温柔:全新 Rommon 3.04 与新版风扇 CBC 芯片顺利握手,风扇红灯警报自动解除,瞬间静音,恢复常绿健康状态。
  2. 固件全线归位:在 admin 下再次输入 show hw-module fpd location all,刚才所有 FPGA 组件的运行版本全部刷新为最新(如线卡 fpga4 变为 2.10),且整张表的 Upg/Dng? 全线变为完美的 No!

最终大结局:线卡与 24 个接口满血复活

在常规模式下输入最核心的平台验证命令,之前死锁的业务卡彻底重生:

RP/0/RSP0/CPU0:ios# show platform
Node Type State Config State
-----------------------------------------------------------------------------
0/RSP0/CPU0 ASR9001-RP(Active) IOS XR RUN PWR,NSHUT,MON
0/0/CPU0 ASR9001-LC IOS XR RUN PWR,NSHUT,MON
0/0/1 A9K-MPA-20X1GE OK PWR,NSHUT,MON

业务线卡 0/0/CPU0 顺利切入 IOS XR RUN!20 端口的千兆子卡状态变为 OK!(线卡 bring-up 后的常规验证命令可参考 ASR9000 线卡上线验证

再次查看接口描述,整机 24 个高带宽物理端口(20 个千兆 + 4 个万兆)全线从死锁中释放,整整齐齐地展现在接口列表中:

RP/0/RSP0/CPU0:ios# show interfaces description
Interface Status Protocol Description
--------------------------------------------------------------------------------
Gi0/0/1/0 admin-down admin-down
... [省略 Gi0/0/1/1 到 19]
Te0/0/2/0 admin-down admin-down
Te0/0/2/1 admin-down admin-down
Te0/0/2/2 admin-down admin-down
Te0/0/2/3 admin-down admin-down

此时的 admin-down 仅代表软件层面默认关闭,硬件层面已被彻底修复。至此,全套底层 FPD 固件强刷成功,ASR 9901 顺利恢复满血状态,完美收工,进入业务配置交付阶段!