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 内会形成两条并行但不一致的转发路径。