BGP 默认路由的 preference(优先级 / 本地优先级)、协议优先级,不能直接用 apply preference 在接收路由时改,你场景混淆了两个概念,同时区分「协议优先级」「BGP 本地优先级 Local_Preference」「路由策略生效位置」。
一、先分清 3 个关键概念(重点)
1. 你看到的 pre 255 是什么?
设备路由表中 pre = 协议优先级(路由优先级)
BGP 路由默认协议优先级:255(Comware V5/V7 通用)
apply preference X:只用来修改静态路由、OSPF、RIP 等协议优先级,对 BGP 路由无效
👉 这就是你策略不生效的根本原因。
2. Local_Preference(本地优先级)
BGP 私有属性,仅本 AS 内传递,用于控制本 AS 路由选路,和路由表 pre 不是一回事,命令:
plaintext
apply local-preference X
3. 需求分两种,对应不同解法
场景 A:修改 BGP 路由在全局路由表的 协议优先级 pre(改掉 255)
场景 B:修改 BGP 路由的 Local_Preference(BGP 选路属性)
二、场景 A:修改 BGP 路由协议优先级(pre,把 255 改掉)
方案 1:全局修改 BGP 协议优先级(推荐,全局所有 BGP 路由生效)
Comware V5/V7 通用,全局 BGP 视图下配置,无需 route-policy:
bash
运行
system-view
bgp 65001 # 你的BGP进程号
preference 60 # 把BGP协议优先级改为60(数值越小优先级越高)
quit
配置后,所有学到的 BGP 路由,路由表中 pre 都会变成你设置的值,不再是 255。
方案 2:仅对「对端发布的默认路由」单独改优先级
用 策略路由 + 路由重定向 或 路由引入 + 策略 不适用 BGP;
标准做法:BGP 引入路由时改优先级不支持,优先用全局 preference。
如果只想单独针对默认路由,用 静态路由 + 路由跟踪 替代(常用落地方案):
关闭 BGP 学默认路由,手动写静态默认路由并设置优先级
bash
运行
# 1. 先拒绝BGP邻居发来的默认路由
ip ip-prefix deny-default index 10 deny 0.0.0.0 0 less-equal 0
route-policy bgp-in deny node 10
if-match ip-prefix deny-default
route-policy bgp-in permit node 20
bgp 65001
peer x.x.x.x route-policy bgp-in import # 入方向拒绝默认路由
quit
# 2. 手动配置静态默认路由,指向BGP下一跳,自定义优先级
ip route-static 0.0.0.0 0 x.x.x.x preference 70
适用:只想要默认路由改优先级,其他 BGP 路由保留原有优先级。
三、场景 B:修改 BGP 默认路由的 Local_Preference(BGP 选路属性)
如果你实际需求是 BGP 选路、控制本 AS 流量走向(不是改路由表 pre),用 route-policy + apply local-preference,必须在 BGP 入方向调用策略。
完整配置(V5/V7 通用)
bash
运行
# 1. 匹配默认路由 0.0.0.0/0
ip ip-prefix prefix-default index 10 permit 0.0.0.0 0 less-equal 0
# 2. 路由策略:匹配默认路由,修改Local_Preference
route-policy lp-set permit node 10
if-match ip-prefix prefix-default
apply local-preference 120 # 设置本地优先级,默认100,越大越优
route-policy lp-set permit node 20 # 放行其他所有BGP路由
# 3. 在BGP邻居 入方向 调用策略(关键!)
bgp 65001
peer 邻居IP route-policy lp-set import
quit
校验命令
bash
运行
# 查看BGP路由属性,确认Local_Preference
display bgp routing-table 0.0.0.0
四、解答你「apply preference 不生效」的原因
apply preference 路由策略里的这条命令,对 BGP 路由完全无效,它作用域:静态、RIP、OSPF 等,不支持 BGP;
模拟器里配置后 pre 依旧 255,属于正常现象,不是配置错误;
不要在 route-policy 里尝试改 BGP 协议优先级。
五、快速落地总结
想改路由表 pre 255(协议优先级)
全局统一改:bgp 进程号 → preference X(最简单)
仅默认路由改:拒绝 BGP 默认路由 + 手动静态默认路由指定 pre
想改BGP 选路 Local_Preference
前缀列表匹配 0.0.0.0/0 → route-policy apply local-preference → 邻居入方向调用
放弃 route-policy + apply preference 改 BGP pre,该命令对 BGP 无效。
暂无评论
apply preference 命令可以用来修改路由协议的优先级,但根据官方文档,如果路由协议已经通过全局的 preference 命令配置过优先级,再用 apply preference 命令修改时,只有被路由策略精确匹配到的路由才会采用新值,而其他未匹配的路由仍会沿用全局设定的值。此外,如果策略应用的方向或匹配条件有误,也会导致修改失败。route-policy + ip-prefix + apply preference 的方式精准修改特定路由(如默认路由)的 Preference 值,请严格按照以下步骤进行核对和配置:[H3C] ip prefix-list Default-Route index 10 permit 0.0.0.0 0 less-equal 0apply preference 设置新的优先级(取值范围 1~255):[H3C] route-policy Set-Pref permit node 10
[H3C-route-policy] if-match ip address prefix-list Default-Route
[H3C-route-policy] apply preference 150 # 将优先级修改为 150
[H3C-route-policy] quit[H3C] bgp [AS号]
[H3C-bgp] peer [邻居IP地址] route-policy Set-Pref import[H3C] display bgp routing-table ipv4暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论