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的社区。社区名称还会在路由策略中用作匹配标准或操作。创建社区的命令语法为: 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 大型社区属性格式有四个字段: largeglobal administrator:assigned number:assigned number

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

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

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

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

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

IPv6 单播地址特定BGP扩展社区属性用关键字 ipv6-targetipv6-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 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 路由作为指标为 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 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 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 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 的导入策略中的设置后 community-count ,BGP 路由将不再隐藏。