了解如何定义 BGP 社区和扩展社区
要将 BGP 社区或扩展社区用作路由策略匹配条件,请按照以下部分所述定义社区:
定义用于路由策略匹配条件的 BGP 社区
要创建命名的 BGP 社区并定义社区成员,请包含以下 community
语句:
[edit policy-options] community name { invert-match; members [ community-ids ]; }
name 标识社区。它可以包含字母、数字和连字符 (-),最长可达 255 个字符。要在名称中包含空格,请用引号 (“ ”) 将整个名称括起来。
community-ids 标识社区的一个或多个成员。每个公共组 ID 由两个组件组成,您可以按以下格式指定:
as-number:community-value;
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 单播地址的扩展社区:
[edit policy-options] policy-statement send-direct { term 1 { then { community add community-name; community add community-name; community add community-name; accept; } } } community community-name members [ipv6-target:<IPv6 unicast address>:operator-defined local values ipv6-target:<IPv6 unicast address>:operator-defined local values
]; community community-name members [ipv6-origin:<IPv6 unicast address>:operator-defined local values ipv6-origin:<IPv6 unicast address>:operator-defined local values
]; community community-name members [ipv6-extended:type-and-subtype value:<IPv6 unicast address>:operator-defined local values
ipv6-extended:type-and-subtype value:<IPv6 unicast address>:operator-defined local values ];
ipv6-target 标识策略匹配中使用的 VPN IPv6 目标单播地址。 ipv6-origin 在策略匹配中标识 IPv6 单播地址的来源。 ipv6-extended 标识策略匹配中 IPv6 单播地址的扩展格式。
在社区名称中使用 UNIX 正则表达式
指定命名 BGP 社区的成员时(在语句中 members [ community-ids ]
),可以使用 UNIX 样式的正则表达式来指定 AS 编号和成员标识符。正则表达式由两个组件组成,您可以按以下格式指定:
term operator;
term 标识要匹配的字符串。
operator 指定术语必须如何匹配。 表 1 列出了社区 ID 中支持的正则表达式运算符。紧跟在后面 term 放置一个运算符,中间没有空格,但竖线 ( ) |
和短划线 (–
) 运算符(放在两个术语之间)和括号(用括号将术语括起来)除外。 表 2 显示了如何使用社区正则表达式进行定义 community-ids
的示例。运算符是可选的。
社区正则表达式与 UNIX 正则表达式相同。两者都实现 POSIX 1003.2 中定义的扩展(或现代)正则表达式。
社区正则表达式逐个字符计算 中 term
指定的字符串。例如,如果指定 1234:5678
为 term
,则正则表达式会看到九个离散字符,包括冒号 (:
),而不是用冒号分隔的两组数字 (1234
和 5678
)。
在 Junos OS 9.1 及更高版本中,您可以指定 RFC 4893 中定义的 4 字节 AS 编号、 BGP 对四字节 AS 编号空间的支持以及早期版本的 Junos OS 支持的 2 字节 AS 编号。
操作人员 |
匹配定义 |
---|---|
|
至少 |
|
的 |
|
|
|
零 |
|
的 |
|
零 |
|
管道两侧的两个术语之一。 |
|
在起始和结束范围之间(含)。 |
|
社区属性正则表达式开头的字符。 |
|
社区属性正则表达式末尾的字符。 |
|
字符集。集合中的一个角色可以匹配。若要指定范围的开头和结尾,请使用连字符 ( |
|
括在括号中的术语组。如果用引号引起来,中间没有空格 (“ |
|
在社区属性正则表达式中,括在引号内的字符(如空格、制表符、问号和方括号)表示特殊字符。 |
要匹配的社区属性 |
正则表达式 |
匹配示例 |
---|---|---|
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
语句:
[edit policy-options] community name { members [ community-ids ]; }
name
标识社区。它可以包含字母、数字和连字符 (-),最长可达 255 个字符。要在名称中包含空格,请用引号 (“ ”) 将整个名称括起来。
community-ids
标识社区的一个或多个成员。每个公共组 ID 由三个组件组成,您可以按以下格式指定:
type:administrator:assigned-number
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 及更高版本中,在为 和target
origin
扩展社区定义 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
目标社区:
[edit policy-options] community test-a members [ target:10458:20 ];
配置管理字段为 10.1.1.1 且分配编号为 20 的目标社区:
[edit policy-options] community test-a members [ target:10.1.1.1:20 ];
配置管理字段为 10.1.1.1 且分配的编号为 20 的源社区:
[edit policy-options] community test-a members [ origin:10.1.1.1:20 ];
在管理字段中使用 4 字节 AS 编号 100000 和分配的编号 130 配置目标社区:
[edit policy-options] community test-b members [ target:100000L:130 ];