首页/网络/BGP 与广域网速查/Weight 的多设备一致性问题
BGP 选路与策略62 条

Weight 的多设备一致性问题

weight 只存在本机,不随 iBGP 传播;多出口网络中逐台配置容易漏配,导致不同设备对同一前缀的选择不一致,表现为时通时不通。

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

Weight 为什么容易造成不一致

weight 是 Cisco 实现里的本地优先级属性,优先级排在选路顺序最前面,且只对本机生效:既不会写进 Update 报文,也不会随 iBGP 传播。多出口网络中如果逐台设备手工设置 weight,只要有一台漏配或配成不同数值,同一目的前缀在不同设备上就会选出不同出口,表现为部分主机通、部分不通的时通时断。

基本信息

属性性质Cisco 私有,本地有效,默认值 0
传播范围不随任何 BGP 报文传出,其他设备看不到
选路位置排在 LOCAL_PREF 之前,是权重最高的比较项
华为对应peer x preferred-value,语义相近,同样只在本机生效
配置位置邻居下直接设置,或在 route-map 中 set weight

典型使用场景

  • 临时排障:只想让本机某一时刻走某条出口,不影响其他设备时使用
  • 单机实验环境验证路径选择逻辑,观察 weight 在比较顺序中的位置
  • 迁移期间临时压制某条不稳定链路,等对端修复后再撤销
  • 验证 route-map 匹配是否正确:先用 weight 做可见标记,确认命中后再改成正式属性
  • 多出口正式设计:改用 LOCAL_PREF 表达偏好,让它随 iBGP 传遍全 AS

单机干预与全 AS 一致的做法

单机干预与全 AS 一致的做法
# 只在单机生效,仅适合临时排障
router bgp 65001
 neighbor 10.0.0.2 weight 200
!
# AS 内一致偏好:用 LOCAL_PREF,经 iBGP 传播到所有设备
route-map LP-200 permit 10
 set local-preference 200
!
router bgp 65001
 neighbor 10.0.0.2 route-map LP-200 in
!
show ip bgp 10.100.0.0/16
# 输出中 Weight 列显示本机权重,LocPrf 列显示本地优先级

三种属性的适用边界

属性传播范围适用设计
weight仅本机,不传出临时干预、单机实验
LOCAL_PREF本 AS 内 iBGP 传播本端出口偏好,全 AS 一致
MED可传给 eBGP 对端,出 AS 不传递影响对端入口选择,用于与邻居协商

不一致的排查方法

不一致的排查方法
# 在各台设备上查同一前缀,比较 best 路径与 Weight 列
show ip bgp 10.100.0.0/16
#
# 从不同设备发起到同一目的地的探测,比较路径
traceroute 10.100.1.1 source Loopback0
#
# 汇总各设备配置中的本地权重,找漏配的那台
show running-config | include weight
反射器场景要特别小心:客户端设备上设置的 weight 只影响客户端自己,反射器上的 weight 又只影响反射器。若两者不同,同一前缀在 AS 内会形成两条并行但不一致的转发路径。

易错点

  • 把 weight 当成 AS 级策略使用:只在单台出口设备上设置,其他设备完全看不到,流量走向分裂
  • 出口设备改了 weight、反射器没改:经反射器学到的路径与直连设备得出结论不同,回程路径不一致
  • 把不一致误判为链路抖动:先用逐设备 show ip bgp 比对同一前缀的最优路径,再决定是否查物理层
  • 迁移收尾时忘记清理临时 weight:遗留的低优先级设置会在后续变更中悄悄影响选路
  • 在华为设备上寻找同名命令:对应能力是 preferred-value,语义相近但配置位置与命令不同

数据来源与参考

  • Cisco: BGP 属性传播行为说明
  • RFC 4271: LOCAL_PREF 在 AS 内传播
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌