Weight 是什么
Weight 是 Cisco 实现中的本地权重属性,排在 BGP 决策顺序第 1 位,数值大者胜,取值范围 0~65535。它只在本机生效,不写入 BGP 更新、不传给任何邻居,因此适合在单台设备上临时干预出口选择,不适合作为跨设备协同的长期策略。
本地属性的代价
正因为 weight 不出本机,它既不会污染对端也不会被对端覆盖,代价是每台设备都要单独配置。多出口场景下如果只给一台设备设了 weight,其他设备仍按自己的规则选择出口,表现为同一目标从不同设备发起时走不同路径;这类现象容易被误判为运营商侧问题。
基本信息
| 属性性质 | 厂商本地属性(不出本机) |
|---|---|
| 取值范围 | 0 ~ 65535 |
| 默认值 | 接收路由为 0;本地起源(network/redistribute)为 32768 |
| 决策位置 | 第 1 位,先于 LOCAL_PREF 比较 |
| 适用平台 | Cisco IOS / IOS-XE(其他厂商无同名属性) |
| 查看方式 | show ip bgp <前缀> 输出中的 Weight 列 |
典型使用场景
- 单机排障:临时把某条路径抬高,验证流量是否按预期切换
- 双线接入但只想让本机走某条线路,不牵动整网策略
- 按前缀精细干预:重要业务走低延迟链路,其余走下成本链路
- 接入设备只连单机 BGP 时,快速改变某邻居的优先级
- 变更演练时验证路径被压制后业务是否走备份
配置与验证
配置与验证
router bgp 65001
neighbor 10.0.0.2 weight 200 # 对该邻居收到的全部路由统一设权重
!
show ip bgp 10.1.1.0/24 # 查看 Weight 列确认生效
show ip bgp neighbors 10.0.0.2 # 核对邻居级 weight 参数
show ip route 10.1.1.0/24 # 确认选路结果与预期一致按前缀设置
按前缀设置
ip prefix-list PFX-CRITICAL permit 10.10.10.0/24
route-map RM-WEIGHT permit 10
match ip address prefix-list PFX-CRITICAL # 只匹配关键业务前缀
set weight 300 # 命中后设为本值
route-map RM-WEIGHT permit 999 # 兜底条目,避免其余路由被隐式拒绝
!
router bgp 65001
neighbor 10.0.0.2 route-map RM-WEIGHT in权重取值参考
| 来源 | 默认权重 | 备注 |
|---|---|---|
| eBGP 邻居学到的路由 | 0 | 未做任何设置时的基线 |
| iBGP 邻居学到的路由 | 0 | 同样为 0,不代表优先级高 |
| 本机 network 宣告 | 32768 | 本地起源,天然压制外部同学 |
| 本机 redistribute 引入 | 32768 | 与 network 同源同值 |
两种配置方式的取舍
| 方式 | 粒度 | 适用时机 | 注意点 |
|---|---|---|---|
| neighbor weight | 整个邻居的所有路由 | 快速验证出口是否会被改变 | 影响面大,容易改变非目标流量的走向 |
| route-map set weight | 按前缀精确匹配 | 生产环境中控制个别业务 | 需保留兜底 permit,否则未命中前缀被丢弃 |
| 两者同时存在 | 以 route-map 为准 | 过渡期保留邻居级基线 | 两处数值并存时排查难度上升 |
本地起源路由默认 32768,意味着本机产生的同前缀路由在 weight 这一步永远压过从邻居学到的路由,这一默认行为常被误认为选路异常。
weight 适合排障期临时改选路;需要全 AS 一致的长期策略用 LOCAL_PREF,需要建议对端入口用 MED。
本机产生的同前缀路由默认 weight 32768:如果业务网段既在本机宣告又从邻居学到,本机宣告会一直胜出,需要先确认这种压制是否符合设计意图。
核对是否生效看 show ip bgp <前缀> 的 Weight 列:显示 0 表示设置没落到这条路由上,常见原因是 route-map 未挂到该邻居或 match 条件没命中。华为设备没有 weight 属性,对应的是 peer 的 preferred-value,作用域同样是本机。