分段路由
总结 瞻博网络云原生路由器支持分段路由(SR-MPLS 和 SRv6)。阅读本主题可了解支持的功能。
分段路由 (SR) 是源路由的一种现代变体,它通过从中间路由器中移除网络状态信息,而是将路径状态信息添加到转发平面的数据包标头中来简化网络。当数据包到达 SR 入口节点时,入口节点会使数据包服从策略。该策略将数据包与其目标的 SR 路径相关联。SR 路径是一个有序的分段列表,用于将 SR 入口节点连接到 SR 出口节点。此 SR 路径可以设计为满足任意数量的约束,例如链路带宽、最小路径延迟等。
分段路由可以在转发平面中利用 MPLS 或 IPv6。当分段路由使用 MPLS 转发平面时,该平面称为 SR-MPLS。SR-MPLS 支持 IPv4 和 IPv6 底层网络。当分段路由利用 IPv6 转发平面时,它称为 SRv6。 查看 SR-MPLS Day One 手册 和 SRv6 Day One 手册 ,了解更多详细信息。
分段路由可作为一种传输隧道技术,用于为基于网络功能虚拟化 (NFV) 的新一代电信云、5G、云 WAN 和内容分配网络 (CDN) 实现数据中心互连。它可以在以下用例中提供多种优势:
-
流量工程 — 分段路由可根据网络条件提供高效、动态的流量定向,以实现负载平衡、避免拥塞和更好地利用带宽。这将提高网络性能和用户体验。
-
网络切片 — 分段路由通过使不同服务或租户能够在同一物理基础架构上共存来创建虚拟化网络切片。每个网络切片都可以拥有自己的转发策略和资源,从而为不同的应用提供增强的隔离和灵活性。
-
服务功能链 — 分段路由支持灵活、动态的服务功能链,其中数据包遍历一系列网络服务,如防火墙、负载平衡等。它通过定义特定的数据包流路径,简化了服务部署,并实现了按需服务链。
-
移动网络 — 分段路由通过实现高效的路径选择和更低的延迟,优化了移动网络的流量路由和切换过程。
SR-MPLS
JCNR 支持将 SR-MPLS 用于 IPv4 和 IPv6 底层网络。云原生路由器可以作为发送、接收或中转路由器加入 SR-MPLS 网络。它支持带或不带倒数第二个跃点 (PHP)、带或不带叠加 ECMP 以及显式/隐式 NULL 的 SR-MPLS 实现。从 JCNR 24.1 版开始支持分段路由 灵活算法 (Flex-Algo)。查看 分段路由 (IS-IS) 了解更多信息。
在 JCNR 上配置 SR-MPLS
请考虑以下拓扑:
我们希望在此网络中实现分段路由。PE1 是入口 JCNR 节点,P 是中转 JCNR 节点,而 PE2 是出口 JCNR 节点。我们将为所有节点配置一个通用分段路由全局块 (SRGB) 范围。系统会为所有节点分配一个用于 IPv4 和 IPv6 的分段 ID(节点 SID)。
使用 configlet 资源 来配置 cRPD pod。
JCNR 入口 (PE1) 配置
使用以下配置配置 JCNR 入口 (PE1) 路由器:
配置接口:
set interfaces ens192 unit 0 family inet address 172.16.0.11/24 set interfaces ens192 unit 0 family inet6 address 172::11/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.1.11/32 set interfaces lo0 unit 0 family inet6 address 192::11/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0019.00 set interfaces lo0 unit 0 family mpls
配置 IS-IS:
set protocols isis interface ens192 set protocols isis interface lo0.0 set protocols isis level 1 disable
配置路由选项:
set routing-options route-distinguisher-id 192.168.1.11 set routing-options router-id 192.168.1.11 set routing-options autonomous-system 64512
在接口上配置 MPLS 协议:
set protocols mpls ipv6-tunneling set protocols mpls interface ens192 set protocols mpls interface lo0.0
配置 BGP 邻接方:
set protocols bgp group sr_mpls type internal set protocols bgp group sr_mpls multihop set protocols bgp group sr_mpls local-address 192.168.1.11 set protocols bgp group sr_mpls family inet-vpn unicast set protocols bgp group sr_mpls family inet6-vpn unicast set protocols bgp group sr_mpls local-as 64512 set protocols bgp group sr_mpls neighbor 192.168.3.13
配置 SRGB 的起始标签和索引范围:
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
配置 IPv4 和 IPv6 节点分段 ID:
set protocols isis source-packet-routing node-segment ipv4-index 11 set protocols isis source-packet-routing node-segment ipv6-index 111
(可选)配置显式 null 标签:
set protocols isis source-packet-routing explicit-null
JCNR 传输 (P) 配置
使用以下配置配置 JCNR 传输 (P) 路由器:
配置接口:
set interfaces ens192 unit 0 family inet address 172.16.0.12/24 set interfaces ens192 unit 0 family inet6 address 172::12/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces ens224 unit 0 family inet address 172.16.1.12/24 set interfaces ens224 unit 0 family inet6 address 172::112/64 set interfaces ens224 unit 0 family iso set interfaces ens224 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.2.12/32 set interfaces lo0 unit 0 family inet6 address 192::12/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0020.00 set interfaces lo0 unit 0 family mpls
配置 IS-IS:
set protocols isis interface ens192 set protocols isis interface ens224 set protocols isis interface lo0.0 set protocols isis level 1 disable
配置路由选项:
set routing-options route-distinguisher-id 192.168.2.12 set routing-options router-id 192.168.2.22 set routing-options autonomous-system 64512
在接口上配置 MPLS 协议:
set protocols mpls interface ens192 set protocols mpls interface lo0.0 set protocols mpls interface ens224
配置 SRGB 的起始标签和索引范围:
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
配置 IPv4 和 IPv6 节点分段 ID:
set protocols isis source-packet-routing node-segment ipv4-index 11 set protocols isis source-packet-routing node-segment ipv6-index 111
JCNR 出口 (PE2) 配置
使用以下配置配置 JCNR 出口 (PE2) 路由器:
配置接口:
set interfaces ens192 unit 0 family inet address 172.16.1.13/24 set interfaces ens192 unit 0 family inet6 address 172::13/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.3.13/32 set interfaces lo0 unit 0 family inet6 address 192::13/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0021.00 set interfaces lo0 unit 0 family mpls
配置 IS-IS:
set protocols isis interface ens192 set protocols isis interface lo0.0 set protocols isis level 1 disable
配置路由选项:
set routing-options route-distinguisher-id 192.168.3.13 set routing-options router-id 192.168.3.13 set routing-options autonomous-system 64512
在接口上配置 MPLS 协议:
set protocols mpls ipv6-tunneling set protocols mpls interface ens192 set protocols mpls interface lo0.0
配置 BGP 邻接方:
set protocols bgp group sr_mpls type internal set protocols bgp group sr_mpls multihop set protocols bgp group sr_mpls local-address 192.168.3.13 set protocols bgp group sr_mpls family inet-vpn unicast set protocols bgp group sr_mpls family inet6-vpn unicast set protocols bgp group sr_mpls local-as 64512 set protocols bgp group sr_mpls neighbor 192.168.1.11
配置 SRGB 的起始标签和索引范围:
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
配置 IPv4 和 IPv6 节点分段 ID:
set protocols isis source-packet-routing node-segment ipv4-index 13 set protocols isis source-packet-routing node-segment ipv6-index 113
(可选)配置显式 null 标签:
set protocols isis source-packet-routing explicit-null
验证 JCNR 上的 SR-MPLS 配置
以下命令可用于验证 cRPD 上的 SRv6 配置:
user@pe1> show isis database detail IS-IS level 1 link-state database: IS-IS level 2 link-state database: pe1.00-00 Sequence: 0x125, Checksum: 0xce5c, Lifetime: 590 secs IPV4 Index: 11, IPV6 Index: 111 Node Segment Blocks Advertised: Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ] IS neighbor: node2.02 Metric: 10 LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node3, Flags: --VL-- LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node3, Flags: F-VL-- IP prefix: 172.16.0.0/24 Metric: 10 Internal Up IP prefix: 192.168.1.11/32 Metric: 0 Internal Up V6 prefix: 172::/64 Metric: 10 Internal Up V6 prefix: 192::11/128 Metric: 0 Internal Up V6 prefix: fe80::50c8:9dff:fee2:4655/128 Metric: 0 Internal Up pe1.02-00 Sequence: 0x11f, Checksum: 0x4305, Lifetime: 468 secs IS neighbor: node2.00 Metric: 0 IS neighbor: node3.00 Metric: 0 p.00-00 Sequence: 0x83, Checksum: 0xcd5e, Lifetime: 506 secs IPV4 Index: 12, IPV6 Index: 112 Node Segment Blocks Advertised: Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ] IS neighbor: node2.02 Metric: 10 LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node2, Flags: --VL-- LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node2, Flags: F-VL-- IS neighbor: node3.02 Metric: 10 LAN IPv4 Adj-SID: 20, Weight: 0, Neighbor: node4, Flags: --VL-- LAN IPv6 Adj-SID: 21, Weight: 0, Neighbor: node4, Flags: F-VL-- IP prefix: 172.16.0.0/24 Metric: 10 Internal Up IP prefix: 172.16.1.0/24 Metric: 10 Internal Up IP prefix: 192.168.2.12/32 Metric: 0 Internal Up V6 prefix: 172::/64 Metric: 10 Internal Up V6 prefix: 192::12/128 Metric: 0 Internal Up V6 prefix: fe80::50e4:70ff:fe46:76dd/128 Metric: 0 Internal Up p.02-00 Sequence: 0x78, Checksum: 0xf2e5, Lifetime: 1156 secs IS neighbor: node3.00 Metric: 0 IS neighbor: node4.00 Metric: 0 pe2.00-00 Sequence: 0x76, Checksum: 0xb5bf, Lifetime: 644 secs IPV4 Index: 13, IPV6 Index: 113 Node Segment Blocks Advertised: Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ] IS neighbor: node3.02 Metric: 10 LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node3, Flags: --VL-- LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node3, Flags: F-VL-- IP prefix: 172.16.1.0/24 Metric: 10 Internal Up IP prefix: 192.168.3.13/32 Metric: 0 Internal Up V6 prefix: 172::/64 Metric: 10 Internal Up V6 prefix: 192::13/128 Metric: 0 Internal Up V6 prefix: fe80::3c1e:39ff:fe28:1a8a/128 Metric: 0 Internal Up
user@pe1> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.2.12/32 *[L-ISIS/14] 1d 01:20:51, metric 10 > to 172.16.0.12 via ens192 192.168.3.13/32 *[L-ISIS/14] 1d 00:59:01, metric 20 > to 172.16.0.12 via ens192, Push 16013
user@p> show route table mpls.0 mpls.0: 20 destinations, 20 routes (20 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0 *[MPLS/0] 1d 02:05:44, metric 1 Receive 1 *[MPLS/0] 1d 02:05:44, metric 1 Receive 2 *[MPLS/0] 1d 02:05:44, metric 1 Receive 13 *[MPLS/0] 1d 02:05:44, metric 1 Receive 16 *[L-ISIS/14] 1d 01:12:40, metric 0 > to 172.16.0.11 via ens192, Pop 16(S=0) *[L-ISIS/14] 1d 01:12:40, metric 0 > to 172.16.0.11 via ens192, Pop 17 *[L-ISIS/14] 1d 01:12:40, metric 0 > to fe80::250:56ff:fea9:5f96 via ens192, Pop 17(S=0) *[L-ISIS/14] 1d 01:12:40, metric 0 > to fe80::250:56ff:fea9:5f96 via ens192, Pop 20 *[L-ISIS/14] 1d 01:13:06, metric 0 > to 172.16.1.13 via ens224, Pop 20(S=0) *[L-ISIS/14] 1d 01:13:06, metric 0 > to 172.16.1.13 via ens224, Pop 21 *[L-ISIS/14] 1d 01:13:06, metric 0 > to fe80::250:56ff:fea9:5dc via ens224, Pop 21(S=0) *[L-ISIS/14] 1d 01:13:06, metric 0 > to fe80::250:56ff:fea9:5dc via ens224, Pop 16011 *[L-ISIS/14] 1d 01:00:38, metric 10 > to 172.16.0.11 via ens192, Swap 0 16011(S=0) *[L-ISIS/14] 1d 01:12:40, metric 10 > to 172.16.0.11 via ens192, Pop 16013 *[L-ISIS/14] 1d 01:00:24, metric 10 > to 172.16.1.13 via ens224, Swap 0 16013(S=0) *[L-ISIS/14] 1d 01:12:57, metric 10 > to 172.16.1.13 via ens224, Pop 16111 *[L-ISIS/14] 1d 01:00:38, metric 10 > to fe80::250:56ff:fea9:5f96 via ens192, Swap 2 16111(S=0) *[L-ISIS/14] 1d 01:12:40, metric 10 > to fe80::250:56ff:fea9:5f96 via ens192, Pop 16113 *[L-ISIS/14] 1d 01:00:24, metric 10 > to fe80::250:56ff:fea9:5dc via ens224, Swap 2 16113(S=0) *[L-ISIS/14] 1d 01:12:57, metric 10 > to fe80::250:56ff:fea9:5dc via ens224, Pop
验证 JCNR 转发平面上的配置
验证每个 PE 节点上通过 vRouter 的流量:
user@pe1# mpls --dump MPLS Input Label Map Label NextHop ------------------- 0 26 1 26 2 26 13 26 16 27 17 28 16012 27 16013 29 16112 28 16113 30
user@pe1# mpls --get 16013 MPLS Input Label Map Label NextHop ------------------- 16013 29
user@pe1# nh --get 29 Id:29 Type:Tunnel Fmly: AF_MPLS Rid:0 Ref_cnt:2 Vrf:0 Flags:Valid, Policy, Etree Root, MPLS, Oif:1 Len:14 Data:00 50 56 a9 10 fa 00 50 56 a9 5f 96 88 47 Number of Transport Labels:1 Transport Labels:16013,
user@pe1# mpls --get 16 MPLS Input Label Map Label NextHop ------------------- 16 27
user@pe1# nh --get 27 Id:27 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:6 Vrf:0 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:1 Len:14 Encap Data: 00 50 56 a9 10 fa 00 50 56 a9 5f 96
SRv6
SRv6 是一种分段路由范例,适用于具有新 IPv6 扩展报头(称为分段路由标头 (SRH))的 IPv6 底层网络。SRv6 利用现有的 IPv6 转发技术对网络编程指令(也称为分段标识符 (SID))进行编码。在 SRv6 中,SID 表示为 IPv6 地址,而 SR-MPLS 则将 SID 编码为 SR-MPLS 标签。SRv6 SID 为 128 位,由以下组件组成:
元件 |
描述 |
---|---|
定位 |
标识 SRv6 节点地址的 SID 的第一部分。它是一个网络地址,提供到其父节点的路由,并通过 IS-IS 协议安装在 inet6.0 表中。IS-IS 将分段路由到其父节点,该节点执行在 SID 的第二部分中定义的功能。它的长度为 64 位。 |
功能 |
SID 的第二部分,用于定义节点(由定位符标识)执行的功能,例如: End:前缀 SID 的 SRv6 实例化的端点函数 [RFC8402] End.X:具有 L3 交叉连接功能的端点,用于相邻 SID 的 SRv6 实例化 [RFC8402] End.DT4:具有解封装和特定 IPv4 表查找功能的端点,用于全局或 IPv4 L3VPN 的 SRv6 实例化(通过 SRv6 底层传输 IPv4 服务) End.DT6:具有解封装和特定 IPv6 表查找功能的端点,用于全局或 IPv6 L3VPN 的 SRv6 实例化(通过 SRv6 底层传输 IPv6 服务) End.DT46:具有解封装和特定 IP 表查找功能的端点,用于全局、IPv4 或 IPv6 L3VPN 的 SRv6 实例化(通过 SRv6 底层传输 IPv4 和 IPv6 服务)。它在 IPv4 和 IPv6 前缀之间共享。 可以通过倒数第二个段弹出 (PSP)、终极段弹出 (USP) 和终极段解封装 (USD) 等类型指定结束 SID 行为。 Function 组件的长度为 16 位。 |
论点 |
一个可变长度字段,提供有关转发操作的其他信息。长度最大为 48 位。 |
BBBB:BBBB:<uSID1>:<uSID2>:<uSID3>:<uSID4>:<uSID5>:<uSID6>
其中 BBBB:BBBB/32
表示 SR 域内操作员分配的前缀或块。支持多种前缀长度,包括 /16,
/32
、 /48
、 /64
块。块是最常用的 /32
。这些块可以是全局标识符块 (GIB) 或本地标识符块 (LIB)。GIB 表示从专门为 SRv6 部署指定的公共或保留地址空间分配的全局唯一 uSID 范围。LIB 由 SR 域内的特定网络节点分配,并且仅在节点的本地上下文中适用。表示 uSIDx
可以来自 GIB 或 LIB 的单个 16 位 uSID。uSID 实现以下功能:
-
uN:映射到最终目的地的微节点-SID(结束)。
-
uA:具有邻接特定行为的微邻接-SID (End.X)
-
uDT:微服务 SID,即域特定信息(End.DT4、End.DT6、End.DT46)
JCNR 支持以下 SRv6 功能:
功能 |
笔记 |
---|---|
SRv6 带有 uSID 的 L3VPN |
uSID 类型:全局 uSID、本地 uSID 目标地址中的 uSID 编码 |
块和 uSID 大小 | 支持 /16、/32、/48、/64 块 |
JCNR SRv6 节点类型和微指令 |
入口:目标地址中采用 SRv6 封装(不需要 SRH) 传输:如果入口节点为 JCNR,则为 IPv6 转发;如果入口节点为非 JCNR,则向前移动 出口:Decpasulate 并执行 SID 服务功能 |
SR 端点(函数) |
End、End.X、End.DT4、End.DT6 和 End.DT46 |
uSID 行为 | uN, uDT |
故障恢复 |
控制平面启动的故障恢复(替代路径作为下一跃点) |
特征 |
描述 |
---|---|
通过 IS-IS 的 SRv6 uSID 底层隧道 |
IS-IS 为播发的定位器提供尽力而为隧道,并在 inet6.3 表中对它们进行编程。 |
通过 IS-IS 和 ECMP 路径的 SRv6 uSID 底层隧道 |
IS-IS 为播发的定位器提供尽力而为隧道,并在 inet6.3 表中对它们进行编程。隧道可以有 ECMP 转发路径。 |
使用 uN SID 播发的 BGP Internet 前缀的路由 |
使用 uN SID 播发的 BGP Internet 前缀将通过相应的定位符(SRv6 uSID 底层隧道)进行解析。底层路由可以具有单个网关或 ECMP。 |
使用 uN SID 播发的 BGP 互联网前缀的多路径路由 |
多个提供边缘 (PE) 路由器可以发起相同的互联网前缀(多宿主),从而在入口 PE 上导致 BGP 多路径。每条多路径路由都通过具有单个网关或 ECMP 的底层 SRv6 隧道进行解析。 |
使用 uN SID 播发的 L3VPN 前缀的路由 |
使用 uN SID 播发的 L3VPN 前缀将通过相应的定位符(SRV6 uSID 底层隧道)进行解析。这些底层路由可以有单个网关,也可以有 ECMP。 |
使用 uN SID 播发的 L3VPN 前缀的多路径路由 |
多个 PE 可以源自相同的 L3VPN 前缀(多宿主),这可能会导致入口 PE 处的 BGP 多路径。每条多路径路由都通过具有单个网关或 ECMP 的底层 SRv6 隧道进行解析。 |
通过 Flex 算法 IS-IS 隧道的 BGP 意图路由 |
Flex 算法 可以通过创建 SRv6 底层隧道的 IS-IS 播发 uSID。带有 uSID 的 BGP 互联网前缀和 L3VPN 前缀可以通过底层隧道进行解析。这些前缀可以是非意图的(没有附加任何颜色社区)。前缀通过安装在 inet6.3 表中的 SRV6 底层隧道进行解析。 |
具有回退机制的 Flex 算法 IS-IS 隧道上的 BGP 意图路由 |
Flex 算法 可以通过创建 SRv6 底层隧道的 IS-IS 播发 uSID。带有 uSID 的 BGP Internet 前缀和 L3VPN 前缀可以通过底层隧道解析。这些前缀可以是 intent(带有附加的颜色社区)。前缀通过安装在 junos-rti-tc-<color>.inet6.3 表中的 SRv6 底层隧道进行解析,其中颜色对应于使用前缀播发的颜色社区中的颜色。如果前缀解析未通过 junos-rti-tc-<color>.inet6.3 表进行解析,则可以通过安装在 inet6.3 表中的 flex 算法底层隧道进行解析,从而提供回退机制。 |
支持对 uN SID 进行编程并基于 uN SID 路由转发数据包 |
我们支持在 inet6.0 表中对 uN SID 路由进行编程。这有助于转发将 uN SID 作为其目标地址一部分的数据包。请注意,当前不支持具有分段路由标头 (SRH) 的数据包。 |
支持的 SID 功能 |
uN SID 移位和查找(类型类型 适用于 IPv4 的 uDT 适用于 IPv6 的 uDT 适用于 IPv4 和 IPv6 的 uDT |
定位器汇总和泄漏 |
定位器汇总和泄漏是 SRv6 相对于 SR-MPLS 的一大优势。L1-L2 可以汇总来自其他级别的定位器,并将它们泄漏到另一个级别。即使没有汇总,也可能发生定位器泄漏。 |
在 JCNR 中配置 SRv6
请考虑以下拓扑:

我们希望通过 SRv6 隧道启用主机 10.1.1.1/32 和 10.2.2.2/32 之间的通信。PE1 是入口 JCNR 节点,P 是中转 JCNR 节点,而 PE2 是出口 JCNR 节点。PE1、P 和 PE2 通过 IS-IS 播发其 uSID(如图所示),并通过 BGP 相互叠加前缀。CE1 发起向入口节点 (PE1) 的数据包流。PE1 使用 SRv6 标头封装源数据包,同时将目标地址设置为出口节点 (PE2) 的 uSID。由于 JCNR 是此拓扑中的入口节点,因此中转节点 (P) 只会转发 IPv6 数据包。出口节点 (PE2) 配置了微服务 SID (uDT),用于解封装数据包并查找特定 IP 表以将数据包路由到 CE2。
JCNR 中 SRv6 的配置包括 IS-IS 中的微 SID 块 配置、 微型 SID 定位器 配置、 微节点 SID (uN) 配置 和 BGP 中的微服务 SID (uDT) 配置。
为 SRv6 配置 JCNR 控制平面。为简洁起见,我们将在此示例中介绍出口 JCNR 节点 (PE2) 的配置。其他节点的配置与此类似。
配置 micro-SID 块和本地静态 SID 的最大数量(默认值为 0,如果使用静态 uSID,则必须配置):
user@PE2# set routing-options source-packet-routing srv6 block blk16_1 2001:db8::/32 user@PE2# set routing-options source-packet-routing srv6 block blk16_1 local-micro-sid maximum-static-sids 2000
配置 micro-SID 定位符:
user@PE2# set routing-options source-packet-routing srv6 locator myloc 2001:db8:4600::/48 user@PE2# set routing-options source-packet-routing srv6 locator myloc micro-sid block-name blk16_1 user@PE2# set routing-options source-packet-routing srv6 locator myloc micro-sid flavor none
在 IS-IS 中配置 micro-node-SID (uN SID) 以通告定位符 TLV 和 micro-node-SID:
user@PE2# set protocols isis source-packet-routing srv6 locator myloc micro-node-sid
配置微服务 SID 的方法有两种。第一种是仅 BGP,它允许为每个 BGP 实例配置一组 dt4、dt6 和 dt46 uSID。uSID 可以是静态的,也可以是动态分配的。第二种方法是配置导出策略,以指定前缀或定位符使用的微服务 SID,以便从中派生微服务 SID。BGP 通过
non-default
关键字进行配置。下面提供了每种方法的示例。对于一组 dt4、dt6 和 dt46 uSID,只能使用其中一个。IPv4 服务的静态默认微服务 SID。请注意,静态 uSID 必须在步骤 1 中定义的
maximum-static-sids
范围内:user@PE2# set routing-instances pe-2 protocols bgp source-packet-routing srv6 locator myloc micro-dt4-sid 0xF831
为 IPv4 服务设置自动分配的默认微服务 SID:
user@PE2# set routing-instances pe-2 bgp source-packet-routing srv6 locator myloc micro-dt4-sid
使用 BGP 导出策略设置非默认微服务 SID:
user@PE2# set routing-instances pe-2 bgp source-packet-routing srv6 locator myloc micro-dt4-sid non-default
user@PE2# set policy-options policy-statement EXPORT_BGP_SRV6 term 1 then srv6 locator myloc user@PE2# set policy-options policy-statement EXPORT_BGP_SRV6 term 1 then srv6 micro-dt4-sid
配置 BGP 以播发 SRv6 服务。下面提供了一个家庭
inet
示例:user@PE2# set protocols bgp group CNIv6 family inet unicast advertise-srv6-service user@PE2# set protocols bgp group CNIv6 family inet unicast accept-srv6-service
验证 JCNR 上的 SRv6 配置
以下命令可用于验证 cRPD 上的 SRv6 配置:
user@host> show srv6 block blk16_1 Block: blk16_1 Block Prefix: 2001:db8::, Block length: 32, Micro-sid length: 16 Global Micro SIDs: Static SID range: 0x0-0xDFFF, Dynamic SID range: - Allocated static SID count: 1, Allocated dynamic SID count: 0 Available static SID count: 57343, Available dynamic SID count: 0 Local Micro SIDs: Static SID range: 0xF830-0xFFFF, Dynamic SID range: 0xE000-0xFFFF Allocated static SID count: 0, Allocated dynamic SID count: 0 Available static SID count: 2000, Available dynamic SID count: 8192
user@host> show srv6 locator Locator: myloc Locator prefix: 2001:db8:4600::, Locator length: 48 Block length: 32, Node length: 16 Function length: 16, Argument length: 0 Micro SID Locator, Flavor [ None ] Micro SID Block Name: blk16_1
user@host> show isis overview Instance: master Router ID: 10.1.1.1 IPv6 Router ID: ::10.1.1.1 ... Source Packet Routing (SPRING): Enabled Node Segments: Disabled SRv6: Enabled Locator: 2001:db8:4600::/48, Algorithm: 0 micro-node-SID: 2001:db8:4600::, Flavor: None ...
user@host> show isis database extensive IS-IS level 1 link-state database: ... SRv6 Locator: 2001:db8:4600::/48, Metric: 0, MTID: 0, Flags: 0x0, Algorithm: 0 SRv6 SID: 2001:db8:4600::, Flavor: None sid-structure-sub-sub-tlv: Block-length:32, Node-length:16 ...
验证通过 JCNR 转发平面的数据包流
验证每个 PE 节点上通过 vRouter 的流量:
入口 SRv6 节点 (PE1)
[user@PE1 /]# flow --match 10.1.1.1 Flow table(size 161218560, entries 629760) Entries: Created 300 Added 300 Deleted 400 Changed 600Processed 300 Used Overflow entries 0 (Created Flows/CPU: 0 0 0 0 0 0 0 0 0 0 0 72 87 72 69)(oflows 0) Action:F=Forward, D=Drop N=NAT(S=SNAT, D=DNAT, Ps=SPAT, Pd=DPAT, L=Link Local Port) Other:K(nh)=Key_Nexthop, S(nh)=RPF_Nexthop Flags:E=Evicted, Ec=Evict Candidate, N=New Flow, M=Modified Dm=Delete Marked TCP(r=reverse):S=SYN, F=FIN, R=RST, C=HalfClose, E=Established, D=Dead Stats:Packets/Bytes Listing flows matching ([10.1.1.1]:*) Index Source:Port/Destination:Port Proto(V) ----------------------------------------------------------------------------------- 231600<=>349580 10.1.1.1:1024 6 (98) 10.2.2.2:1024 (Gen: 3, K(nh):98, Action:F, Flags:, TCP:, QOS:-1, S(nh):0, Stats:77632/8228992, SPort 63335, TTL 0, Sinfo 22.0.0.0) 349580<=>231600 10.2.2.2:1024 6 (98) 10.1.1.1:1024 (Gen: 3, K(nh):98, Action:F, Flags:, TCP:, QOS:-1, S(nh):623, Stats:0/0, SPort 63397, TTL 0, Sinfo 0.0.0.0)
[user@PE1 /]# rt --get 10.2.2.2/32 --vrf 98 Match 10.2.2.2/32 in vRouter inet4 table 0/98/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet4 routing table 0/98/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 10.2.2.0/24 0 LPT - 623 -
[user@PE1 /]# nh --get 623 Id:623 Type:Tunnel Fmly:AF_INET6 Rid:0 Ref_cnt:2 Vrf:0 Flags:Valid, Policy, Etree Root, SRv6, Oif:2 Len:14 Data:40 a6 b7 a0 ef f1 50 7c 6f 48 9c 89 86 dd Sip: abcd:44:44:44::44 Block Len:32 Block: 2001:db8:: Number of Containers:1 Container Dips:[1]: 2001:db8:4600:e001::
请注意,发往 10.2.2.2/32 的流量的下一跃点是具有目标 IP:
2001:db8:4600:e001::
(出口节点的 uSID)的 SRv6 隧道传输 SRv6 节点 (P)
[user@P /]# flow --match 2001:db8:4600:e001:: Flow table(size 161218560, entries 629760) Entries: Created 300 Added 300 Deleted 400 Changed 600Processed 300 Used Overflow entries 0 (Created Flows/CPU: 0 0 0 0 0 0 0 0 0 0 0 72 87 72 69)(oflows 0) Action:F=Forward, D=Drop N=NAT(S=SNAT, D=DNAT, Ps=SPAT, Pd=DPAT, L=Link Local Port) Other:K(nh)=Key_Nexthop, S(nh)=RPF_Nexthop Flags:E=Evicted, Ec=Evict Candidate, N=New Flow, M=Modified Dm=Delete Marked TCP(r=reverse):S=SYN, F=FIN, R=RST, C=HalfClose, E=Established, D=Dead Stats:Packets/Bytes Listing flows matching ([2001:db8:4600:e001::]:*) Index Source:Port/Destination:Port Proto(V) ----------------------------------------------------------------------------------- 137640<=>238208 abcd:44:44:44::44:0 4 (0) 2001:db8:4600:e001:::0 (Gen: 1, K(nh):0, Action:F, Flags:, QOS:-1, S(nh):0, Stats:81560/11907760, SPort 53031, TTL 0, Sinfo 0.0.0.0) 238208<=>137640 2001:db8:4600:e001:::0 4 (0) abcd:44:44:44::44:0 (Gen: 1, K(nh):0, Action:F, Flags:, QOS:-1, S(nh):0, Stats:0/0, SPort 55361, TTL 0, Sinfo 0.0.0.0)
[user@P /]# rt --get 2001:db8:4600:e001::/128 --vrf 0 --family inet6 rt --get fcbb:bb01:4600:e001::/128 --vrf 0 --family inet6 Match fcbb:bb01:4600:e001::/128 in vRouter inet6 table 0/0/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet6 routing table 0/0/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 2001:db8:4600::/48 0 T - 80 -
[user@P /]# nh --get 80 Id:80 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:11 Vrf:0 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:7 Len:14 Encap Data: 50 7c 6f 48 83 79 40 a6 b7 a0 f9 3b
请注意,P 仅转发 IPv6 数据包。
出口 SRv6 节点 (PE2)
[root@PE2 /]# rt --get 2001:db8:4600:e001::/128 --vrf 0 --family inet6 Match 2001:db8:4600:e001::/128 in vRouter inet6 table 0/0/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet6 routing table 0/0/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 2001:db8:4600:e001::/80 0 T - 72 -
[root@PE2 /]# nh --get 72 Id:72 Type:Vrf_Translate Fmly:AF_INET6 Rid:0 Ref_cnt:7 Vrf:19 Flags:Valid, Etree Root, SRv6, Vrf:19
[root@PE2 /]# rt --get 10.2.2.2/32 --vrf 19 Match 10.2.2.2/32 in vRouter inet4 table 0/19/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet4 routing table 0/19/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 10.2.2.2/32 0 PT - 776 -
[root@PE2 /]# nh --get 776 Id:776 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:2 Vrf:19 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:21 Len:14 Encap Data: 00 10 94 00 04 1e 50 7c 6f 48 77 64
请注意,出口 PE 会在默认表中查找 uSID IPv6 地址。完全匹配的下一跃点配置为
Vrf_Translate
。它在指定的 VRF 中查找10.2.2.2/32
目标 IP 地址,并将数据包路由到 CE2。