Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGP 概述

了解 BGP

BGP 是一种外部网关协议 (EGP),用于在不同自治系统中的路由器之间交换路由信息。BGP 路由信息包括到每个目标的完整路由。BGP 使用路由信息来维护网络可达性信息数据库,并与其他 BGP 系统交换这些信息。BGP 使用网络可访问性信息来构建 AS 连接图,以便 BGP 在 AS 级别移除路由环路并实施策略决策。

多协议BGP (MBGP) 扩展使BGP能够支持 IP 版本 6 (IPv6)。 MBGP 定义了用于传输 IPv6 可达性信息的属性 MP_REACH_NLRI 和 MP_UNREACH_NLRI。网络层可达性信息 (NLRI) 更新消息带有可行路由的 IPv6 地址前缀。

BGP 支持基于策略的路由。您可以使用路由策略在到目标的多个路径之间进行选择,并控制路由信息的重新分配。

BGP 使用 TCP 作为其传输协议,使用端口 179 建立连接。通过可靠的传输协议运行,无需 BGP 来实施更新分段、重新传输、确认和排序。

Junos OS 路由协议软件支持 BGP 版本 4。此版本的 BGP 增加了对无类域间无类域间路由 (CIDR) 的支持,从而消除了网络类的概念。CIDR 允许您显式指定网络地址中的位数,从而提供一种减小路由表大小的方法,而不是通过查看第一个八位位组来假设地址的哪些位代表网络。BGP 版本 4 还支持路由聚合,包括 AS 路径聚合。

本节讨论以下主题:

自治系统

自治系统 (AS) 是一组受单一技术管理管辖的路由器,通常使用单个内部网关协议和一组通用指标在路由器组内传播路由信息。对于其他 AS 而言,AS 似乎具有单一、连贯的内部路由计划,并一致地展示了可通过该计划到达的目标。

AS 路径和属性

BGP 系统交换的路由信息包括到达每个目标的完整路由,以及有关路由的其他信息。 AS 路径 是路由遍历的自治系统的序列, 路径属性中包含其他路由信息。BGP 使用 AS 路径和路径属性来完全确定网络拓扑。一旦 BGP 了解了拓扑结构,它就可以检测和消除路由环路,并在路由组中进行选择,以实施管理首选项和路由策略决策。

外部和内部 BGP

BGP 支持两种类型的路由信息交换:不同 AS 之间的交换和单个 AS 内的交换。在 AS 之间使用时,BGP 称为 外部 BGP (EBGP),BGP 会话执行 AS 间路由。在 AS 中使用时,BGP 称为 内部 BGP (IBGP),BGP 会话会执行 AS 内部路由图 1 显示了 AS、IBGP 和 EBGP。

图 1:AS、EBGP 和 IBGP Network topology diagram showing BGP with routers in AS1, AS2, and AS3 using IBGP and EBGP connections.

BGP 系统与相邻 BGP 系统(称为 邻接方对等方)共享网络可达性信息。

BGP 系统按 排列。在 IBGP 组中,组中的所有对等方(称为 内部对等方)都在同一 AS 中。内部对等方可以位于本地 AS 中的任意位置,且不必直接相互连接。内部组使用来自 IGP 的路由来解析转发地址。它们还会在运行 IBGP 的所有其他内部路由器之间传播外部路由,通过获取路由接收到的 BGP 下一跃点,并使用来自其中一个内部网关协议的信息对其进行解析,来计算下一跃点。

在 EBGP 组中,组中的对等方(称为 外部对等方)位于不同的 AS 中,通常共享一个子网。在外部组中,下一跃点是根据外部对等方和本地路由器之间共享的接口计算的。

多个 BGP 实例

您可以在以下层级配置多个 BGP 实例:

  • [edit routing-instances routing-instance-name protocols]

  • [edit logical-systems logical-system-name routing-instances routing-instance-name protocols]

多个 BGP 实例主要用于第 3 层 VPN 支持。

路由实例支持 IGP 对等方和外部 BGP (EBGP) 对等方(非多跳和多跳)。BGP 对等互连通过 在路由实例 层次结构下配置的接口之一建立。

注意:

当 BGP 邻接方向本地路由设备发送 BGP 消息时,接收这些消息的传入接口必须在 BGP 邻接方配置所在的同一路由实例中配置。对于距离单个跃点或多个跃点的邻居来说,情况确实如此。

默认情况下,从 BGP 对等体获知的路由将添加到 instance-name.inet.0 表中。您可以配置导入和导出策略来控制进出实例路由表的信息流。

如需支持第 3 层 VPN,请在提供商边缘 (PE) 路由器上配置 BGP,以便从客户边缘 (客户边缘) 路由器接收路由,并在必要时将实例的路由发送到客户边缘路由器。您可以使用多个 BGP 实例来维护单独的每个站点转发表,以便在 PE 路由器上保持 VPN 流量的分离。

您可以配置导入和导出策略,以允许服务提供商控制和限制进出客户的流量。

您可以为 VRF 路由实例配置 EBGP 多跳会话。此外,您还可以使用 客户边缘 路由器的环路地址(而非接口地址),在 PE 路由器和 客户边缘 路由器之间建立 EBGP 对等方。

允许安全性区域中接口的协议流量

在 SRX 系列防火墙上,您必须在指定接口或区域的所有接口上启用预期的主机入站流量。否则,默认情况下将丢弃发往此设备的入站流量。

例如,要在 SRX 系列防火墙的特定区域上允许 BGP 流量,请使用以下步骤:

(所有接口)( 指定接口)

BGP 路由概述

BGP 路由是一个目标,描述为 IP 地址前缀,以及描述到达目标的路径的信息。

以下信息描述了路径:

  • AS 路径,路由要通过以到达本地路由器的 AS 的编号列表。路径中的第一个数字是路径中最后一个 AS 的数字,即距离本地路由器最近的 AS。路径中的最后一个数字是离本地路由器最远的 AS,通常是路径的原点。

  • 路径属性,其中包含有关路由策略中使用的 AS 路径的更多信息。

BGP 对等方在更新消息中相互通告路由。

BGP 将其路由存储在 Junos OS 路由表 (inet.0) 中。路由表存储有关 BGP 路由的以下信息:

  • 从从对等方收到的更新消息中获知的路由信息

  • 由于本地策略的原因,BGP 应用于路由的本地路由信息

  • BGP 在更新消息中向 BGP 对等方播发的信息

对于路由表中的每个前缀,路由协议进程会选择一条最佳路径,称为活动路径。除非将 BGP 配置为将多个路径播发到同一目标,否则 BGP 仅播发活动路径。

首先播发路由的 BGP 路由器会为其分配以下值之一以标识其来源。在选择路由期间,首选最低源值。

  • 0 — 路由器最初通过 IGP(OSPF、IS-IS 或静态路由)获知路由。

  • 1 — 路由器最初通过 EGP(很可能是 BGP)获知路由。

  • 2 - 路由来源未知。

BGP 路由解析概述

如果内部 BGP (IBGP) 路由有一个到远程 BGP 邻接方(协议下一跃点)的下一跃点地址,则必须使用其他路由来解析其下一跃点。BGP 将此路由添加到 rpd 解析器模块中,以进行下一跳解析。如果在网络中使用了 RSVP,则使用 RSVP 入口路由解析 BGP 下一跃点。这会导致 BGP 路由指向间接下一跃点,而间接下一跃点指向转发下一跃点。转发下一跃点派生自 RSVP 路由下一跃点。通常存在大量具有相同协议下一跃点的内部 BGP 路由,在这种情况下,这组 BGP 路由将引用相同的间接下一跃点。

在 Junos OS 17.2R1 版之前,路由协议进程 (rpd) 的解析器模块通过以下方式解析 IBGP 接收路由中的路由:

  1. 部分路由解析 — 根据辅助路由(如 RSVP 或 IGP 路由)解析协议下一跃点。度量值派生自帮助程序路由,下一跃点称为继承自帮助程序路由的解析器转发下一跃点。这些度量值用于在路由信息库 (RIB)(也称为路由表)中选择路由。

  2. 完整路由解析 — 派生最终下一跃点,根据转发导出策略称为内核路由表 (KRT) 转发下一跃点。

从 Junos OS 17.2R1 版本开始,对 rpd 的解析器模块进行了优化,增加了入站处理流的吞吐量,加快了 RIB 和 FIB 的学习速率。通过此增强功能,路由解析将受到以下影响:

  • 虽然每个路由都可能继承相同的解析转发下一跃点或 KRT 转发下一跃点,但都会为每个 IBGP 路由触发部分路由解析方法和完整路由解析方法。

  • BGP路径选择将被推迟到对从 BGP 邻接方接收的网络层可达性信息 (NLRI) 执行完整的路由解析,因为在选择路由后,该信息可能不是 RIB 中的最佳路由。

rpd 旋转变压器优化的优点包括:

  • 降低 RIB 分辨率查找成本 - 已解析路径的输出保存在解析器缓存中,以便可以将相同的派生下一跳和指标值继承到共享相同路径行为的另一组路由,而不是同时执行部分和完整的路由解析流。这通过在深度有限的缓存中仅保留最常见的解析器状态来降低路由解析查找成本。

  • BGP 路由选择优化 — 每收到一个 IBGP 路由,就会触发两次 BGP 路由选择算法:第一次是在 RIB 中添加下一跃点不可用的路由,第二次是在 RIB 中添加下一跃点已解析的路由(在路由解析后)。这导致两次选择最佳路线。通过解析器优化,只有在从解析器模块获取下一跳信息后,才会在接收流中触发路由选择过程。

  • 内部缓存以避免频繁查找 - 解析器缓存保持最频繁的解析器状态,因此,查找功能(例如下一跃点查找和路由查找)是从本地缓存完成的。

  • 路径等效组 — 当不同路径共享相同的转发状态,或者从同一协议下一跃点接收到时,这些路径可以属于一个路径等效组。这种方法避免了对此类路径执行完整路由解析的需要。当新路径需要完全路由解析时,首先会在路径等效组数据库中进行查找,其中包含已解析的路径输出,如间接下一跃点和转发下一跃点。

BGP 消息概述

所有 BGP 消息都有相同的固定大小标头,其中包含一个用于同步和身份验证的标记字段、一个指示数据包长度的长度字段以及一个指示消息类型的类型字段(例如,打开、更新、通知、开封等)。

本节讨论以下主题:

打开信息

在两个 BGP 系统之间建立 TCP 连接后,它们交换 BGP 开放消息以在它们之间创建 BGP 连接。建立连接后,两个系统可以交换 BGP 消息和数据流量。

打开的消息由 BGP 标头和以下字段组成:

  • 版本 — 当前 BGP 版本号为 4。

  • 本地 AS 编号 — 可以通过在层次结构级别包含 autonomous-system [edit routing-options] [edit logical-systems logical-system-name routing-options] 语句来配置此设置。

  • 等待时间 - 建议的等待时间值。您可以使用 BGP hold-time 语句配置本地保持时间。

  • BGP 标识符 — BGP 系统的 IP 地址。此地址在系统启动时确定,对于每个本地接口和每个 BGP 对等体来说都是相同的。您可以通过在层次结构级别包含 router-id [edit routing-options] [edit logical-systems logical-system-name routing-options] 语句来配置 BGP 标识符。默认情况下,BGP 使用它在路由器中找到的第一个接口的 IP 地址。

  • 参数字段长度和参数本身 - 这些是可选字段。

更新消息

BGP 系统发送更新消息以交换网络可达性信息。BGP 系统使用此信息来构建图表以说明所有已知 AS 之间的关系。

更新消息由 BGP 标头和以下可选字段组成:

  • 不可行的路由长度 - 撤回的路径字段的长度

  • 撤销的路由 — 因不再被视为可访问而退出服务的路由的 IP 地址前缀

  • 总路径属性长度 - 路径属性字段的长度;它列出了到达目标的可行路由的路径属性

  • 路径属性 - 路由的属性,包括路径原点、多出口点识别器 (MED)、始发系统对路由的首选项,以及有关聚合、社区、联合和路由反射的信息

  • 网络层可达性信息 (NLRI) — 更新消息中播发的可行路由的 IP 地址前缀

激活消息

BGP 系统交换激活消息,以确定链路或主机是否出现故障或不再可用。保持活动消息的交换频率足够高,因此保持计时器不会过期。这些消息仅由 BGP 标头组成。

通知消息

当检测到错误情况时,BGP 系统会发送通知消息。发送消息后,BGP 会话和 BGP 系统之间的 TCP 连接将关闭。通知消息由 BGP 标头加上错误代码和子代码以及描述错误的数据组成。

路由刷新消息

只有当 BGP 系统从对等方收到路由刷新功能播发时,才会向对等方发送路由刷新消息。如果 BGP 系统想要接收路由刷新消息,则必须使用 BGP 功能播发向对等方播发路由刷新功能。发送此可选消息以请求从 BGP 对等方的动态入站 BGP 路由更新,或向 BGP 对等体发送出站路由更新。

路由刷新消息由以下字段组成:

  • AFI — 地址族标识符(16 位)。

  • Res — 保留(8 位)字段,发送方必须将其设置为 0,接收方将其忽略。

  • SAFI — 后续地址族标识符(8 位)。

如果没有路由刷新功能的对等方收到来自远程对等方的路由刷新请求消息,则接收方将忽略该消息。

了解 BGP RIB 分片和 BGP 更新 IO 线程

BGP路由处理通常具有多个管道阶段,例如接收更新、解析更新、创建路由、解析下一跃点、应用BGP 对等体组的导出策略、形成每个对等方更新以及向对等方发送更新。

BGP RIB 分片将统一的 BGP RIB 拆分为多个子 RIB,每个子 RIB 处理一个 BGP 路由子集。称为 BGP 分片线程的单独 RPD 线程为每个子 RIB 提供服务,以实现并发性。BGP 分片线程负责所有 BGP 路由处理管道阶段,但形成每个对等方更新和向对等方发送更新除外。BGP 分片线程接收对等方从 BGP 更新 IO 线程发送的更新,其中 BGP 更新 IO 线程对更新中的前缀进行哈希处理,并根据哈希计算将更新发送到适用的 BGP 分片线程。BGP 分片线程以与 RPD 主线程相同的方式处理配置,创建对等方、组、路由表,并使用配置信息进行 BGP 路由处理。

BGP 更新 IO 线程负责此 BGP 管道的尾端,涉及为各个 BGP 组生成每个对等方更新并将其发送到对等方。一个更新线程可能服务于一个或多个 BGP 组。BGP 更新 IO 线程并行构造组的更新,并且独立于其他更新线程正在服务的其他组。这可能会在写入密集型工作负载中提供显着的融合改进,该涉及向分布在多个组中的许多同行做广告。BGP 更新 IO 线程还负责写入和读取以前由 BGPIO 线程提供的 BGP 对等方的 TCP 套接字(因此 BGP 更新 IO 中的后缀 IO)。

BGP 更新 IO 线程可以独立于 RIB 分片功能进行配置,但必须与 RIB 分片一起使用,以便在出站 BGP 更新消息中实现更好的前缀打包效率。BGP 分片将 RIB 拆分为多个子 RIB,这些子 RIB 由单独的 RPD 线程提供服务。因此,本可以进入单个出站更新的前缀最终位于不同的分片中。为了能够使用具有可能属于不同 RPD 分片线程的相同传出属性的前缀构造 BGP 更新,所有分片线程都会发送要播发到服务该 BGP 对等体组的更新线程的前缀的紧凑播发信息。这允许为此 BGP 对等体组提供服务的更新线程打包具有相同属性的前缀,这些前缀可能属于同一出站更新消息中的不同分片。这最大限度地减少了要通告的更新数量,从而有助于提高融合度。更新 IO 线程管理对等、组、前缀、TSI 和 RIB 容器的本地缓存。

默认情况下,BGP 更新线程和 BGP RIB 分片处于禁用状态。如果在路由引擎上配置更新线程和 RIB 分片,RPD 将创建更新线程。默认情况下,创建的更新线程数和分片线程数与路由引擎上的 CPU 内核数相同。仅 64 位路由协议进程 (rpd) 支持更新线程。或者,您可以通过在层次结构级别使用 [edit system processes routing bgp] and set rib-sharding <number-of-threads> 语句来set update-threading <number-of-threads>指定要创建的线程数。对于 BGP 更新线程,范围当前为 1 到 128,对于 BGP RIB 分片,范围当前为 1 到 31。

为 BGP RIB 分片和 BGP 更新 IO 功能配置 NSR 时,备份 RPD 会在备份路由引擎中创建相同数量的 BGP 分片和 BGP 更新 IO 线程。备份 RPD BGP 更新 IO 线程读取复制的 BGP 更新、从对等方收到的其他消息以及复制的 BGP 更新以及发送到对等方的其他消息。根据前缀的散列,备份 RPD BGP 更新 IO 线程将这些 BGP 消息发送到适用的 BGP 分片和 RPD 主线程。备份 RPD 中的 BGP 分片和 RPD 主线程使用这些复制的 BGP 消息创建接收和播发的路由状态。当主路由引擎发生故障时,备用路由引擎将成为主路由引擎,而备用 RPD 将无缝变为主 RPD,而不会影响与对等方的 BGP 会话。

了解 BGP 路径选择

对于路由表中的每个前缀,路由协议进程会选择一条最佳路径。选择最佳路径后,路由将安装在路由表中。如果具有较低(更优选)全局优先级值(也称为管理距离)的协议未学习同一前缀,则最佳路径将成为活动路由。用于确定活动路由的算法如下:

  1. 验证下一跃点是否可解析。

  2. 选择具有最低优先级值(路由协议进程优先级)的路径。

    不符合转发条件的路由(例如,由于被路由策略拒绝或下一跃点无法访问)的优先级为 –1,并且永远不会被选中。

  3. 首选本地优先级较高的路径。

    对于非 BGP 路径,请选择 优先级 2 值最低的路径。

  4. 如果启用了累积内部网关协议 (AIGP) 属性,请添加 IGP 指标,并首选 AIGP 属性较低的路径。

  5. 首选具有最短自治系统 (AS) 路径值的路径(如果配置了 as-path-ignore 语句,则跳过)。

    联合体分段(序列或集)的路径长度为 0。AS 集的路径长度为 1。

  6. 首选源代码较低的路由。

    从 IGP 获知的路由的源代码低于从外部网关协议 (EGP) 获知的路由,并且源代码都低于不完整路由(来源未知的路由)。

  7. 首选多出口点识别器 (MED) 指标最低的路径。

    根据是否配置了非确定性路由表路径选择行为,有两种可能的情况:

    • 如果未配置非确定性路由表路径选择行为(即,如果 BGP 配置中未包含该 path-selection cisco-nondeterministic 语句),则对于在 AS 路径前面具有相同相邻 AS 编号的路径,首选 MED 指标最低的路径。要始终比较 MED,无论所比较的路由的对等 AS 是否相同,请包含该 path-selection always-compare-med 语句。

    • 如果配置了非确定性路由表路径选择行为(即,该 path-selection cisco-nondeterministic 语句包含在 BGP 配置中),则首选 MED 指标最低的路径。

    确定相邻 AS 时,不考虑联合体。缺少的 MED 指标被视为 MED 存在但为零。

    注意:

    MED 比较适用于 AS 内的单路径选择(当路由不包含 AS 路径时),但这种用法并不常见。

    默认情况下,仅比较具有相同对等自治系统 (AS) 的路由的 MED。您可以配置路由表路径选择选项以获得不同的行为。

  8. 优先选择严格的内部路径,其中包括 IGP 路由和本地生成的路由(静态、直接、本地等)。

  9. 优先选择严格的外部 BGP (EBGP) 路径,而不是通过内部 BGP (IBGP) 会话获知的外部路径。

  10. 首选下一跃点通过指标最低的 IGP 路由解析的路径。通过 IGP 解析的 BGP 路由优先于无法访问或被拒绝的路由。

    注意:

    如果在上一步之后执行决胜局,则路径将被视为 BGP 等价路径(并将用于转发)。具有同一相邻 AS、由支持多路径的 BGP 邻接方获知的所有路径都会被考虑在内。

    BGP 多路径不适用于共享相同 MED 加 IGP 成本但 IGP 成本不同的路径。多路径路径选择基于 IGP 成本指标,即使两条路径具有相同的 MED 加 IGP 成本。

  11. 如果两条路径都是外部的,则首选最旧的路径,换句话说,首先学习的路径。这样做是为了尽量减少路由摆动。如果满足以下任一条件,则不使用此规则:

    • 配置了路径选择外部路由器 ID

    • 两个对等方具有相同的路由器 ID。

    • 任一对等方都是联合体对等方。

    • 两条路径都不是当前活动路径。

  12. 首选来自路由器 ID 最低的对等方的路径。对于具有发起方 ID 属性的任何路径,请在比较路由器 ID 期间用发起方 ID 替换路由器 ID。

  13. 首选群集列表长度最短的路径。长度为 0 表示无列表。

  14. 首选来自对等方 IP 地址最低的对等方的路径。

  15. 优先选择主路由而不是辅助路由。主路由是属于路由表的路由。辅助路由是通过导出策略添加到路由表的路由。

路由表路径选择

默认情况下,算法的最短 AS 路径步骤会评估 AS 路径的长度并确定活动路径。您可以配置一个选项,通过包含 as-path-ignore 选项,使 Junos OS 能够跳过此算法步骤。

注意:

从 Junos OS 14.1R8、14.2R7、15.1R4、15.1F6 和 16.1R1 版开始,路由实例支持 as-path-ignore 选项。

在 BGP 将路径移交给路由表做出决定之前,会选择路由进程路径。要配置路由表路径选择行为,请包含以下 path-selection 语句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

可以通过以下方式之一配置路由表路径选择:

  • 模拟Cisco IOS默认行为(cisco非确定性行为)。此模式按接收顺序评估路由,不会根据相邻 AS 对其进行分组。使用模式时 cisco-non-deterministic ,活动路径始终排在第一位。所有非活动但符合条件的路径都遵循活动路径,并按接收顺序进行维护,最近的路径在前。不合格的路径将保留在列表末尾。

    例如,假设您有 192.168.1.0 /24 路由的三个路径播发:

    • 路径 1 — 通过 EBGP 学习;AS 路径为 65010;MED of 200

    • 路径 2 — 通过 IBGP 学习;AS 路径为 65020;150 人的 MED;5 的 IGP 成本

    • 路径 3 - 通过 IBGP 学习;AS 路径为 65010;100 的 MED;10 的 IGP 成本

    这些广告会在一秒钟内按照列出的顺序快速连续接收。路径 3 是最近收到的,因此路由设备会将其与路径 2(下一个最近的播发)进行比较。路径 2 的 IBGP 对等方成本较好,因此路由设备会从争用中消除路径 3。比较路径 1 和路径 2 时,路由设备首选路径 1,因为它是从 EBGP 对等方接收的。这允许路由设备将路径 1 安装为路由的活动路径。

    注意:

    我们不建议在您的网络中使用此配置选项。其仅用于互操作性,使网络中的所有路由设备都能做出一致的路由选择。

  • 始终比较 MED,无论所比较的路由的对等 AS 是否相同 (always-compare-med)。

  • 覆盖以下规则:如果两个路径都是外部路径,则首选当前活动路径 (external-路由器-id)。继续路径选择过程中的下一步(步骤 15)。

  • 在比较路径选择的 MED 值之前,将下一跃点目标的 IGP 成本添加到 MED 值中 (med-plus-igp)。

    BGP 多路径不适用于共享相同 MED 加 IGP 成本但 IGP 成本不同的路径。多路径路径选择基于 IGP 成本指标,即使两条路径具有相同的 MED 加 IGP 成本。

BGP 表路径选择

BGP 的路径选择遵循以下参数:

  1. 首选最高的本地优先级值。

  2. 首选最短 AS 路径长度。

  3. 首选最低源值。

  4. 首选最低的 MED 值。

  5. 优先选择从 EBGP 对等方获知的路由,而不是 IBGP 对等方。

  6. 首选最佳退出 AS。

  7. 对于 EBGP 接收的路由,首选当前活动路由。

  8. 首选来自路由器 ID 最低的对等方的路由。

  9. 首选群集长度最短的路径。

  10. 首选来自对等方 IP 地址最低的对等方的路由。步骤 2、6 和 12 是 RPD 标准。

播发到目标的多个路径的影响

BGP 仅播发活动路径,除非您将 BGP 配置为将多个路径播发到目标。

假设路由设备的路由表中有四条到目标的路径,并且配置为通告最多三条路径(add-path send path-count 3)。三条路径是根据路径选择标准选择的。也就是说,按路径选择顺序选择三个最佳路径。最佳路径是活动路径。此路径将从考虑范围中移除,并选择新的最佳路径。重复此过程,直到达到指定数量的路径。

具有列表下一跃点的 BGP 多路径的增强型服务路由解析

Junos OS 增强了服务路由对使用列表下一跃点结构的 BGP 多路径帮助程序路由的解析。路由解析器现在可以为多路径路由中的所有贡献路径创建并维护内部依赖关系,这样无论贡献路由是活动还是非活动,都可以在间接下一跃点发生变化时进行准确、动态的重新解析。

此功能可以提高服务路由稳定性,并防止在使用具有间接下一跃点解析功能的 BGP ECMP 的网络中出现过时的转发路径。

优势

  • 对于通过 BGP 多路径解析的服务路由,保持准确转发。
  • 当任何影响路径(而不仅仅是引导路径)发生变化时,会触发重新解析。
  • 支持具有间接下一跃点的混合 iBGP 和 eBGP 多路径拓扑。
  • 防止因过时或过时的解析状态造成的流量丢失。

开始之前

确保为相关地址族启用 BGP 多路径 list-nexthop 命令语句。启用此功能不需要新配置。

该功能的工作原理

当服务路由通过具有列表下一跃点的 BGP 多路径路由进行解析时,RPD 将执行以下操作:

  1. 遍历 list-nexthop 中的所有下一跃点组件。

  2. 在多路径帮助程序路由和每个提供路径之间建立依赖关系。

  3. 使用 patricia 树结构将这些依赖项存储在内部数据库中。按需创建以下关系:

    • 仅当第一个服务路由通过多路径帮助程序路由解析时,才会实例化 Patricia 树节点。

    • 当最后一个从属服务路由不再通过该多路径路由解析时,相应的节点将自动从树中移除。

  4. 使用 KRT 钩子回调监控间接下一跃点更改。

  5. 每当起作用路由(活动或非活动)发生变化时,重新解析从属服务路由。

无论提供路由在多路径集中处于活动状态还是非活动状态,此行为均适用。

操作示例

场景:

服务路由 (9.9.9.9/32) 通过 BGP 多路径路由 (1.1.1.9/32) 进行解析,并提供以下相关路径:

  • iBGP path-1 (导线/有源):通过 7.7.7.71.2.3.410.50.10.1
  • iBGP path-2:通过 8.8.8.8

如果 iBGP path-2 发生更改(例如,由于下一跃点更新),Junos OS 将检测更改并重新解析从属服务路由。

CLI 命令参考

您可以使用以下命令查看列表-下一跃点解析器关系,并监控间接下一跃点上的多路径路由依赖关系。

  • show route resolution list-nh

    在内部列表下一跃点依赖项数据库中显示间接下一跃点 (INH) 句柄,以及依赖于它们的 BGP 多路径路由。此命令仅显示使用特定INH的多路径辅助路由。

    示例输出:

  • show route resolution list-nh protocol-next-hop <nexthop>

    显示使用特定间接下一跃点的所有多路径路由。

    示例:

  • show krt indirect-next-hop

    显示给定间接下一跃点索引的内核路由表信息,包括有多少个多路径路由依赖于该下一跃点。此命令显示与多路径路由相关的引用计数和转发依赖关系。

    示例输出:

    确认 dependent count: 2 两个多路径路由当前正在使用此间接下一跃点。

限制

  • 仅适用于列表下一跃点由 iBGP 或混合 iBGP/eBGP 路径组成的 BGP 多路径路由。
  • 只有 eBGP 参与者的 BGP 多路径路由不受影响。
  • 不支持单个列表下一跃点中的混合地址族。

BGP 支持的标准

Junos OS 主要支持以下 RFC 和互联网草案,这些草案定义了 IP 版本 4 (IPv4) BGP 的标准。

有关受支持的 IP 版本 6 (IPv6) BGP 标准的列表,请参阅 支持的 IPv6 标准

Junos OS BGP 支持协议交换身份验证(MD5 身份验证)。

  • RFC 1745, 用于 IP 的 BGP4/IDRP — OSPF 交互

  • RFC 1772, 边界网关协议在 Internet 中的应用

  • RFC 1997,BGP 社区属性

  • RFC  2283,BGP-4 的多协议扩展

  • RFC 2385, 通过 TCP MD5 签名选项保护 BGP 会话

  • RFC 2439,BGP 路由抖动抑制

  • RFC 2545, 将 BGP-4 多协议扩展用于 IPv6 域间路由

  • RFC 2796,BGP 路由反射 - 全网状 IBGP 的替代方法

  • RFC  2858,BGP-4 的多协议扩展

  • RFC  2918,BGP-4 的路由刷新功能

  • RFC 3065,BGP 的自治系统联合

  • RFC  3107,BGP-4 中的携带标签信息

  • RFC 3345, 边界网关协议 (BGP) 持久路由振荡条件

  • RFC 3392, 使用 BGP-4 的功能广告

  • RFC 4271, 边界网关协议 4 (BGP-4)

  • RFC  4273,BGP-4 托管对象的定义

  • RFC 4360,BGP 扩展社区属性

  • RFC 4364,BGP /MPLS IP 虚拟专用网络 (VPN)

  • RFC 4456,BGP 路由反射:全网状内部 BGP (IBGP) 的替代方法

  • RFC 4486,BGP 停止通知消息的子代码

  • RFC 4576, 使用链路状态通告 (LSA) 选项位防止 BGP/MPLS IP 虚拟专用网络 (VPN) 中的环路

  • RFC 4659,IPv6 VPN 的 BGP-MPLS IP 虚拟专用网络 (VPN) 扩展

  • RFC 4632, 无类域间路由 (CIDR):互联网地址分配和聚合计划

  • RFC 4684, 边界网关协议/多协议标签交换 (BGP/MPLS) 互联网协议 (IP) 虚拟专用网络 (VPN) 的路由分配限制

  • RFC 4724,BGP 的平滑重启机制

  • RFC 4760,BGP-4 的多协议扩展

  • RFC 4781, 使用 MPLS 的 BGP 的平滑重启机制

  • RFC 4798, 使用 IPv6 提供商边缘路由器 (6PE) 通过 IPv4 MPLS 连接 IPv6 孤岛

    不支持选项 4b(将带标签的 IPv6 路由从 AS eBGP 重新分配给相邻 AS)。

  • RFC 4893,BGP 对四字节 AS 编号空间的支持

  • RFC 5004, 避免 BGP 最佳路径从一个外部到另一个外部转换

  • RFC 5065,BGP 的自治系统联合

  • RFC 5082, 通用 TTL 安全性机制 (GTSM)

  • RFC  5291,BGP-4 的出站路由过滤功能(部分支持)

  • RFC 5292, 用于 BGP-4 的基于地址前缀的出站路由过滤器(部分支持)

    运行 Junos OS 的设备可以接收基于前缀的 ORF 消息。

  • RFC 5396,自治系统 (AS) 编号的文本表示形式

  • RFC 5492, 使用 BGP-4 的功能广告

  • RFC 5512,BGP 封装后续地址族标识符 (SAFI) 和 BGP 隧道封装属性

  • RFC 5549, 使用 IPv6 下一跳宣传 IPv4 网络层可达性信息

  • RFC 8955, 流规范规则的传播

  • RFC 8956,IPv6 流规范规则的传播

  • RFC 5668,4 字节 AS 特定 BGP 扩展社区

  • RFC 5701,IPv6 地址特定 BGP 扩展社区属性

  • RFC 5925,TCP 身份验证选项

  • RFC 6286, 完全符合 BGP-4- 的自治系统范围唯一 BGP 标识符

  • RFC 6368, 内部 BGP 作为 BGP/MPLS IP 虚拟专用网络 (VPN) 的提供商/客户边缘协议

  • RFC 6774, 各种 BGP 路径的分布

  • RFC 6793,BGP 对四字节自治系统 (AS) 编号空间的支持

  • RFC 6810, 资源公钥基础架构 (RPKI) 到路由器协议

  • RFC 6811,BGP 前缀源验证

  • RFC 6996, 专用自治系统 (AS) 预留

  • RFC 7300, 保留最后的自治系统 (AS) 编号

  • RFC 7311,BGP 的累积 IGP 度量属性

  • RFC 7404, 在 IPv6 网络内仅使用链路本地寻址

  • RFC 7432, 基于 BGP MPLS 的以太网 VPN (eVPN)

  • RFC 7606,修订 版 BGP UPDATE 消息的错误处理

  • RFC 7611,BGP ACCEPT_OWN社区属性

    我们通过启用瞻博网络路由器接受从具有社区值的 accept-own 路由反射器接收的路由来支持 RFC。

  • RFC 7752, 使用 BGP 的链路状态和流量工程 (流量工程) 信息的北向分发

  • RFC 7854,BGP 监控协议 (BMP)

  • RFC 7911,BGP 中多路径的通告

  • RFC 8097,BGP 前缀 源验证状态 扩展社区

  • RFC 8210, 资源公钥基础架构 (RPKI) 到路由器协议,版本 1

  • RFC 8212, 默认外部 BGP (EBGP) 无策略路由传播行为 - 完全合规

    例外情况:

    默认情况下,RFC 8212 中的行为不会实施,以避免中断现有客户配置。默认行为仍保留为接受和通告与 EBGP 对等方相关的所有路由。

  • RFC 8277, 使用 BGP 将 MPLS 标签绑定到地址前缀

  • RFC 8326, 平滑 BGP 会话关闭

  • RFC 8481, 基于资源公钥基础设施 (RPKI) 的 BGP 源验证的澄清

  • RFC 8538,BGP 平滑重启支持的通知消息

  • RFC 8571,BGP - IGP 流量工程性能指标扩展的链路状态 (BGP-LS) 播发

  • RFC 8584, 以太网 VPN 指定转发器框架 选择可扩展性

  • RFC 8642, 知名 BGP 社区的策略行为

  • RFC 8669, 分段路由前缀 BGP 的分段标识符扩展

  • RFC 8810, 功能代码注册过程修订

  • RFC 8814 使用边界网关协议的信令最大 SID 深度 (MSD) - 链路状态(部分支持)

  • RFC 8950, 使用 IPv6 下一跳宣传 IPv4 网络层可达性信息 (NLRI)

  • RFC 8955

  • RFC 8956

  • RFC 9003, 扩展 BGP 管理关闭通信

  • RFC 9012,BGP 隧道封装属性

  • RFC 9029, 边界网关协议 - 链路状态 (BGP-LS) 参数注册表的分配策略更新

  • RFC 9069,BGP 监控协议 (BMP) 中对本地 RIB 的支持

  • RFC 9085, 边界网关协议 - 分段路由的链路状态 (BGP-LS) 扩展

  • RFC 9117,修订 版 BGP 流规范传播验证程序。这样,流规范就能在与执行验证的 BGP 对等体相同的自治系统内生成。

  • RFC 9234, 在 UPDATE 和 OPEN 消息中使用角色进行路由泄漏预防和检测

  • RFC 9384, 用于双向转发检测 (BFD) 的 BGP 停止通知子代码

  • 互联网草案 draft-idr-rfc8203bis-00,BGP 行政关闭通信 (2018 年 10 月到期)

  • 互联网草案 draft-ietf-grow-bmp-adj-rib-out-01,在 BGP 监控协议 (BMP) 中支持 Adj-RIB-Out (2018 年 9 月 3 日到期)

  • 互联网草案 draft-ietf-idr-aigp-06,BGP 的累积 IGP 指标属性 (2011 年 12 月到期)

  • 互联网草案 draft-ietf-idr-as0-06,AS 0 处理编码 (2013 年 2 月到期)

  • 互联网草案 draft-ietf-idr-link-bandwidth-06.txt,BGP链路带宽扩展社区 (2013 年 7 月到期)

  • 互联网草案 draft-ietf-sidr-origin-validation-signaling-00,BGP 前缀源验证状态扩展社区(部分支持)( 2011 年 5 月到期)

    Junos OS 路由策略支持扩展社区(源验证状态)。不支持在路由选择过程中进行指定的更改。

  • 互联网草案draft-kato-bgp-ipv6-link-local-00.txt, 使用 IPv6 链路本地地址的 BGP4+ 对等互连

以下 RFC 和互联网草案不定义标准,而是提供有关 BGP 和相关技术的信息。IETF 将它们分类为“实验性”或“信息性”。

  • RFC 1965,BGP 自治系统联合

  • RFC 1966,BGP 路由反射 — 全网状 IBGP 的替代方法

  • RFC 2270, 对驻留到单个提供商的站点使用专用 AS

  • RFC 3345, 边界网关协议 (BGP) 持久路由振荡条件

  • RFC 3562,TCP MD5 签名选项的密钥管理注意事项

  • 互联网草案 draft-ietf-ngtrans-bgp-隧道-04.txt, 使用 BGP 跨 IPv4 云连接 IPv6 孤岛 (2002 年 7 月到期)

变更历史表

是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。

发布
描述
17.2R1
从 Junos OS 17.2R1 版本开始,对 rpd 的解析器模块进行了优化,增加了入站处理流的吞吐量,加快了 RIB 和 FIB 的学习速率。
14.1R8
从 Junos OS 14.1R8、14.2R7、15.1R4、15.1F6 和 16.1R1 版开始,路由实例支持 as-path-ignore 选项。