LOCAL_PREF 是什么
LOCAL_PREF(本地优先级)是必遵自愿属性,表示本 AS 内对某前缀的偏好程度,数值大者胜,默认 100。它随 iBGP 在同一 AS 内传播,但不会发送给 eBGP 邻居——因为它描述的是「本 AS 想从哪个出口出去」,对外部没有意义。
为什么不用 weight 代替
weight 只在本机生效,多出口设备一旦把出口选择交给另一台路由器,本机的 weight 就管不到它。LOCAL_PREF 通过 iBGP 传播,可以让同一 AS 内所有路由器对一个前缀得出相同偏好,这也是它成为出向选路主力的原因:只有一处设置,全网一致生效。
基本信息
| 决策位置 | 第 2 位(weight 之后) |
|---|---|
| 数值方向 | 大者胜 |
| 默认值 | 100 |
| 取值范围 | 0 ~ 4294967295(32 位) |
| 传播范围 | AS 内 iBGP 携带;不向 eBGP 邻居发送 |
| 典型写法 | route-map set local-preference / 华为 route-policy apply local-preference |
典型使用场景
- 双运营商出口,希望内网统一从主用线路出去:在主用入口入向抬高 LOCAL_PREF
- 与对端协商主备切换:把备份线路的 LOCAL_PREF 调到低于主用,主路失效才接管
- 区分业务等级:重要业务前缀设高值,普通上网流量保持默认
- 出口设备统一发布偏好:在 iBGP 出向设置,让全 AS 按同一基线计算
- 临时排障:先把某条路径压低观察流量是否如预期切换
- 遗留系统迁移:老设备只支持基于 LOCAL_PREF 的出口策略时按原设计继承
三种设置方式
| 方式 | 作用范围 | 典型场景 | 注意点 |
|---|---|---|---|
| bgp default local-preference | 本机接收路由的默认值 | 全网统一调整基线 | 会一并影响所有未另行设置的前缀 |
| route-map set local-preference(in) | 命中前缀 | 按业务精细控制出口 | 范围由 match 限定,别只写 set |
| route-map set local-preference(iBGP out) | 发往 iBGP 邻居的路由 | 由出口设备统一发布偏好 | 影响面覆盖整个 AS,需评估后实施 |
设置与验证
设置与验证
route-map LP-150 permit 10 # 定义命中后设置本地优先级的策略
set local-preference 150 # 数值大者优先,默认 100
!
router bgp 65001
neighbor 10.0.0.2 route-map LP-150 in # 入向生效:影响本机出口选择
!
show ip bgp 10.1.1.0/24 | include locPrf # 核对 LocPrf 列是否为 150
show ip bgp neighbors 10.0.0.2 # 核对策略是否已应用到该邻居华为 VRP 对照
华为 VRP 对照
route-policy LP-150 permit node 10
if-match ip-prefix PFX-BIZ # 先限定前缀范围,避免全表生效
apply local-preference 150
#
bgp 65001
peer 10.0.0.2 route-policy LP-150 import # import 相当于 IOS 的 in 方向与相邻属性的分工
| 属性 | 作用范围 | 方向 | 数值偏好 |
|---|---|---|---|
| Weight | 仅本机 | 本机决策 | 大者胜 |
| LOCAL_PREF | 本 AS(iBGP 传播) | 决定出 AS 方向 | 大者胜 |
| MED | 相邻对端 AS | 建议对端入 AS 方向 | 小者胜 |
入向设置只影响本机;要让全 AS 按同一偏好计算,应该在产生路由的出口设备上设置,再经 iBGP 传播给其他路由器。
新加入或重启的设备 LOCAL_PREF 会回到默认 100,若不与既有基线对齐,可能在全网计算中产生意外回退,变更前先确认各设备基线值。
核对是否生效看 show ip bgp <前缀> 的 LocPrf 列:若显示 100 而你设了 150,多半是 route-map 没挂到该邻居,或前缀没被 match 命中。
LOCAL_PREF 与 weight 都表示偏好且都是大者胜,但优先级不同:weight 排第 1 位。若发现改 LOCAL_PREF 无效,先检查是否被更靠前的步骤压制。
与对端协商主备时注意方向差异:你只能控制自己的出口意愿,对端从哪条链路进来由它的 LOCAL_PREF 与你的 MED 共同决定,双方策略要一起核对。
生产变更建议安排在业务低谷并保留回退脚本:先把新策略挂在测试前缀上验证,再扩大到目标集合,出现异常时立即去掉邻居上的 route-map 引用即可恢复默认行为。