Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGP 社区的路由策略

将 BGP 社区、扩展社区和大型社区理解为路由策略匹配条件

BGP 社区是一组共享公共属性的目标。社区信息作为路径属性包含在 BGP 更新消息中。此信息可识别社区成员,并使您能够对组执行操作,而无需详细说明每个成员。您可以使用社区和扩展社区属性来触发路由决策,例如接受、拒绝、优先或重新分发。

您可以通过配置(适用于静态、聚合或生成的路由)或导入路由策略将社区标记分配给非 BGP 路由。然后,当 BGP 导出路由时,可以匹配这些标记。

社区值是一个 32 位字段,分为两个主要部分。值的前 16 位对发起社区的网络的 AS 编号进行编码,而后 16 位则携带由 AS 分配的唯一编号。此系统尝试为互联网中的每个 AS 保证一组全局唯一的社区值。Junos OS 使用 表示 法 ,其中每个值都是十进制数。as-number:community-value 将保留 AS 值 0 和 65,535,这些 AS 编号中的所有社区值。每个社区或一组社区在配置层次结构中 都有一个名称。[edit policy-options] 社区的名称向路由设备唯一标识它,并用作对路由进行分类的方法。例如,社区值为 64510:1111 的路由可能属于名为 的社区。AS64510-routes 社区名称也在路由策略中用作匹配标准或操作。创建社区的命令语法为:策略选项 .community name members [community-ids] 它们是 单个社区值或多个社区值。community-ids 当为社区名称分配多个值时,路由设备会将其解释为社区值的逻辑 AND。换句话说,路由必须具有所有配置的值,然后才能分配社区名称。

常规社区属性是四个八位位组。网络增强功能(如 VPN)具有可由社区等属性满足的功能要求。但是,4 个八位字节社区值无法提供足够的扩展性和灵活性来满足 VPN 要求。这导致了扩展社区的创建。扩展社区是一个 8 个八位字节的值,也分为两个主要部分。社区的前 2 个八位位组对类型字段进行编码,而后 6 个八位位组以类型字段定义的格式携带一组唯一的数据。扩展社区为社区分组或分类提供了更大的范围。

BGP 扩展社区属性格式包含三个字段:type:administrator:assigned-number。路由设备希望您使用单词 或 表示类型字段。targetorigin 管理员字段对 AS 或 IPv4 地址使用十进制数,而分配的编号字段要求十进制数不大于字段大小(2 个八位位组为 65,535,4 个八位位组为 4,294,967,295)。

为标准和扩展社区属性指定社区 ID 时,可以使用 UNIX 样式的正则表达式。唯一的例外是 VPN 导入策略 (),它不支持扩展社区属性的正则表达式。vrf-import

常规 BGP 社区属性是一个可变长度属性,由一组或多个被拆分为 16 位值的 4 字节值组成。最高有效字被解释为 AS 编号,最低有效字是由 AS 运算符分配的本地定义的值。自从采用 4 字节 ASN 以来,4 字节 BGP 常规社区和 6 字节 BGP 扩展社区无法再支持 BGP 社区属性。运营商通常在 BGP 社区的本地部分对 AS 编号进行编码,这意味着有时社区的格式为 ASN:ASN。使用 4 字节 ASN ,您需要 8 个字节对其进行编码。尽管 BGP 扩展社区允许将 4 字节 AS 编码为全局管理员字段,但本地管理员字段只有 2 个字节的可用空间。因此,6 字节扩展社区属性也不合适。为了克服这个问题,Junos OS 允许您配置可选的传递路径属性 - 一个 12 字节 BGP 大型社区,提供最重要的 4 字节值以全局管理员身份对自治系统编号进行编码,其余两个 4 字节分配的编号用于对 RFC 8092 中定义的本地值进行编码。可以在和层次结构级别配置 BGP 大型社区。[edit policy-options community community-name members][edit routing-options static route ip-address community] BGP 大型社区属性格式有四个字段::.largeglobal administrator:assigned number:assigned number

BGP IPv6 单播地址特定的扩展社区被编码为一组 20 字节值。20 字节值按以下格式解释:

  • 最高有效 2 字节对“类型”和“子类型”值(高值(最高有效字节)和低值(第二有效字节))进行编码。

  • 接下来的 16 字节对 IPv6 单播地址进行编码。它是 IETF RFC 中的全局管理员。

  • 最后 2 个字节对运算符定义的本地值进行编码。它是 IETF RFC 中的本地管理员。

IPv6 单播地址特定的 BGP 扩展社区属性由关键字 、 表示,或者后跟 IPv6 和本地管理员,用 <、> 和 : 分隔。ipv6-targetipv6-originipv6-extended

注:

BGP 大型社区属性值的长度应为 12 的非零倍数。

示例:配置路由策略以将具有特定公共组标记的 BGP 路由重新分发到 IS-IS 中

此示例定义了一个策略,该策略从社区获取 BGP 路由 ,并将其放入指标为 63 的 IS-IS 中。Edu

要求

配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

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

图 1: 将具有特定公共组标记的 BGP 路由重新分发到 IS-IS 中将具有特定公共组标记的 BGP 路由重新分发到 IS-IS 中

在此示例中,设备 A、设备 B、设备 C 和设备 D 位于自治系统 (AS) 1 中,并且正在运行 IS-IS。除设备 D 外,所有 AS 1 设备都在运行内部 BGP (IBGP)。

设备 E 位于 AS 2 中,与设备 C 具有外部 BGP (EBGP) 对等会话。设备 E 有两个静态路由:10.2.0.0/16 和 10.3.0.0/16。这些路由使用 Edu 2:5 社区属性进行标记,并通过 EBGP 向设备 C 播发。

设备 C 接受使用 Edu 2:5 社区属性标记的 BGP 路由,将这些路由重新分发到 IS-IS,并将 IS-IS 衡量指标 63 应用于这些路由。

显示了 中 所有设备的配置。CLI 快速配置图 1本节介绍设备 C 和设备 E 上的步骤。#d205e61__d205e378

配置

程序

CLI 快速配置

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

设备 A

设备 B

设备 C

设备 D

设备 E

分步过程

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

要配置设备 E:

  1. 配置接口。

  2. 配置策略,这会将社区属性添加到静态路由。staticsEdu

  3. 配置 EBGP 并应用 策略。statics

  4. 配置静态路由。

  5. 配置路由器 ID 和 AS 编号。

分步过程

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

要配置设备 C:

  1. 配置接口。

  2. 配置 IBGP。

  3. 配置 Edu 到 ISIS 策略,该策略将重新分配从设备 E 获知的 Edu 标记的 BGP 路由,并应用指标 63。

  4. 在接口上启用 IS-IS,并应用 Edu-to-ISIS 策略。

  5. 配置发送 ISIS 和直接策略,该策略通过 EBGP 将路由重新分发到设备 E。

    如果没有此策略,设备 E 将无法连接到 AS 1 中的网络。

  6. 配置 EBGP 并应用发送 ISIS 和直接策略。

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

成果

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

设备 E

设备 C

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

验证

确认配置工作正常。

验证 IS-IS 邻居

目的

验证来自设备 E 的 BGP 路由是否在 AS 1 中的 IS-IS 网络上通信。

操作

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

意义

正如预期的那样,10.2.0.0/16 和 10.3.0.0/16 路由作为 IS-IS 外部路由在设备 D 的路由表中,指标为 73。如果设备 C 未向指标添加 63,则设备 D 对这些路由的指标将为 10。

示例:配置可移除 BGP 社区的路由策略

此示例说明如何创建接受 BGP 路由但从路由中删除 BGP 社区的策略。

要求

在配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

此示例显示了两台路由设备之间具有外部 BGP (EBGP) 连接。设备 R2 使用 BGP 会话向设备 R1 发送两个静态路由。在设备 R1 上,导入策略指定必须从路由中删除所有 BGP 社区。

默认情况下,当在 EBGP 对等方上配置社区时,将发送并接受这些社区。要抑制接受从邻接收到的社区,可以移除所有社区或一组指定的社区。当策略的结果是一组空的社区时,不包括社区属性。要删除所有社区,请首先定义一组通配符社区(此处,社区命名为 ):wild

然后,在路由策略语句中,指定 操作:community delete

要从任何自治系统 (AS) 中抑制特定社区,请将该社区 定义为 。community wild members "*:community-value"

拓扑

图 2 显示了示例网络。

图 2: 删除社区的 BGP 策略删除社区的 BGP 策略

配置

CLI 快速配置

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

设备 R1

设备 R2

程序

分步过程

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

要配置设备 R1:

  1. 配置接口。

  2. 配置 BGP。

    将导入策略应用于与设备 R2 的 BGP 对等会话。

  3. 配置删除社区的路由策略。

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 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. 配置接口。

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

  3. 配置 BGP。

  4. 配置多个社区,或配置具有多个成员的单个社区。

  5. 配置静态路由。

  6. 配置路由策略,用于将静态路由播发到 BGP 中,并将 BGP 社区添加到路由。

  7. 应用导出策略。

成果

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

设备 R1

设备 R2

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

验证

确认配置工作正常。

验证 BGP 路由

目的

确保设备 R1 上的路由表不包含 BGP 社区。

操作
  1. 在设备 R1 上,运行 命令。show route protocols bgp extensive

  2. 在设备 R1 上,停用 导入策略中的配置。community remove

  3. 在设备 R1 上,运行 命令以查看播发的社区。show route protocols bgp extensive

意义

输出显示,在设备 R1 的路由表中,从设备 R2 发送的 BGP 路由中抑制了社区。停用设备 R1 导入策略中的设置后,将不再禁止显示社区。community remove

示例:根据 BGP 社区数量配置路由策略

此示例说明如何根据 BGP 社区的数量创建接受 BGP 路由的策略。

要求

在配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

此示例显示了两台路由设备之间具有外部 BGP (EBGP) 连接。设备 R2 使用 BGP 会话向设备 R1 发送两个静态路由。在设备 R1 上,导入策略指定 BGP 接收的路由最多可以包含五个社区,以被视为匹配。例如,如果路径包含三个社区,则会将其视为匹配并被接受。如果路径包含六个或更多社区,则会将其视为不匹配并被拒绝。

请务必记住,EBGP 的默认策略是接受所有路由。若要确保拒绝不匹配的路由,必须在策略定义的末尾包含一个 操作。then reject

拓扑

图 3 显示了示例网络。

图 3: 对接受的社区数量有限制的 BGP 策略对接受的社区数量有限制的 BGP 策略

配置

CLI 快速配置

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

设备 R1

设备 R2

程序

分步过程

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

要配置设备 R1:

  1. 配置接口。

  2. 配置 BGP。

    将导入策略应用于与设备 R2 的 BGP 对等会话。

  3. 配置发送直接路由的路由策略。

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 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. 配置接口。

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

  3. 配置 BGP。

  4. 配置多个社区,或配置具有多个成员的单个社区。

  5. 配置静态路由。

  6. 配置路由策略,用于将静态路由播发到 BGP 中,并将 BGP 社区添加到路由。

  7. 应用导出策略。

成果

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

设备 R1

设备 R2

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

验证

确认配置工作正常。

验证 BGP 路由

目的

确保设备 R1 上的路由表包含预期的 BGP 路由。

操作
  1. 在设备 R1 上,运行 命令。show route protocols bgp

  2. 在设备 R1 上,更改 导入策略中的配置。community-count

  3. 在设备 R1 上,运行 命令。show route protocols bgp

  4. 在设备 R1 上,运行 命令以查看播发的社区。show route protocols bgp extensive

意义

输出显示,在设备 R1 的路由表中,从设备 R2 发送的 BGP 路由是隐藏的。修改设备 R1 导入策略中的设置后,BGP 路由将不再隐藏。community-count