SRv6 报文转发

目录

概述

SRv6单节点内部报文处理流程 

 SRv6报文转发流程


 

概述

        Segment Routing(SR)是一种源路由技术,它为每个节点或链路分配Segment,头节点把这些Segment组合起来形成Segment List,指引报文按照Segment List进行转发。SR在转发层有两种封装格式,一种是MPLS即SR MPLS,另一种是IPv6即SRv6。SRv6不仅继承了SR MPLS的优点,还具备标签空间数量无限、全网唯一、任意点可达的优点。

        SRv6通过Segment进行编排,实现网络设备的转发处理等一系列行为,从而完成业务编排。SRv6 Segment的标识称为SRv6 SID,SRv6 SID是一个128 bit的值,每个SRv6 SID就是一条网络指令,SRv6引入扩展头Segment Routing Header(SRH)进行Segment的编程组合形成SRv6路径,SRH格式如下图所示。SRv6报文通过SRH中的Segments Left字段以及Segment List中的路径信息,引导SRv6在网络中定向转发,其中Segments Left指向当前活跃的SID。

 

SRv6 报文转发_第1张图片

SRv6单节点内部报文处理流程 

        对于支持SRv6的节点,在接收到SRv6报文后,会将报文的目的地址与自身的本地SID表进行匹配查找 。查找命中后,会按照该SID的含义处理SRv6报文。例如对于End.X SID功能的处理,在查找表模块给出此SID相应的操作指令后,负责SRv6报文处理的模块会将SRH中Segment Left字段的数值减1,同时将此时Segment Left在Segment List指向的的SID复制到IPv6基本报文头部的目的地址,并从End.X SID指定的链路转出,SRH的处理流程如下图所示。

SRv6 报文转发_第2张图片

 SRv6报文转发流程

下图为一个部分节点支持SRv6转发的网络。

SRv6 报文转发_第3张图片

按照上图路径,报文需要从主机H1转发到主机H2,H1将报文发送给节点A处理。节点A、B、D和F均为支持SRv6设备,节点C和节点E为不支持SRv6的设备。控制层面在SRv6源节点A上进行了网络编程,希望报文经过B-C和D-E这两条链路,然后送达节点F,再经节点F送达主机H2。

SRv6报文在网络中整体的报文转发流程如下。

1、节点A将SRv6路径信息封装在SRH中。指定B-C链路和D-E链路的SID分别为End.X SID_B、End.X SID_D。另外,节点A上还要封装节点F发布的SID:End.DT4 SID_F,这个End.DT4 SID_F对应于节点F的一个IPv4 VPN。按照逆序形式压入SID序列,由于有3个SID,所以节点A封装后的报文的初始SL = 2。SL指向当前需要处理的操作指令,也就是Segment List[2]字段,节点A将对应的SID复制到外层IPv6报文头的目的地址字段,经查表后将报文转发到节点B。

SRv6 报文转发_第4张图片

2、节点B收到报文,根据IPv6报文的目的地址End.X SID_B查找本地SID表,命中End.X SID。节点B执行End.X SID指令动作,将SL的值减1,并将SL指示的SID更新到外层IPv6报文头的目的地址字段,如下图所示。同时将报文从End.X SID_B绑定的链路发送出去。

SRv6 报文转发_第5张图片

3、当报文到达节点C后,节点C只支持处理IPv6报文头,无法识别SRH,此时节点C按照正常的IPv6报文处理流程,按照最长匹配原则查找IPv6路由表,将报文转发给当前的目的地址所代表的节点D。

4、节点D收到报文,根据IPv6报文的目的地址End.X SID_D查找本地SID表,命中End.X SID。节点D执行End.X SID的指令动作,将SL的值减1,并将SL指示的SID更新到外层IPv6报文头的目的地址字段,如下图所示。同时将报文从End.X SID_D绑定的链路发送出去。

SRv6 报文转发_第6张图片

5、中转节点E只支持IPv6报文头处理,无法识别SRH,此时节点E按照正常的IPv6报文处理流程,按照最长匹配原则查找IPv6路由表,将报文转发给当前目的地址所代表的节点F。

6、节点F收到报文以后,根据外层IPv6目的地址End.DT4 SID_F查找本地SID表,命中End.DT4 SID。节点F执行End.DT4 SID的指令动作,解封装报文,去除IPv6报文头,再将内层IPv4报文在End.DT4 SID_F绑定的VPN实例的IPv4路由表中进行查表转发,最终将报文发送给主机H2。

你可能感兴趣的:(网络)