掌桥专利:专业的专利平台
掌桥专利
首页

基于ESP在overlay层实现源路由的封装报文及发送方法

文献发布时间:2023-06-19 09:51:02


基于ESP在overlay层实现源路由的封装报文及发送方法

技术领域

本发明涉及基于ESP在overlay层实现源路由的封装报文及发送方法,属于IP网络技术领域。

背景技术

当前网络中,为实现网络的TE功能,目前比较流行的是Segment Routing(分段路由)技术,在此技术中,又分为SR-MPLS技术与SRv6技术。其中SR-MPLS复用了原有的MPLS的转发面流程,通过在源节点上压入MPLS标签栈指导路由转发;SRv6则是通过新定义IPv6的扩展头来指导IPv6转发。

在SR-MPLS中,由于使用了传统的MPLS标签栈,因此仅适用于underlay网络,对于overlay的网络,由于overlay节点之间可能存在多个underlay节点,因此无法使用SR-MPLS(SR-MPLS通过2.5层来实现,即要求相邻节点都要支持SR-MPLS),在当前实现overlay的主流隧道协议中,也没有对应的标签栈的定义,因此无法实现overlay网络的SR能力。

在SRv6中,由于指导转发的信息在IP扩展头中,可以方便地实现underlay层和overlay层的分段路由,但由于其方案针对的是IPv6网络,无法适用于IPv4网络中,也就无法解决IPv4网络中的overlay网络的SR能力。

为实现IPv4 overlay网络的TE能力,目前常用的技术为隧道拼接技术,即将overlay网络中的节点连接抽象成多段隧道,通过拼接的方式来实现选择不同的路径。但这种技术,在需要保证overlay网络流量安全的要求时(多采用IPsec来保证),会造成端点之间的多段隧道需要频繁地加密和解密,会增大overlay中间节点的负担,并增大流量的延迟。同时,隧道拼接需要大量繁琐的配置,中间节点也需要保存状态,当调度频繁时,会给维护工作带来很大困难。

发明内容

本发明所要解决的技术问题是提供基于ESP在overlay层实现源路由的封装报文及发送方法、系统、设备、存储介质,基于ESP封装,对其SPI字段做语义扩展,实现IPv4中Overlay层的分段路由,并对Segment List进行认证,能够有效提高报文传输的安全性。

本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种基于ESP在overlay层实现源路由的封装报文,封装报文由头至尾依次包括MAC头、IP头、UDP头、标志位字段、中转路由栈、ESP报文;

其中,IP头中的目的IP指向下一跳节点;

设定标志位字段大于0,其中,基于标志位字段构成SPI字段,SPI字段用于指向安全关联,定义标志位字段大于255;或者基于标志位字段构成SR-Flag,实现分别与不同分段路由操作之间的对应,定义定义标志位字段对应1至255范围中各个不同数值;

基于标志位字段分别对应不同分段路由操作,中转路由栈分别构成相应分段路由操作下的栈结构,中转路由栈中由头至尾依次包括节点数、顺序各个节点、以及认证尾;其中,节点数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个节点表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过的各个节点;认证尾用于实现对中转路由栈中节点数与顺序各个节点进行认证;

伴随ESP报文从源节点到目的节点发送过程中所依次经过的各个节点,依次分别针对ESP隧道封装数据格式中的中转路由栈实现更新。

作为本发明的一种优选技术方案:所述定义标志位字段对应1至255范围中任意两个不同数值a或b,构成SR-Flag,分别对应基于MPLS标签栈的分段路由或基于IP的分段路由;

基于标志位字段对应基于MPLS标签栈的分段路由时,中转路由栈构成相应的MPLS标签栈,MPLS标签栈中由头至尾依次包括标签数、顺序各个标签、以及认证尾;其中,标签数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个标签表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的标签;认证尾用于实现对MPLS标签栈中标签数与顺序各个标签进行认证;

基于标志位字段对应基于IP的分段路由时,中转路由栈构成相应的IP路由栈,IP路由栈中由头至尾依次包括IP数、顺序各个IP、以及认证尾;其中,IP数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个IP表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的IP;认证尾用于实现对IP路由栈中IP数与顺序各个IP进行认证。

作为本发明的一种优选技术方案:所述ESP报文中由头至尾依次包括ESP头、内层IP报文、ESP尾。

本发明还设计了一种发送基于ESP在overlay层实现源路由的封装报文的方法,其中,封装报文由头至尾依次包括MAC头、IP头、UDP头、标志位字段、中转路由栈、ESP报文,基于标志位字段对应基于MPLS标签栈的分段路由时,中转路由栈构成相应的MPLS标签栈,MPLS标签栈中由头至尾依次包括标签数、顺序各个标签、以及认证尾;其中,标签数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个标签表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的标签;认证尾用于实现对MPLS标签栈中标签数与顺序各个标签进行认证;所述发送基于ESP在overlay层实现源路由的封装报文的方法,包括基于标志位字段对应基于MPLS标签栈的分段路由时,按如下步骤A1至步骤A5,实现ESP报文从源节点到目的节点的发送;

步骤A1.源节点基于网络中各节点分别所对应唯一标识的标签,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中的IP头中的目的IP,以及MPLS标签栈中的标签数、顺序各个标签、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文中IP头中的目的IP,将发送报文发往目的IP所对应的节点,并进入步骤A2;

步骤A2.目的IP所对应节点接收到发送报文后,根据MPLS标签栈中的认证尾,针对MPLS标签栈进行认证,若认证通过,则进入步骤A3;若认证不通过,则丢弃该发送报文;

步骤A3.获得发送报文中MPLS标签栈中顺序各个标签的第一个标签,基于网络中各节点分别所对应唯一标识的标签,将该标签所对应节点的IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除MPLS标签栈中顺序各个标签的第一个标签,以及针对MPLS标签栈中的标签数进行减1更新,由此更新发送报文,然后进入步骤A4;

步骤A4.判断发送报文中MPLS标签栈中的标签数是否等于1,是则进入步骤A5;否则将发送报文发往目的IP所对应节点,并返回步骤A2;

步骤A5.删除发送报文中的标志位字段、以及MPLS标签栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送。

本发明还设计了一种发送基于ESP在overlay层实现源路由的封装报文的方法,其中,封装报文由头至尾依次包括MAC头、IP头、UDP头、标志位字段、中转路由栈、ESP报文,基于标志位字段对应基于IP的分段路由时,中转路由栈构成相应的IP路由栈,IP路由栈中由头至尾依次包括IP数、顺序各个IP、以及认证尾;其中,IP数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个IP表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的IP;认证尾用于实现对IP路由栈中IP数与顺序各个IP进行认证;所述发送基于ESP在overlay层实现源路由的封装报文的方法包括基于标志位字段对应基于IP的分段路由时,按如下步骤B1至步骤B5,实现ESP报文从源节点到目的节点的发送;

步骤B1.源节点基于网络中各节点分别所对应的IP,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中IP头中的目的IP,以及IP路由栈中的IP数、顺序各个IP、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文IP头中的目的IP,将发送报文发往目的IP所对应的节点,并进入步骤B2;

步骤B2.目的IP所对应节点接收到发送报文后,根据IP路由栈中的认证尾,针对IP路由栈进行认证,若认证通过,则进入步骤B3;若认证不通过,则丢弃该发送报文;

步骤B3.获得发送报文中IP路由栈中顺序各个IP的第一个IP,将该IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除IP路由栈中顺序各个IP的第一个IP,以及针对IP路由栈中的IP数进行减1更新,由此更新发送报文,然后进入步骤B4;

步骤B4.判断发送报文中IP路由栈中的IP数是否等于1,是则进入步骤B5;否则将发送报文发往目的IP所对应节点,并返回步骤B2;

步骤B5.删除发送报文中的标志位字段、以及IP路由栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送。

本发明还设计了一种针对基于ESP在overlay层实现源路由的封装报文的发送方法的系统,基于ESP隧道封装数据格式由头至尾依次包括MAC头、IP头、UDP头、标志位字段、中转路由栈、ESP报文,所述系统包括标志位字段识别模块、中转路由栈构建模块、中转路由栈更新模块;

其中,标志位字段识别模块根据标志位字段大于255,定义标志位字段构成SPI字段,且SPI字段用于指向安全关联;以及标志位字段识别模块根据标志位字段对应1至255范围中各个不同数值,定义标志位字段构成SR-Flag,实现分别与不同分段路由操作之间的对应;

中转路由栈构建模块根据标志位字段识别模块对标志位字段分别对应不同分段路由操作的结果,定义中转路由栈分别构成相应分段路由操作下的相应栈结构,其中,中转路由栈中由头至尾依次包括节点数、顺序各个节点、以及认证尾;其中,标签数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个标签表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过的各个节点;认证尾用于实现对中转路由栈中节点数与顺序各个节点进行认证;

中转路由栈更新模块针对ESP报文从源节点到目的节点的发送过程,在ESP报文依次经过的各个节点,分别针对ESP隧道封装数据格式中的中转路由栈实现更新。

作为本发明的一种优选技术方案:所述中转路由栈构建模块根据标志位字段识别模块对标志位字段分别对应不同分段路由操作的结果,按如下方法,定义分别基于MPLS标签栈的分段路由、基于IP的分段路由的中转路由栈结构;

定义标志位字段对应1至255范围中任意两个不同数值a或b,构成SR-Flag,分别对应基于MPLS标签栈的分段路由或基于IP的分段路由;

基于标志位字段对应基于MPLS标签栈的分段路由时,中转路由栈构成相应的MPLS标签栈,MPLS标签栈中由头至尾依次包括标签数、顺序各个标签、以及认证尾;其中,标签数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个标签表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的标签;认证尾用于实现对MPLS标签栈中标签数与顺序各个标签进行认证;

基于标志位字段对应基于IP的分段路由时,中转路由栈构成相应的IP路由栈,IP路由栈中由头至尾依次包括IP数、顺序各个IP、以及认证尾;其中,IP数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个IP表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的IP;认证尾用于实现对IP路由栈中IP数与顺序各个IP进行认证。

作为本发明的一种优选技术方案:所述中转路由栈更新模块包括封装发送模块、认证模块、封装更新模块、转发判断模块、报文更新转发模块;

标志位字段对应基于MPLS标签栈的分段路由时:

中转路由栈更新模块,用于在ESP报文依次经过的各个节点,分别针对ESP隧道封装数据格式中的中转路由栈实现更新,实现ESP报文从源节点到目的节点的发送;

封装发送模块,用于针对源节点基于网络中各节点分别所对应唯一标识的标签,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中的IP头中的目的IP,以及MPLS标签栈中的标签数、顺序各个标签、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文中IP头中的目的IP,将发送报文发往目的IP所对应的节点;

认证模块,用于针对目的IP所对应节点接收到发送报文后,根据MPLS标签栈中的认证尾,针对MPLS标签栈进行认证;

封装更新模块,用于针对获得发送报文中MPLS标签栈中顺序各个标签的第一个标签,基于网络中各节点分别所对应唯一标识的标签,将该标签所对应节点的IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除MPLS标签栈中顺序各个标签的第一个标签,以及针对MPLS标签栈中的标签数进行减1更新,由此更新发送报文;

转发判断模块,用于判断发送报文中MPLS标签栈中的标签数是否等于1;

报文更新转发模块,用于删除发送报文中的标志位字段、以及MPLS标签栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送;

标志位字段对应基于IP的分段路由时:

中转路由栈更新模块,用于在ESP报文依次经过的各个节点,分别针对ESP隧道封装数据格式中的中转路由栈实现更新,实现ESP报文从源节点到目的节点的发送;

封装发送模块,用于针对源节点基于网络中各节点分别所对应的IP,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中IP头中的目的IP,以及IP路由栈中的IP数、顺序各个IP、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文IP头中的目的IP,将发送报文发往目的IP所对应的节点;

认证模块,用于针对目的IP所对应节点接收到发送报文后,根据IP路由栈中的认证尾,针对IP路由栈进行认证;

封装更新模块,用于针对获得发送报文中IP路由栈中顺序各个IP的第一个IP,将该IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除IP路由栈中顺序各个IP的第一个IP,以及针对IP路由栈中的IP数进行减1更新,由此更新发送报文;

转发判断模块,用于判断发送报文中IP路由栈中的IP数是否等于1;

报文更新转发模块,用于删除发送报文中的标志位字段、以及IP路由栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送。

本发明还设计了一种针对基于ESP在overlay层实现源路由的封装报文的发送方法的设备,至少包括处理器和存储器,所述存储器存储计算机执行指令,所述至少处理器执行所述存储器存储的计算机执行指令,使得基于ESP在overlay层实现源路由的封装报文的设备,执行上述步骤A1至步骤A5的方法或者步骤B1至步骤B5的方法。

本发明还设计了一种计算机可读存储介质,存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现上述步骤A1至步骤A5的方法或者步骤B1至步骤B5的方法。

本发明所述基于ESP在overlay层实现源路由的封装报文及发送方法、系统、设备、存储介质,采用以上技术方案与现有技术相比,具有以下技术效果:

本发明所设计基于ESP在overlay层实现源路由的封装报文及发送方法、系统、设备、存储介质,基于ESP封装,对其SPI字段做语义扩展,结合现有的SR技术,实现IPv4中Overlay层的分段路由,并具体设计了MPLS标签栈分段路由与基于IP分段路由的两种SR的实现方式,同时通过在SR头中使用认证尾,结合控制器下发节点间的密钥,对Segment List进行认证,防止中间人篡改,保障了SR路径的安全,能够有效提高报文传输的安全性;此外本发明设计中,IPsec隧道端点之间只需要加解密一次,即不用因为分段路由选路的原因导致中间路径分段加解密而引起性能下降。

附图说明

图1表示现有技术ESP报文封装格式示意图;

图2表示基于MPLS标签栈的分段路由的转发报文格式示意图;

图3表示基于IP的分段路由的转发报文格式示意图;

图4表示本发明应用实施例场景示意图;

图5表示实施例基于MPLS标签栈的分段路由的转发示意图;

图6表示实施例基于IP的分段路由的转发示意图。

具体实施方式

下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。

ESP(Encapsulating SecurityPayloads),即封装安全载荷是IPsec的一种封装协议,在当前SD-WAN的overlay网络中,大多使用IPsec的ESP隧道封装,为了支持穿越NAT,其报文封装格式如图1所示,其中的UDP头是为了穿越NAT而添加,为区分IKE报文和ESP报文,RFC3948定义了non-esp-marker,即一个4字节的全0字段,标识为是IKE报文。当该4字节为非0时,代表了ESP的SPI字段,ESP通过SPI字段去查询其SA。

基于现有ESP报文的封装格式,本发明设计了一种基于ESP在overlay层实现源路由的封装报文,封装报文由头至尾依次包括MAC头、IP头、UDP头、标志位字段、中转路由栈、ESP报文;其中,ESP报文中由头至尾依次包括ESP头、内层IP报文、ESP尾。

其中,IP头中的目的IP指向下一跳节点;设定标志位字段大于0,并定义标志位字段大于255时,标志位字段构成SPI字段,SPI字段用于指向安全关联;以及定义标志位字段对应1至255范围中各个不同数值,构成SR-Flag,实现分别与不同分段路由操作之间的对应;

基于标志位字段分别对应不同分段路由操作,中转路由栈分别构成相应分段路由操作下的栈结构,中转路由栈中由头至尾依次包括节点数、顺序各个节点、以及认证尾;其中,节点数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个节点表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过的各个节点;认证尾用于实现对中转路由栈中节点数与顺序各个节点进行认证。

伴随ESP报文从源节点到目的节点发送过程中所依次经过的各个节点,依次分别针对ESP隧道封装数据格式中的中转路由栈实现更新。

具体实际应用中,设计定义标志位字段对应1至255范围中任意两个不同数值a或b,构成SR-Flag,分别对应基于MPLS标签栈的分段路由或基于IP的分段路由。

其中,如图2所示,UDP头是为了穿越NAT,为支持分段路由,在没有NAT的场景下也需添加,源端口和目的端口值均为4500;UDP头后是4字节的字段,即标志位字段,当标志位字段对应基于MPLS标签栈的分段路由时,中转路由栈构成相应的MPLS标签栈,MPLS标签栈中由头至尾依次包括标签数、顺序各个标签、以及认证尾;其中,标签数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个标签表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的标签,标签即为分段路由的SID,可以是节点SID,也可以是邻接SID,这些SID可以由SD-WAN控制器统一分配;认证尾用于实现对MPLS标签栈中标签数与顺序各个标签进行认证,实际应用中,认证尾采用12字节,认证尾使用MD5-96或SHA-96对MPLS标签栈进行认证,即对标签数、标签1-标签N字段进行认证,防止中间人进行修改,认证密钥由控制器统一分配。对于MPLS标签栈后续继续携带传统的ESP头,ESP的加密和认证范围和RFC4303中定义一致。

与上述所设计基于ESP在overlay层实现源路由的封装报文相对应,本发明还设计了针对基于ESP在overlay层实现源路由的封装报文的发送方法,对于标志位字段对应基于MPLS标签栈的分段路由时,按如下步骤A1至步骤A5,实现ESP报文从源节点到目的节点的发送。

步骤A1.源节点基于网络中各节点分别所对应唯一标识的标签,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中的IP头中的目的IP,以及MPLS标签栈中的标签数、顺序各个标签、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文中IP头中的目的IP,将发送报文发往目的IP所对应的节点,并进入步骤A2。

步骤A2.目的IP所对应节点接收到发送报文后,根据MPLS标签栈中的认证尾,针对MPLS标签栈进行认证,若认证通过,则进入步骤A3;若认证不通过,则丢弃该发送报文。

步骤A3.获得发送报文中MPLS标签栈中顺序各个标签的第一个标签,基于网络中各节点分别所对应唯一标识的标签,将该标签所对应节点的IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除MPLS标签栈中顺序各个标签的第一个标签,以及针对MPLS标签栈中的标签数进行减1更新,由此更新发送报文,然后进入步骤A4。

步骤A4.判断发送报文中MPLS标签栈中的标签数是否等于1,是则进入步骤A5;否则将发送报文发往目的IP所对应节点,并返回步骤A2。

步骤A5.删除发送报文中的标志位字段、以及MPLS标签栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送。

如图3所示,UDP头是为了穿越NAT,为支持分段路由,在没有NAT的场景下也需添加,源端口和目的端口值均为4500;UDP头后是4字节的字段,即标志位字段,当标志位字段对应基于IP的分段路由时,中转路由栈构成相应的IP路由栈,IP路由栈中由头至尾依次包括IP数、顺序各个IP、以及认证尾;其中,IP数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个IP表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的IP;认证尾用于实现对IP路由栈中IP数与顺序各个IP进行认证,实际应用中,认证尾采用12字节,认证尾使用MD5-96或SHA-96对IP路由栈进行认证,即对IP数、IP1-IPN字段进行认证,防止中间人进行修改,认证密钥由控制器统一分配。对于IP路由栈后续继续携带传统的ESP头,ESP的加密和认证范围和RFC4303中定义一致。

对于标志位字段对应基于IP的分段路由时,按如下步骤B1至步骤B5,实现ESP报文从源节点到目的节点的发送。

步骤B1.源节点基于网络中各节点分别所对应的IP,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中IP头中的目的IP,以及IP路由栈中的IP数、顺序各个IP、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文IP头中的目的IP,将发送报文发往目的IP所对应的节点,并进入步骤B2。

步骤B2.目的IP所对应节点接收到发送报文后,根据IP路由栈中的认证尾,针对IP路由栈进行认证,若认证通过,则进入步骤B3;若认证不通过,则丢弃该发送报文。

步骤B3.获得发送报文中IP路由栈中顺序各个IP的第一个IP,将该IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除IP路由栈中顺序各个IP的第一个IP,以及针对IP路由栈中的IP数进行减1更新,由此更新发送报文,然后进入步骤B4。

步骤B4.判断发送报文中IP路由栈中的IP数是否等于1,是则进入步骤B5;否则将发送报文发往目的IP所对应节点,并返回步骤B2。

步骤B5.删除发送报文中的标志位字段、以及IP路由栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送。

针对分别基于MPLS标签栈的分段路由与基于IP的分段路由,应有于具体实施例,如图4所示,A-B之间建立IPsec隧道,期望转发流量路径为A->C->D->B,即预设报文发送路径,控制器给所有设备分配节点SID:A(16001)、B(16002)、C(16003)、D(16004)、E(16005)、F(16006)。

对应基于MPLS标签栈的分段路由时,如图5所示,控制器给节点A下发标签栈(16003,16004,16002)并关联到对应的IPsec隧道上,同时下发A-C间认证密钥S(A-C),C-D间认证密钥S(C-D),D-B间认证密钥S(D-B);应用中依次执行如下过程。

1.A通过ESP封装报文,发现有对应的标签栈,则在ESP封装后,添加标签栈(16004,16002),设置SR-Flags=1,标签数为2,使用S(A-C)对标签数和标签栈认证添加到认证尾,同时根据16003查到C的IP-C,封装在外层目的IP中发出。

2.C收到报文后,根据UDP目的端口号4500知道是IPsec相关报文,又根据SR-Flag=1知道需要做标签处理,先对标签数和标签栈使用S(A-C)进行认证,通过后再根据16004查到D的IP-D,弹出16004后,修改标签数,并使用S(C-D)重新填充认证尾,并将IP-D封装在外层目的IP中发出。

3.D收到报文后,和C类似,不过在发现16002是标签栈底后,把SR-Flag、标签数、认证尾都去掉,把IP-B封装在外层目的IP中发出。

4.B收到报文后,就是一个普通的ESP报文,做正常的解密处理。

上述的标签弹出与普通的MPLS流程有所不同。

对应基于IP的分段路由时,如图6所示,控制器给节点A下发IP路由信息(IP-C,IP-D,IP-B)并关联到对应的IPsec隧道上,应用中依次执行如下过程。

1.A通过ESP封装报文,发现有对应的SR IP路由信息,则在ESP封装后,添加IP路由信息(IP-D,IP-B),IP个数为2,设置SR-Flags=2,用S(A-C)对IP数和IP认证添加到认证尾,将IP-C封装在外层目的IP中发出。

2.C收到报文后,根据UDP目的端口号4500知道是IPsec相关报文,又根据SR-Flag=2知道需要做SR IP处理,先对IP数和IP使用S(A-C)进行认证,认证通过后将IP个数减1,并弹出IP-D,对IP个数和IP使用S(C-D)做认证后填充到认证尾,将IP-D封装在外层目的IP中发出。

3.D收到报文后,和C类似,但在发现IP个数为0后,将IP选项全部去掉,把IP-B封装在外层目的IP中发出。

4.B收到报文后,就是一个普通的ESP报文,做正常的解密处理。

与上述所设计基于ESP在overlay层实现源路由的封装报文相对应,本发明还设计了一种基于ESP在overlay层实现源路由的封装报文的系统,基于ESP隧道封装数据格式由头至尾依次包括MAC头、IP头、UDP头、标志位字段、中转路由栈、ESP报文,所述系统包括标志位字段识别模块、中转路由栈构建模块、中转路由栈更新模块。

其中,标志位字段识别模块根据标志位字段大于255,定义标志位字段构成SPI字段,且SPI字段用于指向安全关联;以及标志位字段识别模块根据标志位字段对应1至255范围中各个不同数值,定义标志位字段构成SR-Flag,实现分别与不同分段路由操作之间的对应。

中转路由栈构建模块根据标志位字段识别模块对标志位字段分别对应不同分段路由操作的结果,定义中转路由栈分别构成相应分段路由操作下的相应栈结构,其中,中转路由栈中由头至尾依次包括节点数、顺序各个节点、以及认证尾;其中,标签数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个标签表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过的各个节点;认证尾用于实现对中转路由栈中节点数与顺序各个节点进行认证。

应用中,中转路由栈构建模块根据标志位字段识别模块对标志位字段分别对应不同分段路由操作的结果,按如下方法,定义分别基于MPLS标签栈的分段路由、基于IP的分段路由的中转路由栈结构。

定义标志位字段对应1至255范围中任意两个不同数值a或b,构成SR-Flag,分别对应基于MPLS标签栈的分段路由或基于IP的分段路由;

基于标志位字段对应基于MPLS标签栈的分段路由时,中转路由栈构成相应的MPLS标签栈,MPLS标签栈中由头至尾依次包括标签数、顺序各个标签、以及认证尾;其中,标签数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个标签表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的标签;认证尾用于实现对MPLS标签栈中标签数与顺序各个标签进行认证;

基于标志位字段对应基于IP的分段路由时,中转路由栈构成相应的IP路由栈,IP路由栈中由头至尾依次包括IP数、顺序各个IP、以及认证尾;其中,IP数表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点所经过节点的个数;顺序各个IP表示预设报文发送路径下,IP头中目的IP所指向下一跳节点之后至目的节点顺序所经过各节点的IP;认证尾用于实现对IP路由栈中IP数与顺序各个IP进行认证。

所述中转路由栈更新模块包括封装发送模块、认证模块、封装更新模块、转发判断模块、报文更新转发模块。

标志位字段对应基于MPLS标签栈的分段路由时:

中转路由栈更新模块,用于在ESP报文依次经过的各个节点,分别针对ESP隧道封装数据格式中的中转路由栈实现更新,实现ESP报文从源节点到目的节点的发送;

封装发送模块,用于针对源节点基于网络中各节点分别所对应唯一标识的标签,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中的IP头中的目的IP,以及MPLS标签栈中的标签数、顺序各个标签、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文中IP头中的目的IP,将发送报文发往目的IP所对应的节点;

认证模块,用于针对目的IP所对应节点接收到发送报文后,根据MPLS标签栈中的认证尾,针对MPLS标签栈进行认证;

封装更新模块,用于针对获得发送报文中MPLS标签栈中顺序各个标签的第一个标签,基于网络中各节点分别所对应唯一标识的标签,将该标签所对应节点的IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除MPLS标签栈中顺序各个标签的第一个标签,以及针对MPLS标签栈中的标签数进行减1更新,由此更新发送报文;

转发判断模块,用于判断发送报文中MPLS标签栈中的标签数是否等于1;

报文更新转发模块,用于删除发送报文中的标志位字段、以及MPLS标签栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送;

标志位字段对应基于IP的分段路由时:

中转路由栈更新模块,用于在ESP报文依次经过的各个节点,分别针对ESP隧道封装数据格式中的中转路由栈实现更新,实现ESP报文从源节点到目的节点的发送;

封装发送模块,用于针对源节点基于网络中各节点分别所对应的IP,根据源节点到目的节点的预设报文发送路径,确定ESP隧道封装数据格式中IP头中的目的IP,以及IP路由栈中的IP数、顺序各个IP、认证尾,进而针对原始报文,按ESP隧道封装数据格式进行加密封装,构成发送报文,然后根据发送报文IP头中的目的IP,将发送报文发往目的IP所对应的节点;

认证模块,用于针对目的IP所对应节点接收到发送报文后,根据IP路由栈中的认证尾,针对IP路由栈进行认证;

封装更新模块,用于针对获得发送报文中IP路由栈中顺序各个IP的第一个IP,将该IP封装到发送报文中IP头中的目的IP中,针对目的IP进行更新,同时删除IP路由栈中顺序各个IP的第一个IP,以及针对IP路由栈中的IP数进行减1更新,由此更新发送报文;

转发判断模块,用于判断发送报文中IP路由栈中的IP数是否等于1;

报文更新转发模块,用于删除发送报文中的标志位字段、以及IP路由栈,由此更新发送报文,并将发送报文发往目的IP所对应节点,即将发送报文发往目的节点,目的节点接收发送报文,完成ESP报文从源节点到目的节点的发送。

并且本发明设计了一种针对基于ESP在overlay层实现源路由的封装报文的发送方法的设备,至少包括处理器和存储器,所述存储器存储计算机执行指令,所述至少处理器执行所述存储器存储的计算机执行指令,使得基于ESP在overlay层实现源路由的封装报文的设备,执行上述步骤A1至步骤A5的方法或者步骤B1至步骤B5的方法。

此外,本发明还设计了一种存储介质,存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现上述步骤A1至步骤A5的方法或者步骤B1至步骤B5的方法。

上述技术方案所设计基于ESP在overlay层实现源路由的封装报文及发送方法、系统、设备、存储介质,在实际应用中,对其SPI字段做语义扩展,结合现有的SR技术,实现IPv4中Overlay层的分段路由,并具体设计了MPLS标签栈分段路由与基于IP分段路由的两种SR的实现方式,同时通过在SR头中使用认证尾,结合控制器下发节点间的密钥,对SegmentList进行认证,防止中间人篡改,保障了SR路径的安全,能够有效提高报文传输的安全性;此外本发明设计中,IPsec隧道端点之间只需要加解密一次,即不用因为分段路由选路的原因导致中间路径分段加解密而引起性能下降。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

相关技术
  • 基于ESP封装和压缩IP在overlay层实现源路由的报文及发送方法
  • 用于ESP在overlay层实现源路由的报文封装方法及发送方法
技术分类

06120112322147