BGP 4 字节 AS 编号
4 字节自治系统编号概述
此技术概述介绍了 4 字节自治系统 (AS) 编号,以及 BGP 在混合 2 字节和 4 字节 AS 编号的网络中的操作。
2 字节 AS 编号(也称为 16 位 AS 编号或 2 位字节 AS 编号)可提供包含 65,536 个 AS 编号的池。2 字节 AS 编号范围已耗尽。4 字节 AS 编号在 RFC 4893( BGP 对四字节 AS 编号空间的支持 )中指定,可提供一个包含 4,294,967,296 个 AS 编号的池。
自 2009 年 1 月 1 日起,互联网编号分配机构 (IANA) 仅分配 4 字节 AS 编号,除非特别请求 2 字节 AS 编号。互联网工程任务组 (IETF) RFC 4893 定义了一种从 2 字节 AS 编号平滑过渡到 4 字节 AS 编号并保持向后兼容性的方法。
RFC 4893 引入了两个新的可选的传递BGP属性,AS4_PATH 和 AS4_AGGREGATOR。这些新属性用于跨不支持 4 字节 AS 编号的 BGP 发送方传播 4 字节 AS 路径信息。
RFC 4893 还引入了保留的、众所周知的 2 字节 AS 编号 AS 23456。此保留的 AS 编号在 RFC 4893 中称为 AS_TRANS。
RFC 7300, 保留最后的自治系统 (AS) 编号 和互联网草案 draft-ietf-idr-as0-06 限制在配置中使用 2 字节 AS 编号 65535、4 字节 AS 编号 4294967295UL 和 AS 编号 0。因此,当您使用这些受限制的 AS 编号时,提交操作将会失败。
也可以看看
实施 4 字节自治系统编号
Junos OS 9.1 及更高版本支持 4 字节 AS 编号。
如果您的网络当前使用 2 字节 AS 编号,则无需获取新的 4 字节 AS 编号。2 字节 AS 编号范围是 4 字节 AS 编号范围的一个子集。支持 4 字节 AS 编号的瞻博网络路由器只需在 2 字节 AS 编号前面附加一串零。例如,2 字节 AS 编号 65000 变为 4 字节 AS 编号 00000.65000。
如果您的瞻博网络路由器支持 4 字节 AS 编号,并且与不支持 4 字节 AS 编号的路由器有对等关系,则在支持 4 字节 AS 编号的路由器向新对等方播发此功能之后,相邻的 AS 输入路由表中将执行以下顺序:
-
支持 4 字节 AS 编号的路由器从只支持 2 字节 AS 编号的对等方接收播发。
-
在支持 4 字节 AS 编号的路由器上,通过在 2 字节 AS 编号前面附加一串零,将 2 字节 AS 路径转换为 AS 编号。
-
如果路径中也存在 4 字节 AS 编号,则将其与路径中的 2 字节 AS 编号合并。
-
如果存在 AGGREGATOR 和 AS4_AGGREGATOR 属性,则这些属性也会合并。
如果瞻博网络路由器支持 4 字节 AS 编号,并且与不支持 4 字节 AS 编号的路由器有对等关系,则相邻的 RIB 输出路由表中将按以下顺序执行:
-
更新消息在发送至不支持 4 字节 AS 编号的路由器之前会重新格式化。
-
支持 4 字节AS编号的路由器在 AS4_PATH 属性中发送 4 字节AS编号。
-
还会发送 AS_PATH 属性。它使用 2 字节 AS 编号进行编码。可映射的 4 字节 AS 编号(低于 64537)作为 2 字节 AS 编号发送。64536 以上的不可映射 4 字节 AS 编号以已知的 2 字节 AS 编号 AS 23456 表示。
-
单个对等组用于支持 4 字节 AS 编号的路由器以及仅支持 2 字节 AS 编号的路由器。
也可以看看
配置 4 字节自治系统编号
本节介绍如何配置 4 字节 AS 编号,以及如何验证 BGP 对等体是否支持 4 字节 AS 编号。
在运行 Junos OS 9.2 及更高版本 的路由器上,可以指定纯数字格式或采用 AS 点符号格式的 AS 编号。例如,4 字节 AS 编号 65,546 以纯数字格式表示为 65546。在运行 Junos OS 9.2 及更高版本 的路由器上,相同的 AS 编号会以 AS 点符号格式表示,如 1.10。
-
要以 AS 点符号格式配置 AS 编号,请包含该
autonomous-system语句并指定 4 字节 AS 编号。在以下示例中,AS 编号设置为1.10。user@host# set routing-options autonomous-system 1.10
-
要以纯数字格式配置 4 字节 AS 编号,请包含该
autonomous-system语句并指定 4 字节 AS 编号。在以下示例中,AS 编号设置为65546。user@host# set routing-options autonomous-system 65546
-
协商 BGP 对等体会话后,可以验证对等方是否支持 4 字节 AS 编号。要验证对等方是否支持 4 字节 AS 编号,请使用命令
show bgp neighbor。在以下示例中,对等方不支持 4 字节 AS 编号。user@host# show bgp neighbor 192.168.1.9 | match "AS" Peer: 192.168.1.9+179 AS 65056 Local: 192.168.1.3+52616 AS 65000 Peer does not support 4 byte AS extension
-
在以下示例中,对等方支持 4 字节 AS 编号。
user@host# show bgp neighbor 192.168.1.9 | match "AS" Peer: 192.168.1.10+52679 AS 1000000000 Local: 192.168.1.3+179 AS 65000 Peer supports 4 byte AS extension (peer-as 1000000000)
也可以看看
在 AS 路径中前置 4 字节 AS 编号
当地址前缀播发通过域时,该域通过在与地址前缀关联的AS路径中前置其自治系统编号 (ASN),有效地对前缀播发进行“签名”。在网络中的任意点上,AS 路径描述了一系列连接的域,这些域构成从当前点到始发域的路径。AS 路径列表中最左侧的数字是接收地址前缀播发的相邻 AS 的 ASN。数字序列表示传播此更新的 AS 的顺序。
本节介绍如何在 AS 路径的开头附加一个或多个 AS 编号。在路由来源的实际 AS 编号添加到路径之后,将 AS 编号添加到路径的开头。前置 AS 路径会使较短的 AS 路径看起来更长,因此会降低其对于 BGP 的可取性。
从 Junos OS 15.1 版开始,该 enforce-first-as 语句在 AS 路径中实施的第一个(最左侧)自治系统编号 (ASN) 是域传输时前邻接方的 ASN。
在 图 1 中,路由器 2 配置为在 AS 编号 65000 前附加 4 次 AS 1000000000。
您可以在路由器 3 上使用 show route 命令显示路由详细信息。在以下示例中,请注意路由器 3 上的 AS 路径中显示的前置 AS 编号是 AS_TRANS 编号,AS 23456。这是因为路由器 3 不支持 4 字节 AS 编号。
user@Router3# show route 1.2.3.4 detail
...
1.2.3.4/32 *[BGP/170] 01:39:55, localpref 100, from 192.168.1.3
AS path: 65000 23456 23456 23456 23456 I
您可以在路由器 4 上使用 show route 命令显示路由详细信息。在以下示例中,请注意路由器 4 上的 AS 路径中显示的前置 AS 编号为 AS 1000000000。这是因为路由器 4 支持 4 字节 AS 编号,并合并了 AS_PATH 和 AS4_PATH 属性。
user@Router4# show route 1.2.3.4 detail
...
1.2.3.4/32 *[BGP/170] 01:39:55, localpref 100, from 192.168.1.9
AS path: 65056 65000 1000000000 1000000000 1000000000 1000000000 I
也可以看看
配置 4 字节 AS 编号和 BGP 扩展社区属性
BGP 社区是一组共享公共属性的目标。您可以配置标准社区属性和扩展社区属性以包含在 BGP 更新消息中。
例如,在配置 VPN 路由和转发 (VRF) 实例时,您需要配置路由目标。路由目标是一种类型的 BGP 扩展社区属性。要创建命名的 BGP 扩展社区属性,请包含该 community 语句并指定社区成员:
community name {
members [ community-ids ];
}
要指定社区成员,您必须指定社区 ID。社区 ID 由以下格式指定的三个组件组成:
type:administrator:assigned-number
administrator某些 BGP 扩展社区属性的字段是 AS 编号。要配置target扩展社区(其中包括纯数字格式的 4 字节 AS 编号),请将字母“L”附加到数字末尾。
在以下示例中, target 使用 4 字节 AS 编号 334324 且分配的编号为的 132 社区表示为 target:334324L:132。
[edit policy-options] community vpn_blue members [ target:334324L:132 ];
如果在不支持 4 字节 AS 编号的对等路由器上显示目标扩展社区信息,则路由器将显示 target:unknown format。
也可以看看
了解通过支持 2 字节的域的支持 4 字节的路由器 AS 路径
本节介绍当支持 4 字节 AS 编号的路由器向仅支持 2 字节 AS 编号的路由器发送 AS 路径语句时,如果第一台路由器配置的 AS 编号超出 2 字节 AS 编号范围,则该路由器会发生什么情况。
在 图 2 中,路由器 1 支持 4 字节 AS 编号。路由器 1 配置为使用 4 字节 AS 编号,AS 1000000000。路由器 2 支持 2 字节 AS 编号。路由器 2 配置了 2 字节 AS 编号,AS 65056。
-
路由器 2 不接受 AS_PATH 属性中的 4 字节 AS 编号。您可以对路由器 1 使用命令进行
show bgp neighbor验证。user@Router1# show bgp neighbor 192.168.1.9 | match "AS" Peer: 192.168.1.9+179 AS 65056 Local: 192.168.1.2+64053 AS 65080 Peer does not support 4 byte AS extension
图 3 显示了四台运行 EBGP 的路由器。路由器 1、路由器 2 和 路由器 4 支持 4 字节 AS 编号。路由器 3 不支持 4 字节 AS 编号。
在这个案例中:
-
路由器 1 在 AS_PATH 属性中将 4 字节AS号AS 10000000000 发送至路由器 2。
-
路由器 2 知道路由器 3 不支持 4 字节 AS 编号。
-
路由器 2 在 AS_PATH 属性中将 AS_TRANS 编号 AS 23456(代替 4 字节 AS 编号)发送至路由器 3。
-
路由器 2 将 4 字节AS编号(AS AS4_PATH 属性中的 1000000000)发送至路由器 3。
-
由于 AS4_PATH 属性为传递属性,路由器 3 会将 AS_PATH 属性和 AS4_PATH 属性都发送至路由器 4。
-
当路由器 4 收到 AS_PATH 和 AS4_PATH 属性时,它会合并 path 语句以创建准确的 AS 路径。
您可以对路由器 3 使用命令来 show route 显示 AS 路径。在以下示例中,请注意AS编号 23456 显示在 AS 路径中,并且 AS4_PATH 属性为 Unrecognized。由于 AS4_PATH 属性是传递属性,因此会转发到下一个路由器。
user@Router3# show route 1.2.3.4 detail AS path: 65000 23456 I Unrecognized Attributes: 13 bytes
您可以对路由器 4 使用命令来 show route 显示路由详细信息。在以下示例中,请注意,当 AS 路径转换路由器 3 时(如 AS2(2 字节 AS)路径中所示,AS 编号显示为 AS_TRANS。这意味着路由器 3 看到的 AS 编号为 23456。在 AS4(4 字节 AS)路径中,AS 编号显示为 1000000000。在合并的 AS 路径中,将显示 AS 65056、AS 65000 和 AS 1000000000 的正确 AS 路径编号。
user@Router4# show route 1.2.3.4 detail ... AS path: AS2 PA[3]:65056 65000 AS_TRANS AS path: AS4 PA[2]:65056 1000000000 AS path: Merged[3]:65056 65000 1000000000 I
图 4 显示了运行 IBGP 的 4 台路由器。路由器 1、路由器 2 和路由器 4 支持 4 字节 AS 编号。路由器 3 不支持 4 字节 AS 编号。
在这个案例中:
-
路由器 1 在 AS_PATH 属性中将 4 字节AS号AS 10000000000 发送至路由器 2。
-
路由器 2 知道路由器 3 不支持 4 字节 AS 编号。
-
路由器 2 在 AS_PATH 属性中将 AS_TRANS 编号 AS 23456(代替 4 字节 AS 编号)发送至路由器 3。
-
路由器 3 会将 AS_PATH 属性和 AS4_PATH 属性都发送至路由器 4。
-
当路由器 4 收到 AS_PATH 和 AS4_PATH 属性时,它会合并 path 语句以创建准确的 AS 路径。
您可以对路由器 2 使用命令来 show route 显示路由详细信息。在以下示例中,请注意 AS 路径显示为 1000000000。
user@Router2# show route 1.2.3.4 detail ... AS path: 1000000000
您可以对路由器 3 使用命令来 show route 显示路由详细信息。在以下示例中,请注意 AS 路径显示为 65000 23456。
user@Router3# show route 1.2.3.4 detail ... AS path: 65000 23456 I
您可以对路由器 4 使用命令来 show route 显示路由详细信息。在以下示例中,请注意合并后的 AS 路径显示为 65000 1000000000。
user@Router4# show route 1.2.3.4 detail ... AS path: 65000 1000000000 I
也可以看看
了解 4 字节 AS 编号和路由识别符
路由识别符 (RD) 是一个 8 字节字段,前缀为服务提供商客户的 IPv4 地址。生成的 12 字节字段是唯一的 VPN-IPv4 地址。BGP 消息中的 RD 由两个主要字段组成,类型字段 (2 个字节)和值字段(6 个字节)。类型字段确定应如何解释值字段。
路由识别符配置为 6 字节值,您可以将其指定为 as-number:,其中as-number是分配的 AS 编号number,(也称为管理编号或分配编号子字段)是任意 2 字节或 4number 字节值。AS 编号的范围可以是 1 到 4,294,967,295。如果 AS 编号是 2 字节值,则管理编号为 4 字节值。如果 AS 编号是 4 字节值,则管理编号为 2 字节值。
由 4 字节 AS 编号和 2 字节管理编号组成的 RD,在 RFC 4364《 BGP/MPLS IP 虚拟专用网络》中定义为 2 类路由识别符。
要使用 4 字节 AS 编号配置 RD,请将字母“L”附加到编号末尾。在以下示例中,4 字节 AS 编号为 7765000,管理编号为 1000:
user@Router1# set routing-instances 4B route-distinguisher 7765000L:1000
如果正在配置的路由器是不支持 4 字节AS编号的路由器的BGP 对等体,则还需要配置本地 AS 编号,如 使用 4 字节 AS 编号在支持 4 字节的路由器与支持 2 字节的路由器之间建立对等关系中所述。要配置本地 AS 编号,请包含 local-as 该语句,指定要使用的 2 字节 AS 编号 (65001),并包括该 private 选项。
user@Router1# set routing-instances 4B protocols bgp group 4B2Bpeers local-as 65001 private
也可以看看
了解 4 字节 AS 编号和路由环路检测
BGP 中最重要的功能之一是使用 AS_PATH 属性在自治系统级别进行路由环路检测。AS_PATH 的一种简单思路是,它是路由到达其目标时所经过的自治系统列表。通过 路由器 在从相邻AS接收的 AS_PATH 中检查自己的AS号来检测并避免环路。
本节介绍路由环路检测如何适用于支持和不支持 4 字节 AS 编号的路由器。 图 5 显示了一个可能出现 BGP 环路的小型网络。
在第一个示例中,EBGP 路由路由 10.1.2.3 首先由路由器 1 播发。路径中的第一个 AS 是路由器 1 上配置的 AS 64596。路径中的第二个 AS 是路由器 2 上配置的 AS 4200000000。AS 4200000000 在 AS4_路径属性中发送,AS_TRANS 编号 AS 23456 在 AS_PATH 属性中发送至路由器 3。路径中的第三个 AS 是路由器 3 上配置的 AS 65003。
show route命令输出显示了由路由器 3 向路由器 4 播发的路由 10.1.2.3 的 AS 路径。在命令输出中show route,您首先会看到 AS 64596。因为路由器 3 不支持 4 字节 AS 编号,所以您将看到第二个 AS 23456。由于路由器 2 使用本地 AS 65000 与路由器 3 建立对等关系,因此您会看到第三个 AS 65000。AS 65003 不在命令输出中show route,因为命令是在使用 AS 65003 配置的路由器上输入的。
user@Router3# show route advertising-protocol bgp 192.168.1.2... Prefix Nexthop MED Lclpref AS path 10.2.3.4/32 Self 65000 23456 64596 I
在这种情况下,当路由器 4 在路径中看到自己的 AS 编号 AS 64596 时,将检测路由环路。
在第二个示例中,EBGP 路由路由 10.3.2.1 首先由路由器 4 播发。路径中的第一个 AS 是路由器 4 上配置的 AS 60596。路径中的第二个 AS 是路由器 3 上配置的 AS 65003。路径中的第三个 AS 是路由器 2 上配置的 AS 4200000000。
show route命令输出显示了由路由器 2 向路由器 1 播发的路由 10.3.2.1 的 AS 路径。在命令输出中show route,您首先会看到 AS 64596,然后会看到 AS 65003。AS 4200000000 不在命令输出中show route,因为命令是在使用 AS 4200000000 配置的路由器上输入的。
user@Router2# show route advertising-protocol bgp 192.168.1.10... Prefix Nexthop MED Lclpref AS path 10.3.2.1/32 Self 65003 64596 I
当路由器 1 在路径中看到自己的 AS 编号 AS 64596 时,将检测路由环路。
也可以看看
使用 2 字节 AS 编号在支持 4 字节的路由器与支持 2 字节的路由器之间建立对等关系 AS
本节介绍当支持 4 字节 AS 编号的路由器与仅支持 2 字节 AS 编号的路由器建立对等关系(如果两台路由器均配置了 2 字节 AS 编号范围内的 AS 编号)时会发生什么情况。
在 图 6 中,路由器 1 运行的是支持 4 字节 AS 编号的 Junos OS 9.2 版。路由器 1 配置为使用 2 字节 AS 编号,AS 12596。路由器 2 运行的是 Junos OS 8.5 版,支持 2 字节 AS 编号。路由器 2 配置了 2 字节 AS 编号,AS 60000。
-
以下示例显示了路由器 1 配置的相关部分。
user@Router1# show configuration … autonomous-system 12596; … local-address 192.168.1.10; export static-to-bgp; peer-as 60000;
-
要验证路由 1.2.3.4 的 AS 路径是否包含 AS 12596,请对路由器 2 使用
show route命令。以下示例显示 BGP 对等体会话以正常方式建立,并且路由 1.2.3.4 的 AS 路径包含 AS 12596:user@Router2# show route 1.2.3.4 1.2.3.4/32 *[BGP/170] 00:01:29, localpref 100, from 192.168.1.10 AS path: 12596 I > via at-0/1/0.1001 -
要显示记录在路由器 1 上的会话建立消息,请使用命令
show log messages。以下示例显示路由器 1 发现路由器 2 不支持 4 字节 AS 编号:user@Router1# show log messages Nov 7 09:41:39.443493 bgp_4byte_aspath_add_cap():153 AS4-Peer 192.168.1.9 (External AS 60000)(SEND): 4 byte AS capability added, AS 12596 Nov 7 09:41:39.443582 bgp_send: sending 67 bytes to 192.168.1.9 (External AS 60000) […] Nov 7 09:41:39.448055 bgp_4byte_aspath_adjust():1279 AS4-Peer 192.168.1.9 (External AS 60000)(SEND): Adjust BGP update to Old/New BGP speaker format Nov 7 09:41:39.448132 bgp_4byte_aspath_adjust():1290 AS4-Peer 192.168.1.9 (External AS 60000)(SEND): Cached information of previous update format is not used Nov 7 09:41:39.448162 bgp_generate_2byte_aspath():422 AS4-Peer 192.168.1.9 (External AS 60000)(SEND): Generating 2 byte AS path from 4 byte as-path Nov 7 09:41:39.448198 bgp_send: sending 64 bytes to 192.168.1.9 (External AS 60000)
也可以看看
使用 4 字节 AS 编号在支持 4 字节的路由器与支持 2 字节的路由器之间建立对等关系 AS
本部分介绍当支持 4 字节 AS 编号的路由器与仅支持 2 字节 AS 编号的路由器建立对等关系时,如果第一台路由器配置了 2 字节 AS 编号范围之外的 AS 编号,则会发生什么情况。
在 图 7 中,路由器 2 运行的是支持 4 字节 AS 编号的 Junos OS 9.2 版。路由器 2 配置为使用 4 字节 AS 编号,AS 1000000。路由器 3 运行的是 Junos OS 8.5 版,支持 2 字节 AS 编号。路由器 3 配置了 2 字节 AS 编号,AS 60000。
您可以配置一个本地 AS 编号,仅在与 BGP 邻接方建立 BGP 会话期间使用它,但在发送至外部 BGP 对等方的 AS 路径中将其隐藏。要配置本地 AS 编号,请包含 local-as 该语句,指定要使用的 2 字节 AS 编号 65530,并包括该 private 选项。使用此配置,发送至外部对等方的 AS 路径中仅包含全局 AS 编号 1000000。以下示例显示了路由器 2 配置的相关部分:
user@Router2# show configuration
…
autonomous-system 1000000;
…
local-address 192.168.1.9;
export static-to-bgp;
neighbor 192.168.1.3 {
peer-as 60000;
local-as 65530 private;
}
路由器 3 上的对等 AS 编号应等于路由器 1 上的本地 AS 编号。以下示例显示了路由器 3 配置的相关部分:
user@Router3# show configuration
…
autonomous-system 60000;
…
local-address 192.168.1.3;
neighbor 192.168.1.9 {
peer-as 65530;
要验证路由 22.1.2.3 的 AS 路径是否包含 AS 65530,请对路由器 3 使用 show route 命令。以下示例显示 BGP 对等体会话已建立,并且路由 22.1.2.3 的 AS 路径包含 AS 65530:
user@Router3# show route 22.1.2.3
...
22.1.2.3/32 *[BGP/170] 01:39:55, localpref 100, from 192.168.1.9
AS path: 65530 I
> via so-1/0/3.0
也可以看看
示例:在 BGP 网络的 AS 路径中强制实施正确的自治系统编号
此示例说明如何 enforce-first-as 将在层次结构级别设置 [edit protocols bgp] 的语句用作安全措施。配置此语句将创建一致性检查,以确保 BGP 对等体是路由信息的合法发送方。
要求
开始之前,请设置至少包含三个自治系统的 BGP 网络。三台独立的路由器足以满足需求。
概述
该 enforce-first-as 语句确保 AS 路径中的第一个(最左侧)自治系统编号 (ASn) 与播发邻接方的 ANS 一致 AS。
在设置拓扑时,路由器 C 在 BGP 中向路由器 B 播发静态路由,然后路由器 B 将路由重新播发给路由器 A。然后,将指向路由器 A 的导出策略添加到路由器 B。最后, enforce-first-as 在路由器 A 上配置指向路由器 B 的语句。当路由器 A 获取 AS 路径时,它会检查 AS 路径中最左侧的 ASN 是否为前邻接方的 ASN,并使来自路由器 B 的路由无效。
拓扑结构
配置 enforce-first-as 语句以检查路由
CLI 快速配置
要快速配置此示例的初始配置,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改任何必要的详细信息以匹配您的网络配置,然后将命令复制并粘贴到层次结构级别的 [edit] CLI 中。
路由器 A 上的初始配置
set interfaces ge-1/0/0 unit 0 family inet address 192.0.2.1/29 set interfaces ge-1/0/0 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.1/32 set routing-options router-id 10.127.0.1 set routing-options autonomous-system 65541 set protocols mpls interface ge-1/0/0.0 set protocols bgp group pe type external set protocols bgp group pe peer-as 65542 set protocols bgp group pe neighbor 192.0.2.2 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface ge-1/0/0.0 set protocols ldp interface ge-1/0/0.0 set protocols ldp interface lo0.0
路由器 B 上的初始配置
set interfaces ge-0/0/0 unit 0 family inet address 192.0.2.2/29 set interfaces ge-0/0/0 unit 0 family mpls set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.1/29 set interfaces ge-0/0/1 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.2/32 set routing-options router-id 10.127.0.2 set routing-options autonomous-system 65542 set protocols bgp group pe1 type external set protocols bgp group pe1 peer-as 65541 set protocols bgp group pe1 neighbor 192.0.2.1 set protocols bgp group pe3 type external set protocols bgp group pe3 peer-as 65543 set protocols bgp group pe3 neighbor 198.51.100.2
路由器 C 上的初始配置
set interfaces ge-1/0/0 unit 0 family inet address 198.51.100.2/29 set interfaces ge-1/0/0 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.3/32 set routing-options router-id 10.127.0.3 set routing-options autonomous-system 65543 set protocols mpls interface ge-1/0/0.0 set protocols bgp group pe type external set protocols bgp group pe peer-as 65542 set protocols bgp group pe neighbor 198.51.100.1 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface ge-1/0/0.0 set protocols ldp interface ge-1/0/0.0 set protocols ldp interface lo0.0
过程
分步程序
-
在路由器 C 上配置静态路由。
C-re0# set routing-options static route 198.51.100.17/29 next-hop 198.51.100.20 C-re0# set routing-options static route 198.51.100.17/29 readvertise C-re0# commit
-
为静态路由配置导出策略。
C-re0# set policy-options policy-statement export-static from protocol bgp C-re0# set policy-options policy-statement export-static then accept C-re0# set protocols bgp group pe export export-static C-re0# commit
-
验证静态路由是否可以直通路由器 B 和路由器 A。
B-re0# run show route 198.51.100.17 inet.0: 49 destinations, 49 routes (49 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 198.51.100.17/29 *[BGP/170] 00:11:40, localpref 100 AS path: 65543 I, validation-state: unverified > to 198.51.100.2 via ge-0/0/1.0 A-re0# run show route 198.51.100.17 inet.0: 49 destinations, 49 routes (49 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 198.51.100.17/29 *[BGP/170] 00:10:31, localpref 100 AS path: 65542 65543 I, validation-state: unverified > to 192.0.2.2 via ge-1/0/0.0请注意,在路由器 A 上,路由显示的 AS 路径为 65542 65543。从路由器 B 到路由器 A 的路由已在 AS 路径中前置路由器 A 的 ASN。
-
设置导出策略以从路由器 B 前置 ASN。
B-re0# set policy-options policy-statement as-prepender from neighbor 198.51.100.2 B-re0# set policy-options policy-statement as-prepender then as-path-prepend 65555 B-re0# set protocols bgp group pe1 export as-prepender B-re0# commit
-
验证路由器 A 上的路由 198.51.100.17。
A-re0# run show route 198.51.100.17 inet.0: 49 destinations, 49 routes (49 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 198.51.100.17/29 *[BGP/170] 00:00:50, localpref 100 AS path: 65555 65542 65543 I, validation-state: unverified > to 192.0.2.2 via ge-1/0/0.0 [edit] A-re0#请注意,ASN 65555 已前置到 AS 路径。
-
在路由器 A 上配置
enforce-first-as语句。A-re0# set protocols bgp enforce-first-as A-re0# commit
再次检查路由时,您会看到路由 198.51.100.17 不再在路由器 A 上通过。
验证
验证 BGP 会话
目的
验证是否已建立 BGP 会话,以及路由器已与哪些邻接方建立对等会话。
行动
在操作模式下,运行命令 show bgp summary 。
B-re0> show bgp summary
Groups: 2 Peers: 2 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
192.0.2.1 65541 367 369 0 0 2:43:57 0/0/0/0 0/0/0/0
198.51.100.2 65543 369 368 0 0 2:44:00 0/0/0/0 0/0/0/0
意义
第一行显示配置的组数以及启动或关闭的对等方数。此输出显示有两个对等方(192.0.2.1 和 198.51.100.2)正常运行。表部分显示 inet.0 表中没有路径。我们可以看到路由器 B 有两个对等方,65541 和 65543。当列 State 显示用斜杠分隔的三个数字时,BGP 会话已启动。
验证静态路由
目的
验证静态路由是否正在从路由器 C 导出到路由器 B 和 A。
行动
在操作模式下,运行命令 show bgp neighbor 。
C-re0#> show bgp neighbor Peer: 198.51.100.1+179 AS 65542 Local: 198.51.100.2+62588 AS 65543 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ export-static ]
在操作模式下,运行命令 show bgp summary 。
B-re0> show bgp summary
Groups: 2 Peers: 2 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
1 1 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
192.0.2.1 65541 8 10 0 0 2:59 0/0/0/0 0/0/0/0
198.51.100.2 65543 10 10 0 0 3:02 1/1/1/0 0/0/0/0
在操作模式下,运行命令 show route protocol bgp 。
A-re0> show route protocol bgp
inet.0: 49 destinations, 49 routes (49 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
198.51.100.17/29 *[BGP/170] 00:12:35, localpref 100
AS path: 65542 65543 I, validation-state: unverified
> to 192.0.2.2 via ge-1/0/0.0
iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
mpls.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
inet6.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
意义
使用该 show bgp neighbor 命令,您可以按名称查看导出策略。
使用该 show bgp summary 命令,您可以看到inet.0表中现在有一个路由,表明该表已学习此路由。
该 show route protocol bgp 命令确认路由器正在学习路由。您可以看到路由和 AS 路径。请注意,在路由器 A 中,我们可以看到 AS 路径前置了路由器 C 和 B 的 ASN(65543 和 65542)。
验证预置导出策略
目的
验证 ASN 是否在从路由器 B 接收的路由器的 AS 路径中。
show bgp neighbor。列出此路由器连接到的 BGP 路由器。显示路由器已与哪些邻接方建立了对等会话。
显示 BGP 摘要。列出 BGP 组、对等方和会话状态信息。帮助确定是否已建立 BGP 会话。
show route protocol bgp。列出从 BGP 获知的路由。确认路由器仅从所需邻接方学习路由。
行动
在操作模式下,运行命令 show route protocol bgp 。
A-re0> show route protocol bgp
inet.0: 49 destinations, 49 routes (49 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
198.51.100.17/29 *[BGP/170] 00:00:24, localpref 100
AS path: 65555 65542 65543 I, validation-state: unverified
> to 192.0.2.2 via ge-1/0/0.0
iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
mpls.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
inet6.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
意义
您可以看到,65555 已前置到 AS 路径中。
验证 enforce-first-as 语句是否有效
目的
验证路由器是否仅从所需邻接方学习路由。
行动
验证路由 198.51.100.17。
A-re0> show route 198.51.100.17 all detail
inet.0: 49 destinations, 49 routes (48 active, 0 holddown, 1 hidden)
198.51.100.17/29 (1 entry, 0 announced)
BGP /-101
Next hop type: Router, Next hop index: 581
Address: 0x9db5ad0
Next-hop reference count: 1
Source: 192.0.2.2
Next hop: 192.0.2.2 via ge-1/0/0.0, selected
Session Id: 0x141
State: <Hidden Ext>
Local AS: 65541 Peer AS: 65542
Age: 1w2d 23:48:47
Validation State: unverified
Task: BGP_65542.192.0.2.2
AS path: 65555 65542 65543 I
Localpref: 100
Router ID: 10.127.0.2
Hidden reason: fails enforce-first-as check
如果发出命令 show route ,则不显示路由信息。
A-re0> show route 198.51.100.17 A-re0>
意义
静态路由已隐藏,因为其中包含不相关的 ASN,并且 enforce-first-as 已配置该语句。