基于随机线性网络编码与卡尔曼滤波算法的文件传输方法

文档序号:32746469发布日期:2022-12-30 22:23阅读:33来源:国知局
基于随机线性网络编码与卡尔曼滤波算法的文件传输方法

1.本发明属于数据通信技术领域,涉及一种基于随机线性网络编码与卡尔曼滤波算法的文件传输方法及装置。


背景技术:

2.在高延迟高丢包率的窄带通信环境下,任何数据包的丢失都会导致文件传输的失败。基于tcp的文件传输方案受到拥塞避免算法的影响,数据的发送效率将会大幅减小。基于udp的传统重传机制可以避免拥塞算法的影响,但频繁的数据重传同样会带来较大的系统开销。因此,在高延迟高丢包率的环境下,传统的文件传输方法逐渐难以满足用户对文件传输性能的要求。


技术实现要素:

3.目的:为了克服现有技术中存在的不足,本发明提供一种基于随机线性网络编码与卡尔曼滤波算法的文件传输方法及装置,用基于卡尔曼滤波的预测算法计算网络最优丢包率,结合随机线性网络编码技术提高节点间数据通信的可靠性,最终提高窄带环境下文件传输的性能。
4.网络编码技术核心思想就是在网络传输过程中中间节点对数据进行额外的编码操作,让一个数据包中能够包含多个数据包的信息,可以在数据传输的过程中提高数据吞吐量,此外编码所得的纠错数据包可以提高节点间的数据传输可靠性。合理的利用网络编码技术,可以进一步提高窄带环境下的文件传输效率
5.卡尔曼滤波算法,常被用于各行各业的预测算法中。在数据通信领域,预测算法目的在于合理分配与利用网络资源,目前已成为了有效提高网络运行速度与利用率的关键技术。在窄带环境的数据通信中,数据传输的效率受到网络丢包率的影响严重,此时基于卡尔曼滤波的网络丢包率的预测算法将为我们充分利用窄带环境下的带宽资源提供帮助。
6.技术方案:为解决上述技术问题,本发明采用的技术方案为:
7.第一方面,提供一种基于随机线性网络编码与卡尔曼滤波算法的文件传输方法,包括:
8.步骤(1)、资源节点发送文件传输连接请求,创建文件传输通道并获取目标节点返回的文件编码系数和下一跳节点返回的数据包编码系数,其中文件编码系数x和y分别表示文件编码矩阵的行数和列数、数据包编码系数n和k分别表示数据包编码矩阵的行数和列数;
9.步骤(2)、资源节点根据文件编码系数和数据包编码系数,从文件中读取一组y
×k×
1024大小的分组文件数据,根据文件编码系数对分组文件进行加载、分片和编码;根据数据包编码系数对文件分片进行切割、编码和封装,并将封装好的数据包发送到网络;
10.步骤(3)、中间节点接收到上一跳节点发送的足够多相同分片的数据包,结合下一跳节点预测的节点间的数据包编码系数实现数据包的再编码;如果接收节点超时没有接收
到足够多有效的数据包,则直接丢弃当前分片数据包;
11.步骤(4)、目标节点接收相同分片数据包,根据数据包编码系数n和k实现数据包解码得到分片数据;目标节点接收到足够多分片数据,根据文件编码系数x和y解码分片数据获得原始文件信息并写入文件;如果目标节点超时未能接收到足够多分片数据,则请求重传丢失的分片数据;若超时没有接收到重传数据,则进行超时重传;
12.步骤(5)、目标节点完成一组文件的解码后,目标节点和中间节点采用卡尔曼滤波算法计算最新的数据包编码系数,目标节点根据分片的最差丢失率计算文件编码系数,并返回给上一跳节点;
13.返回迭代步骤(2)至步骤(5),直至整个文件传输完成。
14.第二方面,本发明提供了一种基于随机线性网络编码与卡尔曼滤波算法的文件传输装置,包括处理器及存储介质;
15.所述存储介质用于存储指令;
16.所述处理器用于根据所述指令进行操作以执行根据第一方面所述方法的步骤。
17.第三方面,本发明提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述方法的步骤。
18.有益效果:本发明提供的一种窄带环境下基于随机线性网络编码与卡尔曼滤波算法的文件传输方法及装置,具有以下优点:资源节点和中间节点通过编码技术提高文件传输的可靠性,减少高丢包率的环境下的数据重传带来的性能损耗。卡尔曼滤波算法用于文件传输信道的丢包率预测,通过基于卡尔曼滤波的预测算法实现网络编码中编码系数的自适应调节,在减少冗余数据包的同时保证文件传输的可靠性。实验结果表明,与传统的文件传输方案相比,提出的方案可以获得更高的文件传输性能。
附图说明
19.图1为根据本发明一实施例的文件传输过程示意图;
20.图2为根据本发明一实施例的数据包头部设计图;
21.图3为根据本发明一实施例的资源节点文件发送流程图;
22.图4为根据本发明一实施例的中间节点数据处理流程图;
23.图5为根据本发明一实施例的目标节点文件接收流程图;
24.图6为根据本发明一实施例的卡尔曼滤波算法预测流程图。
具体实施方式
25.下面结合附图和实施例对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
26.在本发明的描述中,若干的含义是一个以上,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
27.本发明的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、
材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
28.实施例1
29.一种基于随机线性网络编码与卡尔曼滤波算法的文件传输方法,包括:
30.步骤(1)、资源节点发送文件传输连接请求,创建文件传输通道并获取目标节点返回的文件编码系数和下一跳节点返回的数据包编码系数,其中文件编码系数x和y分别表示文件编码矩阵的行数和列数、数据包编码系数n和k分别表示数据包编码矩阵的行数和列数;
31.步骤(2)、资源节点根据文件编码系数和数据包编码系数,从文件中读取一组y
×k×
1024大小的分组文件数据,根据文件编码系数对分组文件进行加载、分片和编码;根据数据包编码系数对文件分片进行切割、编码和封装,并将封装好的数据包发送到网络;
32.步骤(3)、中间节点接收到上一跳节点发送的足够多相同分片的数据包,结合下一跳节点预测的节点间的数据包编码系数实现数据包的再编码;如果接收节点超时没有接收到足够多有效的数据包,则直接丢弃当前分片数据包;
33.步骤(4)、目标节点接收相同分片数据包,根据数据包编码系数n和k实现数据包解码得到分片数据;目标节点接收到足够多分片数据,根据文件编码系数x和y解码分片数据获得原始文件信息并写入文件;如果目标节点超时未能接收到足够多分片数据,则请求重传丢失的分片数据;若超时没有接收到重传数据,则进行超时重传;
34.步骤(5)、目标节点完成一组文件的解码后,目标节点和中间节点采用卡尔曼滤波算法计算最新的数据包编码系数,目标节点根据分片的最差丢失率计算文件编码系数,并返回给上一跳节点;
35.返回迭代步骤(2)至步骤(5),直至整个文件传输完成。
36.如图1所示,本实施例从架构上主要分为三大主体,详细如下:
37.主体1:资源节点编码,资源节点为了提高文件传输可靠性,首先,通过文件编码系数y和数据包编码系数k计算当前分组文件的长度。其次,读取文件信息并进行分片和随机线性编码。最后,针对编码后的分片数据进行二次编码,得到分片数据对应的数据包。
38.主体2:中间节点编码,中间节点接收数据包,当接收到足够多相同分片的数据包时,对当前分片的数据包进行重新编码,增强中间节点间数据通信的可靠性。
39.主体3:目标节点解码,目标节点接收相同分片数据包,解码出分片数据,当解码出足够多的分片数据之后,对分片数据进行解码,获取原始文件信息。
40.参见图2所示,本实施例的数据包格式设计模块,这将为最终的文件传输提供底层协议基础。其中数据包头部由udp头部和自定义头部组合而成,自定义首部主要由文件分组序号,文件分组确认号,包序号,确认号,发送时间戳,编码系数,状态帧、分片序号和偏移量9大部分组成:
41.文件分组序号:对于较大的文件,我们需要将根据编码系数对文件进行拆分,一个文件拆分为多个分组进行发送,此时采用文件分组序号避免同一组文件被重复接收。
42.文件分组确认号:分组确认号目前是通知资源节点当前成功接收的文件分组。
43.包序号:包序号在方法中采用递增的方式,数据接收端可以根据包序号进行丢包
统计,每个中间节点的包序号相互独立。
44.确认号:确认号为最新接收的包序号,用于避免资源节点重复处理确认数据包。
45.发送时间戳:发送时间戳的使用主要是为了方便接收节点统计数据包的传输时延,其中不仅包括资源节点到目标节点的传输时延,还包括中间节点间的传输时延。利用该时延可计算数据传输的等待时延。
46.编码系数:编码系数主要用于保存通过卡尔曼滤波预测算法计算的编码矩阵的阶数。编码系数包括文件编码系数x、y和数据包编码系数n、k,其中文件编码系数x和y分别表示文件编码矩阵的行数和列数、数据包编码系数n和k分别表示数据包编码矩阵的行数和列数;其中数据包编码系数在中间节点中相互独立。
47.状态帧:状态帧用于标记数据包的类别,主要包含确认帧,负反馈帧,请求帧和终止帧。确认帧用于标记确认数据包,负反馈帧用于标记请求重传的反馈数据包,请求帧用于标记创建文件传输连接的请求连接数据包,终止帧用于标记结束位置的数据包。
48.分片序号:分片序号用于记录当前文件分组的分片序号,目标节点可以根据分片序号统计丢失的分片信息,接收节点可以根据分片序号判断数据包的有效性。
49.偏移量:偏移量用于记录数据包在数据分片中的位置,中间节点和目标节点可以根据偏移量确定数据包是否已经被接收。
50.参见图3所示,描述了一个文件在资源节点编码传输的流程,具体步骤如下:
51.1)创建连接,此过程用于保证资源节点与目标节点间存在可用的通信通道。创建连接的过程中,资源节点发送包含文件名、文件长度等关键信息的连接请求数据包;目标节点接收到请求数据包之后将根据文件信息和当前网络状态,计算编码系数,并返回给中间节点和资源节点。
52.2)资源节点文件编码,资源节点根据的文件编码系数x和y,生成x
×
y阶的随机编码矩阵m,结合数据包编码系数k,从文件中读取y
×k×
1024大小的数据,将数据切分为y片,得到切片后数据矩阵f=[f
1 f2…fy
]。得到文件编码公式如下:
[0053][0054]
3)编码矩阵m与编码后的分片矩阵cf拼接,得到最终的分片数据矩阵s。
[0055]
s=[m cf]
[0056]
4)生成n
×
k阶的数据包编码矩阵w,将s中的每一个分片数据拆分为k个长度相同的数据包,得到数据包矩阵p=[p
1 p2…
pk]。同样以矩阵乘的方式实现数据包的编码,得到数据包编码矩阵c
p

[0057]cp
=w
×
p
[0058]
5)将编码矩阵w和编码后数据c
p
拼接得到最终数据矩阵g=[w c
p
],对g进行头部数据封装得到最终发送的数据包。
[0059]
6)同一组文件全部发送后,等待目标节点接收确认,若成功接收则继续下一组文件传输,若传输失败,则重传丢失的分片数据。
[0060]
参见图4所示,描述了一个文件在中间节点重新编码的流程,中间节点间的数据传
输是一个个相对的独立个体,每个中间节点都有自身维护的数据集,并以此数据集与相邻节点进行通信。具体步骤如下:
[0061]
1)中间节点接收数据包,根据数据包的序号设定周期(每60秒)统计一次数据包丢包率。
[0062]
2)验证数据包的有效性,通过文件分组序号、分片序号和偏移量来判断数据包是否属于同一分片,同分片并且未接收的数据包保存在数据接收缓冲区。
[0063]
3)令中间节点数量为x,当第i个中间节点接收到k个线性独立的数据包后即可开始数据包的重新编码。具体实现如下:
[0064]
数据包由数据包头部、编码矩阵和编码后数据三个部分组成。其中包头长度为28字节,编码矩阵的长度为k字节,其余为编码后数据。我们从数据包中提取出编码矩阵和编码后数据矩阵[w c
p
],根据第i个中间节点的数据包编码系数,随机生成一个中间节点的编码矩阵wi完成中间节点的重新编码。中间节点编码公式如下:
[0065]gi
=wi×
[w c
p
]
[0066]
4)对于新生成的最终数据矩阵gi,重新添加头部信息,其中头部信息根据中间节点的数据包序号重新对头部信息中包序号赋值。最后将最新生成的数据包发送给下一节点。
[0067]
5)在接收到目标节点返回的确认信息包后,中间节点根据之前统计的数据丢包状况,预测当前环境下的最优系统丢包率。并将当前最优值传递给上一跳节点,保证中间节点能够以最合适的数据包编码系数进行编码。
[0068]
参见图5所示,描述了一个文件在目标节点解码接收的流程,其中主要分为三大部分:数据包解码,文件解码和最终可靠性保证。具体步骤如下:
[0069]
1)数据包解码:若中间节点数量为x,目标节点为了实现数据包的解码,首先需要接收到足够多相同分片的线性无关的数据包。当获取到k个线性无关的数据包后,从最终数据矩阵g
x
中提取出最终的数据包编码矩阵和最终的编码后数据矩阵通过矩阵求逆的方式解码出数据矩阵p,解码公式如下:
[0070][0071]
此时解码出的数据p就是当前文件分组的一个分片,我们将解码后的分片数据保存在缓冲区中,当我们接收到y个分片数据后即可进行下一步解码操作。
[0072]
2)分片解码,分片解码方式和数据包解码方式一样,首先通过分片矩阵p还原分片数据s,从s中获取文件编码矩阵m和编码后数据矩阵cf。采用逆矩阵的特性实现文件数据的解码,具体公式如下:
[0073][0074]
3)最终可靠性保证,当目标节点超时没有接收到足够多有效的分片数据,或者当目标节点接收到最后一个分片数据后还没有接收到足够多有效的分片数据时,则认为分片
数据丢失,目标节点向资源节点发送负反馈请求,重传丢失的分片数据。同时,为了保证负反馈请求能够成功发送到资源节点,采用超时重传机制来保证负反馈数据包的传输可靠性。整个系统超时时间统一采用2倍传输往返时延。
[0075]
4)当完成文件的解码后,预测当前的最优网络丢包率,计算与上一节点间数据包编码的编码系数n和k。同时,统计文件分片的最差丢失率,计算下一组文件的文件编码系数x和y。
[0076]
5)目标节点返回确认数据包。
[0077]
参见图6所示,描述了基于卡尔曼滤波的预测算法流程和编码系数计算算法。系统中预测技术的使用,目的是为了在窄带环境中,在保证数据可靠通信的前提下尽可能高的利用当前网络资源,减少中间节点不必要的编码时延和网络开销。预测算法流程如下:
[0078]
1)基于sigma准则的低峰值过滤,丢包预测的过程中预测结果受到低峰值的影响较大,对于低峰值的卡尔曼滤波预测可能会影响到一下组文件传输的可靠性,因此在进行卡尔曼滤波预测之前,我们需要对收集的丢包率的数据集o=(o
1 o2…
oj)进行异常的低峰值过滤。如下为基于sigma准则的低峰值过滤公式:
[0079][0080][0081]
其中j代表丢包率的数据集大小,a代表丢包率数据集中的第a个丢包率;当平均丢包率与第a个丢包率oa的差值的绝对值大于sigma时,根据正太分布中的sigma原则,当前峰值为异常值的概率为68.72%,此时过滤掉异常值,使我们的预测结果更准确,得到过滤后的丢包率的数据集o

=(o1′
o2′…
oj′
),其中数据集o

即为当前网络实际测量结果;
[0082]
2)基于卡尔曼滤波的丢包率预测,卡尔曼滤波算法作为一个最优化自回归数据处理算法,具有良好的数值估计优化特性,常被用于各个领域的预测模型之中。在我们窄带环境下的数据传输领域,当前的网络环境与上一时刻网络环境相关。此时,我们选择的卡尔曼滤波模型能很好的预测出当前网络环境下的最优状态。此外,卡尔曼滤波算法可由上一时刻系统最优状态预测当前时刻系统最优状态的数学模型使我们能够在o(1)的时间复杂度内完成当前时刻的预测,这大大减少了我们目标节点预测所需的计算时延。基于卡尔曼滤波算法的预测流程如下:
[0083]
1、系统最优值预测,预测是指根据上一时刻的系统最优状态r
j-1
和误差协方差q
j-1
,通过状态转移矩阵a和控制输入矩阵b预测当前时刻系统最优状态和误差协方差由于在短时间内网络环境突变的概率不大,因此我们的预测公式如下:
[0084][0085]
[0086]
其中,ui为输入控制量,a
t
表示a的转置矩阵,d表示过程噪声协方差;由于在丢包率的预测中,上一时刻的最优状态可以代表下一时刻的最优状态,所以算法中a和b的值为1;
[0087]
2、最优预测结果更新,更新是指通过当前网络实际测量结果oj

,将预测的系统状态进行最优化处理,此时将计算当前环境下的卡尔曼增益值ij,并根据ij更新当前预测的系统最优状态和误差协方差得到当前时刻的系统最优状态rj和误差协方差qj:
[0088][0089][0090][0091]
其中h、v表示测量矩阵、测量噪声协方差,h
t
表示h的转置矩阵;由于网络丢包率的测量结果就是实际结果,所以算法中测量矩阵h的值为1。卡尔曼滤波算法是一个自回归的算法过程,以上步骤就是对数据集o

的一个自回归运算,rj是最后一次运算的结果,将此刻的系统最优状态rj作为当前网络丢包率的最优结果;
[0092]
为了保证预测结果的实时性,我们只统计最近一小时的丢包率,此时数据集的最大长度为60。因此每次预测的计算时间复杂度可以理解为o(1)。
[0093]
3)基于二项式分布的编码系数计算,在经过卡尔曼滤波算法预测结果之后,为了在网络中以尽可能高的概率实现中间节点间的数据传输,我们采用随机线性网络编码中的冗余数据编码的实现节点间的高可靠传输。
[0094]
令中间节点的个数为x,第i-1个到第i个节点间的数据通信的网络丢包率为ri,则节点间一个分片成功传输的概率分片从资源节点到目标节点传输成功的概率为
[0095]
为了保证文件在资源节点和目标节点间传输的可靠性,我们有必要尽可能的提高中间节点数据传输的可靠性。在中间节点丢包概率为ri的情况下,数据包成功传输的概率呈二项式分布特征。综上,将节点间的成功率定义为99%,根据标准正太分布表查询到对应的标准分数为2.33。因此,得到如下数据包编码系数对应关系值:
[0096][0097]
文件编码系数对应关系值:
[0098][0099]
其中tj表示统计出来的最差分片丢失率。
[0100]
在数据包的编码系数和文件编码系数的计算中,y和k定义为固定值16,当文件小于y
×k×
1024时,根据文件大小调整y和k的大小。对于文件的编码系数x采用最差分片丢失率来计算。原因是,在中间节点进行可靠性控制之后,分片的丢失率会趋于稳定,最差分片丢失率在保证了可靠性的前提下,足以满足资源利用率的需求。
[0101]
编码优势体现:在我们的窄带环境文件传输的方法中,网络编码的优势在于其强悍的丢包恢复能力,中间节点只需要接收到足够多同一分片的数据包即可完成数据的解码,而不需要去关注数据包接收的顺序问题。此外,文件传输的双重编码方案,大大减少了编码系数的大小,减少了中间节点编码等待时延,进一步提高了文件传输的效率。
[0102]
预测优势体现:在基于卡尔曼滤波的预测算法中,我们基于sigma准则的异常的低峰值过滤,能够成功提高窄带环境下的预测结果的准确性,大大提高节点间的数据传输的可靠性。与此同时,丢包预测能够使我们更合理的利用网络资源。
[0103]
相比于传统基于重传的传输方法,我们避免了在窄带环境下的频繁的数据交互。这种交互次数的减少意味着我们将以更少的等待时延和传输时延去完成一次文件的传输,在高时延高丢包率的窄带环境下,这种传输时延和等待时延的减少,带来的性能上的优势无疑是巨大的。
[0104]
实施例2
[0105]
第二方面,本实施例提供了一种基于随机线性网络编码与卡尔曼滤波算法的文件传输装置,包括处理器及存储介质;
[0106]
所述存储介质用于存储指令;
[0107]
所述处理器用于根据所述指令进行操作以执行根据实施例1所述方法的步骤。
[0108]
实施例3
[0109]
第三方面,本实施例提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现实施例1所述方法的步骤。
[0110]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0111]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0112]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0113]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0114]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人
员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1