12-SRv6网络切片配置
本章节下载: 12-SRv6网络切片配置 (303.45 KB)
SRv6网络切片将一个SRv6网络切分为多个虚拟网络,不同虚拟网络互相独立,可以根据租户的业务特点为不同的虚拟网络部署不同的策略,以满足不同租户的业务需求。虚拟网络属于Overlay网络,多个虚拟网络可以共享一个Underlay网络。
在SRv6网络切片定义了以下概念:
· 网络切片实例:在部署了SRv6网络切片功能的网络中,每个独立的虚拟网络称为一个网络切片实例,每个虚拟网络均由唯一的网络切片实例ID标识。网络切片实例可以定义此切片的通用属性,例如网络切片的描述信息等。
· 网络切片报文:在网络切片实例中传输的IPv6报文称为网络切片报文,网络切片报文的头部会携带网络切片实例ID,用以标识该报文归属的网络切片实例。
· 网络切片通道:设备接口上用来转发网络切片报文的逻辑通道称为网络切片通道。网络切片通道也通过网络切片实例ID标识并关联网络切片实例。每个接口上可以创建多个网络切片通道,并为每个网络切片通道分配独立的调度队列,不同的网络切片通道的调度队列之间互不影响。
在报文转发层面,SRv6源节点为报文添加IPv6逐跳扩展头(Hop-by-Hop Extension Header),并且在IPv6逐跳扩展头中添加网络切片实例ID信息。如图1-1所示,IPv6逐跳扩展头(Hop-by-Hop Extension Header)中关键字段如下:
· Option Type字段:选项类型,取值为0x1D,表示该选项为网络切片实例ID选项。
· Flags字段:长度为8bits,其首比特位是D标志位(丢弃标志位)。当D标志位为0时,网络切片报文从出接口转发时,如果出接口上不存在与报文所属网络切片实例对应的网络切片通道,设备忽略网络切片报文中携带的网络切片实例ID信息,报文仍可以正常从出接口转发;当D标志位为1时,网络切片报文从出接口转发时,如果出接口上不存在与报文所属网络切片实例对应的网络切片通道,设备不能忽略网络切片报文中携带的网络切片实例ID信息,报文将被丢弃
· Slice Instance ID:长度为32bits,表示报文所属的网络切片实例的ID。
图1-1 携带网络切片实例ID的IPv6逐跳扩展头报文结构
网络切片实例ID是SRv6网络切片场景中的关键标识。网络切片报文必须携带网络切片实例ID。SRv6 TE Policy也需要与网络切片实例ID关联。SRv6 TE Policy可以通过如下方法与网络切片实例ID关联:
· 通过配置手工指定。
· 从对等体发布的BGP IPv6 SR Policy路由中学习。
以L3VPNv4 over SRv6 TE Policy组网为例,介绍SRv6网络切片场景的报文转发过程。
在SRv6网络中存在网络切片实例1和网络切片实例2。PE 1、P和PE 2的转发接口上均存在分别与网络切片实例1和网络切片实例2关联的网络切片通道1和网络切片通道2。VPN 1中两个站点CE 1和CE 2之间的流量使用SRv6 TE Policy承载,SRv6 TE Policy关联了网络切片实例1。CE 1访问CE 2的报文转发过程为:
(1) CE 1向PE 1发送IPv4单播报文。PE 1接收到CE 1发送的报文之后,查找VPN实例路由表,该路由的出接口为SRv6 TE Policy。PE 1为报文封装如下信息:
¡ 封装SRH头,在SRH头中携带SRv6 TE Policy的SID List。
¡ 封装HBH扩展头,在HBH扩展头中携带SRv6 TE Policy关联的网络切片实例的ID(Slice Instance ID字段取值为1)。
¡ 封装IPv6基本报文头。
(2) PE 1将报文转发给P,转发时根据Slice Instance ID信息在出接口上查找与其对应的网络切片通道,并通过该通道转发报文。
(3) 中间P备根据SRH信息转发报文,转发时根据Slice Instance ID在出接口上查找与其对应的网络切片通道,并通过该通道转发报文。
(4) 报文到达尾节点PE 2之后,PE 2使用报文的IPv6目的地址查找Local SID表,匹配到End SID,PE 2将报文SL减1,IPv6的目的地址更新为End.DT4 SID。PE 2根据End.DT4 SID查找Local SID表,执行End.DT4 SID对应的转发动作,即解封装报文去掉IPv6报文头,并根据End.DT4 SID匹配VPN 1,在VPN 1的路由表中,查表转发,将报文发送给CE 2。
图1-2 SRv6网络切片的报文转发过程
SRv6网络切片配置任务如下:
(1) 创建SRv6 TE Policy,并配置基本属性
在SRv6网络的源节点上执行本配置,配置方法请参见“Segment Routing配置指导”中的“SRv6 TE Policy”。
(2) 将流量引流到SRv6 TE Policy
配置方法请参见“Segment Routing配置指导”中的“SRv6 TE Policy”。
(3) 创建SRv6网络切片实例,并配置基本属性
a. 创建SRv6网络切片实例
(4) 配置接口的网络切片通道
(5) 配置SRv6 TE Policy候选路径引用的网络切片实例ID
(6) (可选)配置网络切片的报文统计功能
如果接口下执行slice-id flex-channel命令关联了某个网络切片实例,则删除该网络切片实例前,需要先执行undo slice-id flex-channel令取消接口和网络切片实例ID的关联,再执行undo instance命令删除指定的网络切片实例。
(1) 进入系统视图。
system-view
(2) 开启网络切片功能,并进入Network Slice视图。
network-slice
缺省情况下,网络切片功能处于关闭状态。
(3) 创建网络切片实例,并进入Network Slice实例视图。
instance slice-instance-id
(4) (可选)配置网络切片实例的描述信息。
description text
缺省情况下,未配置网络切片实例的描述信息。
在SRv6网络切片场景中,SRv6源节点为报文添加IPv6逐跳扩展头(Hop-by-Hop extension header),并且在IPv6逐跳扩展头中添加该报文所属的网络切片实例ID。缺省情况下,IPv6逐跳扩展头的协议号为0,即IPv6逐跳扩展头前一个IPv6报文头部的Next Header字段取值为0。不支持网络切片的设备接收到协议号为0的IPv6逐跳扩展头的报文会出现设备无法解析扩展头内容,处理速度变慢或者直接丢弃报文的现象。为了避免这种情况,可以配置本功能修改IPv6逐跳扩展头的协议号为非0,不支持网络切片的设备收到该报文后将忽略IPv6逐跳扩展头,根据IPv6基本头的信息正常转发报文。不同厂商设备使用的IPv6逐跳扩展头的协议号不同时,也可以使用本命令来修改IPv6逐跳扩展头的协议号,以实现不同厂商设备的互通。
(1) 进入系统视图。
system-view
(2) 进入Network Slice视图。
network-slice
(3) 配置IPv6逐跳扩展头的协议号。
protocol-number number
缺省情况下,IPv6逐跳扩展头的协议号为0。
开启接口的网络切片功能后,可以实现在接口上创建网络切片通道的功能。设备在接口上为网络切片通道分配独立的调度队列资源,并通过指定网络切片实例ID匹配到已创建的网络切片实例,与通道的实例ID匹配的报文,通过该通道来转发。报文头中IPv6逐跳扩展头的协议号为与该通道关联的网络切片实例ID下配置的协议号。
开启接口的网络切片功能前,需要先通过instance命令创建网络切片实例。
同一接口下可以配置多个网络切片通道。
目前支持本功能的接口类型为三层以太网接口,三层以太网子接口,三层聚合口,三层聚合子接口,FlexE接口。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启接口的网络切片功能,并进入接口的Network Slice视图。
network-slice enable
缺省情况下,接口上的网络切片功能处于关闭状态。
(4) 配置接口的网络切片通道,并指定网络切片通道的带宽值。
slice-id slice-instance-id flex-channel flex-channel-value
缺省情况下,接口上未配置网络切片通道。
SRv6 TE Policy的候选路径下引用了网络切片实例ID,且该候选路径被优选后,设备会为通过该候选路径转发的报文封装携带网络切片实例ID的IPv6逐跳扩展头。如果该报文转发路径上的节点的出接口配置了与该网络切片实例对应的网络切片通道,则报文会通过网络切片通道转发。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 进入SRv6-TE视图。
traffic-engineering
(4) 进入SRv6 TE Policy视图。
policy policy-name
(5) 创建SRv6 TE Policy候选路径,并进入SRv6 TE Policy候选路径视图。
candidate-paths
(6) 配置候选路径的优先级,并进入SRv6 TE Policy候选路径优先级视图。
preference preference-value
不同的优先级代表不同的候选路径。
(7) 配置SRv6 TE Policy候选路径引用的网络切片实例ID。
network-slice slice-instance-id
缺省情况下,SRv6 TE Policy候选路径未引用网络切片实例ID。
开启网络切片的报文统计功能后,用户可以通过执行display network-slice statistics命令来查看通过指定网络切片转发的报文的统计信息。
(1) 进入系统视图。
system-view
(2) 进入Network Slice视图。
network-slice
(3) 开启网络切片的报文统计功能。
statistics enable
缺省情况下,网络切片的报文统计功能处于关闭状态。
(4) (可选)配置网络切片的报文统计时间间隔。
statistics interval time
缺省情况下,网络切片的报文统计时间间隔为30秒。
在完成上述配置后,在任意视图下执行display命令可以显示配置后SRv6网络切片的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除SRv6网络切片的统计信息。
表1-1 SRv6网络切片显示和维护
操作 |
命令 |
显示网络切片实例和接口的关联关系 |
display network-slice binding-list [ slice-id slice-instance-id ] [ interface interface-type interface-number ] |
显示网络切片功能的配置信息 |
display network-slice configuration |
显示网络切片的报文统计信息 |
display network-slice statistics [ slice-id slice-instance-id ] [ interface interface-type interface-number ] [ verbose ] |
清除网络切片的报文统计信息 |
reset network-slice statistics [ slice-id slice-instance-id ] [ interface interface-type interface-number ] |
如图1-3所示,用户需要流量分别经过Device A、Device B、Device C、Device D上的网络切片转发。通过部署以下功能可以实现该需求:
· Device A~Device D设备之间运行IS-IS实现三层互通。
· Device A~Device D上部署网络切片实例,并在报文转发的出接口上配置网络切片通道。
· 在Device A上配置关联了网络切片实例的SRv6 TE Policy,限定用户流量的转发路径为Device A->Device B->Device C->Device D。
图1-3 SRv6网络切片配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Device A |
Loop1 |
1::1/128 |
Device B |
Loop1 |
2::2/128 |
|
XGE3/0/1 |
1000::1/64 |
|
XGE3/0/1 |
1000::2/64 |
|
XGE3/0/2 |
4000::1/64 |
|
XGE3/0/2 |
2000::2/64 |
Device C |
Loop1 |
3::3/128 |
Device D |
Loop1 |
4::4/128 |
|
XGE3/0/1 |
3000::3/64 |
|
XGE3/0/1 |
3000::4/64 |
|
XGE3/0/2 |
2000::3/64 |
|
XGE3/0/2 |
4000::4/64 |
(1) 请按照图1-3配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 配置Device A
# 创建网络切片实例,并配置IPv6逐跳扩展头的协议号,开启网络切片的报文统计功能。
<DeviceA> system-view
[DeviceA] network-slice
[DeviceA-network-slice] protocol-number 160
[DeviceA-network-slice] statistics enable
[DeviceA-network-slice] instance 1
[DeviceA-network-slice-instance-1] quit
# 配置转发出接口的网络切片通道。
[DeviceA] interface ten-gigabitethernet 3/0/1
[DeviceA-Ten-GigabitEthernet3/0/1] network-slice enable
[DeviceA-Ten-GigabitEthernet3/0/1-network-slice] slice-id 1 flex-channel 100
[DeviceA-Ten-GigabitEthernet3/0/1-network-slice] quit
[DeviceA-Ten-GigabitEthernet3/0/1] quit
# 配置SRv6 VPN封装的IPv6报文头的源地址。
[DeviceA] segment-routing ipv6
[DeviceA-segment-routing-ipv6] encapsulation source-address 1::1
# 配置SRv6 SID的节点路由段,并静态配置End类型的SRv6 SID。
[DeviceA-segment-routing-ipv6] locator a ipv6-prefix 5000:: 64 static 32
[DeviceA-segment-routing-ipv6-locator-a] opcode 1 end no-flavor
[DeviceA-segment-routing-ipv6-locator-a] quit
# 配置SRv6 TE Policy的BSID引用的Locator段。
[DeviceA-segment-routing-ipv6] traffic-engineering
[DeviceA-srv6-te] srv6-policy locator a
# 配置SID列表。
[DeviceA-srv6-te] segment-list s1
[DeviceA-srv6-te-sl-s1] index 10 ipv6 6000::1
[DeviceA-srv6-te-sl-s1] index 20 ipv6 7000::1
[DeviceA-srv6-te-sl-s1] index 30 ipv6 8000::1
[DeviceA-srv6-te-sl-s1] quit
# 创建SRv6 TE Policy,配置SRv6 TE Policy属性,并关联网络切片实例。
[DeviceA-srv6-te] policy p1
[DeviceA-srv6-te-policy-p1] binding-sid ipv6 5000::2
[DeviceA-srv6-te-policy-p1] color 10 end-point ipv6 4::4
[DeviceA-srv6-te-policy-p1] candidate-paths
[DeviceA-srv6-te-policy-p1-path] preference 10
[DeviceA-srv6-te-policy-p1-path-pref-10] network-slice 1
[DeviceA-srv6-te-policy-p1-path-pref-10] explicit segment-list s1
[DeviceA-srv6-te-policy-p1-path-pref-10] quit
[DeviceA-srv6-te-policy-p1-path] quit
[DeviceA-srv6-te-policy-p1] quit
[DeviceA-srv6-te] quit
[DeviceA-segment-routing-ipv6] quit
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
[DeviceA] isis 1
[DeviceA-isis-1] network-entity 00.0000.0000.0001.00
[DeviceA-isis-1] cost-style wide
[DeviceA-isis-1] address-family ipv6 unicast
[DeviceA-isis-1-ipv6] segment-routing ipv6 locator a
[DeviceA-isis-1-ipv6] quit
[DeviceA-isis-1] quit
[DeviceA] interface ten-gigabitethernet 3/0/1
[DeviceA-Ten-GigabitEthernet3/0/1] isis ipv6 enable 1
[DeviceA-Ten-GigabitEthernet3/0/1] quit
[DeviceA] interface ten-gigabitethernet 3/0/2
[DeviceA-Ten-GigabitEthernet3/0/2] isis ipv6 enable 1
[DeviceA-Ten-GigabitEthernet3/0/2] quit
[DeviceA] interface loopback 1
[DeviceA-LoopBack1] isis ipv6 enable 1
[DeviceA-LoopBack1] quit
(3) 配置Device B
# 创建网络切片实例,并配置IPv6逐跳扩展头的协议号,开启网络切片的报文统计功能。
<DeviceB> system-view
[DeviceB] network-slice
[DeviceB-network-slice] protocol-number 160
[DeviceB-network-slice] statistics enable
[DeviceB-network-slice] instance 1
[DeviceB-network-slice-instance-1] quit
# 配置转发出接口的网络切片通道。
[DeviceB] interface ten-gigabitethernet 3/0/1
[DeviceB-Ten-GigabitEthernet3/0/1] network-slice enable
[DeviceB-Ten-GigabitEthernet3/0/1-network-slice] slice-id 1 flex-channel 100
[DeviceB-Ten-GigabitEthernet3/0/1-network-slice] quit
[DeviceB-Ten-GigabitEthernet3/0/1] quit
[DeviceB] interface ten-gigabitethernet 3/0/2
[DeviceB-Ten-GigabitEthernet3/0/2] network-slice enable
[DeviceB-Ten-GigabitEthernet3/0/2-network-slice] slice-id 1 flex-channel 100
[DeviceB-Ten-GigabitEthernet3/0/2-network-slice] quit
[DeviceB-Ten-GigabitEthernet3/0/2] quit
# 配置SRv6 End.SID。
[DeviceB] segment-routing ipv6
[DeviceB-segment-routing-ipv6] locator b ipv6-prefix 6000:: 64 static 32
[DeviceB-segment-routing-ipv6-locator-b] opcode 1 end no-flavor
[DeviceB-segment-routing-ipv6-locator-b] quit
[DeviceB-segment-routing-ipv6] quit
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
[DeviceB] isis 1
[DeviceB-isis-1] network-entity 00.0000.0000.0002.00
[DeviceB-isis-1] cost-style wide
[DeviceB-isis-1] address-family ipv6 unicast
[DeviceB-isis-1-ipv6] segment-routing ipv6 locator b
[DeviceB-isis-1-ipv6] quit
[DeviceB-isis-1] quit
[DeviceB] interface ten-gigabitethernet 3/0/1
[DeviceB-Ten-GigabitEthernet3/0/1] isis ipv6 enable 1
[DeviceB-Ten-GigabitEthernet3/0/1] quit
[DeviceB] interface ten-gigabitethernet 3/0/2
[DeviceB-Ten-GigabitEthernet3/0/2] isis ipv6 enable 1
[DeviceB-Ten-GigabitEthernet3/0/2] quit
[DeviceB] interface loopback 1
[DeviceB-LoopBack1] isis ipv6 enable 1
[DeviceB-LoopBack1] quit
(4) 配置Device C
# 创建网络切片实例,并配置IPv6逐跳扩展头的协议号,开启网络切片的报文统计功能。
<DeviceC> system-view
[DeviceC] network-slice
[DeviceC-network-slice] protocol-number 160
[DeviceC-network-slice] statistics enable
[DeviceC-network-slice] instance 1
[DeviceC-network-slice-instance-1] quit
# 配置转发出接口的网络切片通道。
[DeviceC] interface ten-gigabitethernet 3/0/1
[DeviceC-Ten-GigabitEthernet3/0/1] network-slice enable
[DeviceC-Ten-GigabitEthernet3/0/1-network-slice] slice-id 1 flex-channel 100
[DeviceC-Ten-GigabitEthernet3/0/1-network-slice] quit
[DeviceC-Ten-GigabitEthernet3/0/1] quit
[DeviceC] interface ten-gigabitethernet 3/0/2
[DeviceC-Ten-GigabitEthernet3/0/2] network-slice enable
[DeviceC-Ten-GigabitEthernet3/0/2-network-slice] slice-id 1 flex-channel 100
[DeviceC-Ten-GigabitEthernet3/0/2-network-slice] quit
[DeviceC-Ten-GigabitEthernet3/0/2] quit
# 配置SRv6 End.SID。
[DeviceC] segment-routing ipv6
[DeviceC-segment-routing-ipv6] locator c ipv6-prefix 7000:: 64 static 32
[DeviceC-segment-routing-ipv6-locator-c] opcode 1 end no-flavor
[DeviceC-segment-routing-ipv6-locator-c] quit
[DeviceC-segment-routing-ipv6] quit
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
[DeviceC] isis 1
[DeviceC-isis-1] network-entity 00.0000.0000.0003.00
[DeviceC-isis-1] cost-style wide
[DeviceC-isis-1] address-family ipv6 unicast
[DeviceC-isis-1-ipv6] segment-routing ipv6 locator c
[DeviceC-isis-1-ipv6] quit
[DeviceC-isis-1] quit
[DeviceC] interface ten-gigabitethernet 3/0/1
[DeviceC-Ten-GigabitEthernet3/0/1] isis ipv6 enable 1
[DeviceC-Ten-GigabitEthernet3/0/1] quit
[DeviceC] interface ten-gigabitethernet 3/0/2
[DeviceC-Ten-GigabitEthernet3/0/2] isis ipv6 enable 1
[DeviceC-Ten-GigabitEthernet3/0/2] quit
[DeviceC] interface loopback 1
[DeviceC-LoopBack1] isis ipv6 enable 1
[DeviceC-LoopBack1] quit
(5) 配置Device D
# 创建网络切片实例,并配置IPv6逐跳扩展头的协议号,开启网络切片的报文统计功能。
<DeviceD> system-view
[DeviceD] network-slice
[DeviceD-network-slice] protocol-number 160
[DeviceD-network-slice] statistics enable
[DeviceD-network-slice] instance 1
[DeviceD-network-slice-instance-1] quit
# 配置转发出接口的网络切片通道。
[DeviceD] interface ten-gigabitethernet 3/0/1
[DeviceD-Ten-GigabitEthernet3/0/1] network-slice enable
[DeviceD-Ten-GigabitEthernet3/0/1-network-slice] slice-id 1 flex-channel 100
[DeviceD-Ten-GigabitEthernet3/0/1-network-slice] quit
[DeviceD-Ten-GigabitEthernet3/0/1] quit
# 配置SRv6 End.SID。
[DeviceD] segment-routing ipv6
[DeviceD-segment-routing-ipv6] locator d ipv6-prefix 8000:: 64 static 32
[DeviceD-segment-routing-ipv6-locator-d] opcode 1 end no-flavor
[DeviceD-segment-routing-ipv6-locator-d] quit
[DeviceD-segment-routing-ipv6] quit
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
[DeviceD] isis 1
[DeviceD-isis-1] network-entity 00.0000.0000.0004.00
[DeviceD-isis-1] cost-style wide
[DeviceD-isis-1] address-family ipv6 unicast
[DeviceD-isis-1-ipv6] segment-routing ipv6 locator d
[DeviceD-isis-1-ipv6] quit
[DeviceD-isis-1] quit
[DeviceD] interface ten-gigabitethernet 3/0/1
[DeviceD-Ten-GigabitEthernet3/0/1] isis ipv6 enable 1
[DeviceD-Ten-GigabitEthernet3/0/1] quit
[DeviceD] interface ten-gigabitethernet 3/0/2
[DeviceD-Ten-GigabitEthernet3/0/2] isis ipv6 enable 1
[DeviceD-Ten-GigabitEthernet3/0/2] quit
[DeviceD] interface loopback 1
[DeviceD-LoopBack1] isis ipv6 enable 1
[DeviceD-LoopBack1] quit
# 在Device A上查看SRv6 TE Policy的配置情况,可以看到SRv6 TE Policy处于激活状态,设备可以通过SRv6 TE Policy关联的网络切片实例转发流量。
[DeviceA] display segment-routing ipv6 te policy
Name/ID: p1/0
Color: 10
Endpoint: 4::4
…
Status: Up
…
Candidate paths:
Preference : 10
Network slice ID: 1
…
# 显示ID为1的网络切片实例的简要报文统计信息。
<Sysname> display network-slice statistics slice-id 1 interface ten-gigabitethernet 3/0/1
Network slice statistics
Interface : XGE3/0/1
Slice ID : 1
[total]
Pass: 42,430,945 packets, 7,298,122,540 bytes
Discard: 2,368,695,114 packets, 407,415,559,608 bytes
Last 50 seconds pass rate:
72,498 pps, 99,757,056 bps
Last 50 seconds discard rate:
4,048,135 pps, 5,570,233,752 bps
Last 5 seconds pass rate:
7298 pps, 99,757,056 bps
Last 5 seconds discard rate:
4148,135 pps, 5,570,233,752 bps
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!