了解 BGP 路径选择
对于路由表中的每个前缀,路由协议进程会选择一个最佳路径。选择最佳路径后,路由安装到路由表中。如果全局优先级值较低(更优先)(也称为管理距离)的协议未学习同一前缀,则最佳路径将成为活动路由。用于确定活动路由的算法如下所示:
-
验证是否可以解决下一跃点。
-
选择优先级值最低的路径(路由协议进程优先级)。
不符合转发条件的路由(例如,因为路由策略拒绝或无法访问下一跃点)的路由首选为 –1,永远不会选择。
-
优先选择具有较高本地优先级的路径。
对于非 BGP 路径,选择优先级值最低的路径 2 。
-
如果启用了累积内部网关协议 (AIGP) 属性,请添加 IGP 指标,并优先选择具有较低 AIGP 属性的路径。
-
优先选择具有最短自治系统 (AS) 路径值的路径(如果配置了语句,则
as-path-ignore
跳过)。联合体分段(序列或集)的路径长度为 0。AS 集的路径长度为 1。
-
首选使用源代码较低的路由。
从 IGP 学习到的路由的源代码低于从外部网关协议 (EGP) 学习的路由,并且两者的源代码都低于不完整路由(来源未知的路由)。
-
首选具有最低多路出口鉴别器 (MED) 指标的路径。
根据是否配置了非确定性路由表路径选择行为,可能会有两种情况:
-
如果未配置非确定路由表路径选择行为(即,如果
path-selection cisco-nondeterministic
语句未包含在 BGP 配置中),则对于位于 AS 路径前面具有相同相邻 AS 编号的路径,请优先选择 MED 指标最低的路径。要始终比较 MED,无论所比较路由的对等 AS 是否相同,请添加语句path-selection always-compare-med
。 -
如果配置了不可确定的路由表路径选择行为(即,
path-selection cisco-nondeterministic
语句包含在 BGP 配置中),首选 MED 指标最低的路径。
在确定相邻的 AS 时,不考虑联合体。缺少的 MED 指标被视为 MED 存在,但为零。
注意:MED 比较适用于 AS 内的单个路径选择(当路由不包含 AS 路径时),尽管这种用法并不常见。
默认情况下,仅比较具有相同对等自治系统 (AS) 的路由的 MED。您可以配置路由表路径选择选项来获取不同的行为。
-
-
优先选择严格的内部路径,包括 IGP 路由和本地生成的路由(静态、直接、本地等)。
-
优先选择严格的外部 BGP (EBGP) 路径,而不是通过内部 BGP (IBGP) 会话学习的外部路径。
-
首选其下一跃点通过指标最低的 IGP 路由解析的路径。通过 IGP 解析的 BGP 路由优先于无法访问或被拒绝的路由。
注意:如果在上一步之后执行分断,则路径被视为 BGP 等价路径(用于转发)。具有相同相邻 AS、由支持多路径的 BGP 邻接方获知的所有路径都会被考虑在内。
BGP 多路径不适用于共享相同 MED-plus-IGP 成本但 IGP 成本不同的路径。多路径路径选择基于 IGP 成本指标,即使两个路径的成本 MED-plus-IGP 成本相同。
-
如果两条路径都是外部路径,则首选最早的路径,换言之,首选先获知的路径。这样做可以最大限度地减少路由翻动。如果符合以下任一条件,则不使用此规则:
-
配置了路径选择外部路由器 ID 。
-
两个对等方具有相同的路由器 ID。
-
任一对等方都是联合对等方。
-
两个路径都不是当前活动路径。
-
-
优先选择主路由而不是辅助路由。主路由是属于路由表的主路由。辅助路由是通过导出策略添加到路由表中的路由路由。
-
首选路由器 ID 最低的对等方的路径。对于具有发起方 ID 属性的任何路径,在路由器 ID 比较期间将发起方 ID 替换为路由器 ID。
-
优先选择群集列表长度最短的路径。无列表的长度为 0。
-
优先选择具有最低对等方 IP 地址的对等方的路径。
路由表路径选择
默认情况下,算法最短的 AS 路径步骤会评估 AS 路径的长度并确定活动路径。您可以配置一个选项,通过包含 as-path-忽略 选项,使 Junos OS 能够跳过算法的这一步。
从 Junos OS 14.1R8、14.2R7、15.1R4、15.1F6 和 16.1R1 版开始,路由实例支持 作为路径忽略 选项。
在 BGP 将路径交由路由表进行决策之前,将路由流程路径选择进行。要配置路由表路径选择行为,请 path-selection
添加以下语句:
path-selection { (always-compare-med | cisco-non-deterministic | external-router-id); as-path-ignore; l2vpn-use-bgp-rules; med-plus-igp { igp-multiplier number; med-multiplier number; } }
有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。
路由表路径选择可通过以下方式之一进行配置:
模拟 Cisco IOS 默认行为(cisco 非确定性)。此模式按接收顺序评估路由,不会根据相邻 AS 对其进行分组。在
cisco-non-deterministic
模式下,活动路径始终处于第一位。所有不活动但符合条件的路径都遵循活动路径,并按接收顺序进行维护,最近路径优先。不符合资格的路径仍位于列表的末尾。例如,假设您有三个 192.168.1.0/24 路由的路径公告:
路径 1 — 通过 EBGP 学习;AS 路径 65010;MED(共 200 台)
路径 2 — 通过 IBGP 学习;AS 路径为 65020;MED 为 150;IGP 成本 5
路径 3 — 通过 IBGP 学习;AS 路径 65010;MED 为 100;10 的 IGP 成本
这些广告在一秒内按所列顺序快速连续接收。路径 3 是最近收到的,因此路由设备将其与路径 2(下一个最近播发)进行比较。对于路径 2,IBGP 对等方的成本更好,因此路由设备消除了路径 3 与争用。比较路径 1 和 2 时,路由设备首选路径 1,因为它是从 EBGP 对等方接收的。这允许路由设备将路径 1 安装为路由的活动路径。
注意:我们不建议在网络中使用此配置选项。它专为互操作性而提供,允许网络中的所有路由设备进行一致的路由选择。
始终比较 MED,无论所比较路由的对等 AS 是否相同(始终比较 med)。
覆盖以下规则:如果两条路径都是外部路径,则当前活动路径为首选路径(外部路由器 ID)。继续选择路径过程中的下一步(步骤 12)。
在比较路径选择 (
med-plus-igp
) 的 MED 值之前,将 IGP 成本添加到下一跃点目标的 MED 值。BGP 多路径不适用于共享相同 MED-plus-IGP 成本,但 IGP 成本不同的路径。多路径路径选择基于 IGP 成本指标,即使两个路径的成本 MED-plus-IGP 成本相同。
BGP 表路径选择
BGP 的路径选择遵循以下参数:
-
优先选择最高的本地优先级值。
-
优先选择最短 AS 路径长度。
-
首选最低源值。
-
首选最低 MED 值。
-
优先从 EBGP 对等方学习的路由,而不是 IBGP 对等方。
-
最好退出 AS。
-
对于 EBGP 接收的路由,首选当前活动路由。
-
首选路由器 ID 最低的对等方路由。
-
首选群集长度最短的路径。
-
首选来自具有最低对等方 IP 地址的对等方路由。步骤 2、6 和 12 是 RPD 标准。
将多个路径广告到目标的影响
BGP 只播发活动路径,除非您将 BGP 配置为将多个路径播发至目标。
假设一个路由设备在其路由表中有四条到一个目标的路径,并且被配置为播发最多三个路径(add-path send path-count 3)。根据路径选择标准选择这三条路径。也就是说,按路径选择顺序选择三个最佳路径。最佳路径是活动路径。此路径已从考虑范围中移除,并会选择一条新的最佳路径。此过程会重复进行,直到达到指定数量的路径。