1. 课程导入与故障诊断全景

Juniper 路由器在运营商核心网、大型企业出口和数据中心互联场景中承担着高密度路由承载任务。一旦出现复杂路由故障,现象往往不是“接口 down 了”这么简单,而是表现为部分前缀丢失、路径绕行、流量黑洞、邻居反复震荡、路由表与转发表不一致等隐蔽问题。这类故障的难点在于:控制平面与转发平面分离,BGP、OSPF、IS-IS、MPLS、VPN 等多协议叠加,且故障可能由策略、下一跳、隧道、硬件表项或上游运营商共同引起。因此,本课程的第一节不急于讲具体命令,而是先建立一张“诊断全景图”,让后续每一章的排查动作都有明确位置。

复杂路由故障的四个典型特征

与普通连通性故障相比,Juniper 复杂路由故障通常具备以下特征:

  • 多协议耦合:例如 BGP 路由依赖 IGP 到达下一跳,IGP 又依赖底层接口与 MPLS LSP。任何一层异常都会在 BGP 层表现为“路由存在但不可达”。
  • 控制面与转发面不一致:show route 显示某前缀为 *> 活跃,但 show route forwarding-table 中下一跳为空或指向错误接口,说明路由已进入 RIB 但未正确安装到 FIB。
  • 策略与状态叠加:import/export policy、route preference、local preference、AS path 过滤等策略会改变选路结果,故障现象可能随策略调整而“漂移”。
  • 间歇性与方向性:某些故障只在特定前缀、特定邻居、特定方向或特定时间段出现,例如 BGP flap 导致的路由抖动,或单向 MPLS 标签失效。

理解这些特征后,排查思路应从“单点命令”转向“分层定位”。Juniper 的故障诊断体系可以概括为五个平面:物理与接口层、IGP 层、BGP 层、MPLS/VPN 层、转发与策略层。每一层都有对应的观察对象和判断依据,而不是盲目重启协议。

诊断体系构成:从现象到根因的路径

一个可复用的诊断体系应包含四个要素:现象采集、分层验证、根因假设、变更验证。现象采集阶段要记录故障前缀、影响范围、发生时间、最近变更;分层验证阶段按“接口→IGP→BGP→MPLS→FIB”顺序逐层确认;根因假设阶段根据异常点提出可验证的假设;变更验证阶段通过最小化变更和回滚点确认修复效果。

例如,某客户反馈“到 10.10.10.0/24 的流量时通时断”。初步采集发现该前缀通过 IBGP 学习,下一跳为 192.0.2.1。此时不应直接重启 BGP,而应先确认 192.0.2.1 是否在 IGP 中可达、是否被策略过滤、是否在 FIB 中正确解析。若 IGP 可达但 FIB 缺失,则问题可能位于下一跳解析或硬件表项;若 IGP 不可达,则问题在 IGP 或接口层。这种“先定位层,再定位点”的方式,正是本课程要训练的核心能力。

Juniper 复杂路由故障诊断全景 现象采集 → 分层验证 → 根因假设 → 变更验证 故障现象 前缀丢失 / 路径绕行 show route 异常 流量黑洞 / 单向不通 ping/traceroute 异常 邻居震荡 / 路由抖动 BGP flap 日志 RIB 与 FIB 不一致 转发面丢包 策略过滤 / 选路异常 policy 命中错误 MPLS 标签 / LSP 故障 traceroute mpls 分层验证路径 ① 物理与接口层 show interfaces terse / show chassis alarms ② IGP 层(OSPF / IS-IS) show ospf neighbor / show isis adjacency ③ BGP 层 show bgp summary / show route receive-protocol ④ MPLS / VPN 层 show mpls lsp / show route table inet.3 ⑤ 转发与策略层 show route forwarding-table / show policy 根因与验证 根因假设 接口 / IGP / BGP / MPLS 最小化变更 单点修改 + 回滚点 结果验证 路由 / 转发 / 流量 复盘记录 现象 / 根因 / 动作 实战目标 独立定位 + 可复现 核心原则:先分层定位,再单点验证;不跳层、不盲改、不重启

学习路径与实战目标

本课程后续章节将沿着上述五层结构展开,但不会机械地“一层一章”。学习路径大致分为三个阶段:基础诊断能力(接口、IGP、BGP 邻居与路由表)、进阶故障定位(策略、MPLS、VPN、FIB 不一致)、综合实战与复盘(多协议叠加故障、运营商场景、自动化采集与验证)。每一阶段都要求读者能够独立完成“现象描述→分层验证→根因判断→修复验证”的闭环。

实战目标不是记住所有命令,而是形成三个习惯:第一,先看现象再敲命令,明确要验证哪一层;第二,每层都有明确的判断依据,例如 IGP 层看邻居状态与 SPF 结果,BGP 层看邻居状态、前缀数量与属性;第三,变更前后都有对比,避免“改完好了但不知道为什么好”。

学习建议:准备一台可用的 Juniper 实验设备或 EVE-NG/Containerlab 环境,后续每节尽量跟随命令输出进行验证。对于生产环境,任何变更前先执行 show configuration | display set 备份,并记录回滚点。

一个可复用的诊断记录模板

为了让排查过程可追溯,建议在每次故障处理时填写一份简版记录。以下模板可直接复制使用,字段均围绕路由故障的实际判断依据设计:

字段 填写内容示例 用途
故障前缀 10.10.10.0/24 锁定影响范围
现象描述 时通时断,traceroute 在第二跳后丢失 区分控制面/转发面
最近变更 2 小时前调整过 export policy 关联根因假设
分层验证结果 接口 up;OSPF 邻居 Full;BGP Established;FIB 下一跳为空 定位异常层
根因判断 下一跳解析失败导致 FIB 未安装 指导修复动作
修复与验证 修正下一跳后 show route forwarding-table 出现表项,ping 恢复 确认闭环

这张表看似简单,但它强制把“现象、验证、根因、验证”四件事分开记录,避免把猜测当成结论。后续章节中遇到的 BGP 策略异常、MPLS LSP 中断、VPN 路由泄漏等问题,都可以套用同一套记录逻辑,只是每层的观察对象和命令不同。

最后需要强调:Juniper 复杂路由故障的诊断能力,本质上是对“路由生命周期”的理解——一条路由从邻居学习、策略过滤、选路比较、进入 RIB、解析下一跳、安装 FIB,直到最终转发,每个环节都可能成为故障点。本课程的目标,就是让你在每一个环节都有明确的观察点和判断依据,而不是依赖经验或反复试错。