Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解如何定义 BGP 社区和扩展社区

要将 BGP 社区或扩展社区用作路由策略匹配条件,请按照以下部分所述定义社区:

定义用于路由策略匹配条件的 BGP 社区

要创建命名的 BGP 社区并定义社区成员,请包含以下 community 语句:

name 标识社区。它可以包含字母、数字和连字符 (-),最长可达 255 个字符。要在名称中包含空格,请用引号 (“ ”) 将整个名称括起来。

community-ids 标识社区的一个或多个成员。每个公共组 ID 由两个组件组成,您可以按以下格式指定:

  • as-number- 社区成员的 AS 编号。它可以是 0 到 65,535 之间的值。在指定 AS 编号时,可以使用以下表示法:

    • 数字字符串。

    • 星号 (*) - 匹配所有 AS 编号的通配符。(在社区属性的定义中,星号的功能也如中所述 表 1。)

    • 句点 (.)— 与 AS 编号中的任何一位数字匹配的通配符。

    • AS 编号组 — 单个 AS 编号或一组括在括号中的 AS 编号。以这种方式对数字进行分组允许您对整个组执行常见操作,并赋予组优先级。分组数字本身可以包含正则表达式运算符。有关正则表达式的详细信息,请参见 在社区名称中使用 UNIX 正则表达式

  • community-value- 社区成员的标识符。它可以是 0 到 65,535 之间的数字。在指定社区 ID 时,可以使用以下表示法:

    • 数字字符串。

    • 星号 (*) - 匹配所有社区值的通配符。(在社区属性的定义中,星号的功能也如中所述 表 1。)

    • 句点 (.)- 与社区值编号中的任何一位数字匹配的通配符。

    • 社区值编号组 - 单个社区值编号或括在括号中的一组社区值编号。以这种方式对正则表达式进行分组允许您对整个组执行常见操作,并赋予组优先级。分组路径本身可以包含正则表达式运算符。

您还可以在语句的选项members中包含community-ids以下已知社区名称之一(在 RFC 1997,BGP 社区属性中定义)。这将使用配置的名称或社区值标记您指定的 [policy-options policy-statement] 路由。在单独的配置中,还需要为 BGP 导入策略中的导入路由创建筛选器。

  • 禁止通告 — 不得将此社区名称中的路由播发给其他 BGP 对等方。

  • 禁止导出 — 不得在 BGP 联合边界之外播发此社区中的路由。不属于邦联的独立自治系统本身应被视为邦联。

  • no-export-subconfed — 不得将此社区中的路由播发给外部 BGP 对等方,包括 BGP 联合体内其他成员 AS 中的对等方。

您可以包括以下 IPv6 单播地址社区名称(在 RFC 5701 BGP 社区属性中定义),以适应特定于 IPv6 单播地址的扩展社区:

ipv6-target 标识策略匹配中使用的 VPN IPv6 目标单播地址。 ipv6-origin 在策略匹配中标识 IPv6 单播地址的来源。 ipv6-extended 标识策略匹配中 IPv6 单播地址的扩展格式。

在社区名称中使用 UNIX 正则表达式

指定命名 BGP 社区的成员时(在语句中 members [ community-ids ] ),可以使用 UNIX 样式的正则表达式来指定 AS 编号和成员标识符。正则表达式由两个组件组成,您可以按以下格式指定:

term 标识要匹配的字符串。

operator 指定术语必须如何匹配。 表 1 列出了社区 ID 中支持的正则表达式运算符。紧跟在后面 term 放置一个运算符,中间没有空格,但竖线 ( ) | 和短划线 () 运算符(放在两个术语之间)和括号(用括号将术语括起来)除外。 表 2 显示了如何使用社区正则表达式进行定义 community-ids 的示例。运算符是可选的。

社区正则表达式与 UNIX 正则表达式相同。两者都实现 POSIX 1003.2 中定义的扩展(或现代)正则表达式。

社区正则表达式逐个字符计算 中 term 指定的字符串。例如,如果指定 1234:5678term,则正则表达式会看到九个离散字符,包括冒号 (:),而不是用冒号分隔的两组数字 (12345678)。

注:

在 Junos OS 9.1 及更高版本中,您可以指定 RFC 4893 中定义的 4 字节 AS 编号、 BGP 对四字节 AS 编号空间的支持以及早期版本的 Junos OS 支持的 2 字节 AS 编号。

表 1: 社区属性正则表达式运算符

操作人员

匹配定义

{m,n}

至少m且最多nterm重复 . 和 都必须m是正整数,并且m必须小于 nn

{m}

termm确切重复 m 必须是正整数。

{m,}

m 或 的 term多个重复 必须 m 为正整数。

*

term个或多个重复。这相当于 {0,}

+

term一个或多个重复。这相当于 {1,}

?

term个或一个重复 。这相当于 {0,1}

|

管道两侧的两个术语之一。

在起始和结束范围之间(含)。

^

社区属性正则表达式开头的字符。

$

社区属性正则表达式末尾的字符。

[ ]

字符集。集合中的一个角色可以匹配。若要指定范围的开头和结尾,请使用连字符 (-)。若要指定一组不匹配的字符,请使用插入符号 (^) 作为左方括号 ([) 后的第一个字符。

( )

括在括号中的术语组。如果用引号引起来,中间没有空格 (“()”),则表示 null。括号和术语之间的中间空格将被忽略。

“ ”

在社区属性正则表达式中,括在引号内的字符(如空格、制表符、问号和方括号)表示特殊字符。

表 2: 社区属性正则表达式的示例

要匹配的社区属性

正则表达式

匹配示例

AS 编号为 56 或 78。社区值为任意数字。

^((56) | (78)):(.*)$

56:1000

78:64500

AS 编号为 56。社区值是以 2 开头的任何数字。

^56:(2.*)$

56:2

56:222

56:234

AS 编号为任意数字。社区值是以 5、7 或 9 结尾的任意数字。

^(.*):(.*[579])$

1234:5

78:2357

34:64509

AS 编号为 56 或 78。社区值是以 2 开头并以 2 到 8 结尾的任何数字。

^((56) |(78)):(2.*[2–8])$

56:22

56:21197

78:2678

定义用于路由策略匹配条件的 BGP 扩展社区

要创建命名的 BGP 社区并定义社区成员,请包含以下 community 语句:

name 标识社区。它可以包含字母、数字和连字符 (-),最长可达 255 个字符。要在名称中包含空格,请用引号 (“ ”) 将整个名称括起来。

community-ids 标识社区的一个或多个成员。每个公共组 ID 由三个组件组成,您可以按以下格式指定:

type 是扩展社区的类型,可以是特定 BGP 扩展社区的 16 位数字标识符,也可以是以下类型之一:

  • bandwidth—设置带宽扩展社区。指定链路带宽允许您在不同的 BGP 路径之间不平等地分配流量。

    注:

    链路带宽属性不能与按前缀负载均衡同时工作。

  • domain-id— 标识路由源自的 OSPF 域。

  • origin- 标识路径的始发位置。

  • rt-import- 标识要在路由表中安装的路由。

    注:

    您必须通过 IP 地址(而不是 AS 编号)来标识路由。

  • src-as— 标识路由源自的 AS。必须指定 AS 编号,而不是 IP 地址。

    注:

    您必须通过 AS 编号(而不是 IP 地址)来标识 AS。

  • target- 标识路径要前往的目标。

    注:

    对于 VPN 路由和转发 (VRF) 实例的导入策略,您必须至少包含一个路由目标。此外,您不能在 VRF 导入策略的路由目标中使用通配符或正则表达式。为 VRF 导入策略的路由目标配置的每个值都必须是单个值。

administrator 是管理员。它是 AS 编号或 IP 版本 4 (IPv4) 地址前缀,具体取决于扩展社区的类型。

assigned-number 标识本地提供程序。

在 Junos OS 9.1 及更高版本中,您可以指定 RFC 4893 中定义的 4 字节 AS 编号、 BGP 对四字节 AS 编号空间的支持以及早期版本的 Junos OS 支持的 2 字节 AS 编号。在纯数字格式中,可以配置 1 到 4,294,967,295 范围内的值。要配置 target 包含纯数字格式的 4 字节 AS 编号的 origin 扩展社区,请在数字末尾附加字母“L”。例如,具有 4 字节 AS 编号 334,324 且分配编号为 132 的目标社区表示为 target:334324L:132

注:

4 字节 AS 只能指定为扩展社区的一部分,因此在基本 BGP 正则表达式社区中不允许使用字母“L”。例如,要允许针对扩展社区进行匹配,请使用扩展社区表达式,例如 origin:334324L:*target:334324L:*334324L:*

在 Junos OS 9.2 及更高版本中,在为 和targetorigin扩展社区定义 4 字节 AS 编号时,也可以使用 AS 点表示法。指定用句点连接的两个整数:16-bit high-order value in decimal.16-bit low-order value in decimal. 例如,以纯数字格式表示为 65546 的 4 字节 AS 编号以 AS 点表示法表示为 1.10。

示例:定义 BGP 扩展社区

使用管理字段和分配的编号20配置10458目标社区:

配置管理字段为 10.1.1.1 且分配编号为 20 的目标社区:

配置管理字段为 10.1.1.1 且分配的编号为 20 的源社区:

在管理字段中使用 4 字节 AS 编号 100000 和分配的编号 130 配置目标社区: