隧道封装报文校验和计算方法及相关装置与流程
未命名
07-22
阅读:115
评论:0

1.本技术涉及智能网卡技术领域,具体涉及一种隧道封装报文校验和计算方法及相关装置。
背景技术:
2.目前,智能网卡在与外网进行通信的一种方法是网络隧道技术,网络隧道技术是将报文封装一个头部,从而,实现更换网络协议和突破ip域段进行通信的技术。在进行隧道封装时,隧道头中包含的用户数据报协议(user datagram protocol,udp)层校验和需要计算的校验和。基于这个要求,udp层校验和涉及到综合整个报文结果的计算,计算量大,计算结果复杂,得到计算结果较慢,耗费计算资源,因此,如何在节省计算资源的情况下,提升udp层校验和计算效率的问题亟待解决。
技术实现要素:
3.本技术提供了一种隧道封装报文校验和计算方法及相关装置,可以在节省计算资源的情况下,提升udp层校验和计算效率。
4.第一方面,本技术提供一种隧道封装报文校验和计算方法,所述方法包括:获取第一报文;将所述第一报文中的所有字节进行累加,得到第一报文累加和;在报文编辑过程中,确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数;根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分,k为正整数;根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。
5.第二方面,本技术提供了一种隧道封装报文校验和计算装置,所述装置包括:获取单元、运算单元和确定单元,其中,所述获取单元,用于获取第一报文;所述运算单元,用于将所述第一报文中的所有字节进行累加,得到第一报文累加和;所述确定单元,用于在报文编辑过程中,确定所述第一报文的报文域段,并识别所
述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数;所述运算单元,还用于根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;所述获取单元,还用于获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分,k为正整数;所述确定单元,还用于根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。
6.第三方面,本技术提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本技术第一方面中的步骤的指令。
7.第四方面,本技术提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本技术第一方面中所描述的部分或全部步骤。
8.第五方面,本技术提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本技术第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
9.实施本技术,具备如下有益效果:可以看出,本技术中所描述的隧道封装报文校验和计算方法及相关装置,获取第一报文,将第一报文中的所有字节进行累加,得到第一报文累加和,在报文编辑过程中,确定第一报文的报文域段,并识别报文域段中的新值集和旧值集,新值集包括n个新值,旧值集包括m个旧值;新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数,根据新值集进行运算,得到第一计算结果,根据旧值集进行运算,得到第二计算结果,根据第一报文累加和、第一计算结果和第二计算结果确定第二报文累加和,获取第一报文的原始报文,根据原始报文获取隧道头,并在隧道头中提取伪首部,得到伪首部的k个部分,k为正整数,根据第二报文累加和和伪首部的k个部分确定udp校验和,将udp校验和放入隧道头中的udp校验和域段,在报文识别阶段提前进行原始报文整包累加和计算,以及原始报文累加和在编辑过程中的部分重计算,能够在隧道封装过程中实现节约缓存资源节约,同时,降低了通信延时和通信延时的不确定性,即在节省计算资源的情况下,提升udp层校验和计算效率。
附图说明
10.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的
一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
11.图1是本技术提供的一种智能网卡与外网进行通信的网络隧道技术对应的通信系统示意图;图2是本技术提供的另一种隧道封装报文校验和计算方法的流程示意图;图3是本技术提供的一种智能网卡与外网进行通信的又一网络隧道技术对应的通信系统示意图图4是本技术提供的一种电子设备的结构示意图;图5是本技术提供的一种隧道封装报文校验和计算装置的功能单元组成框图。
具体实施方式
12.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
13.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
14.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
15.具体实现中,本技术所涉及到的电子设备可以为任一具备隧道封装报文校验和计算的电子设备,该电子设备可以包括但不仅限于:智能网卡、路由器、交换机、udp、智能手机、平板电脑、智能机器人、智能投影仪、会议设备、车载设备、可穿戴设备、服务器、视频传输摄像头、无线或有线直播设备、语音交流设备、多人在线会议设备、网络设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,ue),移动台(mobile station,ms),终端设备(terminal device)等等,在此不做限定。电子设备还可以包括服务器。
16.相关技术中,如图1所示,图1为智能网卡与外网进行通信的网络隧道技术对应的通信系统示意图。即智能网卡可以包括一个网络端口(第一网络端口),外网可以对应一个网络端口(第二网络端口)。该通信系统可以包括报文识别模块、隧道封装模块、报文缓存模块、校验和计算模块。报文识别模块用于实现报文识别功能。隧道封装模块用于实现封装功能。报文缓存模块用于实现报文缓存,校验和计算模块用于实现校验和计算功能。
17.具体实现中,在进行隧道头封装后,对整个报文进行缓存,提取伪首部和报文净荷,进行计算。即在隧道头封装完成后,缓存整个报文进行计算,实际应用中,需要将整个报文缓存起来进行计算,从而,通信延时大,消耗缓存资源多。尤其在报文长度不确定的情况
下,延时也随应用场景多样而变得不确定。
18.为了解决相关技术中的缺陷,本技术提供了一种隧道封装报文校验和计算方法,其中可以包括如下步骤:获取第一报文;将所述第一报文中的所有字节进行累加,得到第一报文累加和;在报文编辑过程中,确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数;根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分;根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。
19.本技术中,通过提前进行原始报文整包累加和计算,以及原始报文累加和在编辑过程中的部分重计算,相比相关技术中的方案,即缓存整个报文而后计算校验和来说,隧道封装过程中的缓存资源实现了节约,同时降低了通信延时和通信延时的不确定性。
20.举例说明下,以报文为c字节为例,在每个时钟周期/指令执行周期,本级模块按照设计,固定在每个时钟周期/指令执行周期收到报文h字节(h≤c),若本级模块进行整包累加和计算,本级模块需要在收到整个报文后进行缓存,根据缓存后的结果进行计算,那么本级模块至少需要准备缓存为(c/h+1)*h,即h的整数倍,非整数倍的情况下向上取整;本级模块的延时则为(c/h+1)*时钟周期/指令执行周期。由于c在实际应用中是每个报文不断变化的,因此,缓存空间和延时要预留很大的空间进行准备,这是对存储资源的很大浪费。按照本技术中的计算方法,可以节约(c/h+1)*h的缓存空间,以及减少(c/h+1)*时钟周期/指令执行周期的通信延时。
21.下面对本技术进行详细介绍。
22.请参阅图2,图2是本技术提供的一种隧道封装报文校验和计算方法的流程示意图,应用于电子设备;如图所示,本隧道封装报文校验和计算方法包括:201、获取第一报文。
23.具体实现中,可以在报文识别阶段,获取第一报文,第一报文可以为一个或者多个报文。即第一报文可以为一个完整的报文,或者,第一报文也可以为完整的多个报文。
24.本技术可以适用于各种隧道技术,例如,ipv6。
25.其中,第一报文可以为任一报文,或者,第一报文也可以由用户指定或者系统默认。
26.202、将所述第一报文中的所有字节进行累加,得到第一报文累加和。
27.本技术中,可以直接将第一报文中的所有字节进行累加,得到第一报文累加和。
28.203、在报文编辑过程中,确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数。
29.本技术中,在报文编辑过程中,可以确定第一报文的报文域段,报文域段可以为一个地址段,地址段可以多个地址,每一地址可以对应一个值,并识别报文域段中的新值集和旧值集,新值集可以包括n个新值,旧值集可以包括m个旧值;n为自然数,即n为大于或等于0的整数,m为自然数,即m为大于或等于0的整数。
30.其中,新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样。
31.具体实现中,上述步骤203也可以多次执行,从而,可以获取多个新值集,以及多个旧值集。
32.204、根据所述新值集进行运算,得到第一计算结果。
33.本技术中,可以将新值进行累加,从而得到第一计算结果。
34.可选的,上述步骤204,根据所述新值集进行运算,得到第一计算结果,可以按照如下方式实施:将所述新值集进行累加和运算,得到所述第一计算结果。
35.具体实现中,新值集可以包括一个或者多个新值,可以将新值集进行累加和运算,得到第一计算结果。
36.205、根据所述旧值集进行运算,得到第二计算结果。
37.具体实现中,旧值集可以包括一个或者多个旧值,即可以将该一个或者多个旧值进行积累运算,得到第二计算结果;或者,也可以将一个或者多个旧值先进行累加运算,再进行取反运算,得到第二计算结果。
38.206、根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和。
39.具体实现中,可以对第二计算结果进行取反,再将取反后的结果与第一报文累加和、第一计算结果进行累加运算,得到第二报文。
40.具体实现中,上述步骤202-步骤206可以重复多次计算,在编辑过程中的部分重计算,保证隧道封装过程中的缓存资源实现了节约,同时,降低了通信延时和通信延时的不确定性。
41.可选的,上述步骤205,根据所述旧值集进行运算,得到第二计算结果,可以按照如下方式实施:将所述旧值集进行累加和运算,得到所述第二计算结果;则上述步骤206,根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和,可以包括如下步骤:将所述第二计算结果进行取反运算,得到目标第二计算结果;将所述第一报文累加和、所述第一计算结果和所述目标第二计算结果进行累加,得到所述第二报文累加和。
42.具体实现中,可以将旧值集进行累加和运算,得到第二计算结果,接着,可以将第二计算结果进行取反运算,得到目标第二计算结果,再将第一报文累加和、第一计算结果和
目标第二计算结果进行累加,得到第二报文累加和。
43.具体实现中,第一计算结果和第二计算结果在算法上大致是一样的,都是16bit累加,在工程实现上可以复用相同计算模块,实现敏捷开发和计算资源节约。其中,第一报文累加和、第一计算结果和目标第二计算结果进行累加的计算方法是由标准的校验和计算方法规定得到的。
44.可选的,上述步骤205,根据所述旧值集进行运算,得到第二计算结果,可以按照如下方式实施:将所述旧值集进行累加和运算和取反运算,得到所述第二计算结果;则上述步骤206,根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和,可以按照如下方式实施:将所述第一报文累加和、所述第一计算结果和所述第二计算结果进行累加,得到所述第二报文累加和。
45.具体实现中,可以旧值集进行累加和运算,得到一个值,再将该值进行取反运算,得到第二计算结果,再将第一报文累加和、第一计算结果和第二计算结果进行累加,得到第二报文累加和。
46.具体实现中,第一计算结果和第二计算结果在算法上大致是一样的,都是16bit累加,在工程实现上可以复用相同计算模块,实现敏捷开发和计算资源节约。其中,第一报文累加和、第一计算结果和目标第二计算结果进行累加的计算方法是由标准的校验和计算方法规定得到的。
47.207、获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分,k为正整数。
48.本技术中,可以获取第一报文的原始报文,即原始报文包括第一报文,或者,第一报文为原始报文的部分报文或者全部报文,或者,第一报文为原始报文经过一定处理得到的报文,再获取原始报文对应的隧道头,在隧道头中提取伪首部,得到伪首部的k个部分,k为正整数。
49.208、根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。
50.本技术中,可以将伪首部的k个部分进行求和运算,得到一个累加和,再将该累加和和第二报文累加和进行求和运算,得到udp校验和,将该udp校验和放入隧道头中的udp校验和域段。
51.当然,具体实现中,udp校验和也可以按照如下方式实现,即udp校验和可以为隧道头伪首部累加和+新值累加和+旧值累加和取反+原整包校验和的得到的一个值,将该值进行取反。
52.可选的,上述步骤208,根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,可以包括如下步骤:将所述伪首部的k个部分进行累加,得到伪首部累加和;将所述第二报文累加和和所述伪首部累加和进行求和运算,得到第三计算结果;将所述第三计算结果进行取反运算,得到所述udp校验和。
53.本技术中,可以将伪首部的k个部分进行累加,得到伪首部累加和,再将第二报文
累加和和伪首部累加和进行求和运算,得到第三计算结果,将第三计算结果进行取反运算,得到udp校验和。
54.举例说明下,如图3所示,图3为智能网卡与外网进行通信的又一网络隧道技术对应的通信系统示意图。即智能网卡可以包括一个网络端口(第一网络端口),外网可以对应一个网络端口(第二网络端口)。该通信系统可以包括报文识别模块、第一报文编辑模块、第二报文编辑模块、隧道封装模块、隧道头存储模块。
55.其中,报文识别模块用于实现报文识别功能,如识别并计算整包累加和。第一报文编辑模块、第二报文编辑模块功能可以相同或者不同,两者均是实现报文编辑功能,如报文编辑动作以及更新整包累加和。隧道封装模块用于实现封装功能,如整包累加和与隧道头伪首部累加和计算隧道头校验和。隧道头存储模块用于存储隧道头。
56.具体实现中,报文识别模块在识别报文过程中,将整个报文的所有字节进行累加,得到报文累加和信息传到后级。第一报文编辑模块在进行报文编辑的时候,对该模块编辑的报文域段,新值单独进行累加,同时旧值单独进行累加,原有的报文累加、新值累加和、取反旧值累加和之间三者求和,这样得到了第一报文编辑模块编辑后的整包累加和。第二报文编辑模块与第一报文编辑模块计算方法相同。隧道封装模块获取原始报文,从隧道头存储模块获取隧道头,在隧道头中提取伪首部,并将整包累加和与伪首部累加和相加后取反,可得到隧道头中的udp校验和,将该校验和放入隧道头中的udp校验和域段。
57.本技术中,报文在封装隧道头前,由前级报文识别模块在识别时,计算整个报文的累加和作为隧道头中udp 校验和的一部分,传递给隧道封装模块,在报文经过各种编辑过程中,该累加和随着报文编辑过程刷新。经过了原始报文的编辑动作后,对原始报文执行隧道封装操作,此时获取提前储存好的隧道报文头,并提取伪首部域段,计算伪首部的累加和,与原始报文累加和相加后取反,即为隧道头的udp 校验和。这样得到校验和可以有效减少缓存资源利用,降低延时。
58.本技术中,通过在前级提前进行原始报文整包累加和计算,以及原始报文累加和在编辑过程中的部分重计算,相比相关技术中的方案,即缓存整个报文而后计算校验和来说,隧道封装过程中的缓存资源实现了节约,同时降低了通信延时和通信延时的不确定性。
59.可以看出,本技术中所描述的隧道封装报文校验和计算方法,获取第一报文,将第一报文中的所有字节进行累加,得到第一报文累加和,在报文编辑过程中,确定第一报文的报文域段,并识别报文域段中的新值集和旧值集,新值集包括n个新值,旧值集包括m个旧值;新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数,根据新值集进行运算,得到第一计算结果,根据旧值集进行运算,得到第二计算结果,根据第一报文累加和、第一计算结果和第二计算结果确定第二报文累加和,获取第一报文的原始报文,根据原始报文获取隧道头,并在隧道头中提取伪首部,得到伪首部的k个部分,k为正整数,根据第二报文累加和和伪首部的k个部分确定udp校验和,将udp校验和放入隧道头中的udp校验和域段,在报文识别阶段提前进行原始报文整包累加和计算,以及原始报文累加和在编辑过程中的部分重计算,能够在隧道封装过程中实现节约缓存资源节约,同时,降低了通信延时和通信延时的不确定性,即在节省计算资源的情况下,提升udp层校验和计算效率。
60.与上述实施例一致地,请参阅图4,图4是本技术提供的一种电子设备的结构示意图,如图所示,所该电子设备包括处理器、存储器、通信接口以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,本技术中,上述程序包括用于执行以下步骤的指令:获取第一报文;将所述第一报文中的所有字节进行累加,得到第一报文累加和;在报文编辑过程中,确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数;根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分,k为正整数;根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。
61.可选的,在所述根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和方面,上述程序包括用于执行以下步骤的指令:将所述伪首部的k个部分进行累加,得到伪首部累加和;将所述第二报文累加和和所述伪首部累加和进行求和运算,得到第三计算结果;将所述第三计算结果进行取反运算,得到所述udp校验和。
62.可选的,在所述根据所述新值集进行运算,得到第一计算结果方面,上述程序包括用于执行以下步骤的指令:将所述新值集进行累加和运算,得到所述第一计算结果。
63.可选的,在所述根据所述旧值集进行运算,得到第二计算结果方面,上述程序包括用于执行以下步骤的指令:将所述旧值集进行累加和运算,得到所述第二计算结果;在所述根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和方面,上述程序包括用于执行以下步骤的指令:将所述第二计算结果进行取反运算,得到目标第二计算结果;将所述第一报文累加和、所述第一计算结果和所述目标第二计算结果进行累加,得到所述第二报文累加和。
64.可选的,在所述根据所述旧值集进行运算,得到第二计算结果方面,上述程序包括用于执行以下步骤的指令:将所述旧值集进行累加和运算和取反运算,得到所述第二计算结果;在所述根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和方面,上述程序包括用于执行以下步骤的指令:
将所述第一报文累加和、所述第一计算结果和所述第二计算结果进行累加,得到所述第二报文累加和。
65.可以看出,本技术中所描述的电子设备,获取第一报文,将第一报文中的所有字节进行累加,得到第一报文累加和,在报文编辑过程中,确定第一报文的报文域段,并识别报文域段中的新值集和旧值集,新值集包括n个新值,旧值集包括m个旧值;新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数,根据新值集进行运算,得到第一计算结果,根据旧值集进行运算,得到第二计算结果,根据第一报文累加和、第一计算结果和第二计算结果确定第二报文累加和,获取第一报文的原始报文,根据原始报文获取隧道头,并在隧道头中提取伪首部,得到伪首部的k个部分,k为正整数,根据第二报文累加和和伪首部的k个部分确定udp校验和,将udp校验和放入隧道头中的udp校验和域段,在报文识别阶段提前进行原始报文整包累加和计算,以及原始报文累加和在编辑过程中的部分重计算,能够在隧道封装过程中实现节约缓存资源节约,同时,降低了通信延时和通信延时的不确定性,即在节省计算资源的情况下,提升udp层校验和计算效率。
66.图5是本技术中所涉及的一种隧道封装报文校验和计算装置500的功能单元组成框图。该隧道封装报文校验和计算装置500包括:获取单元501、运算单元502和确定单元503,其中,所述获取单元501,用于获取第一报文;所述运算单元502,用于将所述第一报文中的所有字节进行累加,得到第一报文累加和;所述确定单元503,用于在报文编辑过程中,确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数;所述运算单元,还用于根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;所述获取单元,还用于获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分,k为正整数;所述确定单元,还用于根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。
67.可选的,在所述根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和方面,所述确定单元503具体用于:将所述伪首部的k个部分进行累加,得到伪首部累加和;将所述第二报文累加和和所述伪首部累加和进行求和运算,得到第三计算结果;将所述第三计算结果进行取反运算,得到所述udp校验和。
68.可选的,在所述根据所述新值集进行运算,得到第一计算结果方面,所述运算单元502具体用于:
将所述新值集进行累加和运算,得到所述第一计算结果。
69.可选的,在所述根据所述旧值集进行运算,得到第二计算结果方面,所述运算单元502具体用于:将所述旧值集进行累加和运算,得到所述第二计算结果;在所述根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和方面,所述运算单元502具体用于:将所述第二计算结果进行取反运算,得到目标第二计算结果;将所述第一报文累加和、所述第一计算结果和所述目标第二计算结果进行累加,得到所述第二报文累加和。
70.可选的,在所述根据所述旧值集进行运算,得到第二计算结果方面,所述运算单元502具体用于:将所述旧值集进行累加和运算和取反运算,得到所述第二计算结果;在所述根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和方面,所述运算单元502具体用于:将所述第一报文累加和、所述第一计算结果和所述第二计算结果进行累加,得到所述第二报文累加和。
71.可以看出,本技术中所描述的隧道封装报文校验和计算方法装置,获取第一报文,将第一报文中的所有字节进行累加,得到第一报文累加和,在报文编辑过程中,确定第一报文的报文域段,并识别报文域段中的新值集和旧值集,新值集包括n个新值,旧值集包括m个旧值;新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数,根据新值集进行运算,得到第一计算结果,根据旧值集进行运算,得到第二计算结果,根据第一报文累加和、第一计算结果和第二计算结果确定第二报文累加和,获取第一报文的原始报文,根据原始报文获取隧道头,并在隧道头中提取伪首部,得到伪首部的k个部分,k为正整数,根据第二报文累加和和伪首部的k个部分确定udp校验和,将udp校验和放入隧道头中的udp校验和域段,在报文识别阶段提前进行原始报文整包累加和计算,以及原始报文累加和在编辑过程中的部分重计算,能够在隧道封装过程中实现节约缓存资源节约,同时,降低了通信延时和通信延时的不确定性,即在节省计算资源的情况下,提升udp层校验和计算效率。
72.可以理解的是,本实施例的隧道封装报文校验和计算装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
73.本技术还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
74.本技术还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
75.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
76.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
77.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
78.上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
79.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
80.上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例上述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
81.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-only memory ,简称:rom)、随机存取器(英文:random access memory,简称:ram)、磁盘或光盘等。
82.以上对本技术进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种隧道封装报文校验和计算方法,其特征在于,所述方法包括:获取第一报文;将所述第一报文中的所有字节进行累加,得到第一报文累加和;在报文编辑过程中,确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数;根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分,k为正整数;根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。2.根据权利要求1所述的方法,其特征在于,所述根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,包括:将所述伪首部的k个部分进行累加,得到伪首部累加和;将所述第二报文累加和和所述伪首部累加和进行求和运算,得到第三计算结果;将所述第三计算结果进行取反运算,得到所述udp校验和。3.根据权利要求1或2所述的方法,其特征在于,所述根据所述新值集进行运算,得到第一计算结果,包括:将所述新值集进行累加和运算,得到所述第一计算结果。4.根据权利要求1或2所述的方法,其特征在于,所述根据所述旧值集进行运算,得到第二计算结果,包括:将所述旧值集进行累加和运算,得到所述第二计算结果;所述根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和,包括:将所述第二计算结果进行取反运算,得到目标第二计算结果;将所述第一报文累加和、所述第一计算结果和所述目标第二计算结果进行累加,得到所述第二报文累加和。5.根据权利要求1或2所述的方法,其特征在于,所述根据所述旧值集进行运算,得到第二计算结果,包括:将所述旧值集进行累加和运算和取反运算,得到所述第二计算结果;所述根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和,包括:将所述第一报文累加和、所述第一计算结果和所述第二计算结果进行累加,得到所述第二报文累加和。6.一种隧道封装报文校验和计算装置,其特征在于,所述装置包括:获取单元、运算单
元和确定单元,其中,所述获取单元,用于获取第一报文;所述运算单元,用于将所述第一报文中的所有字节进行累加,得到第一报文累加和;所述确定单元,用于在报文编辑过程中,确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集,所述新值集包括n个新值,所述旧值集包括m个旧值;所述新值用于表示在本次计算时该新值所在位置的值与上一次计算该位置的值不一样;所述旧值用于表示在本次计算时该旧值所在位置的值与上一次计算该位置的值一样;n为自然数,m为自然数;所述运算单元,还用于根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;所述获取单元,还用于获取所述第一报文的原始报文,根据所述原始报文获取隧道头,并在所述隧道头中提取伪首部,得到伪首部的k个部分,k为正整数;所述确定单元,还用于根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和,将所述udp校验和放入所述隧道头中的udp校验和域段。7.根据权利要求6所述的装置,其特征在于,在所述根据所述第二报文累加和和所述伪首部的k个部分确定udp校验和方面,所述确定单元具体用于:将所述伪首部的k个部分进行累加,得到伪首部累加和;将所述第二报文累加和和所述伪首部累加和进行求和运算,得到第三计算结果;将所述第三计算结果进行取反运算,得到所述udp校验和。8.根据权利要求6或7所述的装置,其特征在于,在所述根据所述新值集进行运算,得到第一计算结果方面,所述运算单元具体用于:将所述新值集进行累加和运算,得到所述第一计算结果。9.一种电子设备,其特征在于,包括处理器、存储器,所述存储器用于存储一个或多个程序,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-5任一项所述的方法中的步骤的指令。10.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-5任一项所述的方法。
技术总结
本申请公开了一种隧道封装报文校验和计算方法及相关装置,该方法包括:获取第一报文;将所述第一报文中的所有字节进行累加,得到第一报文累加和;确定所述第一报文的报文域段,并识别所述报文域段中的新值集和旧值集;根据所述新值集进行运算,得到第一计算结果;根据所述旧值集进行运算,得到第二计算结果;根据所述第一报文累加和、所述第一计算结果和所述第二计算结果确定第二报文累加和;获取所述第一报文的原始报文,根据所述原始报文获取隧道头,在所述隧道头中提取伪首部,得到伪首部的k个部分;根据所述第二报文累加和和所述伪首部的k个部分确定UDP校验和。采用本申请可以在节省计算资源的情况下,提升UDP层校验和计算效率。率。率。
技术研发人员:战永超 王天建 顾荣豪
受保护的技术使用者:珠海星云智联科技有限公司
技术研发日:2023.06.13
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/