适用场景

两条出口链路,但路由是「谁在前谁生效」,链路断了要等路由超时或人工切换 —— 这是最常见的出口隐患。做法是给主链路加 BFD 会话,链路故障时毫秒级感知并切换到备用路由。本文按真实现场配置讲清写法与验证。

配置步骤(多分支链路的 BFD 编排)

# 场景:中心点对接 4 个分支点,每个分支独立 BFD 会话
# 分支 A
bfd br-a bind peer-ip 100.64.11.2 source-ip 100.64.11.1
 discriminator local 100
 discriminator remote 101
 commit
ip route-static 10.30.10.0 255.255.255.0 100.64.11.2 track bfd-session br-a
ip route-static 10.30.10.0 255.255.255.0 100.64.11.6 preference 70

# 分支 B(鉴别符不能与其它会话重复)
bfd br-b bind peer-ip 100.64.12.2 source-ip 100.64.12.1
 discriminator local 110
 discriminator remote 111
 commit
ip route-static 10.30.20.0 255.255.255.0 100.64.12.2 track bfd-session br-b
ip route-static 10.30.20.0 255.255.255.0 100.64.12.6 preference 70

# 汇总查看
display bfd session all | include 'Up|Down'
display ip routing-table | include '10.30.'
# 建议维护一张会话表
分支 | 本端鉴别符 | 对端鉴别符 | 主下一跳 | 备用下一跳 | preference | 负责人
A    | 100        | 101        | 100.64.11.2 | 100.64.11.6 | 70 | 某人

关键参数与建议

  • BFD 会话:本端/对端鉴别符(discriminator)必须互指且不冲突,绑定源目 IP 与出接口
  • 主备路由:主路由绑定 BFD(track bfd-session),备用路由给更高 preference(数值更大优先级更低)
  • 多分支场景:每个分支链路独立 BFD 会话与路由,避免一断全断
  • 回切策略:主链路恢复后是否自动回切要明确,避免来回抖动
  • 联动范围:默认路由、业务网段路由都要覆盖,只配默认路由会出现「出得去回不来」
  • 验证:真断链路一次,记录切换时间与丢包数,别只看 BFD 状态 Up
  • 告警:BFD 状态变化要接入监控并触发通知
  • 记录:会话编号、对端、备用路由 preference 写成表格便于交接

容易踩的坑

  • 所有分支用同一套鉴别符,会话互相冲突
  • 分支间网段规划重叠,路由表出现冲突条目
  • 只配了去程路由,回程(对端到中心)没配,业务单向不通
  • 表里不登记 preference,事后无法判断谁主谁备
  • 分支扩容时不更新会话表,交接时全靠回忆
  • 没统一监控,断了一个分支几天后才发现

验证与巡检

display bfd session all
display ip routing-table | include '10.30.'
# 目标:每个分支会话 Up、每个业务网段有主备两条路由
  • 巡检:会话表与实际配置一致、每分支主备路由齐全、断链告警可达

小结

BFD 主备验收:人为断开主链路,业务在秒级内切到备用路径且无感知;主链路恢复后按预期回切;切换过程有记录可查。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。