帮助我们改善您的体验。

让我们了解您的想法。

您是否能抽出两分钟的时间完成一份问卷调查?

Announcement: Try the Ask AI chatbot for answers to your technical questions about Juniper products and solutions.

close
header-navigation
keyboard_arrow_up
close
keyboard_arrow_left
BGP 用户指南
Table of Contents Expand all
list Table of Contents

机器翻译对您有帮助吗?

starstarstarstarstar
Go to English page
免责声明:

我们将使用第三方机器翻译软件翻译本页面。瞻博网络虽已做出相当大的努力提供高质量译文,但无法保证其准确性。如果对译文信息的准确性有任何疑问,请参阅英文版本. 可下载的 PDF 仅提供英文版.

BGP 4 字节 AS 编号

date_range 18-Jan-25

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 字节范围的一个子集。支持 4 字节 AS 编号的瞻博网络路由器只需在 2 字节 AS 编号前面附加一串零。例如,2 字节 AS 编号 65000 变为 4 字节 AS 编号 00000.65000。

如果您的瞻博网络路由器支持 4 字节 AS 编号,并且与不支持 4 字节 AS 编号的路由器存在对等关系,则在支持 4 字节 AS 编号的路由器向新对等方播发此功能后,相邻的 RIB 输入路由表中将发生以下顺序:

  1. 支持 4 字节 AS 编号的路由器从只支持 2 字节 AS 编号的对等方接收播发。

  2. 在支持 4 字节 AS 编号的路由器上,2 字节 AS 路径通过在 2 字节 AS 编号前面附加一串零来转换为 4 字节 AS 编号。

  3. 如果路径中也存在 4 字节 AS 编号,则将其与路径中的 2 字节 AS 编号合并。

  4. 如果聚合器和AS4_AGGREGATOR属性存在,则这些属性也会合并。

如果您的瞻博网络路由器支持 4 字节 AS 编号,并且与不支持 4 字节 AS 编号的路由器存在对等关系,则相邻的 RIB-out 路由表中将按以下顺序执行:

  1. 更新消息在发送到不支持 4 字节 AS 编号的路由器之前会重新格式化。

  2. 支持 4 字节 AS 编号的路由器在 AS4_PATH 属性中发送 4 字节 AS 编号。

  3. 还会发送 AS_PATH 属性。它使用 2 字节 AS 编号进行编码。可映射的 4 字节 AS 编号(低于 64537)作为 2 字节 AS 编号发送。64536 以上的不可映射 4 字节 AS 编号以已知的 2 字节 AS 编号 (AS 23456) 表示。

  4. 单个对等组,用于支持 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 点表示法格式配置 4 字节 AS 编号,请包含该 autonomous-system 语句并指定 4 字节 AS 编号。在以下示例中,AS 编号设置为 1.10

    content_copy zoom_out_map
    user@host# set routing-options autonomous-system 1.10
    
  • 要以纯数字格式配置 4 字节 AS 编号,请包含该 autonomous-system 语句并指定 4 字节 AS 编号。在以下示例中,AS 编号设置为 65546

    content_copy zoom_out_map
    user@host# set routing-options autonomous-system 65546
    
  • 协商 BGP 对等会话后,可以验证对等方是否支持 4 字节 AS 编号。要验证对等方是否支持 4 字节 AS 编号,请使用 show bgp neighbor 命令。在以下示例中,对等方不支持 4 字节 AS 编号。

    content_copy zoom_out_map
    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 编号。

    content_copy zoom_out_map
    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 编号

当地址前缀播发经过域时,域会将其自治系统编号 (ASN) 前置到与地址前缀关联的 AS 路径上,从而有效地对前缀播发进行“签名”。在网络中的任意点上,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 前面附加 AS 1000000000 4 次。

图 1: EBGP,4 字节 AS 编号已前置到 AS 路径EBGP,4 字节 AS 编号已前置到 AS 路径

您可以使用路由器 3 上的 show route 命令显示路由详细信息。在以下示例中,请注意路由器 3 上的 AS 路径中显示的前置 AS 编号是AS_TRANS编号 AS 23456。这是因为路由器 3 不支持 4 字节 AS 编号。

content_copy zoom_out_map
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 属性。

content_copy zoom_out_map
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 语句并指定社区成员:

content_copy zoom_out_map
community name {
    members [ community-ids ];
}

要指定社区成员,必须指定社区 ID。公共组 ID 由三个组件组成,您按以下格式指定:

content_copy zoom_out_map
type:administrator:assigned-number

administrator某些 BGP 扩展社区属性的字段是 AS 编号。要配置 target 扩展社区(包括纯数字格式的 4 字节 AS 编号),请将字母“L”附加到数字末尾。

在以下示例中, target 具有 4 字节 AS 编号 334324 且分配的编号为 的 132 社区表示为 target:334324L:132

content_copy zoom_out_map
[edit policy-options]
community vpn_blue members [ target:334324L:132 ];
注:

如果在不支持 4 字节 AS 编号的对等路由器上显示目标扩展社区信息,路由器将显示 target:unknown format

了解通过支持 2 字节的域的支持 4 字节的路由器 AS 路径

本节介绍当支持 4 字节 AS 编号的路由器将 AS 路径语句发送到仅支持 2 字节 AS 编号的路由器(如果第一个路由器配置的 AS 编号超出 2 字节 AS 编号范围)时会发生什么情况。

路由器 1 支持 图 2 4 字节 AS 编号。路由器 1 配置为使用 4 字节 AS 编号,AS 1000000000。路由器 2 支持 2 字节 AS 编号。路由器 2 配置了 2 字节 AS 编号 AS 65056。

图 2: 支持 4 字节的路由器 AS 路径到支持 2 字节的路由器支持 4 字节的路由器 AS 路径到支持 2 字节的路由器
  • 路由器 2 不接受 AS_PATH 属性中的 4 字节 AS 编号。您可以使用路由器 1 上的命令进行 show bgp neighbor 验证。

    content_copy zoom_out_map
    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 编号。

图 3: 通过 2 字节 AS 域的 EBGP 4 字节 AS 路径通过 2 字节 AS 域的 EBGP 4 字节 AS 路径

在这种情况下:

  • 路由器 1 在 AS_PATH 属性中将 4 字节 AS 编号 1000000000 发送至路由器 2。

  • 路由器 2 知道路由器 3 不支持 4 字节 AS 编号。

  • 路由器 2 在 AS_PATH 属性中将 AS_TRANS 编号 AS 23456(代替 4 字节编号)发送至路由器 3。

  • 路由器 2 在 AS4_PATH 属性中将 4 字节 AS 编号 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 属性是传递属性,因此会转发到下一个路由器。

content_copy zoom_out_map
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 100000000 的正确 AS 路径编号。

content_copy zoom_out_map
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 显示了 4 个运行 IBGP 的路由器。路由器 1、路由器 2 和路由器 4 支持 4 字节 AS 编号。路由器 3 不支持 4 字节 AS 编号。

图 4: 通过 2 字节 AS 域的 IBGP 4 字节 AS 路径通过 2 字节 AS 域的 IBGP 4 字节 AS 路径

在这种情况下:

  • 路由器 1 在 AS_PATH 属性中将 4 字节 AS 编号 1000000000 发送至路由器 2。

  • 路由器 2 知道路由器 3 不支持 4 字节 AS 编号。

  • 路由器 2 在 AS_PATH 属性中将 AS_TRANS 编号 AS 23456(代替 4 字节编号)发送至路由器 3。

  • 路由器 3 会将 AS_PATH 属性和 AS4_PATH 属性都发送至路由器 4。

  • 当路由器 4 收到 AS_PATH 和 AS4_PATH 属性时,它会合并 path 语句以创建准确的 AS 路径。

您可以使用路由器 2 上的命令显示 show route 路由详细信息。在以下示例中,请注意 AS 路径显示为 1000000000。

content_copy zoom_out_map
user@Router2# show route 1.2.3.4 detail
...
AS path: 1000000000

您可以使用路由器 3 上的命令显示 show route 路由详细信息。在以下示例中,请注意 AS 路径显示为 65000 23456。

content_copy zoom_out_map
user@Router3# show route 1.2.3.4 detail
...
AS path: 65000 23456 I

您可以使用路由器 4 上的命令显示 show route 路由详细信息。在以下示例中,请注意合并的 AS 路径显示为 65000 1000000000。

content_copy zoom_out_map
user@Router4# show route 1.2.3.4 detail
...
AS path: 65000 1000000000 I

了解 4 字节 AS 编号和路由区分符

路由识别符 (RD) 是一个以服务提供商客户的 IPv4 地址为前缀的 8 字节字段。生成的 12 字节字段是唯一的 VPN-IPv4 地址。BGP 消息中的 RD 由两个主要字段组成,即类型字段(2 字节)和值字段(6 字节)。类型字段确定应如何解释值字段。

路由识别符配置为 6 字节值,您可以将其指定为 as-number:,其中 as-number 是分配的 AS 编号,number(也称为管理编号或分配的编号子字段)是任意 2 字节或number 4 字节值。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:

content_copy zoom_out_map
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 选项。

content_copy zoom_out_map
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 环路潜力的小型网络。

图 5: 4 字节 AS 编号和环路检测4 字节 AS 编号和环路检测

在第一个示例中,EBGP 路由,路由 10。1.2.3,首先由路由器 1 播发。路径中的第一个 AS 是在路由器 1 上配置的 AS 64596。路径中的第二个 AS 是在路由器 2 上配置的 AS 4200000000 。AS 4200000000 在 AS4_path 属性中发送,AS_TRANS编号 AS 23456 在 AS_PATH 属性中发送到路由器 3。路径中的第三个 AS 是路由器 3 上配置的 AS 65003。

show route命令输出显示路由 10 的 AS 路径。路由器 3 向路由器 4 播发的 1.2.3。在命令输出中show route,您首先看到 AS 64596。因为路由器 3 不支持 4 字节 AS 编号,所以您将看到第二个 AS 23456。由于路由器 2 使用了本地 AS 65000 与路由器 3 建立对等关系,因此您会看到第三个 AS 65000。AS 65003 不在命令输出中show route,因为命令是在使用 AS 65 003 配置的路由器上输入的。

content_copy zoom_out_map
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命令输出显示路由 10 的 AS 路径。3.2.1 如路由器 2 向路由器 1 播发的那样。在命令输出中show route,您首先会看到 AS 64596,其次会看到 AS 65003。AS 4200000000 不在命令输出中 show route ,因为命令是在使用 AS 4200000000 配置的路由器上输入的。

content_copy zoom_out_map
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 字节的路由器之间建立对等关系

本节介绍当支持 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。

图 6: 支持 4 字节的路由器,与使用 2 字节 AS 编号且支持 2 字节的路由器有对等关系支持 4 字节的路由器,与使用 2 字节 AS 编号且支持 2 字节的路由器有对等关系
  • 以下示例显示了路由器 1 配置的相关部分。

    content_copy zoom_out_map
    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:

    content_copy zoom_out_map
    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 编号:

    content_copy zoom_out_map
    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 字节的路由器之间建立对等关系

本节介绍当支持 4 字节 AS 编号的路由器与仅支持 2 字节 AS 编号的路由器建立对等关系时会发生什么情况(如果第一个路由器配置的 AS 编号超出 2 字节 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。

图 7: 支持 4 字节的路由器,与使用 4 字节 AS 编号的支持 2 字节的路由器具有对等关系支持 4 字节的路由器,与使用 4 字节 AS 编号的支持 2 字节的路由器具有对等关系

您可以配置一个本地 AS 编号,仅在与 BGP 邻接方建立 BGP 会话期间使用它,但在发送至外部 BGP 对等方的 AS 路径中将其隐藏。要配置本地 AS 编号,请包含 local-as 该语句,指定要使用的 2 字节 AS 编号 65530,并包括该 private 选项。使用此配置,发送至外部对等方的 AS 路径中仅包含全局 AS 编号 1000000。以下示例显示了路由器 2 配置的相关部分:

content_copy zoom_out_map
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 配置的相关部分:

content_copy zoom_out_map
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:

content_copy zoom_out_map
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) 与播发邻接方的 ASN 一致。

在拓扑中,路由器 C 在 BGP 中播发到路由器 B 的静态路由,然后路由器 B 将路由重新播发到路由器 A。然后,将针对路由器 A 的导出策略添加到路由器 B,以将不相关的 ASN 添加到路由器 B。最后, enforce-first-as 在路由器 A 上针对路由器 B 配置语句。当路由器 A 获取 AS 路径时,它会检查 AS 路径中最左侧的 ASN 是否是前一个邻居的 ASN,并使来自路由器 B 的路由无效。

拓扑学

配置 enforce-first-as 语句以检查路由

CLI 快速配置

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

路由器 A 上的初始配置

content_copy zoom_out_map
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 上的初始配置

content_copy zoom_out_map
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 上的初始配置

content_copy zoom_out_map
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

程序

分步过程
  1. 在路由器 C 上配置静态路由。

    content_copy zoom_out_map
    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
    
  2. 为静态路由配置导出策略。

    content_copy zoom_out_map
    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
    
  3. 验证静态路由是否直通路由器 B 和路由器 A。

    content_copy zoom_out_map
    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。

  4. 设置导出策略以从路由器 B 前置 ASN。

    content_copy zoom_out_map
    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
    
  5. 验证路由器 A 上的路由 198.51.100.17。

    content_copy zoom_out_map
    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 路径。

  6. enforce-first-as在路由器 A 上配置语句。

    content_copy zoom_out_map
    A-re0# set protocols bgp enforce-first-as
    A-re0# commit
    

    当您再次检查路由时,您会看到路由 198.51.100.17 不再在路由器 A 上通过。

验证

验证 BGP 会话

目的

验证是否已建立 BGP 会话,以及路由器是否与哪些邻居建立了对等会话。

操作

在操作模式下,运行 show bgp summary 命令。

content_copy zoom_out_map
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 命令。

content_copy zoom_out_map
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 命令。

content_copy zoom_out_map
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 命令。

content_copy zoom_out_map
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 路径中。

显示 BGP 邻居。列出此路由器连接到的 BGP 路由器。显示路由器与哪些邻居建立了对等会话。

显示 BGP 摘要。列出 BGP 组、对等方和会话状态信息。帮助确定是否已建立 BGP 会话。

显示路由协议 BGP。列出从 BGP 获知的路由。确认路由器仅学习来自所需邻居的路由。

操作

在操作模式下,运行 show route protocol bgp 命令。

content_copy zoom_out_map
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 路径中。

验证“先实施为”语句是否正常工作

目的

验证路由器是否仅学习来自所需邻接方的路由。

操作

验证路由 198.51.100.17。

content_copy zoom_out_map
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 命令,则不会显示路由信息。

content_copy zoom_out_map
A-re0> show route 198.51.100.17 
 
A-re0>
意义

静态路由已隐藏,因为它包含不相关的 ASN,并且已配置该 enforce-first-as 语句。

变更历史表

是否支持某项功能取决于您使用的平台和版本。 使用 Feature Explorer 查看您使用的平台是否支持某项功能。

版本
说明
9.1
Junos OS 9.1 及更高版本支持 4 字节 AS 编号。
footer-navigation