Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
本页内容
 

示例:在 IS-IS 网络中配置 SRv6 网络编程

此示例说明如何在 IS-IS 网络中配置 SRv6 网络编程。此功能对于网络主要采用 IPv6 且尚未部署 MPLS 的服务提供商很有用。此类网络仅依靠 IPv6 报头和报头扩展来传输数据。SRv6 网络编程提供了利用分段路由的灵活性,而无需部署 MPLS。

要求

此示例使用以下硬件和软件组件:

  • 8 个带有 MPC7E、MPC8E 或 MPC9E 线卡的 MX 系列路由器

  • Junos OS 20.3R1 或更高版本

概述

从 Junos OS 20.3R1 版开始,您可以在核心 IPv6 网络中配置不带 MPLS 的 SRv6。SRv6 网络编程是指网络将网络程序编码为单个网络指令,然后插入到 IPv6 数据包标头中的能力。携带网络指令的 IPv6 数据包会明确告知网络可用于数据包处理的精确 SRv6 节点。网络指令是由 128 位 IPv6 地址表示的 SRv6 分段标识符 (SID)。这些指令通过网络以 IPv6 数据包标头的形式进行分布。除了寻址,网络指令还为 SRv6 网络中每个支持 SRv6 的节点定义特定任务或功能。此功能有利于需要通过尚不具备分段路由功能的中转路由器来部署 SR 流量的网络。

拓扑学

在图 1 中,路由器 R0 和路由器 R7 是仅支持 IPv4 设备 CE1 和 CE2 的入口和出口路由器。路由器 R1、R2、R3、R4、R5 和 R6 构成了一个仅支持 IPv6 的提供商核心网络。所有路由器都属于同一个自治系统。IS-IS 是 IPv6 核心中的内部网关协议,配置为支持 SRv6。在此示例中,路由器 R2 配置为 IPv6 路由反射器,其 IBGP 对等会话到 R0 和 R7。在此示例中,没有其他路由器使用 BGP。

注意:

为了更好地演示 SRv6 隧道,此示例基于纯 IPv6 提供商核心。SRv6 由双堆栈核心提供支持,其中同时部署了 IPv6 和 IPv4。

支持 IPv4 设备的边缘路由器需要使用 IPv6 隧道封装传输 IPv4 流量。封装隧道派生自在启用了 SRv6 的路由器上配置的 SRv6 SID。IS-IS 协议处理这些 SRv6 SID,并使用可用隧道端点的下一跃点地址更新 inet6.3 表。当通过 BGP 学习 IPv4 路由时,路由器会尝试通过 inet6.3 表解析关联的下一跃点。找到匹配条目后,将自动 IPv6 隧道通向播发 BGP 路由的端点。

在此示例中,R0 和 R7 路由器都使用 BGP 播发其连接的 IPv4 子网。这会导致边缘路由器之间出现 IPv6 隧道。隧道用于通过 IPv6 提供商核心传输 IPv4 流量。在出口处,边缘路由器解封装外部 IPv6 标头并执行 IPv4 路由查找,以将数据包转发到其目的地。

图 1:IS-IS SRv6 Network Programming in IS-IS 中的 SRv6 网络编程

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后从配置模式进入提交。

路由器 R0

路由器 R1

路由器 R2

路由器 R3

路由器 R4

路由器 R5

路由器 R6

路由器 R7

配置路由器 R0

下面的示例要求您在各个配置层级中进行导航。有关 CLI 导航的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器

要将 SRv6 网络编程配置为支持通过 IPv6 核心的 IPv4 隧道,请在 R0 路由器上执行以下步骤:

分步过程

  1. 配置设备接口以启用 IP 传输。

  2. 使用 IPv4 和 IPv6 地址配置环路接口,用作 BGP 会话的路由器 ID。

  3. 配置路由器 ID 和自治系统 (AS) 编号,以便在属于同一 AS 的一组路由设备中传播路由信息。

  4. 全局启用 SRv6 和定位器地址,以指示路由器的 SRv6 功能。SRv6 SID 是由定位符和函数组成的 IPv6 地址。路由协议播发定位器地址。

  5. 为前缀分段配置 End-Sid 功能。指定一种情形,即根据网络要求的 End-SID 函数的行为。倒数第二个段弹出 (PSP)、终极段弹出 (USP) 和终极段解封装 (USP) 是 SRv6 功能的三种可用类型。

    注意:

    确保定位符和终端 SID 位于同一子网中,以避免提交错误。

  6. 在邻接分段的点对点 (P2P) 接口上配置 End-X-SID 功能。为 End-X-SID 指定一个或多个样式。

    注意:

    确保 Locator 和 End-X-SID 位于同一子网中,以避免提交错误。在将定位器映射到接口之前,必须启用 SRv6 并在 中 [edit routing-options] 配置定位器。

    每当配置时, srv6-adjacency-segment 还必须在层次结构下 protocols isis source-packet-routing srv6 locator 配置相关定位器,如步骤 5 中所示。
  7. 为 LAN 接口 xe-0/0/0:2.0 的邻接分段配置 SRv6 选项。根据您的网络要求指定一种情形。倒数第二个分段弹出 (PSP)、终极分段弹出 (USP) 和终极分段解封装 (USP) 是 SRv6 邻接分段的三种可用类型。

    注意:

    确保 Locator 和 End-X-Sid 位于同一子网中,以避免提交错误。在将定位器映射到接口之前,必须启用 SRv6 并在 中 [edit routing-options] 配置定位器。

  8. 在面向核心的接口上配置 BGP 以建立内部对等会话。

  9. 定义对数据包进行负载均衡的策略。

  10. 应用按数据包的策略以启用流量负载平衡。

结果

在配置模式下,输入show interfacesshow protocolsshow policy-options、和show routing-options命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

完成设备配置后,从配置模式输入 commit

验证

确认配置工作正常。

验证 IS-IS 邻接和 IBGP 会话

目的

验证 R2 上的 IS-IS 邻接和 IBGP 会话。之所以选择 R2 来执行此任务,是因为它有 5 个邻接,并且还用作 BGP 控制平面的路由器反射器。

注意:

在继续执行其余验证步骤之前,最好先确认所有路由器上的 IS-IS 邻接。成功的 SRv6 部署要求内部网关协议在所有节点上都可运行。

行动

在作模式下,在路由器 R2 上运行 show isis adjacency 命令。

在作模式下,在路由器 R2 上运行 show bgp summary 命令。

意义

输出确认 R2 路由器的预期 IS-IS 邻接计数。它还确认 R2 已与 R0 和 R7 路由器建立基于 IPv6 的 BGP 会话。

验证 SRv6 是否已启用

目的

验证是否在路由器 R0 上启用了定位符、End-SID 和 Flavor SRv6。

行动

在作模式下,对路由器 R0 运行 show isis overview 命令。

意义

配置的 SRv6 定位符 SRv6: Enabled Locator: 2001:db8:0:a0::/64, Algorithm: 0 、、End-SID 和变种 END-SID: 2001:db8:0:a0:d01::, Flavor: USD 将显示在输出中。

验证 SRv6 End-X-SID 配置

目的

验证是否在 R0 上配置了 End-X-SID 功能和变种。

行动

在作模式下,对路由器 R0 运行 show isis adjacency detail 命令。

意义

该字段 SRv6 protected END-X-SID: 2001:db8:0:a0:1a01:: 表示已在路由器 R0 上为用于连接到 R1 的接口配置了 End-X-SID 功能 Flavor PSP 。连接到 R4 的接口也确认了类似的输出,R4 使用不同的 End-X-SID。

验证定位器路由是否已安装

目的

验证定位器路由是否已安装。

行动

在作模式下,在路由器 R0 上运行 show route 2001:db8:0:a0::/64 detail 命令。

意义

输出确认定位器路径 2001:db8:0:a0::/64*[IS-IS/18] 已安装在表中 inet6.0

验证 End-X-SID 路由是否已安装

目的

显示在接口上应用的已配置的 End-X-SID 路由信息。

行动

在作模式下,对路由器 R0 运行 show route 2001:db8:0:a0:1a01:: 命令。

意义

输出确认 End-X-SID 路由 2001:db8:0:a0::1a01/128 已安装在路由表中 inet.6.0

验证已安装终端 SID 路由

目的

验证 SRv6 域中所有路由器的 End-SID 路由是否已安装在路由器 R0 的表中 inet6.3

行动

在作模式下,在路由器 R0 上运行 show route table inet6.3 protocol isis 命令,以查看路由器已学习的所有终端 SID。然后显示有关与 R7 路由器关联的 End-SID 的详细信息。

意义

输出确认路由器 R0 已从拓扑中的所有其他路由器获知终端 SID,即 2001:db8:0:a1::d11/1282001:db8:0:a2::d21/128。请注意,表中已安装 inet6.3 End-SID。R7 2001:db8:0:a7:d71:: 播发的 End-SID 的详细输出确认已在路由器 R0 和路由器 R7 之间建立 SRv6 隧道。

请注意,分段列表中填充了路由器 R7 上配置的 End-SID 值。回想一下,此示例中的所有 End-SID 都配置了终极分段解封装 (USD) 样式。这是本地 End-SID 和关联的 USD 风格的组合,告诉 R7 它是 IPv6 隧道的出口。收到 R7 后,对 IPv4 数据包进行解封装,并根据 IPv4 目标地址对其进行路由。

验证 IS-IS 数据库中的 SRv6 配置

目的

显示 IS-IS 数据库以验证在路由器 R7 上配置的 End-SID 和配置。在此示例中,命令在路由器 R0 上执行。由于 IS-IS 数据库将复制到所有节点,因此所有路由器上都有类似的输出。

行动

在作模式下,对路由器 R0 运行 show isis database R7.00-00 extensive 命令。

意义

SRv6 SID: 2001:db8:0:a7:d71::的存在Flavor: USD确认 SRv6 已在 R7 路由器上启用了 SID 解封装风格。输出还显示,R7 上的接口已配置为使用 PSP 风格的 TI-LFA 保护。

验证到 CE2 的路由是否使用 SRv6 隧道

目的

显示到 R7 处的 IPv4 子网的路由,以确认到 SRv6 隧道的下一跳点。

行动

在作模式下,在路由器 R0 上运行 show route 172.16.20.0/24 命令。

意义

输出确认 R0 已通过其到 R2 的 BGP 会话学习了到 172.16.20.0/24 子网的路由,在本例中,该调用配置为路由反射器。下一跃点确认已为此路由安装到 R7 路由器的 SRv6 隧道。接下来的两个跃点可用,与示例拓扑中 R0 和 R7 路由器之间的两条等价路径保持一致。

测试 CE1 和 CE2 之间的 IPv4 连接

目的

生成 ping 以验证 CE 设备之间通过 IPv6 提供商核心的 IPv4 连接。

行动

在作模式下,在路由器 R0 上运行 ping 172.16.20.2 source 172.16.10.2 count 2 命令。

意义

输出确认 CE 设备网络之间的 IPv4 连接正常工作。在此示例中,这将验证通过 IPv6 提供商核心的 SRv6 隧道是否工作正常。