首页/网络/BGP 与广域网速查/条件宣告:exist-map 与 non-exist-map
BGP 选路与策略62 条

条件宣告:exist-map 与 non-exist-map

条件宣告按监测前缀的存在性决定发布:non-exist-map 表示监测前缀消失才发布 advertise-map 的前缀,常用于备份链路按需通告。

BGP 与广域网速查网络更新于 2026-10-13

条件宣告是什么

条件宣告(Conditional Advertisement)让「发不发某段前缀」取决于另一个监测前缀是否存在:监测前缀还在,就不发;监测前缀消失,才把 advertise-map 里的前缀发出去。它把「主路径失效」这个事件直接变成发布条件,常用于单活备份出口与按需宣告,减少对端长期接收无效通告。

基本信息

语法(Cisco)neighbor <ip> advertise-map <AM> {exist-map|non-exist-map} <NAME>
exist-map监测前缀存在时发布 advertise-map 中的前缀
non-exist-map监测前缀消失时发布 advertise-map 中的前缀
两个 map 的分工advertise-map 定义发布什么,exist/non-exist-map 定义何时发布
适用平台Cisco IOS/IOS-XE;华为 VRP 等平台用路由策略配合条件实现,写法不同

典型使用场景

  • 主备双出口:主链路路由在时对备份邻居保持静默,主路由消失才向备份邻居宣告
  • 防止对端提前选到备份路径:备份出口只在必要时才出现在对端路由表里
  • 地址段搬迁过渡:新段可用时宣告新段,旧段撤下
  • 按需宣告减少无效通告:对端不需要长期持有备选前缀时可降低前缀规模
  • 演练与验证:手工撤销监测前缀,观察发布动作与回收动作是否都符合预期

配置示例与验证

配置示例与验证
# 监测前缀:主路径所在网段
ip prefix-list PL-MON permit 10.1.0.0/16
route-map RM-MON permit 10
 match ip address prefix-list PL-MON
# 待发布前缀:备份路径要宣告的网段
ip prefix-list PL-ADV permit 10.2.0.0/16
route-map RM-ADV permit 10
 match ip address prefix-list PL-ADV
router bgp 65001
 neighbor 10.0.0.6 remote-as 65003
 neighbor 10.0.0.6 advertise-map RM-ADV non-exist-map RM-MON
# 验证:比较撤销监测前缀前后的发布内容
show ip bgp neighbors 10.0.0.6 advertised-routes

验证记录表

状态预期现象核对方式
监测前缀存在备份前缀不出现在发布列表advertised-routes 中查不到 PL-ADV 网段
监测前缀消失备份前缀出现在发布列表再次查看 advertised-routes,条目与标签正确
监测前缀恢复备份前缀应被撤回对端路由表确认撤销,本端发布列表同步
评估延迟条件成立到发布生效有时间差记录两端的观测时间点,纳入收敛评估
上线前一定要做触发演练:手工撤销监测前缀,观察发布与撤回两个方向,并记录从条件变化到对端可见的延迟,否则真实故障时无法判断它在正常工作。

易错点

  • 把监测与发布范围混在一个 route-map 里:两个 map 分工不同,混用后行为难以预期
  • 忽略评估周期:条件成立到实际发布存在时间差,收敛评估必须把这段延迟算进去
  • 只验证触发不验证回收:主路径恢复后备份前缀未撤回,对端可能长期优选错误路径
  • 监测前缀选取不当:用一条会随对端抖动的前缀做条件,导致通告频繁翻动

数据来源与参考

  • Cisco: BGP Conditional Advertisement
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌