CN114793210A - 一种数据报文多发选收发送、接收方法、装置及系统 - Google Patents
一种数据报文多发选收发送、接收方法、装置及系统 Download PDFInfo
- Publication number
- CN114793210A CN114793210A CN202210715959.8A CN202210715959A CN114793210A CN 114793210 A CN114793210 A CN 114793210A CN 202210715959 A CN202210715959 A CN 202210715959A CN 114793210 A CN114793210 A CN 114793210A
- Authority
- CN
- China
- Prior art keywords
- array
- data message
- data
- sending
- duplication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000006854 communication Effects 0.000 claims abstract description 112
- 238000004891 communication Methods 0.000 claims abstract description 111
- 230000015654 memory Effects 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 27
- 230000008030 elimination Effects 0.000 claims description 16
- 238000003379 elimination reaction Methods 0.000 claims description 16
- 238000012360 testing method Methods 0.000 claims description 14
- 239000000284 extract Substances 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000003491 array Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000005540 biological transmission Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 12
- 239000000047 product Substances 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000013307 optical fiber Substances 0.000 description 3
- 230000005641 tunneling Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/245—Link aggregation, e.g. trunking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/31—Flow control; Congestion control by tagging of packets, e.g. using discard eligibility [DE] bits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
本文涉及通信技术领域,尤其涉及一种数据报文多发选收发送、接收方法、装置及系统。其中方法,包括获取待发送的数据报文;为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号;将所述数据报文进行至少一次复制,得到至少一份数据报文副本;将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去。利用本文实施例,节省多发选收方案中去重步骤中对接收端缓存数据报文而消耗的内存。
Description
技术领域
本文涉及通信技术领域,尤其涉及一种数据报文多发选收发送、接收方法、装置及系统。
背景技术
在数据传输领域,某些关键数据具有实时性及高速传输的需求,这类需求对带宽使用不敏感,而对丢包和延时比较敏感;因此在网络带宽充足的情况下,相关企业用户宁可花费数倍的带宽去保证链路质量。
针对这部分需求,现有技术中的一种解决方式是多路发送去重接收方案,简称多发选收方案,其基本思想是将多条链路(可以是虚拟链路,即隧道)绑在一起,每条链路都发送一个完全相同的报文,在接收端则收取最先到达的报文,后到的报文则丢弃。多发选收方案中最重要的技术是收包去重算法,通用的方法是在发送端对相同的数据包进行标识,而在接收端则对比数据包的标识,而接收端如何比对数据包标识则影响了接收端设备主机消耗,如CPU和内存的消耗。
如何解决现有技术中多发选收方案去重时需要占用较多的系统资源是亟需解决的问题。
发明内容
为解决现有技术中的问题,本文实施例提供了一种数据报文多发选收发送、接收方法、装置及系统,解决了现有技术中多发选收方案中消耗设备存储空间的问题。
本文实施例提供了一种数据报文多发选收发送方法,包括,
获取待发送的数据报文;
为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号;
将所述数据报文进行至少一次复制,得到至少一份数据报文副本;
将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去。
本文实施例还提供了一种数据报文多发选收接收方法,包括,
通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;
解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号;
根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本。
本文实施例还提供了一种发送端多发选收装置,包括,
获取单元,获取待发送的数据报文;
标识字段添加单元,为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号;
复制单元,将所述数据报文进行至少一次复制,得到至少一份数据报文副本;
发送单元,将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去。
本文实施例还提供了一种接收端多发选收装置,包括,
接收单元,用于通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;
解析单元,用于解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号;
处理单元,用于根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本。
本文实施例还提供了一种数据报文多发选收系统,包括,发送端和接收端,其中,
所述发送端进一步包括:发送端通信实体、发送端多发选收模块、发送端网络通信模块;
所述接收端进一步包括:接收端通信实体、接收端多发选收模块、接收端网络通信模块;
所述发送端通信实体将数据报文发送给发送端多发选收模块;所述发送端多发选收模块获取所述数据报文,为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号,将所述数据报文进行至少一次复制,得到至少一份数据报文副本,将所述数据报文和所述数据报文副本发送给所述发送端网络通信模块;所述发送端网络通信模块通过不同的链路分别将所述数据报文和所述数据报文副本出去;
所述接收端网络通信模块通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;所述接收端多发选收模块解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号,并根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本;所述接收端通信实体将去重后的数据报文进行后续处理。
本文实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本文实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现上述的方法。
利用本文实施例,节省多发选收方案中去重步骤中对接收端缓存数据报文而消耗的内存。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1所示为本文实施例网络传输构架的结构示意图;
图2所示为本文实施例一种数据报文发送方法的流程图;
图3所示为本文实施例一种数据报文接收方法的流程图;
图4所示为本文实施例一种发送端多发选收装置的结构示意图;
图5所示为本文实施例一种接收端多发选收装置的结构示意图;
图6所示为本文实施例一种多发选收系统的结构示意图;
图7所示为本文实施例多发选收系统对数据报文进行处理的示意图;
图8所示为本文实施例接收端多发选收模块进行去重判断的示意图;
图9所示为本文实施例生成去重数组长度的流程图;
图10所示为本文实施例两条链路存在延时的数据报文传送示意图;
图11所示为本文实施例星型拓扑网络结构的多发选收示意图;
图12所示为本文实施例发送去重数组长度和特征码长度的网络控制报文的示意图;
图13所示为本文实施例发送端网络通信模块封装数据报文的示意图;
图14所示为本文实施例提供的一种计算机设备。
【附图标记说明】
401、获取单元;
402、标识字段添加单元;
403、复制单元;
404、发送单元;
405、测试单元;
406、设定单元;
501、接收单元;
502、解析单元;
503、处理单元;
504、去重数组生成单元;
601、发送端;
6011、发送端通信实体;
6012、发送端多发选收模块;
6013、发送端网络通信模块;
602、接收端;
6021、接收端通信实体;
6022、接收端多发选收模块;
6023、接收端网络通信模块;
701、发送端通信实体;
702、发送端多发选收模块;
703、发送端网络通信模块;
704、接收端通信实体;
705、接收端多发选收模块;
706、接收端网络通信模块;
707、数据报文;
1402、计算机设备;
1404、处理器;
1406、存储器;
1408、驱动机构;
1410、输入/输出模块;
1412、输入设备;
1414、输出设备;
1416、呈现设备;
1418、图形用户接口;
1420、网络接口;
1422、通信链路;
1424、通信总线。
具体实施方式
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
如图1所示为本文实施例网络传输构架的结构示意图,在本图中描述了在发送端通过多条链路,例如链路1、链路2,将待发送的数据报文发送至接收端的示意图,其中链路1或者链路2中均可以包括一个或者多个路由器等网络中继设备,可以通过有线网络或者无线网络作为链路传送数据,例如以太网、xDSL、光纤网络、移动网络等。发送端为了提高数据报文的实时性,同时通过多条链路(本例中为两条链路,但是在其他实施例中可以包括更多条链路)同时发送相同的数据报文,无论哪条链路发生延时或者抖动都可以保证数据报文通过其他链路快速的到达接收端。接收端通过多条链路接收数据报文,其中包括一个或者多个数据报文可能存在重复的情况,根据数据报文的特征码和序号可以分析出接收到的数据报文是否存在重复,当出现重复情况时,则可以丢弃该数据报文,当不存在重复时,可以将该数据报文传送给后续处理流程,例如发送给通信实体进行后续处理流程,其中,通信实体可以是网络协议栈,也可以是应用程序或者第三方的通信组件,也就是说,在本文实施例中接收端丢弃重复的数据报文后,将按照现有技术中的处理方式处理接收到的多个数据报文,或者利用其他的技术方案处理接收到的多个数据报文,其中,其他的技术手段是指不限于现有技术中的技术手段。
如图2所示为本文实施例一种数据报文发送方法的流程图,在本图中描述了多发选收方案中发送端在待发送的数据报文中加入特征码和序号后,通过多条链路发送相同数据报文的过程,从而实现接收端可以快速的对接收到的数据报文进行去重处理,节省系统资源的目的。该方法具体包括:
步骤201,获取待发送的数据报文;
步骤202,为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号;
步骤203,将所述数据报文进行至少一次复制,得到至少一份数据报文副本;
步骤204,将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去。
作为本文的一个实施例,所述获取待发送的数据报文进一步包括,获取来自通信实体的所述待发送的数据报文。
在本实施例中,通信实体进一步包括但不限于,网络协议栈、应用程序或者第三方的通信组件等。通信实体之间通过链路交换通信负载(Payload),其中通信实体可以将通信负载终结在本地,也可以是将通信负载继续通过链路转发。其中,所述链路包括但不限于以太网、xDSL、光纤网络、无线网络等。
作为本文的一个实施例,所述待发送的数据报文为通信负载。
在本实施例中,所述通信负载包括但不限于IP报文、TCP报文、UDP报文、或者纯负载等。
作为本文的一个实施例,为每个所述数据报文加入标识字段中进一步包括,所述标识字段的高位为所述特征码,所述标识字段的低位为在去重数组内的序号。
在本实施例中,特征码和在去重数组内的序号的位置可以互换,在此不作限制。
作为本文的一个实施例,所述去重数组内的序号包括区分本轮待发送的数据报文的序号,所述特征码包括确定数据报文轮次的标识符。
在本文实施例中,所述区分本轮待发送的数据报文的序号可以为连续的数字编号,用于在所述去重数组中定位数据报文。例如从1开始使用整数来对去重数组进行编号,每个编号代表一个数据报文。所述序号还可以为任意数字开始的连续编号。
所述特征码可以为区别不同轮次发送数据报文的字符或者字符串。例如采用1bit,即0或1来标记本轮数据报文和下一轮数据报文,例如用0来标记本轮数据报文,用1来标记下一轮数据报文。所述特征码还可以采用更多位数(即长度)来标记数据报文的轮次。一个轮次的数据报文具有相同的特征码。
其中,去重数组的长度,即去重数组内元素的个数(2N),是根据用来传送数据报文和所述数据报文副本的多条链路的状态来决定的;特征码的长度,即位数(M),是根据所述数据报文的轮次来决定的或者为根据预先设定的值来决定的(例如1bit位)。
去重数组的长度和特征码的长度的乘积为两端通信设备所消耗的内存容量,即C=M×2N,其中,C为接收端内存消耗大小,M为特征码长度,2N为去重数组的长度,M、N均为≥1的正整数。本文实施例的方法可以使用较小内存消耗量来完成多发选收的通信过程,并且去重效率更高,更加节省双方通信时间。
作为本文的一个实施例,为每个所述数据报文加入标识字段之前还包括,
测试发送所述数据报文和所述数据报文副本的不同链路的网络状态;
根据所述网络状态设定所述去重数组的长度。
在本实施例中,所述网络状态可以包括但不限于链路的延时、丢包率、发包速率、网络抖动等中的部分或者全部。
当根据所述网络状态设定了去重数组的长度后,就可以得到所述特征码和在去重数组内的序号,例如,假设去重数组的长度为23时,所述特征码可以为1234(即特征码长度为4位),或者特征码可以为1(即特征码长度为1位),所述去重数组内的序号可以根据数据报文发送顺序,为每个数据报文分配数字1至8中的一个。其中,特征码的长度可以根据去重数组的长度来设定,例如,去重数组的长度采取后面的计算方法得到,那么相应的特征码的长度可以为最小值1,当去重数组的长度取值比后面计算得到的长度稍小时,则特征码长度可能相应增加,M和N可以成反比关系,N值取值越小,M值就可能越大,以保证不同轮次的去重数组之间的特征码不会重复。
在其他的实施例中,可以预先设定标识字段,即设定特征码和去重数组内的序号的内容及长度,将预设的标识字段加入到数据报文中。
作为本文的一个实施例,测试发送所述数据报文和所述数据报文副本的不同链路的网络状态中进一步包括但不限于PING命令,或者其它已有或者自定义的探测协议。
作为本文的一个实施例,根据所述网络状态设定所述去重数组的长度中进一步包括,
计算所述网络状态最好的链路与所述网络状态最差的链路之间的延时差;
根据所述延时差与发包速率的乘积设定所述去重数组的长度。
在本实施例中,网络状态最差的链路传送一个测试数据报文到达接收端的T3时刻,网络状态最好的链路同时传送所述同一个测试数据报文达到接收端的T2时刻,将T3-T2得到所述延时差ΔT,将该延时差ΔT与网络通信模块的发包速率相乘,令所述去重数组的长度大于该乘积。例如,网络状态最好的链路与所述网络状态最差的链路之间的延时差为20ms,网络通信模块的发包速率为1.488Mpps,则去重数组的长度要大于29.76K个数据报文,即2N>29.76K,可以得到去重数组的长度参数N=15,即当N=15时,去重数组内可以具有29.76K个以上的序号来标记每个数据报文,根据该序号可以在接收端的去重数组内定位该数据报文。其中,去重数据的长度2N刚好大于所述乘积即可,从而降低内存的消耗量。
作为本文的一个实施例,根据所述网络状态设定所述去重数组的长度中进一步包括,
计算上一轮次所述网络状态最差的链路发送出最后一个数据报文的时刻与所述网络状态最好的链路发送出第一个数据报文的时刻差;
根据所述时刻差与发包速率的乘积设定本轮次所述去重数组的长度。
在本实施例中,轮次是指通过多条不同链路发送数据报文和数据报文副本的过程,不同轮次是指针对不同数据报文(及其数据报文副本)通过不同链路发送的过程。在上一轮次发送数据报文(及其数据报文副本)中网络状态最差的链路传送最后一个数据报文到达接收端为T1时刻,网络状态最好的链路传送第一个数据报文达到接收端为T0时刻,将T1-T0得到所述时刻差,将该时刻差与网络通信模块的发包速率相乘,令所述去重数组的长度大于该乘积。例如,时刻差为30ms,网络通信模块的发包速率为1.488Mpps,则去重数组的长度要大于44.64K个数据报文,即2N>44.64K,可以得到去重数组的长度参数N=16,即当N=16时,去重数组内可以具有44.64K个以上的序号来标记每个数据报文,根据该序号可以在接收端的去重数组内定位该数据报文。其中,去重数据的长度2N刚好大于所述乘积即可,从而降低内存的消耗量。
所述的时刻差大于所述延时差,从而能保证在本轮次数据报文在所有链路中未完成传送时,不会进入到下一轮次的数据报文传送,即本轮次的多发选收未结束前不进行下一轮次的多发选收。
作为本文的一个实施例,为每个所述数据报文加入标识字段之前还包括,
根据上一轮次发送的数据报文的数量,设定本轮次去重数组的长度。
在本实施例中,在发送数据报文之前,预先设定了标识字段中的去重数组的长度,即去重数组内序号的位数,例如3位时,去重数组内的序号由1-8顺序编号,5位时,去重数组内的序号由1-32顺序编号。上一轮次发送数据报文时,可能仅有4个数据报文,则本轮次待发送的数据报文也只有4个,可以将预先设定的去重数组长度参数N设定为3,即去重数组内的序号由1-8顺序编号。特征码可以根据需要设定数值。
作为本文的一个实施例,在将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去之前还包括,
将所述特征码的长度M以及去重数组长度的参数N发送出去,其中,所述特征码的长度M根据去重数组长度的参数N来设定,所述特征码的长度M的取值下限为1。
在本实施例中,可以通过现有的网络控制报文将上述信息发送出去,或者还可以通过自定义的数据报文将上述信息发送出去,当接收端接收到上述信息后,可以根据该信息开辟内存空间(M×2N)建立去重数组,当然,接收端也可以通过测试不同链路的网络状态来主动设定去重数组的长度以及特征码的长度,或者也可以根据上一轮次多发选收中的数据报文的数量来动态设定去重数组的长度以及特征码的长度。
作为本文的一个实施例,在将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去后进一步包括,
根据数据报文的协议,对所述数据报文和所述数据报文副本进行封装;
将所述封装后的数据报文和所述数据报文副本分别通过不同的链路发送出去。
在本实施例中,网络通信模块根据数据报文的协议来封装该数据报文,所述协议可能包括但不限于IP隧道协议、VxLan隧道协议、TCP协议等,所述网络通信模块用于管理实际网络硬件并对通信负载进行外层封装,网络通信模块可以是网络驱动,或者较低层次的协议栈。网络通信模块将加入了标识字段的数据报文和所述数据报文副本封装后,通过例如以太网、xDSL、光纤网络、移动网络等发送出去。
如图3所示为本文实施例一种数据报文接收方法的流程图,在本图中描述了多发选收方案中接收端接收到上述图2所示的发送端发送的数据报文,建立去重数组后对该数据报文进行解析和去重的过程,从而实现接收端可以快速的对接收到的数据报文进行去重处理,节省系统资源的目的。该方法具体包括:
步骤301,通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;
步骤302,解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号;
步骤303,根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本。
作为本文的一个实施例,通过不同的链路分别接收数据报文及其对应的至少一份复制数据报中进一步包括,通过网络通信模块从不同的链路接收发送端发送的经过封装的数据报文和所述数据报文副本。
作为本文的一个实施例,解析所述数据报文及其对应的数据报文副本中的标识字段中进一步包括,对接收到的数据报文及其对应的至少一份数据报文副本进行解封装。
在本实施例中,解封装为与前述发送端在通过网络通信模块对数据报文进行封装步骤对应的步骤,根据接收到的数据报文的协议,将例如IP隧道协议、VxLan隧道协议、TCP协议等对应的报文头去除。
作为本文的一个实施例,提取所述标识字段中的特征码和去重数组内的序号中进一步包括,
提取所述标识字段的高位为所述特征码,提取所述标识字段的低位为去重数组内的序号。
作为本文的一个实施例,所述去重数组内的序号包括区分本轮待发送的数据报文的序号,所述特征码包括确定数据报文轮次的标识符。
作为本文的一个实施例,根据所述特征码和去重数组内的序号在去重数组中进行去重判断中进一步包括,
通过所述去重数组内的序号在所述去重数组中定位到相应的元素;
比较所述特征码与所述元素是否相同。
作为本文的一个实施例,根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组的相同位置中存在相同的元素,则丢弃所述数据报文或数据报文副本中进一步包括,
通过所述去重数组内的序号在所述去重数组中定位到相应的元素;
比较所述特征码与所述元素是否相同,若所述特征码与所述元素相同时,则丢弃所述数据报文或数据报文副本。
在本实施例中,可以根据去重数组内的序号直接定位到去重数组中的某个元素,节省了大量的按照接收到的数据报文进行逐个读取和比较的计算时间和计算资源。
作为本文的一个实施例,根据所述特征码和去重数组内的序号在去重数组中进行去重判断中进一步包括,
若未在所述去重数组中匹配到不同元素,则将所述特征码覆盖利用所述去重数组内的序号定位的所述去重数组中的元素。
在本实施例中,当多条链路传送相同的数据报文和数据报文副本时,有的链路可能发生丢包,通过另外一链路接收到的数据报文或者数据报文副本就可以将被丢包的数据报文进行补充,而不用发生丢包的链路发起重发请求,从而节省了发送端和接收端的协商通信时间。
作为本文的一个实施例,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
接收所述特征码的长度M以及去重数组长度的参数N;
根据所述特征码的长度M以及去重数组的长度的参数N生成所述去重数组,其中,所述去重数组的存储空间为M×2N。
在本实施中,接收到的特征码的长度M以及去重数组长度的参数N可以是发送端通过网络测试计算后获得的,可以是通过现有技术中的网络控制报文传递上述信息。当需要发送端和接收端互发数据报文时,两端都需要根据特征码的长度M以及去重数组长度的参数N来开辟内存空间建立去重数组,从而用来去重判断,因此,在将本文所述技术方案应用到复杂的网络环境时,节省的缓存空间以及计算资源的节省将是巨大的。
作为本文的一个实施例,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
根据上一轮次接收的数据报文数量,设定本轮次去重数组的长度。
在本实施例中,接收端可以根据预先设定的规则设定特征码的长度,该预先设定的规则与发送端设定的特征码长度相同。
作为本文的一个实施例,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
测试所述不同链路的网络状态;
根据所述网络状态设定所述去重数组的长度。
在本实施例中,可以参考发送端根据不同链路网络状态设定去重数组长度的描述,在此不再赘述。
作为本文的一个实施例,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
将所述特征码的长度M以及去重数组长度的参数N发送出去,其中,所述特征码的长度M根据去重数组长度的参数N来设定,所述特征码的长度M的取值下限为1。
作为本文的一个实施例,当完成本轮次数据报文的去重判断后,将数据报文发送给后级的通信实体,进行后续数据报文处理。
如图4所示为本文实施例一种发送端多发选收装置的结构示意图,在本图中描述了发送端中多发选收装置的基本结构,其中的功能模块可以通过软件实现,也可以通过特定的芯片实现,连接于发送端的通信实体与网络通信模块之间,对数据报文进行相应处理以实现本文实施例中多发选收方案的去重处理,具体包括:获取单元401、标识字段添加单元402、复制单元403、发送单元404、测试单元405、设定单元406;
获取单元401,获取待发送的数据报文;
标识字段添加单元402,为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号;
复制单元403,将所述数据报文进行至少一次复制,得到至少一份数据报文副本;
发送单元404,将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去。
其中,所述去重数组内的序号包括区分本轮待发送的数据报文的序号,所述特征码包括确定数据报文轮次的标识符。
作为本文的一个实施例,还包括测试单元405和设定单元406,
所述测试单元405,用于测试发送所述数据报文和所述数据报文副本的不同链路的网络状态;
设定单元406,用于根据所述网络状态设定所述去重数组的长度。
作为本文的一个实施例,所述设定单元406,进一步用于计算所述网络状态最好的链路与所述网络状态最差的链路之间的延时差;
根据所述延时差与发包速率的乘积设定所述去重数组的长度。
作为本文的一个实施例,所述设定单元406,进一步用于计算上一轮次所述网络状态最差的链路发送出最后一个数据报文的时刻与所述网络状态最好的链路发送出第一个数据报文的时刻差;
根据所述时刻差与发包速率的乘积设定本轮次所述去重数组的长度。
作为本文的一个实施例,所述设定单元406,还用于根据上一轮次发送的数据报文的数量,设定本轮次去重数组的长度。
作为本文的一个实施例,所述发送单元404,还用于将所述特征码的长度M以及去重数组长度的参数N发送出去,其中,所述特征码的长度M根据去重数组长度的参数N来设定,所述特征码的长度M的取值下限为1,可以取值为1、2、3…等。
如图5所示为本文实施例一种接收端多发选收装置的结构示意图,在本图中描述了接收端中多发选收装置的基本结构,其中的功能模块可以通过软件实现,也可以通过特定的芯片实现,连接于发送端的通信实体与网络通信模块之间,对接收到的数据报文进行相应处理以实现本文实施例中多发选收方案的去重处理,具体包括:接收单元501、解析单元502、处理单元503、去重数组生成单元504;
接收单元501,用于通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;
解析单元502,用于解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号;
处理单元503,用于根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本。
作为本文的一个实施例,还包括去重数组生成单元504,用于接收所述特征码的长度M以及去重数组长度的参数N;
根据所述特征码的长度M以及去重数组的长度的参数N生成所述去重数组,其中,所述去重数组的存储空间为M×2N。
作为本文的一个实施例,去重数组生成单元504,还用于根据上一轮次接收的数据报文数量,设定本轮次去重数组的长度。
如图6所示为本文实施例一种多发选收系统的结构示意图,在本图中描述了本文实施例多发选收方案中去重处理的系统该结构,其中只描述了系统中的节点只包括发送端或接收端两端,但是在其他实施例中,发送端和接收端可以更多,每一个节点都可能包括一个发送端和接收端,或者每一节点都包括多个发送端和接收端,现以系统中每个节点包括一个发送端601,另一个节点包括一个接收端602为例进行说明:
所述发送端601进一步包括:发送端通信实体6011、发送端多发选收模块6012、发送端网络通信模块6013;
所述接收端602进一步包括:接收端通信实体6021、接收端多发选收模块6022、接收端网络通信模块6023;
所述发送端通信实体6011将数据报文发送给发送端多发选收模块6012;所述发送端多发选收模块6012获取所述数据报文,为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号,将所述数据报文进行至少一次复制,得到至少一份数据报文副本,将所述数据报文和所述数据报文副本发送给所述发送端网络通信模块6013;所述发送端网络通信模块6013通过不同的链路分别将所述数据报文和所述数据报文副本出去;
所述接收端网络通信模块6023通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;所述接收端多发选收模块6022解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号,并根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本;所述接收端通信实体6021将去重后的数据报文进行后续处理。
如图7所示为本文实施例多发选收系统对数据报文进行处理的示意图,在本图中描述了发送端对待发送的数据报文进行处理及封装后通过多条链路将数据报文发送给接收端,并在接收端对接收到的数据报文进行解封装、去重处理后,将数据报文发送给后级通信实体继续处理的示意图,在本图中仅仅表示了一条链路,但是根据本文技术方案的思想可知,在发送端和接收端应当具有至少两条链路来传送数据报文,并且接收端和发送端并不是绝对的,在两端进行交互通信的过程中,任意一方都可能是发送端或者是接收端。
在本图中发送端和接收端都由3个部分构成,分别是发送端通信实体701、发送端多发选收模块702、发送端网络通信模块703,接收端通信实体704、接收端多发选收模块705、接收端网络通信模块706,以及在发送端和接收端之间传送的数据报文707。其中,接收端和发送端可以通过例如计算机、笔记本电脑、手机、平板电脑等电子设备实现。
所述发送端通信实体701和接收端通信实体704都可以是网络协议栈、应用程序或者第三方的通信组件,通信实体交换通信负载(Payload),可以将通信负载终结在本地,也可以是继续转发。通信负载可以是IP报文、TCP报文、UDP报文、或者纯负载等等。
所述发送端网络通信模块703和接收端网络通信模块706都可以负载管理实际网络硬件并对通信负载进行外层封装,可以是网络驱动,或者较低层次的协议栈,其所连接的网络包括但不限于以太网、xDSL、光纤网络、无线网络等。
所述发送端多发选收模块702和接收端多发选收模块705都可以位于通信实体的下层,代理各自通信实体与网络通信模块的交互。发送端多发选收模块702为每个数据报文添加标识字段(PktId),然后复制该数据报文,通过发送端网络通信模块703增加外层封装再传输到不同链路上。接收端多发选收模块705接收到数据报文后,根据PktId进行去重,之后再将通信负载交给接收端通信实体704。
其中,发送端多发选收模块702将数据报文分组,每一组中具有多个数据报文,每一组数据报文对应前述的去重数组,不同组的数据报文对应前述的轮次,每组分配一个特征码,组内数据报文使用相同特征码,利用特征码和去重数组内的序号生成一个Packet Id(即PktId),标识字段PktId中包括M位的特征码以及N位的去重数组内的序号,N为去重数组长度的参数,所述去重数组的长度为2N,将该PktId加入到数据报文的外层。具体的,发送端多发选收模块702使用特征码和去重数组内的序号生成并封装一个PktId,PktId高位的M位作为特征码字段,低位的N位作为索引字段(数据报文在去重数组内对应的序号),然后复制加入PktId的数据报文分别从不同的链路发送出去。
如图8所示为本文实施例接收端多发选收模块进行去重判断的示意图,接收端多发选收模块705维护一个去重数组,其大小为一组内数据报文的个数(即去重数组的长度)以及组内元素的长度的乘积;接收端多发选收模块705从PktId的高位(M位)中提取出特征码,并从低位(N位)中提取去重数组内的序号,在去重数组中进行对比,可以判断出接收到的数据报文是否为重复数据报文。具体的,接收端多发选收模块705从PktId中提取出特征码和去重数组内的序号,使用去重数组内的序号作为索引码在去重数组中定位到元素,提取出元素与数据报文的特征码进行比对,若相同则认为是重复的报文,若不同则认为是本轮次首先收到的数据报文,将数据报文特征码覆盖到去重数组对应位置后,提交数据报文给接收端通信实体704进行后续处理。
其中,去重数组内的序号可以作为索引码通过偏移去重数组下标直接定位到对应的元素,其中去重数组中的元素即为特征码,取出去重数组中该序号对应的特征码与接收到的数据报文的标识字段中的特征码进行对比后,即可知道接收到的数据报文是否重复数据报文。即只需进行一次内存读取和一次对比,就可以对接收到的数据报文进行去重处理。
不同轮次的特征码不同,也可能相邻轮次的特征码不同,即,特征码的长度M可以为1bit位,也可以为其他数值,根据需要设定;去重数组的长度可以设定,也可以根据上一轮次发送的待发送数据数量,设定本轮次去重数组的长度;所述去重数组的长度还可以通过如下方法获得:
如图9所示为本文实施例生成去重数组长度的流程图,在本图中描述了发送端或者接收端根据的多发选收模块根据两端之间的网络状态动态设定去重数组长度的方法,其中,去重数组长度的参数N决定了去重数组内元素的个数(即去重数组的长度),即2N个元素,M值决定每个元素(特征码)的大小,M×2N就是接收端建立去重数组消耗的内存大小,单位为bit。
步骤901,测试发送所述数据报文和所述数据报文副本的不同链路的网络状态。
在本步骤中,可以使用接收端的多发选收模块或者发送端的多发选收模块来对底层链路进行探测,包括但不限于PING指令、自定义探测协议等方式,获取底层链路的发包速率和延时抖动等网络状态,根据这些网络状态来计算确定M和N值,并将计算得到的M和N值与对端同步,保证数据报文发送时去重算法正常进行。
步骤902,根据所述网络状态设定所述去重数组的长度。
去重数组长度参数N的取值和多条链路的发包速率V、链路间的延时差ΔT有关。如图10所示为本文实施例两条链路存在延时的数据报文传送示意图,数据报文编号为1…2N+1,X和Y是两条链路,假设X为链路1,其延时较低,Y为链路2,其延时较高。两条链路上发出的数据报文分别用X-1、Y-1、X-2、Y-2…X-(2N+1)、Y-(2N+1)表示,对应为标识字段(PktId)中序号为1至序号为2N+1的数据报文,通过在去重数组中的序号唯一的判断数据报文是否重复,就需要保证数据报文Y-1比数据报文X-(2N+1)先到达接收端,也就是说发送端在本轮次传送的数据报文在所有链路没有全部传送到接收端时,延时较低的链路1不会开始下一轮次的数据报文传送,即X-1和X-(2N+1)到达接收端的延时差应该大于两条链路的延时差。其中,每个轮次的数据报文传送是指不同组的数据报文,不同组的数据报文具有不同的特征码。
如图10所示,T0时刻发送端通过链路1和链路2同时发出X-1和Y-1数据报文;T1时刻发送端通过链路1或者链路2发出最后一个数据报文X-(2N+1)或Y-(2N+1);T2时刻延时较低的链路1上的数据报文X-1到达接收端;T3时刻是延时较高的链路2上的Y-1数据报文到达接收端。
其中,ΔT= T3-T2,ΔT代表链路1和链路2之间的延时差,T1-T0代表本轮次传送数据报文总共用时,V标识发送端的发包速率;
则有如下关系式:
ΔT×V<(T1-T0)×V< 2N,
根据上述关系式可以计算去重数组长度参数N的值,也就是2N>ΔT×V,并可以根据N值得到去重数组的长度。
若网络有延时抖动,则ΔT应该取延时最低的链路和延时最高的链路之间最大的差值,例如链路1的延时在30ms-50ms之间抖动,链路2的延时在60ms-80ms之间抖动,则延时差最大为80ms-30ms=50ms,并给予一定的余量,即ΔT>50ms,ΔT可以取60ms或者70ms。
还可以根据上一轮次所述网络状态最差的链路发送出最后一个数据报文的时刻与所述网络状态最好的链路发送出第一个数据报文的时刻差;根据所述时刻差与发包速率的乘积设定本轮次所述去重数组的长度。
还可以根据上一轮次发送的数据报文数量,估计本轮次去重数组的长度。也就是说,上一轮次发送数据报文的数量变化,会影响下一轮次发送数据报文时接收端的去重数组长度,接收端的去重数组的长度是动态变化的,根据上一轮次的数据报文的数量或者接收历史中数据报文的数量来确定去重数组的长度。
M值取值可以很小,极限情况可以取1比特,这样去重数组就退化为位图结构,总内存消耗为2(N-3)字节。
作为本文的一个实施例,若延时差ΔT为200ms,发包速率为1.488Mpps(千兆网络的线速发包),200ms延时差内估算有300K个数据报文。由上面公式算出N值最小取值19,为了给予一定容错能力,这里可以取值20,假设M取值1,即特征码长度为1比特,1个字节可以表示8个特征码(23);去重数组所需的内存消耗仅为1×220/8=128K。而在一些星型拓扑的中心节点上,如图11所示为本文实施例星型拓扑网络结构的多发选收示意图,每一对分支节点和中心节点间都使用多发选收功能,所有节点的内存节约效果会更加可观。
在上述实施例中,计算得到去重数组的长度参数N和设定的特征码长度M值后,将这些参数通过网络控制报文发送给对端,所述的网络控制报文可以如图12所示为本文实施例发送去重数组长度和特征码长度的网络控制报文的示意图,从而可以使得采用本文多发选收方案的发送端和接收端协同工作,使用较少的内存消耗就可以完成多发选收方案中数据报文的去重工作。
再参考上述附图7,发送端网络通信模块703和接收端多发选收模块705可以内置在发送端或接收端的系统内核中,也可以通过例如Linux中的insmod将发送端网络通信模块703和接收端多发选收模块705加载到系统内核中,通过内核netfilter机制hook三层数据报文(IP报文),将IP报文添加PktId的数据报文进行封装,底层网络都是IP网络,但由于连通的方式不同,链路可能使用IP隧道和VxLan隧道封装,发送端网络通信模块703可以将发送端和接收端之间传送的数据报文707进行封装,格式可以如附图13所示,图13所示为本文实施例发送端网络通信模块封装数据报文的示意图,接收端网络通信模块706可以根据相应的链路协议将接收到的数据报文进行解封装,并得到包含PktId的数据报文,并通过上述本文实施例中的方法在去重数组中匹配PktId中的去重数组内的序号定位到去重数组中的元素,并比较去重数组中的元素与PktId中的特征码是否一致,从而判断是否是重复的数据报文,若去重数组中的元素与PktId中的特征码不一致时,表示该数据报文还未被接收到,将该特征码覆盖去重数组中的元素,若去重数组中的元素与PktId中的特征码一致时,表示该数据报文已经被接收到,将丢弃该接收到的数据报文。由此,通过一次读取去重数组中的元素就可以对接收到的数据报文进行去重处理,从而节省多发选收方案中去重步骤中对接收端缓存数据报文而消耗的内存。
所述接收端通信实体704根据将去重处理之后的数据报文进行后续处理。
如图14所示为本文实施例提供的一种计算机设备,本文实施例中接收端或发送端的设备可以为本实施例中的计算机设备,执行本文的上述方法。所述计算机设备1402可以包括一个或多个处理器1404,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备1402还可以包括任何存储器1406,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器1406可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示计算机设备1402的固定或可移除部件。在一种情况下,当处理器1404执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备1402可以执行相关联指令的任一操作。计算机设备1402还包括用于与任何存储器交互的一个或多个驱动机构1408,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备1402还可以包括输入/输出模块1410(I/O),其用于接收各种输入(经由输入设备1412)和用于提供各种输出(经由输出设备1414)。一个具体输出机构可以包括呈现设备1416和相关联的图形用户接口(GUI)1418。在其他实施例中,还可以不包括输入/输出模块1410(I/O)、输入设备1412以及输出设备1414,仅作为网络中的一台计算机设备。计算机设备1402还可以包括一个或多个网络接口1420,其用于经由一个或多个通信链路1422与其他设备交换数据。一个或多个通信总线1424将上文所描述的部件耦合在一起。
通信链路1422可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路1422可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如前所述的方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。
Claims (25)
1.一种数据报文多发选收发送方法,其特征在于包括,
获取待发送的数据报文;
为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号;
将所述数据报文进行至少一次复制,得到至少一份数据报文副本;
将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去。
2.根据权利要求1所述的数据报文多发选收发送方法,其特征在于,获取来自通信实体的所述待发送的数据报文。
3.根据权利要求1所述的数据报文多发选收发送方法,其特征在于,为每个所述数据报文加入标识字段中进一步包括,所述标识字段的高位为所述特征码,所述标识字段的低位为在去重数组内的序号。
4.根据权利要求1所述的数据报文多发选收发送方法,其特征在于,所述去重数组内的序号包括区分本轮待发送的数据报文的序号,所述特征码包括确定数据报文轮次的标识符。
5.根据权利要求1所述的数据报文多发选收发送方法,其特征在于,为每个所述数据报文加入标识字段之前还包括,
测试发送所述数据报文和所述数据报文副本的不同链路的网络状态;
根据所述网络状态设定所述去重数组的长度。
6.根据权利要求5所述的数据报文多发选收发送方法,其特征在于,根据所述网络状态设定所述去重数组的长度中进一步包括,
计算所述网络状态最好的链路与所述网络状态最差的链路之间的延时差;
根据所述延时差与发包速率的乘积设定所述去重数组的长度。
7.根据权利要求5所述的数据报文多发选收发送方法,其特征在于,根据所述网络状态设定所述去重数组的长度中进一步包括,
计算上一轮次所述网络状态最差的链路发送出最后一个数据报文的时刻与所述网络状态最好的链路发送出第一个数据报文的时刻差;
根据所述时刻差与发包速率的乘积设定本轮次所述去重数组的长度。
8.根据权利要求1所述的数据报文多发选收发送方法,其特征在于,为每个所述数据报文加入标识字段之前还包括,
根据上一轮次发送的数据报文的数量,设定本轮次去重数组的长度。
9.根据权利要求5-8任意一项所述的数据报文多发选收发送方法,其特征在于,在将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去之前还包括,
将所述特征码的长度M以及去重数组长度的参数N发送出去,其中,所述特征码的长度M根据去重数组长度的参数N来设定,所述特征码的长度M的取值下限为1。
10.根据权利要求1所述的数据报文多发选收发送方法,其特征在于,在将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去后进一步包括,
根据数据报文的协议,对所述数据报文和所述数据报文副本进行封装;
将封装后的所述数据报文和所述数据报文副本分别通过不同的链路发送出去。
11.一种数据报文多发选收接收方法,其特征在于包括,
通过不同链路分别接收数据报文及其对应的至少一份数据报文副本;
解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号;
根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本。
12.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,通过不同的链路分别接收数据报文及其对应的至少一份复制数据报中进一步包括,通过网络通信模块从不同的链路接收发送端发送的经过封装的数据报文和所述数据报文副本。
13.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,提取所述标识字段中的特征码和去重数组内的序号中进一步包括,
提取所述标识字段的高位为所述特征码,提取所述标识字段的低位为去重数组内的序号。
14.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,所述去重数组内的序号包括区分本轮待发送的数据报文的序号,所述特征码包括确定数据报文轮次的标识符。
15.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组的相同位置中存在相同的元素,则丢弃所述数据报文或数据报文副本中进一步包括,
通过所述去重数组内的序号在所述去重数组中定位到相应的元素;
比较所述特征码与所述元素是否相同,若所述特征码与所述元素相同时,则丢弃所述数据报文或数据报文副本。
16.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,根据所述特征码和去重数组内的序号在去重数组中进行去重判断中进一步包括,
若未在所述去重数组中匹配到不同元素,则将所述特征码覆盖利用所述去重数组内的序号定位的所述去重数组中的元素。
17.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
接收所述特征码的长度M以及去重数组长度的参数N;
根据所述特征码的长度M以及去重数组的长度的参数N生成所述去重数组,其中,所述去重数组的存储空间为M×2N。
18.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
根据上一轮次接收的数据报文数量,设定本轮次去重数组的长度。
19.根据权利要求11所述的数据报文多发选收接收方法,其特征在于,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
测试所述不同链路的网络状态;
根据所述网络状态设定所述去重数组的长度。
20.根据权利要求19所述的数据报文多发选收接收方法,其特征在于,在通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本之前还包括,
将所述特征码的长度M以及去重数组长度的参数N发送出去,其中,所述特征码的长度M根据去重数组长度的参数N来设定,所述特征码的长度M的取值下限为1。
21.一种发送端多发选收装置,其特征在于包括,
获取单元,获取待发送的数据报文;
标识字段添加单元,为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号;
复制单元,将所述数据报文进行至少一次复制,得到至少一份数据报文副本;
发送单元,将通过不同的链路分别发送的所述数据报文和所述数据报文副本发送出去。
22.一种接收端多发选收装置,其特征在于包括,
接收单元,用于通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;
解析单元,用于解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号;
处理单元,用于根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本。
23.一种数据报文多发选收系统,其特征在于包括,发送端和接收端,其中,
所述发送端进一步包括:发送端通信实体、发送端多发选收模块、发送端网络通信模块;
所述接收端进一步包括:接收端通信实体、接收端多发选收模块、接收端网络通信模块;
所述发送端通信实体将数据报文发送给发送端多发选收模块;所述发送端多发选收模块获取所述数据报文,为每个所述数据报文加入标识字段,其中,所述标识字段包括该数据报文的特征码和在去重数组内的序号,将所述数据报文进行至少一次复制,得到至少一份数据报文副本,将所述数据报文和所述数据报文副本发送给所述发送端网络通信模块;所述发送端网络通信模块通过不同的链路分别将所述数据报文和所述数据报文副本出去;
所述接收端网络通信模块通过不同的链路分别接收数据报文及其对应的至少一份数据报文副本;所述接收端多发选收模块解析所述数据报文及其对应的数据报文副本中的标识字段,提取所述标识字段中的特征码和去重数组内的序号,并根据所述特征码和去重数组内的序号在去重数组中进行去重判断,若在所述去重数组中存在相同的元素,则丢弃所述数据报文或数据报文副本;所述接收端通信实体将去重后的数据报文进行后续处理。
24.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1-20中任一项的方法。
25.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述权利要求1-20任一项的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210715959.8A CN114793210B (zh) | 2022-06-23 | 2022-06-23 | 一种数据报文多发选收发送、接收方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210715959.8A CN114793210B (zh) | 2022-06-23 | 2022-06-23 | 一种数据报文多发选收发送、接收方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114793210A true CN114793210A (zh) | 2022-07-26 |
CN114793210B CN114793210B (zh) | 2022-09-13 |
Family
ID=82463624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210715959.8A Active CN114793210B (zh) | 2022-06-23 | 2022-06-23 | 一种数据报文多发选收发送、接收方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114793210B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024065732A1 (zh) * | 2022-09-30 | 2024-04-04 | 新华三技术有限公司 | 一种数据处理方法、装置、转发芯片及网络设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006211375A (ja) * | 2005-01-28 | 2006-08-10 | Matsushita Electric Ind Co Ltd | 無線アドホックネットワークにおける負荷分散方法 |
CN101146031A (zh) * | 2006-12-05 | 2008-03-19 | 中兴通讯股份有限公司 | 无线通讯系统中前向业务数据的存储方法及其处理方法 |
CN101577725A (zh) * | 2009-06-26 | 2009-11-11 | 杭州华三通信技术有限公司 | 一种防重放机制中的信息同步方法、装置和系统 |
CN111953604A (zh) * | 2019-05-17 | 2020-11-17 | 华为技术有限公司 | 一种为业务流提供业务服务的方法和装置 |
CN112422700A (zh) * | 2021-01-25 | 2021-02-26 | 奥特酷智能科技(南京)有限公司 | 基于dds协议和tsn技术的车载网络冗余通信方法及系统 |
CN113055127A (zh) * | 2021-03-17 | 2021-06-29 | 网宿科技股份有限公司 | 数据报文去重与传输方法、电子设备及存储介质 |
CN113364680A (zh) * | 2020-03-06 | 2021-09-07 | 华为技术有限公司 | 一种sr策略的发布、接收方法及装置 |
CN113452754A (zh) * | 2021-05-25 | 2021-09-28 | 国网山东省电力公司电力科学研究院 | 一种基于CoAP协议的配电物联网网络通信系统 |
-
2022
- 2022-06-23 CN CN202210715959.8A patent/CN114793210B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006211375A (ja) * | 2005-01-28 | 2006-08-10 | Matsushita Electric Ind Co Ltd | 無線アドホックネットワークにおける負荷分散方法 |
CN101146031A (zh) * | 2006-12-05 | 2008-03-19 | 中兴通讯股份有限公司 | 无线通讯系统中前向业务数据的存储方法及其处理方法 |
CN101577725A (zh) * | 2009-06-26 | 2009-11-11 | 杭州华三通信技术有限公司 | 一种防重放机制中的信息同步方法、装置和系统 |
CN111953604A (zh) * | 2019-05-17 | 2020-11-17 | 华为技术有限公司 | 一种为业务流提供业务服务的方法和装置 |
CN113364680A (zh) * | 2020-03-06 | 2021-09-07 | 华为技术有限公司 | 一种sr策略的发布、接收方法及装置 |
CN112422700A (zh) * | 2021-01-25 | 2021-02-26 | 奥特酷智能科技(南京)有限公司 | 基于dds协议和tsn技术的车载网络冗余通信方法及系统 |
CN113055127A (zh) * | 2021-03-17 | 2021-06-29 | 网宿科技股份有限公司 | 数据报文去重与传输方法、电子设备及存储介质 |
CN113452754A (zh) * | 2021-05-25 | 2021-09-28 | 国网山东省电力公司电力科学研究院 | 一种基于CoAP协议的配电物联网网络通信系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024065732A1 (zh) * | 2022-09-30 | 2024-04-04 | 新华三技术有限公司 | 一种数据处理方法、装置、转发芯片及网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114793210B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107360092B (zh) | 用于数据网络中的平衡负载的系统和方法 | |
Sandri et al. | On the benefits of using multipath tcp and openflow in shared bottlenecks | |
US7864691B2 (en) | Apparatus and method for performing a loopback test in a communication system | |
US9300579B2 (en) | Packet metadata channels carrying infrastructure metadata in networks | |
US8121148B2 (en) | Protocol stack using shared memory | |
CN113709057A (zh) | 网络拥塞的通告方法、代理节点、网络节点及计算机设备 | |
CN103618678A (zh) | 自适应多链路聚合的方法、装置及系统 | |
CN114793210B (zh) | 一种数据报文多发选收发送、接收方法、装置及系统 | |
CN103354509A (zh) | 一种链路连接信息的获取方法和设备 | |
WO2014022350A1 (en) | Connection mesh in mirroring asymmetric clustered multiprocessor systems | |
CN112737995B (zh) | 以太网帧的处理方法、装置、设备及存储介质 | |
JP2010157875A (ja) | 通信端末、ネットワークインタフェースカード及びその方法 | |
WO2021027420A1 (zh) | 用于数据传输的方法和装置 | |
CN116074253B (zh) | 一种报文链式转发方法及装置 | |
JP2018107584A (ja) | ネットワーク装置及びその制御方法 | |
CN105991353A (zh) | 故障定位的方法和装置 | |
CN108574644A (zh) | 一种tcp连接恢复方法、装置、电子设备及存储介质 | |
US10171368B1 (en) | Methods and apparatus for implementing multiple loopback links | |
CN111865884B (zh) | 一种报文处理方法、装置及设备 | |
US10256992B2 (en) | Tunnel encapsulation | |
CN103036984A (zh) | 一种单向流量的检测方法及网络设备 | |
WO2007040482A1 (en) | Apparatus and method for performing a loopback test in a communication system | |
JP2015032985A (ja) | 通信制御装置、通信制御方法、および通信制御システム | |
WO2023005620A1 (zh) | 报文处理方法、装置及通信系统 | |
CN114301960B (zh) | 集群非对称流量的处理方法及装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 01, block C, No. 101, floor 6, building 24, yard 68, Beiqing Road, Haidian District, Beijing 100094 Patentee after: Beijing Light Network Technology Co.,Ltd. Country or region after: China Address before: Room 01, block C, No. 101, floor 6, building 24, yard 68, Beiqing Road, Haidian District, Beijing 100094 Patentee before: Beijing Light Network Technology Co.,Ltd. Country or region before: China |