Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

基本 BGP 路由策略

了解路由策略

每个路由策略都由策略名称标识。这个名字可以包含字母、数字和连字符 (-),长可达 255 个字符。要将空格包含在名称中,请用双引号将整个名称括起来。每个路由策略名称都必须在配置中具有唯一性。

创建并命名策略后,必须在策略处于活动状态之前加以应用。您可使用import配置层次结构中protocols protocol-name级别的和export语句应用路由策略。

在该语句中 import ,您列出了要评估的路由策略的名称,以便在路由从路由协议导入路由表时进行评估。

在该语句中 export ,当路由从路由表导出到动态路由协议时,您列出了要评估的路由策略的名称。只有活动路由从路由表中导出。

要指定多个策略并创建策略链,请使用空间作为分隔器列出策略。如果指定了多个策略,则按指定的顺序评估策略。一旦执行接受或拒绝行动,策略链评估就会结束。

示例:在 BGP 层次结构的不同级别应用路由策略

此示例显示在简单网络拓扑中配置的 BGP,并解释了路由策略在 BGP 配置的不同级别应用时如何生效。

要求

配置此示例之前,无需设备初始化以外的特殊配置。

概述

对于 BGP,您可以应用如下策略:

  • BGP 全局 importexport 语句 — 在层次结构级别包括 [edit protocols bgp] 这些语句(对于路由实例,在层次结构级别中 [edit routing-instances routing-instance-name protocols bgp] 包括这些语句)。

  • importexport 语句 — 在层次结构级别包括 [edit protocols bgp group group-name] 这些语句(对于路由实例,在层次结构级别中 [edit routing-instances routing-instance-name protocols bgp group group-name] 包括这些语句)。

  • 对等方 importexport 语句 — 在层次结构级别包括 [edit protocols bgp group group-name neighbor address] 这些语句(对于路由实例,在层次结构级别中 [edit routing-instances routing-instance-name protocols bgp group group-name neighbor address] 包括这些语句)。

对等方级别 importexport 语句覆盖组 importexport 语句。组级别 importexport 语句覆盖全局 BGP importexport 语句。

在此示例中,一个命名 send-direct 的策略在全球级别应用,在组级别应用另一个命名 send-192.168.0.1 的策略,在邻接方级别应用第三个名为 send-192.168.20.1 的策略。

通常被误解并可能导致问题的一个关键点是,在此类配置中,仅应用最显眼的策略。邻接方级策略比组级策略更显式,而后者又比全局策略更显式。

邻接方 172.16.2.2 仅受 send-192.168.20.1 策略约束。邻接方 172.16.3.3 没有更具体的东西,只受发送-192.168.0.1 策略的约束。同时,组其他组中的邻接方 172.16.4.4 没有组或邻接方级策略,因此使用发送直接策略。

如果您需要让邻接方 172.16.2.2 执行所有三个策略的功能,则可以编写并应用包含其他三个策略功能的新邻接方级策略,或者将所有三个现有策略作为链条应用于邻接方 172.16.2.2。

拓扑

图 1 显示了示例网络。

图 1: 将路由策略应用到 BGP将路由策略应用到 BGP

CLI 快速配置 显示了 中所有设备 图 1的配置。

本节 #d186e203__d186e456 介绍设备 R1 上的步骤。

配置

CLI 快速配置

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

设备 R1

设备 R2

设备 R3

设备 R4

程序

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器

要配置 IS-IS 默认路由策略:

  1. 配置设备接口。

  2. 在接口上启用 OSPF 或其他内部网关协议 (IGP)。

  3. 配置静态路由。

  4. 启用路由策略。

  5. 配置 BGP 并应用导出策略。

  6. 配置路由器 ID 和自治系统 (AS) 编号。

  7. 如果完成设备配置,请提交配置。

结果

在配置模式下,发出 show interfacesshow protocolsshow policy-optionsshow routing-options 命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

验证

确认配置工作正常。

验证 BGP 路由学习

目的

检查路由表,确保 BGP 导出策略按预期工作。

行动
意义

在设备 R1 上,命令 show route protocol direct 显示两个直接路由:172.16.1.1/32 和 10.10.10.0/30。命令 show route protocol static 显示两个静态路由:192.168.0.1/32 和 192.168.20.1/32。

在设备 R2 上 show route protocol bgp ,命令显示设备 R2 通过 BGP 学习的唯一路由是 192.168.20.1/32 路由。

在设备 R3 上 show route protocol bgp ,命令显示设备 R3 通过 BGP 学习的唯一路由是 192.168.0.1/32 路由。

在设备 R4 上 show route protocol bgp ,命令显示设备 R4 通过 BGP 学到的唯一路由是 172.16.1.1/32 和 10.10.10.0/30 路由。

验证 BGP 路由接收

目的

检查从设备 R1 接收的 BGP 路由,确保 BGP 导出策略按预期工作。

行动
意义

在设备 R2 上 route receive-protocol bgp 172.16.1.1 ,命令显示设备 R2 仅从设备 R1 接收一个 BGP 路由 192.168.20.1/32。

在设备 R3 上 route receive-protocol bgp 172.16.1.1 ,命令显示设备 R3 仅从设备 R1 接收一个 BGP 路由 192.168.0.1/32。

在设备 R4 上 route receive-protocol bgp 172.16.1.1 ,命令显示设备 R4 从设备 R1 接收了两个 BGP 路由:172.16.1.1/32 和 10.10.10.0/30。

总之,当在 BGP 中的不同 CLI 层次结构中应用多个策略时,只会评估最特定的应用程序,排除其他不太具体的策略应用程序。虽然这一点似乎有意义,但是在路由器配置过程中很容易被遗忘,因为您错误地认为邻接方级策略与全局或组级策略结合在一起,结果却发现您的策略行为并不如预期的那样。

示例:将 OSPF 路由注入 BGP 路由表

此示例说明如何创建将 OSPF 路由注入 BGP 路由表的策略。

要求

开始之前:

概述

在此示例中,您将创建一个称为 的 injectpolicy1 路由策略和一个称为 的 injectterm1路由术语。该策略将 OSPF 路由注入 BGP 路由表。

拓扑

配置

配置路由策略

CLI 快速配置

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

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器

要将 OSPF 路由注入 BGP 路由表:

  1. 创建策略术语。

  2. 指定 OSPF 为匹配条件。

  3. 将 OSPF 区域中的路由指定为匹配条件。

  4. 指定如果先前的条件匹配,将接受路由。

  5. 将路由策略应用到 BGP。

结果

通过从配置模式输入 show policy-optionsshow protocols bgp 命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请在配置模式下输入 commit

为路由策略配置跟踪

CLI 快速配置

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

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器

  1. 在策略中包含追踪操作。

  2. 配置输出的跟踪文件。

结果

通过从配置模式输入 show policy-optionsshow routing-options 命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请在配置模式下输入 commit

验证

确认配置工作正常。

验证是否存在预期的 BGP 路由

目的

验证出口策略的影响。

行动

在操作模式下,输入 show route 命令。

故障排除

使用 show log 命令检查路由策略的操作

问题

路由表包含意外路由,或路由表中缺少路由。

解决方案

如果按照此示例中所示配置策略跟踪,则可以运行 show log ospf-bgp-policy-log 命令来诊断路由策略中的问题。命令 show log ospf-bgp-policy-log 显示有关策略术语分析和操作的路由 injectpolicy1 的信息。

配置路由策略以控制 BGP 路由通告

所有路由协议均使用 Junos OS 路由表存储所学路由,并确定应在其协议数据包中播发的路由。通过路由策略,您可以控制路由协议存储在哪些路由协议中,并从路由表检索。有关路由策略的信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南

配置 BGP 路由策略时,您可以执行以下任务:

应用路由策略

您可在 [edit policy-options] 层次结构级别定义路由策略。要应用已为 BGP 定义的策略,请在 BGP 配置中包含 importexport 语句。

您可以采用以下策略:

  • BGP 全局 importexport 语句 — 在层次结构级别包括 [edit protocols bgp] 这些语句(对于路由实例,在层次结构级别中 [edit routing-instances routing-instance-name protocols bgp] 包括这些语句)。

  • importexport 语句 — 在层次结构级别包括 [edit protocols bgp group group-name] 这些语句(对于路由实例,在层次结构级别中 [edit routing-instances routing-instance-name protocols bgp group group-name] 包括这些语句)。

  • 对等方 importexport 语句 — 在层次结构级别包括 [edit protocols bgp group group-name neighbor address] 这些语句(对于路由实例,在层次结构级别中 [edit routing-instances routing-instance-name protocols bgp group group-name neighbor address] 包括这些语句)。

对等方级别 importexport 语句覆盖组 importexport 语句。组级别 importexport 语句覆盖全局 BGP importexport 语句。

要应用策略,请参阅以下部分:

对从 BGP 导入路由表的路由应用策略

要对从 BGP 导入路由表的路由应用策略,请包括该 import 语句,列出要评估的一个或多个策略的名称:

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

如果指定多个策略,则按指定的顺序(从第一个到最后)评估它们,并将第一个匹配过滤器应用于路由。如果未找到匹配项,BGP 将仅包含从 BGP 路由设备获知的路由。

对从路由表导出到 BGP 的路由应用策略

要将策略应用于从路由表导出到 BGP 的路由,请包括语 export 句,列出要评估的一个或多个策略的名称:

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

如果指定多个策略,则按指定的顺序(从第一个到最后)评估它们,并将第一个匹配过滤器应用于路由。如果没有与过滤器匹配的路由,则路由表只会导出到 BGP 中从 BGP 学到的路由。

设置 BGP 以通告无效路由

默认情况下,BGP 会存储从 Junos OS 路由表中更新消息收到的路由信息,而路由表只会将活动路由导出到 BGP 中,然后 BGP 会向其对等方播发这些路由。要将路由表导出到 BGP,即使 Junos OS 未将其选择为活动路由,也要将其导出到 BGP 的最佳路由,请包括 advertise-inactive 以下语句:

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

配置 BGP 以向内部对等方播发最佳外部路由

一般来说,部署的 BGP 实施不会将具有最高本地优先级值的外部路由通告给内部对等方,除非它是最佳路由。尽管 BGP 版本 4 规范(RFC 1771) 的早期版本要求这种行为,但通常不会遵循此行为,以尽量减少播发的信息量并防止路由环路。但是,在某些情况下,通告最佳外部路由是有益的,特别是可能导致 IBGP 路由振荡的情况。

在 Junos OS 版本 9.3 和更高版本中,您可以配置 BGP 以将最佳外部路由通告到内部 BGP (IBGP) 网状组、路由反射器群集或自治系统 (AS) 联合体中,即使最佳路由是内部路由也是如此。

注:

要在路由反射器上配置 advertise-external 语句,必须使用 语句禁用拖拉反射 no-client-reflect

如果路由设备配置为集群的路由反射器,则如果从具有相同群集标识符的内部对等方接收路由,或者两个对等方均未配置集群标识符,则路由反射器通告的路由被视为内部路由。从属于另一个群集的内部对等方接收的路由(带有不同的群集标识符)被视为外部。

在联合体中,在向联合体边界路由器播发路由时,来自不同联合体子 AS 的任何路由都被视为外部路由。

您也可配置 BGP 以通告外部路由,只有当路由选择过程到达评估多个出口识别器 (MED) 指标的点时。因此,不会播发 AS 路径比活动路径更差(即更长)的外部路由。

Junos OS 还支持配置与播发路由状态匹配的 BGP 导出策略。您可以在活动或非活动路由上匹配。有关更多信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南

要将 BGP 配置为向内部对等方播发最佳外部路径,请包括以下 advertise-external 语句:

注:

advertise-external 句在组和邻接方级别均支持。如果在邻接方级别配置语句,则必须将其配置为组中的所有邻接方。否则,组将自动拆分为不同的组。

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

要将 BGP 配置为仅当路由选择过程达到评估 MED 值的点时才通告最佳外部路径,请包括 conditional 以下语句:

配置 BGP 使用路由表交换路由的频率

BGP 存储从路由表中更新消息收到的路由信息,路由表将从路由表导出活动路由并导出到 BGP 中。然后,BGP 会将导出的路由通告给对等方。默认情况下,BGP 与路由表之间的路由信息交换会在收到路由后立即进行。这种直接路由信息交换可能会导致网络可访问性信息出现漏洞。为了防范这种情况,您可以在 BGP 和路由表交换路由信息之间延迟时间。

要配置 BGP 和路由表交换路由信息的频率,请包括以下 out-delay 语句:

默认情况下,路由表会保留从 BGP 学到的部分路由信息。要让路由表保留所有或无这些信息,请包括以下 keep 语句:

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

路由表可通过以下方式之一保留从 BGP 学到的路由信息:

  • 默认(省略 keep 语句)—保留从 BGP 学习的所有路由信息,AS 路径是循环的且环路包含本地 AS 的路由除外。

  • keep all—保留从 BGP 学习的所有路由信息。

  • keep none— 丢弃从对等方接收且被导入策略或其他理智检查(如 AS 路径或下一跃点)拒绝的路由。为 BGP 会话和入站策略更改配置 keep none 时,Junos OS 将强制重新恢复由对等方播发的全部路由。

在 AS 路径修复情况下,理论上具有环路路径的路由在更改 AS 路径环路限制时的软重新配置中可用。但是,默认和 keep all

考虑以下情景:

  • 对等方会将路由重新调整回从其学到的对等方。

    这种情况可能在以下情况下发生:

    • 另一家供应商的路由设备将路由播发回发送对等方。

    • Junos OS 对等方未将路由重新读回发送对等方的默认行为被配置 advertise-peer-as覆盖。

  • 提供商边缘 (PE) 路由设备丢弃没有任何预期路由目标的任何 VPN 路由。

配置时 keep all ,丢弃上述情景中收到的路由的行为将被覆盖。

禁用抑制路由通告

Junos OS 不会将从一个 EBGP 对等方那里学到的路由播发回至同一外部 BGP (EBGP) 对等方。此外,无论路由实例如何,软件不会将这些路由播发回至与发起方对等方处于相同 AS 的任何 EBGP 对等方。您可以通过在配置中包括语 advertise-peer-as 句来修改此行为。要禁用默认广告抑制,请包括以下 advertise-peer-as 语句:

注:

如果配置中包含语句, as-override 则禁用路由抑制默认行为。

如果在配置中包含语 advertise-peer-as 句,BGP 将通告路由,而不管此检查如何。

要恢复默认行为,请在配置中包括 no-advertise-peer-as 语句:

如果在配置中同时 as-override 包含语句和 no-advertise-peer-as 语句, no-advertise-peer-as 则该语句将被忽略。您可以在多个层次结构级别中包含这些语句。

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

示例:配置路由策略以向内部对等方播发最佳外部路由

RFC 1771 中定义的 BGP 协议规范规定,BGP 对等方应向其内部对等方播发更高优先级的外部路径,即使此路径不是整体最佳路径(换句话说,即使最佳路径是内部路径)。实际上,部署的 BGP 实施不遵循此规则。偏离规格的原因如下:

  • 最大限度减少播发的信息量。BGP 会根据可用路径的数量进行扩展。

  • 避免路由和转发环路。

但是,在多种情况下,在其中,在 RFC 1771 中指定的通告最佳外部路由的行为可能是有益的。路径信息限制并不总是可取的,因为路径多样性有助于缩短恢复时间。通告最佳外部路径还可以解决内部 BGP (IBGP) 路由振荡问题,如 RFC 3345 边界网关协议 (BGP) 持久路由振荡条件中所述。

advertise-external 语句可修改 BGP 发送方的行为,以向 IBGP 对等方播发最佳外部路径,即使最佳整体路径是内部路径也是如此。

注:

advertise-external 句在组和邻接方级别均支持。如果在邻接方级别配置语句,则必须将其配置为组中的所有邻接方。否则,组将自动拆分为不同的组。

conditional 选项会限制设置的行为 advertise-external ,使外部路由仅在路由选择过程到达评估多个出口识别器 (MED) 指标的点时才通告。因此,如果外部路由具有比活动路径更差(更长)的 AS 路径,则不会通告外部路由。选项 conditional 将外部路径通告限制为最佳外部路径与活动路径相等时,直至路由选择流程的 MED 步骤为止。请注意,无论 conditional 是否配置了选项,用于选择最佳外部路径的标准都是相同的。

Junos OS 还支持配置与播发路由状态匹配的 BGP 导出策略。您可以匹配活动或非活动路由,如下所示:

此限定符仅在导出策略环境中使用时匹配。当可通告无效路由(如 BGP)的协议通告路由时,state inactive将匹配因和advertise-external语句而播发的advertise-inactive路由。

例如,以下配置可用作面向内部对等方的 BGP 导出策略,用于标记因用户定义公共组设置而 advertise-external 通告的路由。接收方路由器稍后可以使用该公共组从转发表中过滤掉此类路由。这种机制可用于解决发送方未用于转发的广告路径可能导致转发环路的问题。

要求

需要 Junos OS 9.3 或更高版本。

概述

此示例显示三个路由设备。设备 R2 与设备 R1 有外部 BGP (EBGP) 连接。设备 R2 与设备 R3 有 IBGP 连接。

设备 R1 通告 172.16.6.0/24。设备 R2 不会在设备 R1 的导入策略中设置本地优先级,因此 172.16.6.0/24 的默认本地优先级为 100。

设备 R3 通告 172.16.6.0/24,本地优先级为 200。

advertise-external在设备 R2 上未配置语句时,设备 R2 不会向设备 R3 播发 172.16.6.0/24。

当向 advertise-external 设备 R3 的会话中的设备 R2 上配置语句时,设备 R2 将向设备 R3 播发 172.16.6.0/24。

advertise-external conditional 设备 R2 上配置设备 R2 时,设备 R2 不会向设备 R3 播发 172.16.6.0/24。如果卸下 then local-preference 200 设备 R3 上的设置并在设备 R2 上添加 path-selection as-path-ignore 设置(因此在路由选择流程的 MED 步骤之前,路径选择标准相等),则设备 R2 将向设备 R3 播发 172.16.6.0/24。

注:

要在路由反射器上配置 advertise-external 语句,必须禁用语句的缩写反射 no-client-reflect ,并且必须完全网状化客户端群集,以防止发送冗余路由通告。

如果路由设备配置为集群的路由反射器,则如果从具有相同群集标识符的内部对等方接收路由,或者两个对等方均未配置集群标识符,则路由反射器通告的路由被视为内部路由。从属于另一个群集的内部对等方接收的路由(带有不同的群集标识符)被视为外部。

拓扑

图 2 显示了示例网络。

图 2: 用于播发外部的 BGP 拓扑用于播发外部的 BGP 拓扑

CLI 快速配置 显示了 中所有设备 图 2的配置。

本节 #d189e165__d189e342 介绍设备 R2 上的步骤。

配置

CLI 快速配置

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

设备 R1

设备 R2

设备 R3

程序

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南中的配置模式下使用 CLI 编辑器

要配置设备 R2:

  1. 配置设备接口。

  2. 配置 OSPF 或其他内部网关协议 (IGP)。

  3. 配置与设备 R1 的 EBGP 连接。

  4. 配置与设备 R3 的 IBGP 连接。

  5. 将语 advertise-external 句添加至 IBGP 组对等会话。

  6. 配置自治系统 (AS) 编号和路由器 ID。

结果

在配置模式下,输入 show interfacesshow protocolsshow policy-optionsshow routing-options 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请在配置模式下输入 commit

验证

确认配置工作正常。

验证 BGP 活动路径

目的

在设备 R2 上,确保 172.16.6.0/24 前缀位于路由表中,并具有预期的主动路径。

行动
意义

设备 R2 从设备 R1 和设备 R3 接收 172.16.6.0/24 路由。来自设备 R3 的路由是活动路径,由星号 (*) 指定。活动路径具有最高的本地优先级。即使这两个路由的本地优先级相等,设备 R3 的路由也会保持活动状态,因为它具有最短的 AS 路径。

验证外部路由通告

目的

在设备 R2 上,请确保 172.16.6.0/24 路由通告至设备 R3。

行动
意义

设备 R2 正在向设备 R3 通告 172.16.6.0/24 路由。

验证设备 R3 上的路由

目的

确保 172.16.6.0/24 前缀位于设备 R3 的路由表中。

行动
意义

设备 R3 具有静态路由和 BGP 路由,用于 172.16.6.0/24。

请注意,如果无法到达路由或无法解决下一跳跃,BGP 路由将隐藏在设备 R3 上。为了满足此要求,此示例包括设备 R3 (static route 0.0.0.0/0 next-hop 10.0.0.5) 上的静态默认路由。

试验条件选项

目的

了解该 conditional 选项如何在 BGP 路径选择算法的上下文中工作。

行动
  1. 在设备 R2 上,添加 conditional 选项。

  2. 在设备 R2 上,检查 172.16.6.0/24 路由是否通告至设备 R3。

    如预期的那样,路由不再通告。您可能需要等待几秒钟才能看到此结果。

  3. 在设备 R3 上 then local-preference 停用策略操作。

  4. 在设备 R2 上,确保两条路径的本地优先级相等。

  5. 在设备 R2 上,添加 as-path-ignore 语句。

  6. 在设备 R2 上,检查 172.16.6.0/24 路由是否通告至设备 R3。

    正如预期的那样,路由现在通告,因为 AS 路径长度被忽略,并且本地优先级相等。

示例:配置基于 BGP 前缀的出站路由过滤

此示例说明如何配置瞻博网络路由器以接受来自远程对等方的路由过滤器,以及如何使用收到的过滤器执行出站路由过滤。

要求

开始之前:

  • 配置路由器接口。

  • 配置内部网关协议 (IGP)。

概述

您可以配置 BGP 对等方以接受来自远程对等方的路由过滤器,并使用收到的过滤器执行出站路由过滤。通过过滤掉不需要的更新,发送对等方可节省生成和传输更新所需的资源,而接收的对等方将节省处理更新所需的资源。例如,在虚拟专用网络 (VPN) 中,此功能很有用,其中客户边缘 (CE) 设备的子集无法处理 VPN 中的所有路由。CE 设备可以使用基于前缀的出站路由过滤来与提供商边缘 (PE) 路由设备通信,仅将路由子集(例如仅路由传输到主数据中心)。

BGP 对等方可接受的最大基于前缀的出站路由过滤器数量为 5000。如果远程对等方将 5000 多个出站路由过滤器发送至对等方地址,将丢弃附加过滤器,并生成系统日志消息。

您只能为整个路由设备或特定 BGP 组或对等方配置互操作性。

拓扑

在示例网络中,设备 CE1 是另一家供应商的路由器。此示例中显示的配置位于 Juniper Networks 路由器 PE1 上。

图 3 显示了示例网络。

图 3: 基于 BGP 前缀的出站路由过滤基于 BGP 前缀的出站路由过滤

配置

CLI 快速配置

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

PE1

程序

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南中的配置模式下使用 CLI 编辑器

要将路由器 PE1 配置为接受设备 CE1 中的路由过滤器,并使用收到的过滤器执行出站路由过滤:

  1. 配置本地自治系统。

  2. 配置与设备 CE1 的外部对等互连。

  3. 配置路由器 PE1 以接受设备 CE1 中的 IPv4 路由过滤器,并使用收到的过滤器执行出站路由过滤。

  4. (可选)与使用供应商特定兼容性代码 130(用于出站路由过滤器)和 128 代码类型的路由设备实现互操作性。

    IANA 标准代码为 3,标准代码类型为 64。

结果

在配置模式下,输入 show protocolsshow routing-options 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请在配置模式下输入 commit

验证

确认配置工作正常。

验证出站路由过滤器

目的

显示从设备 CE1 接收的基于前缀的出站路由过滤器的信息。

行动

在操作模式下,输入 show bgp neighbor orf detail 命令。

验证 BGP 邻接方模式

目的

bgp-orf-cisco-mode确保ORFCiscoMode在命令输出中show bgp neighbor显示选项,验证该设置是否已为对等方启用。

行动

在操作模式下,输入 show bgp neighbor 命令。

了解数据包传输路由器上的默认 BGP 路由策略(PTX 系列)

在 PTX 系列数据包传输路由器上,默认 BGP 路由策略与其他 Junos OS 路由设备不同。

PTX 系列路由器是执行 IP 转发的 MPLS 传输平台,通常使用内部网关协议 (IGP) 路由。PTX 系列数据包转发引擎可以容纳相对较少的可变长度前缀。

注:

PTX 系列路由器可以在控制平面上支持完整的 BGP 路由,以便将其用作路由反射器 (RR)。它可以执行精确长度的查找组播转发,并且可以构建组播转发平面供单播控制平面使用(例如,执行组播的反向路径转发查找)。

鉴于 PFE 限制,PTX 系列路由器的默认路由策略适用于不安装在转发表中的 BGP 路由。您可以替代默认路由策略,然后选择某些 BGP 路由来安装在转发表中。

PTX 系列路由器上用于负载平衡和 BGP 路由的默认行为如下。它具有以下理想特征:

  • 允许您在无需直接更改默认策略的情况下替代默认行为

  • 降低意外更改使默认值无效的机率

  • 不设置任何流控制操作,例如接受和拒绝

PTX 系列路由器上的默认路由策略如下:

如这里所示,策略 junos-ptx-series-default[edit policy-options]。该策略使用 语句在 [edit routing-options forwarding-table]default-export 应用。您可以使用 | display inheritance 标记来查看这些默认配置。

此外,您还可以使用 show policy 命令查看默认策略。

警告:

强烈建议您不要直接更改 junos-ptx-series-default 路由策略。

Junos OS 将策略 junos-ptx-series-default 与任何用户配置的导出策略链接在一起。由于策略 junos-ptx-series-default 不使用流控制操作,因此您配置的任何导出策略都会为每个路由执行(通过隐式下一策略操作的方式)。因此,您可以替代策略设置 junos-ptx-series-default 的任何操作。如果不配置出口策略,则策略设置的 junos-ptx-series-default 操作是唯一的操作。

您可以使用策略操作 install-to-fib 来替代操作 no-install-to-fib

同样,您也可以设置 load-balance per-prefix 操作以替代该 load-balance per-packet 操作。

示例:覆盖 PTX 系列数据包传输路由器上的默认 BGP 路由策略

此示例说明如何覆盖数据包传输路由器(如 PTX 系列数据包传输路由器)上的默认路由策略。

要求

此示例需要 Junos OS 版本 12.1 或更高版本。

概述

默认情况下,PTX 系列路由器不会在转发表中安装 BGP 路由。

对于 PTX 系列路由器,使用then accept操作对条件的from protocols bgp配置不会产生其在其他 Junos OS 路由设备上通常具有的结果。在 PTX 系列路由器上使用以下路由策略后,BGP 路由不会安装在转发表中。

转发表中未安装 BGP 路由。这是预期的行为。

此示例说明如何使用 then install-to-fib 操作有效覆盖默认 BGP 路由策略。

配置

CLI 快速配置

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

在转发表中安装选定 BGP 路由

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南中的配置模式下使用 CLI 编辑器

要在转发表中安装选定的 BGP 路由:

  1. 配置前缀列表以安装在转发表中。

  2. 配置路由策略,将前缀列表应用为条件。

  3. 将路由策略应用到转发表。

结果

在配置模式下,输入 show policy-optionsshow routing-options 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请在配置模式下输入 commit

验证

确认配置工作正常。

验证选定路由是否已安装在转发表中

目的

确保配置的策略覆盖默认策略。

行动

在操作模式下,输入 show route forwarding-table 命令。

意义

此输出显示转发表中安装了到 66.0.0.1/32 的路由。

支持有条件安装前缀的条件通告用例

网络通常细分为更小、更易于管理的单元,称为自治系统 (AS)。当路由器使用 BGP 在同一 AS 中形成对等关系时,它称为内部 BGP (IBGP)。当路由器使用 BGP 在不同的 AS 中形成对等关系时,它称为外部 BGP (EBGP)。

执行路由理智检查后,BGP 路由器接受从其对等方收到的路由并将其安装到路由表中。默认情况下,IBGP 和 EBGP 会话中的所有路由器均遵循标准 BGP 广告规则。虽然 IBGP 会话中的路由器仅通告从其直接对等方学习的路由,但 EBGP 会话中的路由器通告从其直接和间接对等方(对等方对等方)学到的所有路由。因此,在使用 EBGP 配置的典型网络中,路由器会将从 EBGP 对等方接收到的所有路由添加到其路由表中,并将几乎所有路由通告至所有 EBGP 对等方。

服务提供商会与互联网上的客户和对等方交换 BGP 路由,存在恶意和意外威胁的风险,这些威胁可能会损害流量的正确路由以及路由器的运行。

这有几个缺点:

  • Non-aggregated route advertisements— 客户可以错误地将其所有前缀播发给 ISP,而不是其地址空间聚合。考虑到互联网路由表的大小,必须仔细控制。边缘路由器可能需要一个面向互联网的默认路由,而是从其上游对等方接收整个 BGP 路由表。

  • BGP route manipulation—如果恶意管理员更改了 BGP 路由表的内容,则可能会阻止流量到达其目标。

  • BGP route hijacking— BGP 对等方的恶意管理员可能会恶意通告网络的前缀,试图将针对受害者网络的流量重新路由至管理员的网络,以访问流量内容或阻止受害者的在线服务。

  • BGP denial of service (DoS)—如果恶意管理员将意外或不可取的 BGP 流量发送至路由器,试图使用路由器的所有可用 BGP 资源,则可能会损害路由器处理有效 BGP 路由信息的能力。

前缀的条件安装可用于解决之前提到的所有问题。如果客户需要访问远程网络,则可在与远程网络连接的路由器的路由表中安装特定路由。这在典型的 EBGP 网络中不会发生,因此,前缀的条件安装变得必不可少。

AS 不仅受物理关系约束,还受业务或其他组织关系的约束。AS 可以向其他组织提供服务,或充当其他两个 AS 之间的传输 AS。这些传输 AS 受双方合同协议的约束,其中包含关于如何相互连接的参数,最重要的是它们相互承载的流量类型和数量。因此,出于法律和财务原因,服务提供商必须实施策略来控制与邻接方交换 BGP 路由的方式、从邻接方接受哪些路由以及这些路由如何影响 AS 之间的流量。

有许多不同的选项可用于过滤从 BGP 对等方接收的路由,既可实施 AS 间策略,又可降低接收潜在有害路由的风险。传统路由过滤检查路由的属性,并根据此类属性接受或拒绝路由。策略或过滤器可以检查 AS 路径、下一跳跃值、公共组值、前缀列表、路由地址族等的内容。

在某些情况下,匹配特定属性值的标准“接受条件”是不够的。服务提供商可能需要使用路由本身之外的另一个条件,例如路由表中的另一个路由。例如,可能需要安装从上游对等方接收的默认路由,但前提是可以验证此对等方是否可到达进一步上游的其他网络。此有条件的路由安装可避免安装默认路由,该路由用于将流量发送至此对等方,此时对等方可能已失去上游路由,导致出现黑洞流量。为此,路由器可配置为在路由表中搜索特定路由的存在,并基于此知识接受或拒绝其他前缀。

例子:为条件通告配置路由策略,支持在路由表 中有条件地安装前缀,解释了如何配置和验证前缀的条件安装。

有一定匹配条件的条件通告和导入策略(路由表)

BGP 接受从邻接方那里学到的所有非环路路,并将它们导入 RIB-In 表中。如果这些路由被 BGP 导入策略接受,则它们会导入 inet.0 路由表中。如果仅需要导入某些路由,则可以作出调配,使对等路由设备根据条件或一组条件导出路由。

出口路由的条件可以基于:

  • 其他一些必要的属性

例如:

这称为前缀的条件安装,在 示例中 介绍:为条件通告配置路由策略,支持在路由表中有条件地安装前缀。

无论它们是导入还是导入策略的一部分,都可以配置路由策略中的条件。导出策略支持根据路由策略中存在其他路由而从路由策略继承下来的这些条件。但是,导入策略不支持这些条件,即使存在条件,也不会执行这些条件。

图 4 说明了应用 BGP 导入和导出策略的位置。导入策略应用于在命令输出中可见的 show route receive-protocol bgp neighbor-address 入站路由。导出策略应用于在命令输出中可见的 show route advertising-protocol bgp neighbor-address 出站路由。

图 4: BGP 进出口政策BGP 进出口政策

要启用有条件安装前缀,必须在必须进行前缀导出的设备上配置导出策略。导出策略会评估每个路由,以验证其是否满足语句下 from 的所有匹配条件。它还搜索在语句下 condition 定义的路由的存在(也根据 from 语句配置)。

如果路由与策略中定义的全部条件不匹配,或者在语句下 condition 定义的路由不存在于路由表中,则路由不会导出至其 BGP 对等方。因此,有条件的导出策略将匹配您希望安装在对等方路由表中的所需路由或前缀的路由。

要在导出策略的帮助下配置前缀的条件安装:

  1. 创建语 condition 句以检查前缀。

  2. 使用 condition 语句使用新创建的条件创建出口策略。

  3. 将导出策略应用到仅需要从路由表中导出选定前缀的设备。

示例:为条件通告配置路由策略,支持在路由表中有条件地安装前缀

此示例说明如何使用 BGP 导出策略在路由表中配置前缀有条件安装。

要求

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

  • M 系列多服务边缘路由器、MX 系列 5G 通用路由平台或 T 系列核心路由器

  • Junos OS 版本 9.0 或更高版本

概述

在此示例中,三个不同的自治系统 (AS) 中的三个路由器通过 BGP 协议连接和配置。标记为 Internet 的路由器是上游路由器,其 lo0.0 环路接口(172.16.11.1/32、172.16.12.1/32、 172.16.13.1/32、172.16.14.1/32 和 172.16.15.1/32)和额外环路地址(192.168.9.1/32)配置为路由器 ID。这六个地址导出到 BGP 中,以模拟连接到互联网的路由器的 BGP 路由表的内容,并通告给 North。

南北路由器分别使用 10.0.89.12/30 和 10.0.78.12/30 网络,并使用 192.168.7.1 和 192.168.8.1 用于各自的环路地址。

图 5 显示了此示例中使用的拓扑。

图 5: 前缀有条件安装前缀有条件安装

路由器 North 将默认路由导出到 BGP 中,并将默认路由和五个 BGP 路由通告至下行路由器 South 路由器。路由器 South 接收默认路由和另一个路由 (172.16.11.1/32),并将此路由和默认路由安装在其路由表中。

总而言之,该示例满足以下要求:

  • 在 North 上,仅当还发送特定路由(例如 172.16.11.1/32)时,才将 0/0 发送至南。

  • 在南段,接受默认路由和 172.16.11.1/32 路由。丢弃所有其他路由。考虑 South 可能正在接收整个互联网表,而运营商仅希望 South 具有默认和另一个特定前缀。

第一项要求是满足北方的出口政策:

有条件出口政策的逻辑可以概括为:如果存在 0/0,如果存在 172.16.11.1/32,则发送 0/0 前缀。这意味着,如果 172.16.11.1/32 不存在,则不要发送 0/0。

第二项要求是满足南方的进口政策:

在此示例中,由于南方的导入策略,四条路由被丢弃。这是因为北端的导出策略泄露了从互联网接收到的所有路由,而南方的导入策略不包括其中的一些路由。

务必理解,在 Junos OS 中,尽管导入策略(入站路由过滤器)可能会拒绝路由,但不会将其用于信息流转发,并且不会将其包含在通告中,但路由器会将这些路由保留为隐藏路由。这些隐藏的路由不可用于策略或路由目的。但是,它们确实占用路由器上的内存空间。服务提供商过滤路由以控制在内存中保存和由路由器处理的信息量,可能希望路由器完全丢弃被导入策略拒绝的路由。

可使用 show route receive-protocol bgp neighbor-address hidden 命令查看隐藏路由。然后,通过在或[edit protocols bgp group group-name]层级配置keep all | none语句,可从路由表中保留或丢弃隐藏的[edit protocols bgp]路由。

BGP 路由保留规则如下:

  • 默认情况下,从 BGP 学到的所有路由都将保留,AS 路径循环的路由除外。(AS 路径包含本地 AS。)

  • 通过配置语 keep all 句,从 BGP 学到的所有路由都将保留,即使是在 AS 路径中具有本地 AS 的路由也是如此。

  • 通过配置 keep none 语句,BGP 将丢弃从对等方接收且被导入策略或其他理智检查拒绝的路由。配置此语句并更改入站策略时,Junos OS 将重新播发对等方播发的所有路由。

keep all配置或对等keep none方支持路由刷新时,本地发送方将发送刷新消息并执行导入评估。对于这些对等方,会话不会重新启动。要确定对等方是否支持刷新,请检查 Peer supports Refresh capability 命令的 show bgp neighbor 输出。

警告:

如果配置 keep allkeep none 对等方不支持重新启动会话,则相关 BGP 会话将重新启动(已翻动)。

拓扑

配置

CLI 快速配置

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

路由器互联网

北路由器

路由器南端

配置前缀的条件安装

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南 中的配置模式下使用 CLI 编辑器

要配置前缀有条件安装:

  1. 配置在三个路由器之间形成链路的路由器接口。

  2. 在路由器互联网上配置五个环路接口地址,以模拟从互联网学习的 BGP 路由,这些路由将被导入路由器南端的路由表中,并配置将配置为路由器 ID 的附加地址 (192.168.9.9.1/32)。

    此外,在路由器南北端配置环路接口地址。

  3. 配置路由器北端的静态默认路由,以通告至路由器南端。

  4. 定义从北路由器的路由表中出口前缀的条件。

  5. 分别定义路由器互联网和北端的导出策略(into-bgpconditional-export-bgp ),以将路由通告至 BGP。

    注:

    确保在出口策略中参考条件 prefix_11 (在步骤 4中配置)。

  6. 在路由器南端定义导入策略 (import-selected-routes),以将路由器 North 通告的部分路由导入其路由表中。

  7. 在所有三个路由器上配置 BGP 以启用自治系统之间的前缀流。

    注:

    确保将定义的导入和导出策略应用到相应的 BGP 组,以便进行前缀通告。

  8. 配置所有三个路由器的路由器 ID 和自治系统编号。

    注:

    在此示例中,路由器 ID 根据在路由器 lo0.0 接口上配置的 IP 地址进行配置。

结果

在配置模式下,发出 show interfacesshow protocols bgpshow policy-optionsshow routing-options 命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

设备互联网

设备北端

设备南端

如果完成对路由器的配置,请从配置模式进入 commit

验证

确认配置工作正常。

验证 BGP

目的

验证三个路由器之间是否已建立 BGP 会话。

行动

在操作模式下 show bgp neighbor neighbor-address ,运行 命令。

  1. 检查路由器互联网上的 BGP 会话,以验证路由器 North 是邻接方。

  2. 检查路由器北端的 BGP 会话,验证路由器 Internet 是邻接方。

检查这些输出中的以下字段,以验证是否已建立 BGP 会话:

  • Peer—检查是否列出了对等 AS 编号。

  • Local—检查是否列出了本地 AS 编号。

  • State-确保值为 Established。如果没有,请再次检查配置并查看 show bgp neighbor 有关输出字段的更多详细信息。

同样,验证路由器南北向是否形成对等关系。

意义

在三个路由器之间建立 BGP 会话。

验证从路由器互联网到北路由器的前缀通告

目的

确认路由器互联网发送的路由是否由 North 路由器接收。

行动

  1. 在路由器互联网上的操作模式下,运行 show route advertising-protocol bgp neighbor-address 命令。

    输出验证路由器 Internet 通告路由 172.16.11.1/32、172.16.12.1/32、 172.16.13.1/32、172.16.14.1/32、172.16.15.1/32 和 192.168.9.1/32(作为路由器 ID 使用的环路地址)到路由器北段。

  2. 在路由器北端的操作模式下,运行 show route receive-protocol bgp neighbor-address 命令。

    输出将验证路由器 North 是否已收到路由器互联网通告的所有路由。

意义

路由器互联网发送的前缀已成功安装到路由器北侧的路由表中。

验证从路由器北到路由器南端的前缀通告

目的

验证从路由器互联网接收的路由和静态默认路由是否由路由器北至路由器南端通告。

行动
  1. 在路由器北端的操作模式下,运行 show route 0/0 exact 命令。

    输出将验证路由器北侧路由表中是否存在静态默认路由 (0.0.0.0/0)。

  2. 在路由器北端的操作模式下,运行 show route advertising-protocol bgp neighbor-address 命令。

    输出验证路由器 North 正在向路由器南端播发静态路由和 172.16.11.1/32 路由的通告。

验证用于安装前缀的 BGP 导入策略

目的

验证 BGP 导入策略是否成功安装所需前缀。

行动

查看路由器南端的导入策略是否正常运行,方法是检查路由器北端的静态默认路由以及来自南路由器的 172.16.11.1/32 路由是否安装在路由表中。

在操作模式下 show route receive-protocol bgp neighbor-address ,运行 命令。

输出验证 BGP 导入策略是否在路由器南端运行,而路由器北端的 0.0.0.0/0 的静态默认路由以及路由器 Internet 的 172.16.11.1/32 路由只泄漏到路由器南侧的路由表中。

意义

由于配置了 BGP 导入策略,前缀的安装成功。

验证从路由器北到路由器南的有条件导出

目的

验证当设备互联网停止发送 172.16.11.1/32 路由时,Device North 停止发送默认 0/0 路由。

行动
  1. 导致设备互联网停止发送 172.16.11.1/32 路由,方法是停用环路接口上的 172.16.11.1/32 地址。

  2. 在路由器北端的操作模式下,运行 show route advertising-protocol bgp neighbor-address 命令。

    输出将验证路由器 North 未在向南路由器播发默认路由。这是 172.16.11.1/32 路由不存在时的预期行为。

  3. 在设备互联网的环路接口上重新激活 172.16.11.1/32 地址。

验证按策略隐藏的路由的存在(可选)

目的

验证路由在南路由器上配置的导入策略隐藏的路由是否存在。

注:

本节演示了您可以根据需求对配置进行的各种更改的影响。

行动

查看从南路由器路由表中隐藏的路由:

  • hidden使用 命令选项show route receive-protocol bgp neighbor-address

  • 停用导入策略。

  1. 在操作模式下 show route receive-protocol bgp neighbor-address hidden ,运行 命令以查看隐藏路由。

    输出可验证在南路由器上的导入策略(172.16.12.1/32、172.16.13.1/32、172.16.14.1/32 和 172.16.15.1/32)隐藏的路由的存在。

  2. 在层次结构级别上配置 deactivate import 语句 [edit protocols bgp group group-name] ,以停用 BGP 导入策略。

  3. 在停用导入策略之后, show route receive-protocol bgp neighbor-address 运行操作模式命令检查路由。

    该输出可验证先前隐藏的路由的存在(172.16.12.1/32、172.16.13.1/32、172.16.14.1/32 和 172.16.15.1/32)。

  4. 在层次结构级别分别配置 activate importkeep none 语句,激活 BGP 导入策略并从路由表中 [edit protocols bgp group group-name] 移除隐藏路由。

  5. 在操作模式下 show route receive-protocol bgp neighbor-address hidden ,运行 命令以在激活导入策略并配置 keep none 语句之后检查路由。

    输出将验证隐藏的路由是否因配置 keep none 的语句而未在路由表中维护。

默认 EBGP 路由传播行为(无策略)的隐式过滤器

SUMMARY 本节介绍在未配置显式策略时使用隐式过滤器来调节 EBGP 路由传播行为。

优势

此功能提供以下优势:

  • Regulates BGP implementation— 防止 EBGP 发送方成为默认接受和通告所有路由的静音传递。此功能有效地减少了叶自治系统上的传输流量增加,尤其是在它们多宿主到任何上游互联网服务提供商时。因此,还可防止静默丢弃流量、拒绝服务和全球互联网中断。

  • Implicit filter—此配置可方便使用隐式过滤器,默认行为仍设置为默认接收和通告所有路由。配置语句仅添加了一个选项,以指定接受、拒绝、拒绝始终条款的启用或禁用,必要时。隐式过滤器可确保使用依赖默认 BGP 策略的现有部署的用户不会遇到操作中断。

概述

BGP 是当前域间自主协议,用于全局互联网路由。它还支持各种服务,如 VPN 和链路状态,这些服务并非适用于全球使用。

BGP 实施,包括由 RFC4271、边界网关协议 4 (BGP-4) 指导的默认 EBGP 行为。但是,它没有就指定应分布的路由提供任何明确的指导。这导致最初的 BGP 实施成为路由的静音直通,没有任何过滤,因此导致流量增加,导致全球互联网中断。

从 Junos OS 20.3R1 版开始,我们在现有[edit protocols bgp]层次结构级别上引入了隐式过滤器defaults ebgp no-policy。该配置将接收和播发的默认策略分隔为单独的条款(接受、拒绝或始终拒绝),以允许行为因情况而异。

如果没有显式策略配置,隐式过滤器允许您在以下三个状态之一启用默认 eBGP 接收和播发行为:

价值观

默认策略

它做了什么

接受

收到

接受接收所有路由(也是默认行为)。

做广告

接受通告所有路由(也是默认行为)。

拒绝

收到

拒绝接收类型 inet 单播和 inet6 单播的路由,例如主播、vrf、虚拟路由器和非转发。

做广告

拒绝播发类型 inet 单播和 inet6 单播的路由,例如主播、vrf、虚拟路由器和非转发。

拒绝始终

收到

拒绝接收所有路由。

做广告

拒绝通告所有路由。