网络冗余必备 | 浮动静态路由(Floating Static Route)主备切换实战
华为 eNSP · AR2220 · 浮动静态路由 · BFD 联动 · 主备链路切换
主链路挂了网络就瘫?一篇文章讲透「主备双路径 + preference 优先值差异 + BFD 联动」全流程,附完整拓扑、可复制配置、故障切换验证与踩坑清单。
先说结论:浮动静态路由的精髓就一句话 ——
同一目的地配两条静态路由,用 preference 优先值拉开差距。优先值小的(默认 60)当主路径走,大的(手动调到 100)当备份「潜伏」在路由表外。主路径下一跳失效,主路由被撤销,备份路由
自动顶上。但有个致命坑:默认静态路由只检测
本端出接口物理状态,远端故障切不过来 —— 必须配 BFD/NQA 联动才能真正实现毫秒切换。
📑 目录
一、为什么需要浮动静态路由
企业出口、关键业务链路往往要双链路冗余:一条主路径走高速专线,一条备份走低速 MPLS。需求很朴素:
- 正常时数据走主路径,带宽拉满
- 主路径挂了,备份路径自动接管,业务不中断
- 主路径恢复,自动切回主路径
普通静态路由配两条同目的地会变成等价负载均衡(ECMP),数据两边各走一半,挂一半丢一半 —— 这不是冗余是添乱。浮动静态路由用 preference(优先值)差异 把第二条压成「备份」,平时不生效,故障才顶上。
💡 本质:浮动静态路由 = 普通静态路由 + preference 差异化。华为 VRP 里 preference 越小越优先,默认 60。
二、实验拓扑与地址规划

地址规划表
| AR1 | GE0/0/0 | 12.1.1.1/24 | 主链路出接口(连 AR2) |
| AR1 | GE0/0/1 | 34.1.1.1/24 | 备份链路出接口(连 AR4) |
| AR1 | Loopback0 | 1.1.1.1/32 | 测试源 |
| AR2 | GE0/0/0 / GE0/0/1 | 12.1.1.2 / 23.1.1.2 | 主路径中转 |
| AR4 | GE0/0/0 / GE0/0/1 | 34.1.1.4 / 45.1.1.4 | 备份路径中转 |
| AR3 | GE0/0/0 | 23.1.1.3/24 | 主链路入接口(连 AR2) |
| AR3 | GE0/0/1 | 45.1.1.3/24 | 备份链路入接口(连 AR4) |
| AR3 | Loopback0 | 3.3.3.3/32 | 测试目标 |
三、第一步:接口与 Loopback 基础配置
四台路由器逐台配置,地基打稳再谈浮动。
AR1
<Huawei> system-view
[Huawei] sysname AR1
[AR1] interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0] ip address 12.1.1.1 24
[AR1-GigabitEthernet0/0/0] quit
[AR1] interface GigabitEthernet 0/0/1
[AR1-GigabitEthernet0/0/1] ip address 34.1.1.1 24
[AR1-GigabitEthernet0/0/1] quit
[AR1] interface LoopBack 0
[AR1-LoopBack0] ip address 1.1.1.1 32
[AR1-LoopBack0] quit
AR2(主路径中转)
<Huawei> system-view
[Huawei] sysname AR2
[AR2] interface GigabitEthernet 0/0/0
[AR2-GigabitEthernet0/0/0] ip address 12.1.1.2 24
[AR2-GigabitEthernet0/0/0] quit
[AR2] interface GigabitEthernet 0/0/1
[AR2-GigabitEthernet0/0/1] ip address 23.1.1.2 24
[AR2-GigabitEthernet0/0/1] quit
AR4(备份路径中转)
<Huawei> system-view
[Huawei] sysname AR4
[AR4] interface GigabitEthernet 0/0/0
[AR4-GigabitEthernet0/0/0] ip address 34.1.1.4 24
[AR4-GigabitEthernet0/0/0] quit
[AR4] interface GigabitEthernet 0/0/1
[AR4-GigabitEthernet0/0/1] ip address 45.1.1.4 24
[AR4-GigabitEthernet0/0/1] quit
AR3
<Huawei> system-view
[Huawei] sysname AR3
[AR3] interface GigabitEthernet 0/0/0
[AR3-GigabitEthernet0/0/0] ip address 23.1.1.3 24
[AR3-GigabitEthernet0/0/0] quit
[AR3] interface GigabitEthernet 0/0/1
[AR3-GigabitEthernet0/0/1] ip address 45.1.1.3 24
[AR3-GigabitEthernet0/0/1] quit
[AR3] interface LoopBack 0
[AR3-LoopBack0] ip address 3.3.3.3 32
[AR3-LoopBack0] quit
⚠️ 配完先用 ping 验证四段直连链路都通:AR1→AR2(12.1.1.2)、AR2→AR3(23.1.1.3)、AR1→AR4(34.1.1.4)、AR4→AR3(45.1.1.3)。任何一段不通,浮动路由都是空中楼阁。
四、第二步:主备静态路由配置
核心操作:为同一目的地配两条静态路由,用 preference 拉开差距。主备必须双向都配,否则单通。
AR1:去程主备
[AR1] ip route-static 3.3.3.3 32 12.1.1.2
// 主路径,preference 用默认值 60,可不写
[AR1] ip route-static 3.3.3.3 32 34.1.1.4 preference 100
// 备份路径,优先值调大到 100,平时被主路径压制不生效
AR2:主路径中转路由
[AR2] ip route-static 1.1.1.1 32 12.1.1.1
[AR2] ip route-static 3.3.3.3 32 23.1.1.3
// AR2 只走主路径,不配备份
AR4:备份路径中转路由
[AR4] ip route-static 1.1.1.1 32 34.1.1.1
[AR4] ip route-static 3.3.3.3 32 45.1.1.3
// AR4 只走备份路径,平时这条路径的流量为 0
AR3:回程主备
[AR3] ip route-static 1.1.1.1 32 23.1.1.2
// 回程主路径,preference 60
[AR3] ip route-static 1.1.1.1 32 45.1.1.4 preference 100
// 回程备份路径,preference 100
🚫
最高频错误:只在 AR1 配了主备,AR3 回程只配一条主路径。现象是
主路径正常时通,主路径故障后 AR1 能发出去(走备份),但 AR3 回包仍尝试走已断的主路径 → 全丢。回程主备和去程主备必须
对称。
💡 preference 数值含义:越小越优先。华为设备直连=0、OSPF=10、静态默认=60。主备差距建议 ≥ 30(如 60 vs 100),避免边界值误判。
五、第三步:主路径正常时验证
配置完成,先验证默认走主路径。
① 查 AR1 路由表
<AR1> display ip routing-table protocol static
Destination/Mask Proto Pre Cost NextHop Interface
3.3.3.3/32 Static 60 0 12.1.1.2 GE0/0/0 ← 只看到主路径
备份路由(preference 100)此时不在路由表里,被主路径压制潜伏。要看它得用:
<AR1> display ip routing-table protocol static verbose
// verbose 模式能看到所有静态路由条目,包括被压制未生效的备份路由
② tracert 看走哪条路
<AR1> tracert 3.3.3.3
1 12.1.1.2 10 ms // 经过 AR2
2 23.1.1.3 20 ms // 到达 AR3
3 3.3.3.3 30 ms // 目标 Lo0
// 路径:AR1 → AR2 → AR3,走的是主链路
③ 端到端 ping
<AR1> ping -a 1.1.1.1 3.3.3.3
— 3.3.3.3 ping statistics — 5 packet(s) transmitted, 5 received, 0.00% packet loss
-a 1.1.1.1 指定源 IP 为 Loopback0,模拟业务流量。
六、第四步:模拟主链路故障看切换
这是浮动静态路由的高光时刻。在 AR1 上把主路径出接口关掉,模拟主链路故障:
[AR1] interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0] shutdown
// 主路径出接口物理 down
① 看路由表自动切换
<AR1> display ip routing-table protocol static
Destination/Mask Proto Pre Cost NextHop Interface
3.3.3.3/32 Static 100 0 34.1.1.4 GE0/0/1 ← 备份路由顶上!
主路由(next-hop 12.1.1.2,出接口已 down)被自动撤销,备份路由(preference 100)从潜伏状态激活,next-hop 变成 34.1.1.4,出接口变成 GE0/0/1。
② tracert 看新路径
<AR1> tracert 3.3.3.3
1 34.1.1.4 10 ms // 经过 AR4(备份中转)
2 45.1.1.3 20 ms // 到达 AR3
3 3.3.3.3 30 ms
// 路径:AR1 → AR4 → AR3,已切到备份链路
③ 业务恢复
<AR1> ping -a 1.1.1.1 3.3.3.3
— 3.3.3.3 ping statistics — 5 transmitted, 5 received, 0.00% packet loss
// 业务零中断(仅有切换瞬间的少量丢包)
④ 主链路恢复,自动切回
[AR1] interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0] undo shutdown
// 主路径接口恢复
<AR1> display ip routing-table protocol static
3.3.3.3/32 Static 60 0 12.1.1.2 GE0/0/0 ← 主路由回归
// preference 60 重新压制 100,自动切回主路径
💡 这就是「浮动」二字的形象:备份路由像浮在水下的救生圈,平时看不见,主路径一沉它就浮上来顶替。
七、进阶:BFD 联动实现毫秒切换
默认检测的致命缺陷
上面的实验能切换,是因为我们 shutdown 了本端出接口,VRP 检测到接口物理 down 就撤销关联该接口的静态路由。但现实故障往往是远端故障:
- 中间链路被拔线但本端接口协议仍 up
- 对端设备宕机但本端看不到
- 链路误码率高 ping 不通但接口没 down
这些情况下,本端出接口仍然 up,主静态路由不会被撤销,备份永远顶不上 → 业务黑洞。
BFD 联动解法
BFD(Bidirectional Forwarding Detection)秒级(毫秒级)检测链路双向连通性,和静态路由联动后,远端故障也能触发切换。
AR1 配置
[AR1] bfd // 全局使能 BFD
[AR1] bfd ar1-ar2 bind peer-ip 12.1.1.2 source 12.1.1.1 auto
// 建立 BFD 会话,peer 是对端 IP,source 是本端 IP
[AR1-bfd-session-ar1-ar2] discriminator local 10
[AR1-bfd-session-ar1-ar2] discriminator remote 20
[AR1-bfd-session-ar1-ar2] commit
[AR1-bfd-session-ar1-ar2] quit
[AR1] ip route-static 3.3.3.3 32 12.1.1.2 track bfd-session ar1-ar2
// 主静态路由绑定 BFD 会话,BFD 检测到故障 → 立即撤销此路由
AR2 对端配置(BFD 必须两端都配)
[AR2] bfd
[AR2] bfd ar2-ar1 bind peer-ip 12.1.1.1 source 12.1.1.2 auto
[AR2-bfd-session-ar2-ar1] discriminator local 20
[AR2-bfd-session-ar2-ar1] discriminator remote 10
[AR2-bfd-session-ar2-ar1] commit
[AR2-bfd-session-ar2-ar1] quit
验证 BFD 会话
<AR1> display bfd session all
Local Remote PeerIp State
10 20 12.1.1.2 Up // State=Up 才算会话建立成功
⚠️ BFD 联动的关键:
- 两端都要配,单端配会话起不来
- discriminator local/remote 两端要交叉对应(本端 local=对端 remote)
- 默认检测周期 1000ms × 3 次 = 3 秒切换;可调 min-tx-interval / min-rx-interval 压到毫秒级
- 联动后 BFD 故障 → 静态路由撤销 → 备份顶上,远端故障也能切
NQA 备选方案
不支持 BFD 的老设备可用 NQA(Network Quality Analyzer)icmp 探测 + 静态路由联动,原理类似但检测更慢(秒级)。BFD 是首选。
八、浮动静态路由 vs 普通静态 vs OSPF
| 冗余能力 | 无 | ✅ 主备自动切换 | ✅ 多路径负载/冗余 |
| 配置复杂度 | 一条目的地一条 | 同目的地两条 + preference | 宣告网段即可 |
| 故障检测速度 | 不检测 | 依赖接口物理状态(秒级)/BFD(毫秒) | Hello 计时器(秒级) |
| 远端故障感知 | ❌ 不感知 | ❌ 默认不感知,需 BFD/NQA | ✅ 邻居超时自动收敛 |
| 资源开销 | 几乎为零 | 几乎为零(配 BFD 略增) | CPU/内存维护 LSA |
| 适用场景 | 单链路小网络 | 双链路冗余、出口主备 | 中大型网络、多节点 |
| 本实验建议 | ❌ 不满足冗余 | ✅ 4 台路由器双链路首选 | ⚠️ 杀鸡用牛刀,但扩展性好 |
选型口诀:单链路用普通静态、双链路冗余用浮动静态、多节点动态用 OSPF。生产环境双链路冗余最常见的就是浮动静态 + BFD。
九、常见踩坑排查表
| 1 | 备份路由一直不生效 | preference 数值配反(备份配成更小) | 备份 preference 要更大(如 100 > 60) |
| 2 | 主路径故障后业务不通 | 只配了去程主备,回程没配 | AR3 回程也要对称配主备,双向对称 |
| 3 | 远端故障不切换 | 本端接口仍 up,静态路由不撤销 | 配 BFD/NQA 联动检测远端 |
| 4 | BFD 会话起不来 | 只配了一端 / discriminator 没交叉对应 | 两端对称配,local/remote 交叉 |
| 5 | 主备差距太小误切 | preference 60 vs 65,边界抖动 | 差距 ≥ 30(推荐 60 vs 100) |
| 6 | 主路径恢复后切不回 | 备份路由的 preference 写得比主还小 | 核对主路径优先值 < 备份优先值 |
| 7 | 配了两条同目的地变成负载均衡 | 两条都没写 preference(都默认 60) | ECMP 等价,给备份补 preference 100 |
| 8 | tracert 中间跳超时 | 中间设备限制 TTL 回应,正常现象 | 以端到端 ping 结果为准 |
⚠️ 排查三板斧:① display ip routing-table protocol static 看哪条生效 → ② display bfd session all 看 BFD 状态 → ③ tracert 看实际路径。切换失败 90% 是回程没配对称或 BFD 没起来。
📌 写在最后
浮动静态路由的精华浓缩成三句:
- 同目的地配两条静态路由,preference 拉开差距,小的当主大的当备;
- 主备双向对称配置,只配去程单通,故障切不过来;
- 默认只检测本端接口物理状态,远端故障要靠 BFD/NQA 联动才能切。
⏭️ 下一步预告:
下一篇在这个拓扑上加 VRRP 虚拟网关冗余,把 AR1/AR3 改成 VRRP 主备网关,配合浮动静态路由实现端到端 + 网关级双重冗余。
命令续写模板:[AR1] ip route-static <目标> <掩码> <主下一跳> track bfd-session <name> | 备份加 preference 100
本文基于 eNSP V100R003C00 + AR2220 验证通过 · 原创:Seal_ · 转载请注明出处
网硕互联帮助中心







评论前必须登录!
注册