
很多人第一次接触 BGP(边界网关协议)时,都会有个疑问: “当一条前往同一个目的地的多条 BGP 路由同时存在时,路由器到底怎么决定走哪一条?”
答案就是:BGP 有一套明确的 选路规则,按顺序逐条比较,直到选出“最优路由”。 理解这套规则,不仅是学习 BGP 的必修课,也是排查复杂网络问题时的关键思路。
一、为什么需要选路规则?和 OSPF、IS-IS 不同,BGP 的目标是互联网级别的路由控制。 一个前缀可能从多个邻居传来不同的路由信息,但BGP 必须有一套逻辑去比较,避免混乱。
二、BGP 选路的核心流程在大多数厂商实现里(Cisco/华为/Juniper),BGP 选路大致遵循以下顺序:
1. 优先比较 Weight(厂商私有属性)
Cisco 特有,越大越优先。 用于在本地路由器上强制控制选路。2. 本地优先级 Local Preference
展开剩余71% 所有厂商支持。 数值越大越优先。 常用于控制出站流量,比如让出口流量走某个 ISP。3. 是否来自本地路由(Locally originated)
自己通过 network 或 aggregate 发布的路由,优先级高于从邻居学来的。4. AS-Path 长度
越短越优先。 反映路径经过的自治系统数量。5. Origin 类型
IGP > EGP > Incomplete 即:路由来自 IGP 最优,未知来源最差。6. MED(多出口鉴别符)
数值越小越优先。 用于控制进入流量(通常 ISP 间协商)。7. eBGP 路由 vs iBGP 路由
eBGP 学到的路由优先于 iBGP。 逻辑是:离目标更近,可信度更高。8. IGP 度量值(到下一跳的开销)
谁的下一跳更近,就选谁。9. Router ID
最后兜底规则:比较通告路由的 Router-ID,数值小的优先。三、举个例子就清楚了假设你有两条去往 10.1.1.0/24 的路由:
从 ISP A 学到的 AS Path:65001 65002 从 ISP B 学到的 AS Path:65003如果本地没设置 Weight、Local Preference,BGP 就会比 AS Path 长度:
A 的路径长 = 2 B 的路径长 = 1 ,所以,最终选 ISP B 的路由。如果你手动给 ISP A 设置了更高的 Local Preference,那无论 Path 长短,都会优先走 A。
四、为什么这套规则很重要? 运维调优:控制出口流量走哪条线路(比如双 ISP 场景)。 排错思路:当“预期路由没被选中”时,可以按这套顺序逐条分析。 网络安全:了解选路逻辑,有助于防御 BGP 劫持攻击。五、总结BGP 的选路逻辑看似复杂,其实就是一套 优先级链条:
Weight → Local Preference → 本地路由 → AS Path → Origin → MED → eBGP 优先 → IGP 度量 → Router-ID记住这条顺序,你就能在绝大多数场景下迅速判断: 为什么路由器会选这条路,而不是那条。
发布于:广东省国元证劵提示:文章来自网络,不代表本站观点。