Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGP 路由优先级

了解 BGP 路由优先级

虽然 BGP 是当今部署最广泛的路由协议之一,不仅包含网络层可达性信息 (NLRI),还包含许多类型的 VPN 可达性信息,但值得注意的是,该协议并未指定信息在 BGP 更新消息中的排序方式。此决定留给实施。

在大型系统中,BGP 可能需要大量时间在系统之间交换其路由信息。在 BGP 启动、路由刷新操作以及协助平稳重启期间尤其如此。为了处理需要处理的大量信息,BGP 路由处理是通过使用队列来完成的。出站路由放置在输出队列中进行处理。Junos OS 16.1 版中引入了 BGP 路由优先级,允许用户确定 BGP 更新消息的优先级。BGP 路由优先级排序是严格对输出队列运行的过程,有助于对发送到 BGP 对等路由器的信息进行排序。

在默认配置中,即当不存在 覆盖优先级的配置或策略时,路由协议进程 (rpd) 会将 BGP 路由排队到每个路由信息库 (RIB) 的输出队列中。output-queue-priority RIB 也称为路由表,它既对应于特定地址族(如 inet.0),也对应于路由实例表(如 vrf.inet.0)。处理输出队列时,BGP 更新代码会刷新当前 RIB 的输出队列,然后再转到具有非空输出队列的下一个 RIB。

注:
  • 即使理论上有可能这样做,也不会尝试自动确定路由的优先级。因此,确定各个路由的优先级完全留给用户。

  • 如果更改了对等组的 BGP 路由优先级,则会重置 BGP 对等会话。

BGP 路由优先级划分用例

表 1 显示了将从路由优先级中受益的路由类型,以及有关它们为何从中受益的一些说明。还包括这些类型路由的示例。在给定的大规模环境中确定这些路由的优先级可以帮助路由器更快地对重要的路由更改做出反应。

表 1: BGP 路由优先级划分用例

路由或更新类型

备注

示例

用于将 BGP 下一跃点解析为立即转发下一跃点的前缀

应尽快更改这些前缀。

  • 主机路由

  • 属于递归解析要求的前缀

用于隧道端点的路由

GRE 或 MPLS 等隧道端点通常用作 BGP 下一跃点。

BGP 标记的单播路由

对协议功能的操作至关重要的路由类型

对于某些 VPN 协议,某些路由类型用于触发协议内的时间敏感更改。必须尽快更改这些路线。

  • MVPN 源主动自动发现(类型 5)

  • 多宿主 VPLS 站点

服务提供商基础架构路由

这些路由对于服务提供商开展业务的能力至关重要。如果没有准确和最新的路由,服务提供商可能无法提供其某些服务产品。

  • 内部管理网络

  • 网络操作前缀

  • DNS 资源

网络拓扑更改

在简单路由刷新之前,应优先考虑这些操作。

  • 添加到网络的新路由器

  • 从网络中移除的路由器

BGP 路由优先级的属性

Junos OS 中的 BGP 路由优先级是使用一组 17 个优先(编号)输出队列实现的,这些队列由用户可配置的令牌机制提供服务。本节介绍按优先级排列的输出队列、令牌系统的操作以及将路由分配给队列。

优先输出队列

表 2 显示可用的输出队列及其在优先级系统中的功能。优先级系统在传统的低、中和高优先级等级上运行,1 是最低优先级,16 是最高优先级。

表 2: 优先输出队列

队列

功能

加快

这是优先级最高的输出队列。在刷新输出队列时,保证此类中的路由处理输出队列的某些部分。此队列没有编号,在配置中按其名称引用。

1(最低优先级)

这是优先级最低的输出队列。这是默认优先级队列,这意味着默认情况下,没有来自自动协议确定或用户策略的显式队列分配的路由将放置在此队列中。默认情况下,路由刷新消息将放在此队列中。

2 - 16(低 - 高优先级)

这些输出队列的优先级范围从最低优先级 (2) 到最高优先级 (16)。系统会根据用户策略或 BGP 对等配置为其分配路由。较高优先级输出队列中的路由可以抢占优先级较低的队列中的路由。

将路由分配给队列

可以通过设置和分配 BGP 导出策略来完成将路由分配到各个队列。这意味着路由优先级在每个 BGP 对等组以及 BGP 对等组内的特定邻居配置中可能会有所不同。您还可以使用策略语句的操作部分将路由分配给队列。通过策略语句的操作将路由分配给队列将覆盖 BGP 配置所做的分配。

工作令牌机制

令牌对应于创建 BGP 更新消息的工作。所有队列都分配了存储在存储桶中的令牌。给定存储桶中的令牌数量可由用户配置。通过这种方式,用户可以制定策略,允许他们的路由以他们喜欢的比例提供服务。优先级调度程序的配置在 BGP 的层次结构级别全局 完成。[edit protocols bgp] 默认情况下,所有优先级队列的存储桶中至少有 1 个令牌,以确保配置错误的优先级不会匮乏。

了解队列优先级和公平性

BGP 路由优先级使用的方案侧重于两个要素:公平性和优先级:

  • 公平性意味着,当任何给定队列中有工作要做时,可以保证其他队列在某个时候完成一些工作。允许每个队列完成多少工作取决于分配给每个优先级的令牌数。

  • 优先意味着当存在竞争性工作并且公平性得到保证时,要始终选择更重要的工作。

例如,假定三类优先级:低、中和高。这些可以分别分配给队列 1、2 和 3。或者,可以将它们分配给队列 3、6 和 9。为了公平起见,如果决定高优先级获得 50% 的可用工作,中优先级获得 35%,低优先级获得剩余的 15%,则可以将令牌分配为 50 分配给高、35 分配给中和 15 分配给低。或者,可以将令牌分配为 5 到高、4 到中和 2 到低。您可以为 17 个队列中的任何一个分配 1 到 100 之间的任何值。单个队列中的令牌数与所有队列中的令牌总数的比率给出了每个队列中将完成的工作百分比。

当工作出现在队列中,而令牌正在由工作计划程序在另一个队列中花费时,优先级是最重要的。 显示了此示例的起点。表 3

表 3: 队列和令牌

优先级队列(队列号)

分配给队列的令牌数

队列中剩余的令牌数

队列中的条目数

高 (9)

50

50

0

中 (6)

35

15

5000

低 (3)

15

15

10000

如果我们假设工作计划程序正在处理中等队列(队列编号 6)并且花费了 20 个代币,那么剩下 15 个代币用于中等队列中的剩余条目,剩下 15 个代币用于低优先级队列。如果在下次运行工作计划程序之前有 5 个条目到达加速队列,则将首先发送这 5 个条目,因为加速队列中还剩下 50 个令牌。

队列服务过程

队列服务过程按 BGP 对等组运行,每个组维护自己的令牌存储桶。

  • 每个优先级的令牌桶在配置的令牌数或默认值 1 时从完全开始。

  • 每次从队列中提取路由条目以启动 BGP 更新时,都会从该队列中减去一个令牌。

  • 虽然加速队列具有令牌,但所有其他队列条目都从加速队列中提取,具体取决于路由打包规则。

  • 条目取自具有最高优先级的队列。这意味着,如果在队列服务机制运行之间将条目添加到优先级较高的队列中,并且该较高优先级队列中有可用的令牌,则会首先发送优先级较高的队列中的新条目,从而抢占优先级较低的队列中的条目。如果新条目到达时优先级较高的队列没有可用的工作令牌,则在下次令牌刷新之前不会发送新条目。

  • 在处理完所有优先级队列(任何队列中没有剩余条目)或所有令牌都用尽后,将刷新令牌。

示例:配置 BGP 输出优先级调度程序和全局地址族优先级

此示例说明如何配置和测试系统范围的 BGP 路由优先级计划程序。

要求

此示例使用以下硬件和软件组件:

  • 运行 Junos OS 16.1 或更高版本的 MX 系列路由器 (R1)

在配置 BGP 路由优先级调度程序之前,请确保路由器上运行 BGP 协议。

概述

BGP 路由优先级调度程序用于控制路由优先级系统的 17 个输出队列内完成的工作量。系统使用一组 17 个优先级输出队列,每个路由实例分配了工作令牌。默认情况下,所有 17 个优先级输出队列(1-16 和加速)都分配了 1 个令牌。可以将 1 到 100 之间的任意数量的令牌分配给 17 个队列中的每一个。通过将令牌分配给队列,可以平衡在队列中的路由上执行的工作量。此外,可以通过将每个关键字分配给特定的编号输出队列来配置高、中和低优先级队列的默认设置。在此示例中,我们将使用 不同数量的工作令牌配置 17 个优先级队列中的每一个,我们还为 inet 单播路由配置全局输出优先级,并通过设置一些 BGP 组来覆盖全局优先级设置来演示继承。

配置

  • 分配给 17 个输出队列中的每一个。update-tokens

  • 指定将哪些编号队列用作默认 、 和 优先级队列。highmediumlow

  • 配置路由的 全局输出优先级。inet unicast

  • 配置名为 test1 的 BGP 组,该组将显示组覆盖功能。

  • 配置名为 test2 的 BGP 组,该组将显示全局继承。

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI 中。[edit]

配置单个输出优先级队列

分步过程

下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

  1. 将更新令牌分配给 17 个优先级输出队列中的每一个

配置默认队列以用于高、中和低优先级路由更新

分步过程

成果

要确认配置,请从操作模式发出 命令:show bgp output-scheduler

配置路由族的全局输出优先级

程序

分步过程
  1. 配置路由的全局:output-queue-priorityinet unicast

配置名为 test1 的 BGP 组

程序

分步过程
  1. 将组配置为覆盖全局输出优先级,并包括一个覆盖组的邻接方和一个不覆盖组 的邻接方。test1

配置名为 test2 的 BGP 组

分步过程
  1. 将 BGP 组 配置为接受全局默认值。test2

验证

验证 BGP 输出调度程序配置

目的

要验证 BGP 输出调度程序的配置,请从操作模式发出 命令。show bgp output-scheduler

操作

意义

输出显示输出调度程序配置成功地将适当数量的标记应用于每个输出队列,并且高、中和低优先级关键字已分配给正确的输出队列。

验证组配置、组覆盖和邻居覆盖

目的

要验证配置的组是否演示组覆盖、邻居覆盖和继承,请从操作模式发出 命令。show bgp group group-name

操作
意义

输出显示对等方 224.223.2.2 的输出队列优先级为 7,路由刷新优先级为 8,撤回优先级加快。邻居 224.223.1.1 的输出队列优先级为 4,路由刷新优先级为 6,撤回优先级是族 的默认设置,即 3。inet unicast

验证从全局优先级设置继承

目的

要验证未配置为覆盖全局 BGP 路由优先级设置的组,请在操作级别发出 命令。show bgp group group-name

操作
意义

输出显示组中路由的默认 路由 优先级与全局配置匹配。inet unicasttest2

示例:使用 BGP 路由优先级控制路由表收敛

以下示例配置 BGP 路由优先级,以允许 路由在路由之前 收敛。inet labeled-unicastinet unicast

要求

此示例使用以下硬件和软件组件:

  • 运行 Junos OS 16.1 或更高版本的 MX 系列路由器 (R1),这将是示例的重点。

  • 配置为与 R1 的内部 BGP 对等方的第二个路由器 (R2)。

  • 将用于填充 R1 的路由表的 BGP 路由反射器 (RR)。在此示例中,我们不会配置路由反射器。

概述

BGP 路由优先级功能旨在允许对路由器中的出站 BGP 更新消息进行优先级排序。使用 BGP 路由优先级,用户可以确保在不太重要的 BGP 路由更新(如路由刷新更新)之前发送更重要的 BGP 路由更新,例如 GRE 或 MPLS 隧道端点更改。

在此示例中,我们将配置 R1 以将 R2 的路由更新视为 高于 路由更新的优先级。inet labeled-unicastinet unicast 为此,我们将配置 R2 路由器以接受来自其对等路由器 R1 的路由和路由。inet unicastinet labeled-unicast 然后,我们将从路由反射器填充 R1 上的路由表,并使用 import 将该表的一部分导入到表中。inet.0labeled-unicastinet.3rib-group 当路由在 R1 上排队时,我们可以通过观察 RIB 中的路由是否在 RIB 中的其余路由之前刷新来验证操作。inet.3inet.0

配置 BGP 路由优先级

将 R2 配置为 R1 的 BGP 对等方。

在 R1 上:

  • 将路由器 R2 配置为路由器 R1 的对等方。

  • 创建名为反射器的 BGP 组,该组将用于从路由反射器获取互联网路由。

  • 创建名为 internal 的 BGP 组,该组将用于将标记的单播流量分配到优先级更高的输出队列。

  • 创建一个 RIB 组,从反射器接收的路由将导入到该组中。

  • 创建用于确定将 RIB 的 哪个部分导入到 RIB 组中的策略。inet.0

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI 中。[edit]

路由器 R2

路由器 R1

程序

分步过程

下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要配置 R2:

  1. 配置名为“内部”的 BGP 组。

分步过程

要配置 R1:

  1. 配置名为反射器的 BGP 组,用于接收来自 RR 的路由。

  2. 配置名为“内部”的 BGP 组

  3. 配置名为 into3 的 RIB 组

  4. 配置名为匹配长度的路由策略

  5. 配置名为 match-all 的路由策略

验证

验证邻居更新的优先级是否正确

目的

确认路由更新是否放置在正确的队列中,并且队列正在更新。

操作

要查看排队等待 BGP 邻居 192.0.2.2 的路由更新,请从操作模式发出 命令show bgp neighbor output-queue 192.0.2.2

意义

的 输出显示,标记的单播路由更新放置在优先级 2 输出队列中,并且在优先级 1 输出队列中的单播路由更新之前清空优先级 2 输出队列。show bgp neighbor output-queue 192.0.2.2