首页/网络/BGP 与广域网速查/澄清:BGP 不比较前缀长度
BGP 选路与策略62 条

澄清:BGP 不比较前缀长度

同一前缀的多条路径比较属性和 AS_PATH,不比较掩码长度;不同掩码长度(如 /16 与 /24)是不同的 NLRI,各自独立选路。

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

BGP 不比前缀长度

一个流传很广的误解是「BGP 选路时掩码长的明细路由优先」。事实是:BGP 决策只针对同一条 NLRI,比较的是属性(权重、LOCAL_PREF、AS_PATH 长度、Origin、MED 等)与后续的度量、router-id 等步骤,从不比较掩码长度。`10.0.0.0/16` 与 `10.0.0.0/24` 是两条完全独立的路由,各自选路,只有在转发表里才按最长匹配决定用哪条。

基本信息

比较对象同一条 NLRI 的多条路径,比较属性与选路步骤
不同掩码不同 NLRI,各自独立选路,互不参与比较
转发阶段FIB 按最长前缀匹配选路,这一步与 BGP 决策无关
AS_PATH 长度指路径中 AS 号的个数,与掩码长度毫无关系
核对命令show ip bgp <前缀>、show ip route <前缀>

典型使用场景

  • 解释「为什么 /24 没被选中」:它不是候选,而是另一条路由,需单独看它的路径
  • 策略设计:需要影响明细与汇总的相对关系时,靠发布策略而不是靠掩码长度
  • 排查转发异常:确认 BGP 决策结果与 FIB 最长匹配是两步不同的事
  • 新人培训:把这条误解提前讲清,减少后续误判
  • 评审收尾:核对文档里是否存在「掩码越长越优先」这类错误表述

对照查看

对照查看
# 两条独立的路由,各自有独立的最优路径
show ip bgp 10.0.0.0/16
show ip bgp 10.0.0.0/24
# 转发用哪条由最长匹配决定
show ip route 10.0.0.0/24
show ip route 10.0.0.0/16
# 确认某前缀是否为本地始发
show ip bgp 10.0.0.0/24 | include Origin

两种比较别混淆

比较发生在哪依据
BGP 路径选择BGP 决策过程属性与选路步骤,同一 NLRI 内部比较
最长前缀匹配转发表查表掩码长度,越具体越优先
AS_PATH 长度BGP 选路步骤之一路径中 AS 号数量,与掩码无关
路由规模前缀总量明细与汇总各自占用表项,聚合可减少数量
如果希望某段明细不被使用,正确做法是在发布与接收侧做前缀过滤或调整属性,而不是指望「汇总路由能压住明细」——两者在 BGP 里根本不在同一个比较里。

易错点

  • 认为明细路由天然在 BGP 中优先:它们是不同的 NLRI,不会互相比较
  • 把 AS_PATH 长度与掩码长度混为一谈:两回事,讨论选路时容易越说越乱
  • 靠汇总压制明细:汇总不能阻止明细被优选,真正的控制手段是过滤与属性
  • 只查一条前缀就下结论:核对不同掩码时要分别查询各自的路径

数据来源与参考

  • RFC 4271: NLRI 与路径属性
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌