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的社区。社区名称还会在路由策略中用作匹配标准或操作。创建社区的命令语法为: policy-options community name members [community-ids]。它们 community-ids 要么是单个社区值,要么是多个社区值。当将多个值分配给社区名称时,路由设备会将其解释为社区值的逻辑 AND。换句话说,在分配社区名称之前,路由必须具有所有配置的值。

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

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

为标准社区属性和扩展社区属性指定社区标识时,可以使用 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 中定义的本地值进行编码。您可以在层次结构级别配置 [edit policy-options community community-name members] [edit routing-options static route ip-address community] BGP 大型社区。BGP 大型社区属性格式有四个字段: large:global administrator:assigned number:assigned number。

注意:在 Junos OS 上,静态路由仅支持配置中的标准(本机)BGP 社区。静态路由不支持扩展社区。

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

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

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

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

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

注意:

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

示例:配置路由策略以将带有特定社区标记的 BGP 路由重新分发到 IS-IS 中

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

要求

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

概述

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

图 1:将带有特定社区标签的 BGP 路由重新分发到 IS-IS Redistributing BGP Routes with a Specific Community Tag into 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 中所有设备的配置。第 #d10e65__d10e386 节介绍了设备 C 和设备 E 上的步骤。

配置

过程

CLI 快速配置

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

设备 A

设备 B

设备 C

设备 D

设备 E

分步程序

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

要配置设备 E:

  1. 配置接口。

  2. 配置 statics 将社区属性添加到 Edu 静态路由的策略。

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

  4. 配置静态路由。

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

分步程序

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

要配置设备 C:

  1. 配置接口。

  2. 配置 IBGP。

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

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

  5. 配置 send-isis-and-direct 策略,通过 EBGP 将路由重新分配给设备 E。

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

  6. 配置 EBGP 并应用 send-isis-and-direct 策略。

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

结果

在配置模式下,输入 show interfaces、 show protocols、 show policy-options和 show 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 路由作为指标为 73 的 IS-IS 外部路由在设备 D 的路由表中。如果设备 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 Policy That Removes Communities的 BGP 策略

配置

CLI 快速配置

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

设备 R1

设备 R2

过程

分步程序

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

要配置设备 R1:

  1. 配置接口。

  2. 配置 BGP。

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

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

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

分步程序

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

要配置设备 R2:

  1. 配置接口。

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

  3. 配置 BGP。

  4. 配置多个社区,或配置包含多个成员的单个社区。

  5. 配置静态路由。

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

  7. 应用导出策略。

结果

在配置模式下,输入 show interfaces、 show protocols、 show policy-options和 show 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 Policy with a Limit on the Number of Communities Accepted

配置

CLI 快速配置

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

设备 R1

设备 R2

过程

分步程序

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

要配置设备 R1:

  1. 配置接口。

  2. 配置 BGP。

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

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

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

分步程序

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

要配置设备 R2:

  1. 配置接口。

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

  3. 配置 BGP。

  4. 配置多个社区,或配置包含多个成员的单个社区。

  5. 配置静态路由。

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

  7. 应用导出策略。

结果

在配置模式下,输入 show interfaces、 show protocols、 show policy-options和 show 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 的导入策略中的设置后 community-count ,BGP 路由将不再隐藏。