1.本发明涉及数据处理技术领域,特别涉及一种简单高效的多链路数据去重方法。
背景技术:
2.随着设备冗余技术的不断发展,在通信领域应用广泛。在数据通信过程中,为了保证链路能实现最大可靠性的数据传输,多链路设备在传输原始用户数据时,会进行三级冗余传输,这样可以保证接收端接收到数据的完整度,避免因在数据传输过程中的丢包等导致的数据不完整。但是基于三级冗余传输也会出现接收端在进行数据重组时,收到重复的碎片数据,冗余碎片过多,会占用更多的内存,同时占用内存垃圾回收处理时间。更极端的情况下,多条链路发送端为了保证最大的可靠性的传输,可能对原始用户数据进行多份复制,发送到多链路设备接收端,如果这些数据包都向接收端的业务口输出,一方面加重了后级处理负担,另一方面也可能会影响到业务软件处理结果。
3.现有技术中对接收端获取的冗余数据存在数据去重不彻底,去重效率低且去重不准确的问题,基于去重不准确会导致重组的数据出现不完整的现象,导致系统根据不完整数据做出的错误控制,影响系统的安全性及可靠性。
技术实现要素:
4.本发明旨在至少一定程度上解决上述技术中的技术问题之一。为此,本发明的目的在于提出一种简单高效的多链路数据去重方法,准确确定数据包的类型,根据分类后的数据包准确判断是否为冗余包,进而采取不同的去重方法,提高了对数据包的去重效率;一方面尽可能的降低接收端所占用的系统资源,如内存,cpu处理时间等,另一方面对于用户而言,不管发送端怎样发送数据,接收端最终只收到一份原始数据,用户业务层面不会受到任何不利的影响,保证了在接收端进行重组后数据的完整度及准确度,提高了数据传输的质量,同时避免了基于去重不准确会导致重组的数据出现不完整的现象,进而导致系统根据不完整数据做出的错误控制的发生,提高了系统的安全性及可靠性,对多链路数据去重更加的简单高效。
5.为达到上述目的,本发明实施例提出了一种简单高效的多链路数据去重方法,包括:
6.获取接收端接收的若干个链路数据包:
7.分别确定若干个链路数据包的类型并进行分类,确定为第一链路数据包集合及第二链路数据包集合;所述第一链路数据包集合包括多个第一链路数据包,所述第一链路数据包为链路碎片数据;所述第二链路数据包集合包括多个第二链路数据包,所述第二链路数据包为链路完整数据;
8.分别判断第一链路数据包集合中的第一链路数据包是否为冗余包,筛选出为冗余包的第一链路数据包并进行去重处理;
9.分别判断第二链路数据包集合中的第二链路数据包是否为冗余包,筛选出为冗余
包的第二链路数据包并进行去重处理。
10.根据本发明的一些实施例,分别判断第一链路数据包集合中的第一链路数据包是否为冗余包,筛选出为冗余包的第一链路数据包并进行去重处理,包括:
11.获取历史第一链路数据包的源id,并建立去重红黑树;
12.所述去重红黑树包括多个树节点,每一个树节点中存储有源端口、目的端口及历史第一链路数据包序号;
13.根据每一个树节点中存储的源端口、目的端口及历史第一链路数据包序号建立第一hash表;
14.所述第一hash表包括多个第一节点,所述每个第一节点中存储有历史信息;
15.获取第一链路数据包的源id,根据第一链路数据包的源id在所述去重红黑树上确定目标树节点;
16.根据目标树节点中存储的第一目标包序号快速定位到第一hash表中的相应位置,确定第一目标节点;
17.将本次的第一链路数据包的第一待存储信息与第一目标节点存储的历史信息进行比较,在确定两者一致时,判断第一目标节点存储历史信息与本次的第一链路数据包的第一待存储信息之间的时间差是否小于预设时间差;
18.在确定第一目标节点存储历史信息与本次的第一链路数据包的第一待存储信息之间的时间差小于预设时间差时,表示第一链路数据包为冗余包,进行去重处理,不进入后续的数据重组处理流程。
19.根据本发明的一些实施例,分别判断第二链路数据包集合中的第二链路数据包是否为冗余包,筛选出为冗余包的第二链路数据包并进行去重处理,包括:
20.获取历史第二链路数据包的源id,建立第二hash表及第三hash表;所述第二hash表以历史第二链路数据包的源id为key;所述第二hash表与所述第三hash表建立关联关系;
21.获取第二链路数据包的源id,快速查找到第二hash表中第二目标节点;
22.根据所述第二目标节点中存储的第二目标包序号快速定位到第三hash表中的相应位置,确定第三目标节点;
23.在确定所述第三目标节点中存储的第三目标包序号与第二链路数据包序号一致时,判断第三目标节点历史存储第三目标包序号与本次收到第二链路数据包之间的时间差是否小于预设时间差;
24.在确定第三目标节点历史存储第三目标包序号与本次收到第二链路数据包之间的时间差小于预设时间差时,表示第二链路数据包为冗余包,进行去重处理,不进入后续的数据重组处理流程。
25.根据本发明的一些实施例,所述时间差为3s。
26.根据本发明的一些实施例,所述历史信息包括历史第一链路数据包序号、用于重组数据的bit map值,历史第一链路数据包的长度、历史第一链路数据包在待传输数据包内的偏移位置,历史第一链路数据包的唯一标识id、历史第一链路数据包的被接收时间。
27.根据本发明的一些实施例,在对筛选出的为冗余包的第一链路数据包并进行去重处理后,还包括:
28.在进行去重处理后的第一链路数据包集合中随机选取两个第一链路数据包,分别
为第一链路数据包a及第一链路数据包b;
29.计算所述第一链路数据包a与所述第一链路数据包b的相似度,并判断是否大于预设相似度,在确定所述相似度大于预设相似度时,表示对第一链路数据包集合中第一链路数据包的去重处理不合格,需重新进行去重处理;
30.计算所述第一链路数据包a与所述第一链路数据包b的相似度,包括:
31.获取第一链路数据包a包括的子链路数据(a1,a2,...,a
m
);
32.获取第二链路数据包b包括的子链路数据(b1,b2,...,b
m
);
33.基于公式(1)计算所述第一链路数据包a与所述第一链路数据包b的相似度s(a,b):
[0034][0035]
其中,m为第一链路数据包a中包括的子链路数据的数量;n为第二链路数据包b中包括的子链路数据的数量;i为第一链路数据包a中的第i个子链路数据;j为第二链路数据包b中的第j个子链路数据;k
ij
为第一链路数据包a中的第i个子链路数据与第二链路数据包b中的第j个子链路数据是否相同的判断系数,在两者相同时,k
ij
=1;反之;k
ij
=0。
[0036]
根据本发明的一些实施例,在分别确定若干个链路数据包的类型并进行分类前,还包括:
[0037]
分别判断若干个链路数据包中是否包括标记图像,将具有标记图像的链路数据包确定为待检测链路数据包;
[0038]
对待检测链路数据包中标记图像进行灰度化处理,并计算得到灰度变换函数;
[0039]
根据所述灰度变换函数计算标记图像中噪声信号的平均功率,并判断是否大于预设平均功率,在确定所述平均功率大于预设平均功率时,对所述标记图像进行降噪处理;
[0040]
根据所述灰度变换函数计算标记图像中噪声信号的平均功率,包括:
[0041]
计算标记图像中噪声信号在长度方向的平均功率
[0042][0043]
其中,n为标记图像的长度;m为标记图像的宽度;f(x,y)为关于标记图像上像素点(x,y)的灰度变换函数;
[0044]
计算图形数据中噪声信号在宽度方向的平均功率
[0045][0046]
根据标记图像中噪声信号在长度方向的平均功率及在宽度方向的平均功率,计算标记图像中噪声信号的平均功率:
[0047][0048]
其中,为标记图像中噪声信号的平均功率。
[0049]
根据本发明的一些实施例,在分别确定若干个链路数据包的类型并进行分类前,还包括:
[0050]
确定接收端接收的链路数据包的数量与发送端发送的链路数据包的数量的比值,判断所述比值是否小于预设比值;
[0051]
在确定所述比值小于预设比值时,检测本次发送链路数据包的使用链路中预设网络节点的占空比;
[0052]
根据所述占空比确定预设网络节点的负载量,筛选出负载量大于预设负载量的预设网络节点,作为标记预设网络节点;
[0053]
以所述标记预设网络节点作为扩展点,确定包括标记预设网络节点的链路信息;
[0054]
根据所述链路信息设定所述使用链路的优先等级使接收端再次接收的链路数据包的数量与发送端再次发送的链路数据包的数量的比值大于等于预设比值。
[0055]
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
[0056]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0057]
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0058]
图1是根据本发明一个实施例的一种简单高效的多链路数据去重方法的流程图。
具体实施方式
[0059]
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0060]
如图1所示,本发明实施例提出了一种简单高效的多链路数据去重方法,包括步骤s1
‑
s4:
[0061]
s1、获取接收端接收的若干个链路数据包:
[0062]
s2、分别确定若干个链路数据包的类型并进行分类,确定为第一链路数据包集合及第二链路数据包集合;所述第一链路数据包集合包括多个第一链路数据包,所述第一链路数据包为链路碎片数据;所述第二链路数据包集合包括多个第二链路数据包,所述第二链路数据包为链路完整数据;
[0063]
s3、分别判断第一链路数据包集合中的第一链路数据包是否为冗余包,筛选出为冗余包的第一链路数据包并进行去重处理;
[0064]
s4、分别判断第二链路数据包集合中的第二链路数据包是否为冗余包,筛选出为冗余包的第二链路数据包并进行去重处理。
[0065]
上述技术方案的工作原理:获取接收端接收的若干个链路数据包;分别确定若干个链路数据包的类型并进行分类,确定为第一链路数据包集合及第二链路数据包集合;所述第一链路数据包集合包括多个第一链路数据包,所述第一链路数据包为链路碎片数据;所述第二链路数据包集合包括多个第二链路数据包,所述第二链路数据包为链路完整数
据;即第一链路数据包如果为冗余包的话,为链路碎片数据冗余;第二链路数据包如果为冗余包的话,为链路完整数据冗余;分别判断第一链路数据包集合中的第一链路数据包是否为冗余包,筛选出为冗余包的第一链路数据包并进行去重处理;分别判断第二链路数据包集合中的第二链路数据包是否为冗余包,筛选出为冗余包的第二链路数据包并进行去重处理。
[0066]
上述技术方案的有益效果:准确确定链路数据包的类型,根据分类后的链路数据包准确判断是否为冗余包,进而采取不同的去重方法,提高了对数据包的去重效率;一方面尽可能的降低接收端所占用的系统资源,如内存,cpu处理时间等,另一方面对于用户而言,不管发送端怎样发送数据,接收端最终只收到一份原始数据,用户业务层面不会受到任何不利的影响,保证了在接收端进行重组后数据的完整度及准确度,提高了数据传输的质量,同时避免了基于去重不准确会导致重组的数据出现不完整的现象,进而导致系统根据不完整数据做出的错误控制的发生,提高了系统的安全性及可靠性,对多链路数据去重更加的简单高效。
[0067]
根据本发明的一些实施例,分别判断第一链路数据包集合中的第一链路数据包是否为冗余包,筛选出为冗余包的第一链路数据包并进行去重处理,包括:
[0068]
获取历史第一链路数据包的源id,并建立去重红黑树;
[0069]
所述去重红黑树包括多个树节点,每一个树节点中存储有源端口、目的端口及历史第一链路数据包序号;
[0070]
根据每一个树节点中存储的源端口、目的端口及历史第一链路数据包序号建立第一hash表;
[0071]
所述第一hash表包括多个第一节点,所述每个第一节点中存储有历史信息;
[0072]
获取第一链路数据包的源id,根据第一链路数据包的源id在所述去重红黑树上确定目标树节点;
[0073]
根据目标树节点中存储的第一目标包序号快速定位到第一hash表中的相应位置,确定第一目标节点;
[0074]
将本次的第一链路数据包的第一待存储信息与第一目标节点存储的历史信息进行比较,在确定两者一致时,判断第一目标节点存储历史信息与本次的第一链路数据包的第一待存储信息之间的时间差是否小于预设时间差;
[0075]
在确定第一目标节点存储历史信息与本次的第一链路数据包的第一待存储信息之间的时间差小于预设时间差时,表示第一链路数据包为冗余包,进行去重处理,不进入后续的数据重组处理流程。
[0076]
上述技术方案的工作原理:红黑树(red black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。在判断第一链路数据包集合中的第一链路数据包是否为冗余包时,获取历史第一链路数据包的源id,并建立去重红黑树;所述去重红黑树包括多个树节点,每一个树节点中存储有源端口、目的端口及历史第一链路数据包序号;源端口为传输链路的起点,目的端口为传输链路的终点。hash表,也叫哈希表,是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置原来访问记录,以加快查找的速度。根据每一个树节点中存储的源端口、目的端口及历史第一链路数据包序号建立第一hash表;所述第一hash表
包括多个第一节点,所述每个第一节点中存储有历史信息;获取第一链路数据包的源id,根据第一链路数据包的源id在所述去重红黑树上确定目标树节点;根据目标树节点中存储的第一目标包序号快速定位到第一hash表中的相应位置,确定第一目标节点;将本次的第一链路数据包的第一待存储信息与第一目标节点存储的历史信息进行比较,在确定两者一致时,判断第一目标节点存储历史信息与本次的第一链路数据包的第一待存储信息之间的时间差是否小于预设时间差;在确定第一目标节点存储历史信息与本次的第一链路数据包的第一待存储信息之间的时间差小于预设时间差时,表示第一链路数据包为冗余包,进行去重处理,不进入后续的数据重组处理流程。历史第一链路数据包与第一链路数据包同类型的历史数据。
[0077]
上述技术方案的有益效果:将第一链路数据包基于历史第一链路数据包建立的去重红黑树进行快速查找定位,确定第一链路数据包是否在历史进程中已经记录过,基于将本次的第一链路数据包的第一待存储信息与第一目标节点存储的历史信息进行比较及对第一目标节点存储历史信息与本次的第一链路数据包的第一待存储信息之间的时间差是否小于预设时间差这两个关键因素的比较,准确确定第一链路数据包是否为冗余包。
[0078]
根据本发明的一些实施例,分别判断第二链路数据包集合中的第二链路数据包是否为冗余包,筛选出为冗余包的第二链路数据包并进行去重处理,包括:
[0079]
获取历史第二链路数据包的源id,建立第二hash表及第三hash表;所述第二hash表以历史第二链路数据包的源id为key;所述第二hash表与所述第三hash表建立关联关系;
[0080]
获取第二链路数据包的源id,快速查找到第二hash表中第二目标节点;
[0081]
根据所述第二目标节点中存储的第二目标包序号快速定位到第三hash表中的相应位置,确定第三目标节点;
[0082]
在确定所述第三目标节点中存储的第三目标包序号与第二链路数据包序号一致时,判断第三目标节点历史存储第三目标包序号与本次收到第二链路数据包之间的时间差是否小于预设时间差;
[0083]
在确定第三目标节点历史存储第三目标包序号与本次收到第二链路数据包之间的时间差小于预设时间差时,表示第二链路数据包为冗余包,进行去重处理,不进入后续的数据重组处理流程。
[0084]
上述技术方案的工作原理:在判断第二链路数据包集合中的第二链路数据包是否为冗余包时,获取历史第二链路数据包的源id,建立第二hash表及第三hash表;所述第二hash表以历史第二链路数据包的源id为key;所述第二hash表与所述第三hash表建立关联关系;获取第二链路数据包的源id,快速查找到第二hash表中第二目标节点;根据所述第二目标节点中存储的第二目标包序号快速定位到第三hash表中的相应位置,确定第三目标节点;在确定所述第三目标节点中存储的第三目标包序号与第二链路数据包序号一致时,判断第三目标节点历史存储第三目标包序号与本次收到第二链路数据包之间的时间差是否小于预设时间差;在确定第三目标节点历史存储第三目标包序号与本次收到第二链路数据包之间的时间差小于预设时间差时,表示第二链路数据包为冗余包,进行去重处理,不进入后续的数据重组处理流程。第二hash表作为一级表。第三hash表作为二级表。第二hash表中包括多个第二节点;第三hash表中包括多个第二节点;每个节点中保存相应位置记录的最近输出的链路数据包的序列号和时间。历史第二链路数据包与第二链路数据包同类型的历
史数据。
[0085]
上述技术方案的有益效果:基于历史第二链路数据包设立两级hash表,准确判断本次接收的第二链路数据包是否冗余包,更加的简单高效。
[0086]
根据本发明的一些实施例,所述时间差为3s。
[0087]
根据本发明的一些实施例,所述历史信息包括历史第一链路数据包序号、用于重组数据的bit map值,历史第一链路数据包的长度、历史第一链路数据包在待传输数据包内的偏移位置,历史第一链路数据包的唯一标识id、历史第一链路数据包的被接收时间。
[0088]
基于历史第一链路数据包的唯一标识id与本次接收的第一链路数据包进行准确判断,是否为冗余数据包。
[0089]
根据本发明的一些实施例,在对筛选出的为冗余包的第一链路数据包并进行去重处理后,还包括:
[0090]
在进行去重处理后的第一链路数据包集合中随机选取两个第一链路数据包,分别为第一链路数据包a及第一链路数据包b;
[0091]
计算所述第一链路数据包a与所述第一链路数据包b的相似度,并判断是否大于预设相似度,在确定所述相似度大于预设相似度时,表示对第一链路数据包集合中第一链路数据包的去重处理不合格,需重新进行去重处理;
[0092]
计算所述第一链路数据包a与所述第一链路数据包b的相似度,包括:
[0093]
获取第一链路数据包a包括的子链路数据(a1,a2,...,a
m
);
[0094]
获取第二链路数据包b包括的子链路数据(b1,b2,...,b
m
);
[0095]
基于公式(1)计算所述第一链路数据包a与所述第一链路数据包b的相似度s(a,b):
[0096][0097]
其中,m为第一链路数据包a中包括的子链路数据的数量;n为第二链路数据包b中包括的子链路数据的数量;i为第一链路数据包a中的第i个子链路数据;j为第二链路数据包b中的第j个子链路数据;k
ij
为第一链路数据包a中的第i个子链路数据与第二链路数据包b中的第j个子链路数据是否相同的判断系数,在两者相同时,k
ij
=1;反之;k
ij
=0。
[0098]
上述技术方案的工作原理及有益效果:在对筛选出的为冗余包的第一链路数据包并进行去重处理后,还包括对第一链路数据包集合进行去重处理后的去重效果进行检测,具体为在进行去重处理后的第一链路数据包集合中随机选取两个第一链路数据包,分别为第一链路数据包a及第一链路数据包b;计算所述第一链路数据包a与所述第一链路数据包b的相似度,并判断是否大于预设相似度,在确定所述相似度大于预设相似度时,表示对第一链路数据包集合中第一链路数据包的去重处理不合格,需重新进行去重处理;在另一实施例中,可以多次进行随机选取两个第一链路数据包并计算两者的相似度,并计算相似度均值,根据相似度均值,提高对去重效果检测的准确性。在计算第一链路数据包a与所述第一链路数据包b的相似度,将两个第一链路数据包中包括的子链路数据分别进行比较,考虑在同一第一链路数据包中包括的子链路数据的排列顺序,使得计算出的相似度更加的合理,根据公式(1)准确计算出所述第一链路数据包a与所述第一链路数据包b的相似度,提高了
判断相似度与预设相似度大小的准确性。
[0099]
根据本发明的一些实施例,在分别确定若干个链路数据包的类型并进行分类前,还包括:
[0100]
分别判断若干个链路数据包中是否包括标记图像,将具有标记图像的链路数据包确定为待检测链路数据包;
[0101]
对待检测链路数据包中标记图像进行灰度化处理,并计算得到灰度变换函数;
[0102]
根据所述灰度变换函数计算标记图像中噪声信号的平均功率,并判断是否大于预设平均功率,在确定所述平均功率大于预设平均功率时,对所述标记图像进行降噪处理;
[0103]
根据所述灰度变换函数计算标记图像中噪声信号的平均功率,包括:
[0104]
计算标记图像中噪声信号在长度方向的平均功率
[0105][0106]
其中,n为标记图像的长度;m为标记图像的宽度;f(x,y)为关于标记图像上像素点(x,y)的灰度变换函数;
[0107]
计算图形数据中噪声信号在宽度方向的平均功率
[0108][0109]
根据标记图像中噪声信号在长度方向的平均功率及在宽度方向的平均功率,计算标记图像中噪声信号的平均功率:
[0110][0111]
其中,为标记图像中噪声信号的平均功率。
[0112]
上述技术方案的工作原理及有益效果:在分别确定若干个链路数据包的类型并进行分类前,还包括:分别判断若干个链路数据包中是否包括标记图像,将具有标记图像的链路数据包确定为待检测链路数据包;标记图像为标记链路数据包的发送标识,便于判断链路数据包在传输过程中是否发生丢失,在丢失时,根据标记图像确定丢失的链路数据包,进而便于进行再次发送,提高数据传输的准确性。对待检测链路数据包中标记图像进行灰度化处理,并计算得到灰度变换函数;根据所述灰度变换函数计算标记图像中噪声信号的平均功率,并判断是否大于预设平均功率,在确定所述平均功率大于预设平均功率时,对所述标记图像进行降噪处理;便于提高了标记图像的识别准确性,为后续步骤中确定若干个链路数据包的类型并进行分类提高了确定准确性。灰度变换函数为现有技术,此处不再赘述。根据标记图像中噪声信号在长度方向的平均功率及在宽度方向的平均功率,计算标记图像中噪声信号的平均功率,提高了计算标记图像中噪声信号总的平均功率的准确性,进而提高了判断平均功率与预设平均功率大小的准确性。
[0113]
根据本发明的一些实施例,在分别确定若干个链路数据包的类型并进行分类前,还包括:
[0114]
确定接收端接收的链路数据包的数量与发送端发送的链路数据包的数量的比值,
判断所述比值是否小于预设比值;
[0115]
在确定所述比值小于预设比值时,检测本次发送链路数据包的使用链路中预设网络节点的占空比;
[0116]
根据所述占空比确定预设网络节点的负载量,筛选出负载量大于预设负载量的预设网络节点,作为标记预设网络节点;
[0117]
以所述标记预设网络节点作为扩展点,确定包括标记预设网络节点的链路信息;
[0118]
根据所述链路信息设定所述使用链路的优先等级使接收端再次接收的链路数据包的数量与发送端再次发送的链路数据包的数量的比值大于等于预设比值。
[0119]
上述技术方案的工作原理及有益效果:在分别确定若干个链路数据包的类型并进行分类前,还包括检测发送端对链路数据包的发送成功率及丢包数,保证在接收端进行数据重组时,若干个数据包能重新完整的组成发送端确定的待传输数据。确定接收端接收的链路数据包的数量与发送端发送的链路数据包的数量的比值,判断所述比值是否小于预设比值;表示丢包数过多,需要检测发送链路数据包的使用链路的链路质量,在确定所述比值小于预设比值时,检测本次发送链路数据包的使用链路中预设网络节点的占空比;根据所述占空比确定预设网络节点的负载量,筛选出负载量大于预设负载量的预设网络节点,作为标记预设网络节点;以所述标记预设网络节点作为扩展点,确定包括标记预设网络节点的链路信息;根据所述链路信息设定所述使用链路的优先等级使接收端再次接收的链路数据包的数量与发送端再次发送的链路数据包的数量的比值大于等于预设比值。确定使用链路的优先等级,保证对当前链路数据包的优先传输,减少丢包数,保证接收端接收到的链路数据包数量,提高数据传输的准确性。
[0120]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
转载请注明原文地址:https://doc.8miu.com/read-1200184.html