第一部分:深入解析SRv6 SID
SRv6(Segment Routing over IPv6)是一种源路由技术。它在数据包的IPv6扩展头中,预先放置一个有序的“指令列表”——也就是一系列128位的段标识符(SID),来精确指定报文的转发路径-1。
1. SID的组成:128位地址的三段式结构
一个SRv6 SID是一个128位的IPv6地址,但它并非对应某个物理接口,而是一个虚拟的、代表操作指令的地址-1。其结构通常包含三个主要部分:
-
Locator(定位符):位于地址高位,用于标识该SID所属的网络节点,可以理解为SRv6当中用来标识设备的ID与动态路由的RID有异曲同工之妙不过两者之间的作用并不完全一致。这是一个可汇总、可路由的IPv6前缀,网络中的其他设备通过查找Locator,就能知道如何将报文送达生成此SID的节点,当设备收到一个报文会优先查看报文的Locator信息,是否与自己的Locator一致如果一致则进行SRv6转发,如果不一致则直接按照目的地址查路由表转发。
-
Function(功能):也可以称之为动作,紧随Locator之后,是SID的核心。它定义了节点在收到报文后需要执行的本地操作,比如“转发”或“解封装”等-1-2。
-
Arguments(可选参数):位于低位,为Function携带额外的参数,例如用于定义流和服务等信息-1。
2. SID的功能与作用:网络程序的指令集
不同的Function字段定义了不同的SID类型,它们就像是网络设备可以执行的各种指令:
-
End SID(节点SID):用于标识网络中的一个节点。其指令是:处理SRH,并将下一个SID拷贝到IPv6报文的目的地址(DA)字段,然后转发报文-。
-
End.X SID(邻接SID):用于标识网络中的一条链路。其指令是:处理SRH,并从指定的接口转发报文-。
-
End.DT4/6 SID(VPN SID):用于标识一个VPN实例。其指令是:解封装报文,并查找IPv4或IPv6的VPN路由表进行转发-1。
-
End.DX4/6 SID(三层交叉连接SID):用于标识一个IPv4/IPv6的下一跳。其指令是:解封装报文,并将内层IP报文通过指定的三层接口转发给特定下一跳-1。
第二部分:SRv6 TE Policy的工作原理
SRv6 TE Policy是一种基于SRv6的隧道技术,也是实现网络切片的基础。其核心思想是:网络的入口节点通过BGP路由的“Color属性”来匹配预定义的路径规划(Policy),从而将业务流量精确地引导到指定的转发路径上。
一个SRv6 TE Policy由三个关键元素唯一标识-14:
-
头端(Head-end):Policy生效的节点,负责执行路径封装。
-
尾端(End-point):Policy的目的节点,其IPv6地址是匹配的关键。
-
Color(颜色):一个32位的数值,代表业务的SLA需求。例如,Color 100代表低延迟,Color 200代表高带宽。
一个SRv6 TE Policy可以包含多条候选路径(Candidate Path),每条候选路径都有自己的优先级(Preference)。当通过该Policy转发流量时,设备会根据优先级(值越大越优)选择最优先的路径-14。每条候选路径则由一个或多个段列表(Segment List) 构成,段列表即有序的SID列表,它决定了数据包的确切转发路径,而不是依靠IGP逐跳计算-15。
流量引入(引流):主要通过基于Color的引流实现。在网络的入口节点,当BGP路由携带的Color扩展团体属性和下一跳地址,与某个SRv6 TE Policy的Color和尾端地址完全匹配时,该BGP路由就会与SRv6 TE Policy关联起来。当设备收到匹配该路由的报文时,就会自动将其导入SRv6 TE Policy隧道进行转发-14。
第三部分:SRv6 TE Policy实验案例(华为设备)
1. 实验拓扑与需求
-
拓扑:PE1(头端)-- P -- PE2(尾端)。
-
需求:在PE1和PE2之间建立一个SRv6 TE Policy(Color 100),强制CE1与CE2之间互通的流量,经由一条精确指定的路径(例如,PE1 → P → PE2)转发,而不是依赖IGP(如IS-IS)计算的最短路径-27。
2. 配置思路
-
配置底层网络:启用IPv6,配置接口地址,运行IGP(如IS-IS或OSPFv3)实现网络互通。
-
配置SRv6基础:在所有设备上全局使能SRv6,并配置Locator和静态的End SID。
-
配置SRv6 TE Policy:在头端PE1上创建SRv6 TE Policy,指定尾端和Color,定义显式的SID列表作为候选路径,并可选地配置隧道策略。
-
配置业务引流:配置BGP VPNv4/VPNv6路由,为VPN路由设置Color属性,并在头端PE1上配置隧道策略,使其优先使用SRv6 TE Policy。
-
验证:检查VPN路由是否成功迭代到SRv6 TE Policy,并测试通信。
3. 详细配置命令
以下是基于华为设备(如NE40E/NetEngine系列,华为AR系列的命令可能略有不同)的核心配置。
步骤1:基础网络与IGP配置(以IS-IS为例)
配置所有设备的物理接口和Loopback0接口的IPv6地址,并通告Loopback0地址。
# 接口地址配置
[~PE1] interface GigabitEthernet1/0/0
[*PE1-GigabitEthernet1/0/0] ipv6 enable
[*PE1-GigabitEthernet1/0/0] ipv6 address 2001:DB8:12::1/64
[*PE1-GigabitEthernet1/0/0] quit
[*PE1] interface LoopBack 0
[*PE1-LoopBack0] ipv6 enable
[*PE1-LoopBack0] ipv6 address 2001:DB8:1::1/128
[*PE1-LoopBack0] quit
# IS-IS配置(IS-IS Level-2,支持IPv6和宽度量)
[~PE1] isis 1
[*PE1-isis-1] is-level level-2
[*PE1-isis-1] cost-style wide
[*PE1-isis-1] network-entity 49.0001.0000.0000.0001.00
[*PE1-isis-1] ipv6 enable topology ipv6
[*PE1-isis-1] quit
[*PE1] interface GigabitEthernet1/0/0
[*PE1-GigabitEthernet1/0/0] isis ipv6 enable 1
[*PE1-GigabitEthernet1/0/0] quit
[*PE1] interface LoopBack 0
[*PE1-LoopBack0] isis ipv6 enable 1
[*PE1-LoopBack0] quit
[*PE1] commit
-
P和PE2:根据拓扑(P:GE1/0/0连接PE1,GE1/0/1连接PE2;Loopback0:2001:DB8:2::2/128;PE2:GE1/0/0连接P,Loopback0:2001:DB8:3::3/128),参考上述步骤进行相应IP地址和IS-IS配置。
以上命令演示参考了使能IS-IS IPv6拓扑及配置IS-IS接口的通用方法-48。
步骤2:SRv6基础配置
在所有设备上使能SRv6,并配置Locator和静态SID。
-
PE1配置(Locator名称为PE,静态长度为32):
bash
[~PE1] segment-routing ipv6
[*PE1-segment-routing-ipv6] locator PE ipv6-prefix 2001:DB8:100:: 64 static 32
[*PE1-segment-routing-ipv6-locator-PE] opcode 1 end
[*PE1-segment-routing-ipv6-locator-PE] quit
[*PE1-segment-routing-ipv6] quit
P设备配置(Locator名称为P,静态长度为32):
bash
[~P] segment-routing ipv6
[*P-segment-routing-ipv6] locator P ipv6-prefix 2001:DB8:200:: 64 static 32
[*P-segment-routing-ipv6-locator-P] opcode 1 end
[*P-segment-routing-ipv6-locator-P] quit
[*P-segment-routing-ipv6] quit
PE2配置(Locator名称为PE2,静态长度为32):
bash
[~PE2] segment-routing ipv6
[*PE2-segment-routing-ipv6] locator PE2 ipv6-prefix 2001:DB8:300:: 64 static 32
[*PE2-segment-routing-ipv6-locator-PE2] opcode 1 end
[*PE2-segment-routing-ipv6-locator-PE2] quit
[*PE2-segment-routing-ipv6] quit
-
完成上述配置并Commit后,各设备的SRv6 Locator路由将通过IS-IS自动通告给全网其他设备。
步骤3:配置SRv6 TE Policy
在头端PE1上配置,创建名称为“to_PE2”、Color为100、尾端地址为PE2 Loopback0(2001:DB8:3::3)的Policy。并定义一个名为“Candidate1”的候选路径(优先级高),其SID列表为经P设备到达PE2。
-
PE1配置:
[~PE1] segment-routing ipv6
# 1. 创建显式路径的SID列表
[*PE1-segment-routing-ipv6] segment-list Candidate1
[*PE1-segment-routing-ipv6-segment-list-Candidate1] index 5 sid ipv6 2001:DB8:200::1
[*PE1-segment-routing-ipv6-segment-list-Candidate1] index 10 sid ipv6 2001:DB8:300::1
[*PE1-segment-routing-ipv6-segment-list-Candidate1] quit
# 2. 创建SRv6 TE Policy
[*PE1-segment-routing-ipv6] srv6-te policy to_PE2 endpoint 2001:DB8:3::3 color 100
# 3. 在Policy下配置候选路径
[*PE1-segment-routing-ipv6-srv6-te-policy-to_PE2] candidate-path preference 200
[*PE1-segment-routing-ipv6-srv6-te-policy-to_PE2-path-pref200] segment-list Candidate1
[*PE1-segment-routing-ipv6-srv6-te-policy-to_PE2-path-pref200] quit
[*PE1-segment-routing-ipv6-srv6-te-policy-to_PE2] quit
[*PE1-segment-routing-ipv6] quit
[*PE1] commit
-
index 5 sid ipv6 2001:DB8:200::1配置指令参考了在Segment List中指定SID的通用格式,其中index值(如5、10)用于排序-47。
步骤4:配置业务引流(基于Color的引流)
-
核心配置:在PE1上配置隧道策略(Tunnel Policy),将所有(或特定Color)的BGP路由强制迭代到SRv6 TE Policy上。
[~PE1] tunnel-policy srv6-te
[*PE1-tunnel-policy-srv6-te] tunnel select-seq srv6-te-policy load-balance-number 1
[*PE1-tunnel-policy-srv6-te] quit
-
VPN业务配置简述:本例主要演示Policy的转发原理,VPN实例(VRF)及BGP邻居等基础配置在此不详细展开。其核心是为私网路由设置Color 100扩展团体属性。在PE1上,通过VPN实例视图或BGP VPNv4地址族下应用上述隧道策略(
tnl-policy srv6-te),使PE1在学习到来自PE2的、带有Color 100的VPN路由后,能将其迭代到我们创建的SRv6 TE Policy中-31。
4. 通信过程与原理
-
路由迭代:CE2将192.168.2.0/24的路由通告给PE2。PE2将此路由作为VPNv4路由通过BGP发给PE1,并携带Color 100扩展团体属性。
-
路由接收与策略匹配:PE1收到该BGP路由后,发现其Color 100和下一跳(PE2的Loopback0地址2001:DB8:3::3),正好匹配本地配置的SRv6 TE Policy(to_PE2)。同时,配置的隧道策略允许VPN路由迭代到SRv6 TE Policy。因此,PE1在转发表中建立关联:目标网络192.168.2.0/24 -> SRv6 TE Policy。
-
报文封装与转发:当CE1发送一个目的地址为192.168.2.1的IP报文到PE1时:
a. PE1查找路由表,命中与SRv6 TE Policy关联的条目。
b. PE1根据Policy中优先级最高的候选路径(preference 200),获取其Segment List[2001:DB8:200::1, 2001:DB8:300::1]。
c. PE1将原始IP报文封装在一个新的IPv6头和一个SRH中。SRH中按顺序存放SID列表-2。初始时,IPv6头中的目的地址(DA)字段被设置为列表中的第一个SID(2001:DB8:200::1)。
d. 转发:P设备收到报文,检查目的地址2001:DB8:200::1。此地址是P设备本地生成的End SID,P设备根据指令,处理SRH,将Segments Left减1,并将下一个SID(2001:DB8:300::1)拷贝到新IPv6头的DA字段,然后转发给PE2。 -
解封装与送达:PE2收到报文,发现DA是自己的End SID(
2001:DB8:300::1)。它执行指令,剥离外层的SRv6封装,将内层的原始IP报文传递给相应的VPN实例,最终转发给CE2。
通过上述步骤,CE1与CE2的业务流就成功、精确地按照我们规划的路径进行了转发。

1054

被折叠的 条评论
为什么被折叠?



