Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

基本 BGP 路由策略

了解路由策略

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

创建并命名策略后,必须在应用后才能激活。您可使用配置层次中importexportprotocols protocol-name级别上的和语句来应用路由策略。

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] 这些语句)。

  • Peer 和 语句 — 在 层次结构级别中包括这些语句(对于路由实例,在 层次结构级别 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 仅适用于发送192.168.20.1 策略。邻居172.16.3.3 (缺少任何更具体的)仅适用于发送-192.168.0.1 策略。同时,group 其他组中的相邻节点172.16.4.4 没有组或邻居级策略,因此它使用了直接发送策略。

如果您需要让邻居172.16.2.2 执行所有三个策略的功能,则可以编写并应用一个新的邻居级策略,其中包含其他三项功能,也可将所有三个现有策略(作为一个链)应用于邻居172.16.2.2。

拓扑

图 1显示了示例网络。

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

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

一节#d485e196__d485e450介绍设备 R1 上的步骤。

配置

CLI 快速配置

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

设备 R1

设备 R2

设备 R3

设备 R 4

操作

分步过程

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

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

  1. 配置设备接口。

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

  3. 配置静态路由。

  4. 启用路由策略。

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

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

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

成果

从配置模式,通过show interfaces发出、 show protocolsshow policy-options、和show 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 路由。

在设备 R 4 上, show route protocol bgp该命令显示设备 r 4 通过 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)。

在 Device R 4 上, route receive-protocol bgp 172.16.1.1该命令显示设备 R 4 从设备 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-options和命令(从配置模式show protocols bgp ),以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果您完成了设备配置,请从commit配置模式进入。

为路由策略配置跟踪

CLI 快速配置

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

分步过程

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

  1. 在策略中包括跟踪操作。

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

成果

输入show policy-options和命令(从配置模式show 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 定义的策略,请在import BGP export配置中包含 and 语句。

您可以按如下方式应用策略:

  • 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] 这些语句)。

  • Peer 和 语句 — 在 层次结构级别中包括这些语句(对于路由实例,在 层次结构级别 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 BGP 所了解的最佳路由,即使 Junos OS 未将其选择为活动路由,也要包括以下advertise-inactive语句:

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

配置 BGP 以通告到内部对等方的最佳外部路由

一般情况下,除非是最佳路由,否则部署 BGP 实施时不会向内部对等方通告具有最高本地优先级别值的外部路由。尽管 BGP 版本 4 规范的早期版本(RFC 1771)需要此行为,但通常并未遵循此行为,以便最大程度地减少播发的信息量并防止路由环路。但是,在某些情况下,最好的外部路由有好处,特别是可能导致 IBGP 路由 oscillation 的情况。

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

注:

为了在路由反射器advertise-external上配置语句,必须使用no-client-reflect语句禁用群集内反射。

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

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

您也可将 BGP 配置为仅在路由选择进程到达计算多个退出鉴别器(中)度量的点时才通告外部路由。因此,不会通告路径比主动路径更糟(也就是更长)的外部路由。

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

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

注:

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

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

要将 BGP 配置为仅在路由选择流程到达计算 MED-V 值的点时才通告最佳外部路径,请包括以下conditional语句:

配置 BGP 与路由表交换路由的频率

BGP 将接收的路由信息从路由表的更新消息中存储,而路由表则将活动路由从路由表中导出到 BGP 中。BGP 然后将导出路由公布到其对等方。默认情况下,路由信息在 BGP 和路由表之间的交换在接收后立即发生。这种即时路由信息交换可能会导致网络可访问性信息 instabilities。为防止这种情况发生,您可以延迟 BGP 和路由表交换路由信息之间的时间。

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

默认情况下,路由表保留 BGP 所了解的部分路由信息。要让路由表保留此信息的全部或全部,请包含以下keep语句:

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

路由表可保留从 BGP 了解的路由信息,方法如下:

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

  • keep all—保留从网络学习到的所有路由BGP。

  • keep none—丢弃从对等方收到的、被导入策略或其他理智检查拒绝的路由,例如,AS或下一跃点。为 BGP 会话keep none和入站策略更改配置时,Junos OS 强制 readvertisement 对等方通告的整套路由。

在 AS 路径修复情况下,具有循环路径的路由理论上可能会在执行 AS path 循环限制时在软重新配置期间可用。但是,默认值和keep all之间存在明显的内存使用差异。

考虑以下情景:

  • 对等 readvertises 路由回其学习的对等方。

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

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

    • 如果Junos OS重新向发送对等方重新广告路由,则对等方的默认行为将被配置覆盖 advertise-peer-as

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

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

禁用抑制路由通告

Junos OS 不会将从一个 EBGP 对等方获知的路由返回到同一外部 BGP (EBGP)对等方。此外,无论路由实例如何,软件都不会将这些路由返回到与原始对等方相同的任何 EBGP 对等方。您可以通过在配置中包括advertise-peer-as语句来修改此行为。要禁用默认通告禁止,请包含以下advertise-peer-as语句:

注:

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

如果将advertise-peer-as语句包括在配置中,则 BGP 通告路由,而不考虑此检查。

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

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

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

示例:配置路由策略以通告到内部对等方的最佳外部路由

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

  • 最小化公布的信息数量。BGP 根据可用路径数量进行扩展。

  • 避免路由和转发循环。

但是,在 RFC 1771 中指定的广告最佳外部路由的行为可能是有益的。由于路径多样性可能有助于减少恢复时间,因此不一定总是需要限制路径信息。广告 BGP最佳外部路径还可解决 RFC 3345、边界网关协议 (BGP)持久路由干扰情况 中所述的内部路由 (IBGP) 路由选择问题。

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

注:

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

conditional选项限制advertise-external设置的行为,因此仅当路由选择进程到达计算多个退出鉴别器(中)度量的点时才通告外部路由。因此,如果外部路由(例如) AS 路径比活动路径更糟(更长),则不会公布。当conditional最佳外部路径和活动路径相等时,此选项将限制外部路径通告,直至路由选择流程的中步骤。请注意,无论是否配置了该conditional选项,用于选择最佳外部路径的标准都相同。

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

此限定符仅在导出策略的上下文中使用时才匹配。当路由通过可通告非活动路由的协议(如 BGP)通告时, state inactive匹配作为advertise-inactive and advertise-external语句的结果的路由。

例如,可以将以下配置用作内部对等方的 BGP 出口策略,以标记因设置用户定义社区而advertise-external通告的路由。该社区可以随后由接收路由器用于从转发表中过滤掉此类路由。此类机制可用于解决未被发件人用于转发的广告路径可能导致转发循环。

要求

需要 Junos OS 9.3 或更高版本。

概述

此示例显示了三个路由设备。设备 R2 与设备 R1 有外部 BGP (EBGP)连接。Device 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 上未配置该语句时,172.16.6.0/24 不会由设备 R2 向设备 R3 公布。

如果在advertise-external设备 r2 上将该语句配置为设备 r3 的会话,则 172.16.6.0/24 将由设备 R2 向设备 r3 公布。

advertise-external conditional设备 r2 上对设备 r3 的会话配置了 172.16.6.0/24 时,设备 r2 不会将其向设备 r3 公布。如果您移除设备then local-preference 200 R3 上的设置并添加设备path-selection as-path-ignore R2 上的设置(从而使路径选择标准相等,直至路由选择进程的中步骤),则 172.16.6.0/24 将由设备 R2 向设备 R3 公布。

注:

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

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

拓扑

图 2显示了示例网络。

图 2: 用于通告的 BGP 拓扑-外部用于通告的 BGP 拓扑-外部

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

一节#d488e166__d488e344介绍设备 R2 上的步骤。

配置

CLI 快速配置

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

设备 R1

设备 R2

设备 R3

操作

分步过程

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

配置设备 R2:

  1. 配置设备接口。

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

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

  4. 将 IBGP 连接配置为 Device R3。

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

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

成果

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

如果您完成了设备配置,请从commit配置模式进入。

针对

确认配置是否正常工作。

验证 BGP 活动路径

用途

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

行动
含义

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

验证外部路由通告

用途

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

行动
含义

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

在设备 R3 上验证路由

用途

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

行动
含义

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

请注意,如果路由不可访问或无法解析下一跳跃,设备 R3 上将隐藏 BGP 路由。为了满足此要求,此示例在设备 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 是另一家供应商的路由器。此示例中显示的配置位于瞻博网络路由器 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命令。

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

在 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 系列路由器,与from protocols bgpthen accept操作有关的条件配置不会以其在其他 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 来形成与相同的对等关系时,称为内部 BGP (IBGP)。当路由器使用 BGP 在不同 As 中形成对等关系时,称为外部 BGP (EBGP)。

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

与客户和 Internet 上的对等方交换 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 在各方之间受合同协议约束,其中包括有关如何相互连接的参数以及它们彼此之间传输的信息流类型和数量。因此,出于法律和财务方面的原因,服务提供商必须实施策略来控制如何与邻接方交换 BGP 路由,从这些邻居接受哪些路由,以及这些路由如何影响 As 之间的信息流。

有许多不同的选项可用于过滤从 BGP 对等体接收的路由,从而实施内部策略和缓解可能有害路由的风险。传统路由过滤检查路由的属性,并根据此类属性接受或拒绝路由。策略或过滤器可以检查 AS 路径、下一跳跃值、社区值、前缀列表、路由地址族等的内容,等等。

在某些情况下,匹配特定属性值的标准"接受条件"是不够的。服务提供商可能需要在路由本身之外使用另一个条件,例如路由表中的另一个路由。例如,可能需要安装从上游对等方收到的默认路由,前提是此对等方可到达其他上游的其他网络。这种条件路由安装避免了安装用于向此对等方发送信息流的默认路由,而对等方可能失去了上游路由,从而导致了孔信息流。为此,路由器可配置为搜索路由表中是否存在特定路由,基于此知识接受或拒绝另一个前缀。

示例:为条件广告配置路由策略,以便在路由表中安装前缀的条件安装说明了如何配置和验证前缀的条件设置。

具有某些匹配条件的条件广告和导入策略(路由表)

BGP 接受从邻接方获知的所有非循环路由,并将其导入到筋表中。如果这些路由被 BGP 导入策略接受,则它们将导入 inet 路由表中。在仅需要导入某些路由的情况下,可以进行置备,以便对等路由设备根据条件或条件集导出路由。

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

  • 从以下来源获知路由的对等方

  • 在其上了解路由的接口

  • 其他一些必需属性

例如:

这称为有条件安装前缀,详见示例:为条件广告配置路由策略,以便在路由表中安装前缀的有条件。

Juniper Networks® Junos®操作系统 (Junos OS) 支持根据路由表中是否存在其他路由来条件导出路由。但是,Junos OS 不支持导入策略的策略条件。

图 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 Series 多服务边缘路由器、MX 系列5G 通用路由平台或 T Series 核心路由器

  • 9.0 或更高版本 Junos OS

概述

在此示例中,三个不同自治系统(As)中的三个路由器连接并配置了 BGP 协议。标记为互联网(即上游路由器)的路由器在其 lo 0.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 路由表的内容,并通告到北。

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

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

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

路由器将默认路由导出至 BGP,并通告默认路由和五个 BGP 路由到路由器南部,后者是下游路由器。路由器南部接收默认路由和仅有一个其他路由(172.16.11.1/32),并在其路由表中安装此路由和默认路由。

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

  • 在北方上,仅当还发送特定路由时(在示例 172.16.11.1/32 中)发送0/0 至南部。

  • 在南部,接受默认路由和 172.16.11.1/32 路由。丢弃所有其他路由。请注意,南部可能正在接收整个互联网表,而运营商只需使用默认值和另一个特定前缀。

第一项要求通过北部的出口政策来满足:

条件导出策略的逻辑可归纳如下:如果存在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命令查看隐藏的路由。然后,可以通过在keep all | none[edit protocols bgp][edit protocols bgp group group-name]层次结构级别配置语句,从路由表中保留或丢弃隐藏路由。

BGP 路由保持期的规则如下:

  • 默认情况下,将保留 BGP 所了解的所有路由,但 AS 路径被环除外。(AS 路径包含本地 AS。)

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

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

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

警告:

如果您进行keep all配置keep none或对等方不支持会话重新启动,则关联的 BGP 会话将重新启动(flapped)。

拓扑

配置

CLI 快速配置

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

路由器互联网

路由器北部

路由器南

配置前缀的条件安装

分步过程

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

要配置前缀的条件安装:

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

  2. 在路由器 Internet 上配置五个回传接口地址,以模拟从互联网中获知的 BGP 从要导入路由器南的路由表的路由,并配置将配置为路由器的附加地址(192.168.9.1/32)标识.

    此外,在北和南路由器上配置回传接口地址。

  3. 在要通告到路由器南部的路由器上配置静态默认路由。

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

  5. 在路由器 Internet 和into-bgp北方conditional-export-bgp上定义出口策略(和),以便通告路由到 BGP。

    注:

    请确保在导出策略中引用 条件(在 prefix_11 步骤 4 中配置)。

  6. 在路由器南上定义import-selected-routes导入策略(),将路由器上公布的某些路由导入其路由表中。

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

    注:

    确保将定义的导入和导出策略应用于相应的 BGP 组,以使前缀广告生效。

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

    注:

    在此示例中,路由器 ID 基于在路由器的 lo 0.0 接口上配置的 IP 地址进行配置。

成果

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

设备互联网

设备北部

设备南部

如果您完成了路由器配置,请从commit配置模式进入。

针对

确认配置是否正常工作。

验证 BGP

用途

确认在三台路由器之间已建立 BGP 会话。

行动

从操作模式运行show bgp neighbor neighbor-address命令。

  1. 检查路由器互联网上的 BGP 会话,以验证路由器北是否为相邻节点。

  2. 检查路由器北上的 BGP 会话,以验证路由器互联网是否为邻域。

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

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

  • Local—检查是否列出了AS序列号。

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

同样,验证相互之间的路由器相互和南部之间的对等关系。

含义

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

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

用途

验证从路由器互联网发送的路由是否由北方路由器接收。

行动

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

    输出将验证路由器互联网是否将路由 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命令。

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

含义

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

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

用途

验证从路由器互联网接收的路由和静态默认路由是否由北路由器到路由器南部公布。

行动
  1. 从操作模式上的路由器上运行show route 0/0 exact命令。

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

  2. 从操作模式上的路由器上运行show route advertising-protocol bgp neighbor-address命令。

    输出将验证路由器北正在通告静态路由和从路由器互联网接收的 172.16.11.1/32 路由,以及其他许多路由到路由器南部。

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

用途

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

行动

检查路由器南上的导入策略是否正常运行,方法是查看路由表中是否仅安装了来自路由器南和 172.16.11.1/32 路由的静态默认路由。

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

该输出将验证 BGP 的导入策略是否在路由器南部运行,并且仅从路由器上的 172.16.11.1/32 路由到来自路由器南的路由表中的静态默认路由(0.0.0.0/0)。

含义

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

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

用途

验证当设备 Internet 停止发送 172.16.11.1/32 路由时,设备停止发送默认0/0 路由。

行动
  1. 导致设备互联网停止通过停用回传接口上的 172.16.11.1/32 地址发送 172.16.11.1/32 路由。

  2. 从操作模式上的路由器上运行show route advertising-protocol bgp neighbor-address命令。

    输出将验证路由器北未公布到路由南的默认路由。这是 172.16.11.1/32 路由不存在时的预期行为。

  3. 重新激活设备 Internet 回环接口上的 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 import[edit protocols bgp group group-name]层次结构级别上分别配置和语句, keep none激活 BGP 的导入策略并从路由表中删除隐藏的路由。

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

    由于已配置keep none的语句,输出将验证隐藏路由是否不会保留在路由表中。

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

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

优势

此功能具有以下优势:

  • Regulates BGP implementation— 防止 EBGP 发送方成为静默通过(默认接受并通告所有路由)。此功能有效地抑制了叶自治系统上传输流量的增加,特别是在叶自治系统向任何上游 Internet 服务提供商多托管时。因此,它还能防止静默丢弃流量、拒绝服务和全球互联网中断。

  • Implicit filter—此配置可促进使用隐式过滤器,其中默认行为仍然设置为在默认情况下接收和播发所有路由。配置语句仅添加一个选项,用于指定启用或禁用以接受、拒绝、拒绝-始终语句(如果需要)。隐式过滤器可确保依赖默认策略的现有部署BGP不会遇到操作中断。

概述

BGP当前域间自治协议,用于全局互联网路由。它还支持各种服务,如 VPN 和链路状态,它们不可全局使用。

BGP实施(包括默认 EBGP 行为)由 RFC4271 和 A 边界网关协议 4 (BGP-4) 指导。但是,它未就指定应该分布的路由提供任何明确指导。这导致原始路由BGP是无需任何过滤的路由的静音通过,从而导致流量增加,导致全球互联网中断。

从Junos OS版本20.3R1,我们已在现有层级 defaults ebgp no-policy 引入了隐式 [edit protocols bgp] 过滤器。该配置将接收和播发的默认策略分隔为独立语句(接受、拒绝或拒绝-始终),允许行为独立变化。

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

价值观

默认策略

它做什么

接受

接收

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

通知

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

丢弃

接收

拒绝接收类型 inet 单播和 inet6 单播在实例类型主设备、vrf、虚拟路由器和非转发中的路由。

通知

拒绝在实例类型主要、vrf、虚拟路由器和非转发中播发类型 inet 单播和 inet6 单播的路由。

始终拒绝

接收

拒绝接收所有路由。

通知

拒绝播发所有路由。