03-原理篇-BGP选路规则详解-13条规则的决策逻辑与实战应用
BGP选路规则13条规则的决策逻辑同一个目标网络BGP 可能从多个邻居学到多条路由。选路规则决定选哪条最优。理解这 13 条规则你就能控制流量走向。文章目录BGP选路规则13条规则的决策逻辑一、为什么选路规则很重要二、BGP 选路规则全景图三、前 8 条规则详解规则 1Weight越大越优规则 2Local Preference越大越优规则 3本地发起优先规则 4AS-Path 长度越短越优规则 5Origin 类型IGP EGP Incomplete规则 6MED越小越优规则 7eBGP iBGP规则 8IGP Metric to Next-Hop越小越优四、后 5 条规则详解规则 9Multipath 负载均衡规则 10eBGP confederation-external iBGP规则 11Lowest Router ID规则 12Minimum Cluster List Length规则 13Lowest Neighbor Address五、如何查看 BGP 路由与选路结果5.1 查看 BGP 学到的路由5.2 如何判断为什么选这条5.3 快速记忆六、选路规则实战案例案例 1双 ISP 主备切换案例 2双 VBR 接入阿里云案例 3AS-Path Prepend 效果验证七、常见选路问题排查问题 1为什么路由不是预期的问题 2为什么 MED 不生效问题 3为什么 iBGP 路由不优选八、小结参考资料系列文章一、为什么选路规则很重要在第二章你学会了 BGP 的 9 大属性。属性决定了路由传不传、怎么传。但还有一个关键问题选哪条实战场景你的 AS 65001 连了两个 ISP 电信 AS4134 → 学到 10.1.0.0/16AS-Path: 4134 联通 AS4837 → 学到 10.1.0.0/16AS-Path: 4837 两条路由都有效选哪条答案BGP 用 13 条规则逐条比较选出最优路由。类比理解BGP 选路就像快递中转站选路径。先看优先级标签Weight、Local Preference再看路径长短AS-Path 长度最后看运费高低MED、IGP Metric本章目标掌握 13 条选路规则的决策逻辑理解每条规则的作用域和比较方式能用选路规则控制流量走向能排查为什么路由不是预期的二、BGP 选路规则全景图BGP 选路规则有 13 条按优先级从高到低逐条比较。只要某条规则能分出胜负就不再比较后续规则。13 条选路规则速查表优先级规则比较方式作用域1Weight越大越优本地路由器2Local Preference越大越优AS 内部3本地发起本地发起优先本地4AS-Path 长度越短越优全局5Origin 类型IGP EGP Incomplete全局6MED越小越优相邻 AS7eBGP iBGPeBGP 优先全局8IGP Metric to Next-Hop越小越优全局9Multipath 负载均衡相等则负载全局10路径类型细分eBGP 联盟外部 iBGP全局11Lowest Router ID越小越优全局12Minimum Cluster List越短越优仅 RR全局13Lowest Neighbor Address越小越优全局选路决策流程图关键概念前 8 条规则最常用必须掌握后 5 条规则较少用到但需要知道规则 1-2可以人为干预配置 Weight/LP规则 3-13自动比较通常不能直接修改 如何记忆 13 条选路规则把 13 条规则分成 4 组来记比死记硬背高效得多第 1 组人为干预规则 1-2WeightCisco 私有和 Local Preference — 这两条你可以直接配置日常流量控制主要就靠它们第 2 组路由自身属性规则 3-6本地发起 AS-Path 短 Origin 好 MED 小这四条比较的是路由本身的特征你可以通过 network/Prepend/Origin 设置间接影响第 3 组路径类型和可达性规则 7-8eBGP iBGP外部路径更可信IGP Metric 最小到 Next-Hop 最短第 4 组兜底规则规则 9-13Multipath、Router ID、Cluster List、Neighbor Address几乎不会用到知道有这几条就够了三、前 8 条规则详解前 8 条规则是最常用的日常配置和排障都会遇到。规则 1Weight越大越优作用域仅本地路由器Cisco 私有比较方式Weight 值越大越优先默认值本地发起的路由32768Cisco 自动设置保证本地路由最高优先级从邻居学到的路由0配置示例Cisco! 给电信邻居的路由设高 Weight router bgp 65001 neighbor 1.1.1.1 weight 200 ! 电信路由 Weight200 neighbor 2.2.2.2 weight 100 ! 联通路由 Weight100实战场景单台路由器连两个 ISP想控制本机流量从哪个 ISP 出去。注意Weight 是 Cisco 私有属性华为/Juniper 没有Weight 不会传给任何邻居华为用 Local Preference 替代 Weight 的作用规则 2Local Preference越大越优作用域AS 内部iBGP 传播比较方式Local Preference 值越大越优先默认值100配置示例! Cisco route-map ISP1-POLICY permit 10 set local-preference 200 router bgp 65001 neighbor 1.1.1.1 route-map ISP1-POLICY in# 华为 route-policy ISP1-POLICY permit 10 apply local-preference 200 bgp 65001 peer 1.1.1.1 route-policy ISP1-POLICY import实战场景双 ISP 主备整个 AS 的流量优先走主用 ISP。与 Weight 的区别Weight仅本台路由器有效Cisco 私有Local Preference整个 AS 内有效RFC 标准排障技巧! 查看 BGP 表的 Local Preference show ip bgp 10.1.0.0/16 ! 输出示例 Network Next Hop Metric LocPrf Weight Path * 10.1.0.0/16 1.1.1.1 0 200 0 4134 i * 10.1.0.0/16 2.2.2.2 0 100 0 4837 i ! * 表示最优路由LocPrf200电信规则 3本地发起优先作用域本地比较方式本地发起的路由network或aggregate优先于从邻居学到的路由实战场景路由器 R1 同时有 - 本地发起的 10.1.0.0/16network 命令 - 从邻居学到的 10.1.0.0/16 → 优先选择本地发起的路由注意network命令发起的路由 Origin iimport-route引入的路由 Origin ?规则 4AS-Path 长度越短越优作用域全局比较方式AS-Path 越短越优先实战案例你的 AS 65001 收到两条路由 电信 AS4134AS-Path [4134]长度 1 联通 AS4837AS-Path [4837, 4837, 4837]长度 3Prepend → 选电信路由AS-Path 更短AS-Path Prepend 的作用人为拉长 AS-Path让对端选另一条路径。配置示例! 向联通发送路由时拉长 AS-Path route-map LONG_PATH permit 10 set as-path prepend 65001 65001 65001 router bgp 65001 neighbor 2.2.2.2 route-map LONG_PATH out排障技巧! 查看 AS-Path 长度 show ip bgp 10.1.0.0/16 ! 输出示例 Network Next Hop Metric LocPrf Weight Path * 10.1.0.0/16 1.1.1.1 0 100 0 4134 i * 10.1.0.0/16 2.2.2.2 0 100 0 4837 4837 4837 i ! * 表示最优路由AS-Path 更短规则 5Origin 类型IGP EGP Incomplete作用域全局比较方式IGPi EGPe Incomplete?实战场景路由器收到两条路由 路由 AOrigin inetwork 命令注入 路由 BOrigin ?import-route 引入 → 选路由 AOrigin i为什么 i e ?IGPi明确知道路由来源本地 networkEGPe通过 EGP 协议学到已基本淘汰Incomplete?来源不明从其他协议引入注意实际网络中Origin 很少成为决定性因素通常在前 4 条规则就能分出胜负规则 6MED越小越优作用域相邻 AS比较方式MED 值越小越优先默认值0关键限制默认只比较来自同一 AS的路由的 MED 值。实战场景同 AS 双 VBR你的 AS 65001 连了阿里云两个 VBR同 AS 16550 VBR-1MED 50 VBR-2MED 200 → 选 VBR-1MED 更小跨 AS 比较的风险你的 AS 65001 连了两个 ISP 电信 AS4134MED 50 联通 AS4837MED 200 对端 AS9000 收到两条路由 来自 AS4134MED50 来自 AS4837MED200 对端一看两条路由来自不同 AS → 不比较 MED → 跳到下一条规则最佳实践跨 AS 场景用 AS-Path Prepend不用 MED同 AS 场景可以用 MED规则 7eBGP iBGP作用域全局比较方式eBGP 学到的路由优先于 iBGP 学到的路由为什么 eBGP 优先eBGP 路由的 AS-Path 更可信经过多个 ASiBGP 路由可能是不完整的信息AS 内部传递实战场景路由器 R1 同时有 - 从 eBGP 邻居学到的 10.1.0.0/16AS-Path: 4134 - 从 iBGP 邻居学到的 10.1.0.0/16AS-Path: 4134 → 选 eBGP 路由注意这条规则在 AS-Path 长度相同的情况下才比较如果 AS-Path 长度不同先比较 AS-Path规则 8IGP Metric to Next-Hop越小越优作用域全局比较方式到达 Next-Hop 的 IGP 开销越小越优先实战场景路由器 R1 收到两条 eBGP 路由 路由 ANext-Hop 10.1.1.1IGP Metric 10OSPF Cost 路由 BNext-Hop 10.1.2.1IGP Metric 20OSPF Cost → 选路由 AIGP Metric 更小如何计算 IGP MetricOSPFCost 100 / 带宽MbpsIS-IS默认 Cost 10可以手工修改 IGP Cost排障技巧! 查看 IGP 开销 show ip route 10.1.1.1 ! 输出示例 Routing entry for 10.1.1.0/24 Known via ospf 1, distance 10, metric 10 * 10.0.0.1, from Serial0/0/0四、后 5 条规则详解后 5 条规则较少用到但在某些场景下会成为决定性因素。规则 9Multipath 负载均衡作用域全局比较方式如果前 8 条规则都相同且开启了 Multipath则负载均衡配置示例Ciscorouter bgp 65001 maximum-paths 2 ! 允许 2 条等价路径负载均衡实战场景路由器收到两条路由 路由 AAS-Path [4134]MED 100 路由 BAS-Path [4134]MED 100 → 如果开启 Multipath两条路由都用于转发负载均衡规则 10eBGP confederation-external iBGP作用域全局比较方式路径类型优先级eBGP 联盟外部confederation-external 联盟内部confederation-internal iBGP与规则 7 的关系规则 7 是简化版eBGP iBGP不含联盟规则 10 是完整版加入联盟Confederation路径类型的细分如果你的网络没有配联盟规则 10 和规则 7 等价注意联盟是 BGP 防环的一种方案后面章节会讲实际网络中较少使用大多数场景下规则 10 和规则 7 结果相同。规则 11Lowest Router ID作用域全局比较方式宣告路由的 BGP Router ID 越小越优先注意这是比较宣告该路由的路由器的 Router ID不是邻居的 Router IDRouter ID 是 BGP 路由器的唯一标识类似 IP 地址通常手工配置如router-id 1.1.1.1或自动选择最大的 Loopback IP实战场景RR 环境路由器 R1 从两个 RR Client 学到相同的路由 Client ARouter ID 1.1.1.1通告的路由 Client BRouter ID 2.2.2.2通告的路由 → 选 Client A 的路由Router ID 更小规则 12Minimum Cluster List Length作用域全局仅 RR 环境比较方式AS-Path 中的 Cluster List 越短越优先说明仅在 Route Reflector路由反射器环境中生效Cluster List 记录路由经过的 RR 路径如果你的网络没有 RR这条规则不生效规则 13Lowest Neighbor Address作用域全局比较方式邻居的 IP 地址越小越优先实战场景路由器 R1 从两个邻居学到完全相同的路由 邻居 AIP 10.1.1.1 邻居 BIP 10.1.1.2 → 选邻居 A 的路由IP 地址更小注意这是最终的兜底规则几乎不会用到。只有当所有其他规则都无法区分时才会生效。五、如何查看 BGP 路由与选路结果5.1 查看 BGP 学到的路由Cisco! 查看 BGP 路由表* 表示有效 表示最优 show ip bgp ! 输出示例 Status codes: s suppressed, d damped, h history, * valid, best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path Network Next Hop Metric LocPrf Weight Path * 10.1.0.0/16 1.1.1.1 0 200 0 4134 i * 10.1.0.0/16 2.2.2.2 0 100 0 4837 i ! * 有效且最优被安装到路由表 ! * 有效但非最优备用 ! 查看某条路由的详细信息 show ip bgp 10.1.0.0/16 ! 查看 BGP 路由表摘要统计有效/最优路由数 show ip bgp summary华为# 查看 BGP 路由表* 表示有效 表示最优 display bgp routing-table # 输出示例 BGP Local router ID is 10.0.0.1 Status codes: * - valid, - best, d - damped, h - history, i - internal, s - suppressed, S - Stale Total Number of Routes: 2 * 10.1.0.0/16 1.1.1.1 0 200 0 4134? * 10.1.0.0/16 2.2.2.2 0 100 0 4837? # 查看某条路由的详细选路信息 display bgp routing-table 10.1.0.0/16 # 查看 BGP 路由表摘要 display bgp routing-table summary # 查看最优路由只显示 标记的 display bgp routing-table best-routeFortinet# 查看 BGP 路由表 get router info bgp network # 查看 BGP 邻居收到的路由 get router info bgp neighbors neighbor-ip received-routes # 查看 BGP 邻居通告的路由 get router info bgp neighbors neighbor-ip advertised-routes5.2 如何判断为什么选这条方法 1对比属性值最常用show ip bgp/display bgp routing-table的输出本身就包含了选路所需的全部属性。逐条对比Network Next Hop Metric LocPrf Weight Path * 10.1.0.0/16 1.1.1.1 0 200 0 4134 i * 10.1.0.0/16 2.2.2.2 0 100 0 4837 i ↑ ↑ ↑ ↑ ↑ NextHop MED LP Weight AS-Path按 13 条规则从上到下比Weight都是 0 → 平手继续LocPrf200 100 →电信胜出不再往下比方法 2查看路由表确认! 查看最优路由是否被安装到路由表 show ip route 10.1.0.0/16 ! 输出示例 Routing entry for 10.1.0.0/16 Known via bgp 65001, distance 20, metric 0, type external * 1.1.1.1, from 1.1.1.1, 00:05:23 ago Routing Descriptor Blocks: * 1.1.1.1, from 1.1.1.1, 00:05:23 ago Route metric is 0, traffic share count is 1# 查看路由表 display ip routing-table 10.1.0.0/16方法 3debug 选路过程排障用生产慎用! Cisco开启 BGP 选路 debug debug ip bgp updates ! 会打印每条路由的选路决策过程 ! 关闭 debug undebug all# 华为开启 BGP 事件 debug terminal monitor terminal debugging debugging bgp event ! 查看 debug 信息 display debugging bgp event5.3 快速记忆看路由show ip bgp / display bgp routing-table 看最优找 标记 看原因对比 LocPrf → AS-Path → Origin → MED按优先级逐条比 确认安装show ip route / display ip routing-table一句话show ip bgp输出中*就是最优路由对比同一前缀多行的属性值按 13 条规则从上到下找第一个不同的那就是选路原因。六、选路规则实战案例案例 1双 ISP 主备切换拓扑企业 AS65001 ├── 专线1 ── 电信 AS4134 ── 主用LP200 └── 专线2 ── 联通 AS4837 ── 备用LP100选路决策过程路由器收到两条路由 电信AS-Path[4134]LP200 联通AS-Path[4837]LP100 规则 1Weight都是 0平局 规则 2Local Preference电信 200 联通 100→ 选电信 ✅配置示例! 出站控制设 LP route-map ISP1-POLICY permit 10 set local-preference 200 route-map ISP2-POLICY permit 10 set local-preference 100 router bgp 65001 neighbor 1.1.1.1 route-map ISP1-POLICY in ! 电信 neighbor 2.2.2.2 route-map ISP2-POLICY in ! 联通验证命令show ip bgp 10.1.0.0/16 ! 输出示例 Network Next Hop Metric LocPrf Weight Path * 10.1.0.0/16 1.1.1.1 0 200 0 4134 i * 10.1.0.0/16 2.2.2.2 0 100 0 4837 i ! * 表示最优路由电信LP200案例 2双 VBR 接入阿里云拓扑企业 AS65001 ├── 专线1 ── 阿里云 VBR-1AS16550── MED50主用 └── 专线2 ── 阿里云 VBR-2AS16550── MED200备用选路决策过程路由器收到两条路由 VBR-1AS-Path[16550]MED50 VBR-2AS-Path[16550]MED200 规则 1-5都相同AS-Path 长度、Origin 等 规则 6MEDVBR-1 50 VBR-2 200→ 选 VBR-1 ✅为什么 MED 生效两条路由来自同一个 AS16550MED 同 AS 默认比较100% 生效案例 3AS-Path Prepend 效果验证场景向联通发送路由时拉长 AS-Path配置route-map LONG_PATH permit 10 set as-path prepend 65001 65001 65001 router bgp 65001 neighbor 2.2.2.2 route-map LONG_PATH out ! 联通效果联通收到路由 AS-Path [65001, 65001, 65001, 65001]长度 4 电信收到路由 AS-Path [65001]长度 1 外部 AS 选路 规则 4AS-Path 长度电信 1 联通 4→ 选电信 ✅七、常见选路问题排查问题 1为什么路由不是预期的排查步骤Cisco! 1. 查看 BGP 表 show ip bgp 10.1.0.0/16 ! 2. 看关键字段 ! - Weight规则 1 ! - LocPrf规则 2Local Preference ! - Path规则 4AS-Path ! 3. 逐条比较 13 条规则华为# 1. 查看 BGP 路由表 display bgp routing-table 10.1.0.0 16 # 2. 看关键字段 # - PrefLocal Preference规则 2 # - AsPath规则 4 # - 路由前面的 * 和 标记 表示最优路由 # 3. 查看 BGP 路由详细信息 display bgp routing-table 10.1.0.0 16 verbose问题 2为什么 MED 不生效可能原因两条路由来自不同 AS → 默认不比较 MED对端没有开启跨 AS 比较解决方法用 AS-Path Prepend 替代 MED或开启bgp always-compare-medCisco问题 3为什么 iBGP 路由不优选可能原因iBGP 路由的 Next-Hop 不可达解决方法在边界路由器配置next-hop-local华为/next-hop-selfCisco或在 IGP 中通告外部 Next-Hop八、小结BGP 选路规则有 13 条按优先级逐条比较。速记口诀规则 1-2Weight/LP可以人为干预规则 3本地发起优先规则 4-5AS-Path/Origin路由自身属性规则 6MED同 AS 比较规则 7-8eBGP iBGPIGP Metric规则 9-13兜底规则很少用到与前两章的关联第一章BGP 邻居建立状态机第二章BGP 属性9 大属性的传递规则第三章BGP 选路13 条规则的决策逻辑下一篇BGP 防环机制——水平分割、RR、联盟的原理与实战。参考资料RFC 4271: A Border Gateway Protocol 4 (BGP-4) - BGP 协议核心标准选路规则定义Cisco BGP Best-Path Selection Algorithm - Cisco BGP 选路规则详解Huawei BGP Route Selection - 华为 BGP 选路规则说明系列文章上一篇02-原理篇-BGP属性全景-9大核心属性的传递规则与实战应用|BGP属性全景9大核心属性与选路规则当前文章BGP选路规则13条规则的决策逻辑下一篇04-原理篇-BGP防环机制详解-水平分割、RR、联盟的原理与实战|BGP防环机制水平分割、RR与联盟