一种基于喷泉码的深空多文件传输方法
技术领域
本发明属于深空通信技术领域,涉及一种基于喷泉码的深空多文件传输方法。
背景技术
深空通信是深空探测的基础,承载着深空探测中大量数据的可靠传输。深空通信环境具有完全不同于地球通信环境的特点,传统的数据传输策略不再适用于深空通信。针对深空通信中传输距离遥远、时延大、高误码率、功率受限、链路间歇中断以及信道非对称等特点,基于星际互联网提出高效可靠的文件传输策略成为研究热点。
深空文件传输策略主要有2个研究方向:(1)改进TCP协议使之适应深空通信环境,如TP-Planet等;(2)针对深空环境的特点专门制定的深空文件传输策略,诸如空间数据系统咨询委员会(Consultative Committee for Space Data Systems,CCSDS)提出文件传输协议(CCSDS File Delivery Protocol,CFDP)和延时容忍网络(Delay Tolerant Networks,DTN)中的文件传输策略等。基于TCP协议的改进包括压缩头部降低开销、增大发送窗口提高链路利用率、修改定时器减少不必要的重传、采用NACK或SNACK减少重传、采用新的初始状态算法尽快占用链路资源以及采用新的拥塞控制机制提高有效吞吐量等。针对深空环境专门制定的文件传输策略采用不依赖反馈的发送机制,并减少发送双方之间的信令交互,以充分利用宝贵的链路资源。
基于TCP协议的改进协议在深空网络中的性能明显好于TCP协议,但必须保证中间节点的路由功能,并且对链路间断连接的解决仍存在问题。随着时延和误码率的进一步增加,这些改进协议的性能迅速下降。DTN中的传输策略对时延不敏感,多采用存储—携带—转发机制。深空通信节点要处理大量的数据,且存储空间有限,这样一来不但增大时延,还有可能因为存储空间有限而丢失一些重要数据。目前,应用较多的是CCSDS提出的CFDP协议。它不仅提供一般的文件传输功能,还具有文件管理功能。CFDP协议采用四种否定确认方式来保证文件传输的可靠性:延迟否定确认、立即否定确认、提示否定确认和异步否定确认。下面以延迟否定确认方式为例,简述CFDP协议的工作方式。步骤如下:
(1)发送方首先将包含文件信息和发送方标识的元协议数据单元(MetadataProtocol Data Unit,MPDU)发送给接收方,紧接着发送协议数据单元(ProtocolData Unit,PDU),直到发送完文件结束标识(End of File,EOF)后,发送方进入等待状态。
(2)接收方接收PDU,接收到EOF后回复发送方ACK EOF确认信息,随后接收方统计丢失的PDU信息,并将此信息包含在NAK信息中反馈给接收方并启动NAK定时器。发送方收到NAK信息后释放已经确认的PDU所占的缓存,同时发送丢失的PDU。当NAK定时器到时后,接收方再次对缓存中的PDU进行检测,如果仍未成功接收,那就重复上一过程,直到包括MPDU在内的全部PDU都被成功接收为止。
(3)接收方发送结束符FIN以通知文件传输成功,发送方在接收到FIN后回复确认信息ACK FIN,同时关闭链路连接并释放其缓存,接收方在收到ACK FIN后也关闭链路连接,整个文件传输结束。
CFDP协议针对深空通信环境专门进行了优化,其不依赖反馈的发送机制、确认反馈与否定确认反馈结合的反馈重传机制一方面为深空文件传输提供了可靠服务,另一方面提高了链路利用率,缩短了文件传输时间。
实际上,深空通信环境恶劣,传输距离遥远、时延大、误码率高。深空通信环境中经常会达到10-7至10-4级别的误码率,这将导致一个文件可能需要多次重传才能成功接收。对于CFDP协议延迟否定确认模式,在不同的丢包率下,传输1000个数据包,平均需要的重传次数如下表所示:
表1 CFDP的传输次数
丢包率 |
0.001 |
0.005 |
0.01 |
0.05 |
0.1 |
0.15 |
0.2 |
平均传输次数 |
1.622 |
2.021 |
2.112 |
3.047 |
3.757 |
4.452 |
5.113 |
由表1可知,当丢包率为0.01时,大约需要2次才能成功传输所有数据。所以,即使在丢包率较低的情况下,CFDP的时延也非常大。以地球和火星为例,距离最近大约5500万公里,最远则超过4亿公里,平均距离大约为1.2亿公里,单向传播时延大约为3分钟到20分钟。因此,深空通信中的往返时延常常远大于数据发送时延和排队处理时延。
因此,减少重传次数是降低文件传输时延的关键。专利文件“基于双重传策略的深空文件传输方法(CN102624506A)”将文件传输分为初始发送阶段和重传阶段,初始阶段所有数据包发送一次,重传阶段将需要重传的数据包发送两次,从而提高一次重传成功的概率,降低传输时间。该方法虽然可以降低重传次数,但并没有降低需要一次重传的概率,并且在重传阶段冗余较大。
专利“基于可靠性保证的卫星网络路由构建方法(CN102497649A)”中对分组传输的主路径建立备份路径。在主路径上发送分组后,在备用路径上发送同样的分组以提高分组成功接收的概率。该方法可以提高分组一次传输成功的概率,但由于占用备份路径发送与主路径上完全相同的副本,导致整个系统链路利用率低。
“深空通信文件传输协议的交织技术研究,2011年11月,宇航学报,第31卷第11期”文章中研究了采用喷泉码对CFDP的数据包进行编码发送提高一次传输成功率,无需反馈的文件传输方法,并在指定的译码失败概率下分析了不同传输数据量时的冗余开销和不同信道误码率下的文件传输时延。该方法可以在冗余不大(小于25%)的情况下明显降低传输时延。但是,文章指出完全不反馈的方法不能保证所有数据包都被接收方完全正确译码。
专利“一种深空通信中的文件传输方法(CN103078707A)”中以预先确定的编码冗余度对文件的数据包进行喷泉编码,采用发送方主动停止的方式,提高文件一次成功传输的概率,避免发送端被动停止导致带宽资源的浪费,提高链路利用率。同时,结合CFDP中的文件传输方法,通过定义PDU和NAK PDU的内容实现基于喷泉码的深空文件可靠传输,具有良好的兼容性和实用性。但是,预定的编码冗余不能适应时变的深空信道,同时没有针对重传的数据包加以保护,缺乏多文件联合传输策略。
目前的深空文件传输方法中存在着单次传输成功率低、链路利用率低、时延大等问题,难以实现大量文件的高效可靠传输,并且缺乏有效的冗余控制机制和基于多文件的联合传输方法。针对文件传输中的重传问题,还缺少相应的研究,特别是重传过程中的数据保护方法。这些问题给深空文件的高效可靠传输带来较大的困难,同时阻碍着深空通信和深空探测的进一步发展。
发明内容
深空通信系统具有传输距离遥远、时延巨大、链路间歇性连接、信噪比低、误码率高以及信道非对称等特点。现有深空通信传输策略不能有效应对由于丢包而带来的反馈重传,导致巨大的传输时延。基于喷泉码的传输策略能降低重传时延,但是不能有效的根据深空信道的时变特性控制编码冗余,缺乏有效的多文件联合传输机制,浪费信道资源。同时,对重传的数据包不能采取有效的保护策略,充分降低重传次数。针对这些问题,本发明的目的在于提供一种实现深空文件的可靠高效传输,降低时延并提高链路利用率的基于喷泉码的深空多文件传输方法。本发明的技术方案如下:一种基于喷泉码的深空多文件传输方法,其包括以下步骤:
101、在发送端,发送方将待发送的文件进行分割,分割形成k个原始数据包,每个数据包大小为L字节;
102、发送方实时接收信道状态信息,并根据接收到的最新信道状态信息和数据包个数,确定编码包个数K,对数据包进行喷泉编码,然后加上帧头信息,形成喷泉编码数据包,跳转至步骤103;如果收到反馈信息,则更新当前的信道丢包率;如果需要重传丢失的数据,则根据需要重传的数据包个数确定重传策略;
103、发送方形成喷泉编码数据包后通过深空信道发送至接收方,每个文件发送结束后发送文件结束标志EOF。跳转至步骤104,如果发送方还有文件需要传输时,则转到步骤101;
104、接收方接收到文件结束标志EOF后,反馈确认信息ACK PDU给发送方,然后接收方对收到的喷泉编码数据包进行统计,计算丢包率,然后使用联合译码算法对收到的喷泉编码数据包进行译码,统计丢失的数据包;
105、如果步骤104中对收到的喷泉编码数据包译码成功,则反馈成功接收确认信息以及信道丢包率给发送方,如果译码失败,则反馈丢失的数据包信息以及信道丢包率给发送方并开启定时器,当定时器到时后,再次对文件进行译码并统计,如果还有丢包,则重复步骤105,直至文件成功接收;
106、如果所有文件均成功发送,则传输过程结束。
进一步的,步骤101中对待发送的文件进行文件分割主要包括以下步骤:
步骤1.1),首先确定待发送的文件数据分组中的最大长度Lmax和最小长度Lmin;
步骤1.2),根据公式求得数据包个数的取值范围,Sfile表示待传输文件的字节数;
步骤1.3),选择满足步骤1.2)中取值范围的最大整数并赋值给k,则数据包的长度当Sfile<k*L时,在最后一个数据分组中添加冗余数据,使Sfile=k*L;
步骤1.4),从第一个数据包起将k个数据包编号为1,2,3、、、k,完成文件分割。
进一步的,步骤102中确定编码包个数K的具体步骤如下:
步骤2.1),根据公式P=(1-λ)P1+λP2确定链路此时的丢包率,其中,P1为最近一次的丢包率,P2为上次反馈的丢包率,λ为可调节参数,取值范围是[0,1];
步骤2.2),根据公式计算出需要的编码冗余,其中ε′为在系统允许的喷泉码译码失败概率下,接收端译码所需要达到的编码冗余限值;
步骤2.3),根据公式K=k*(1+ε)计算出所需要的编码包数量。
当收到接收方反馈的信道丢包率后,在接下来的文件发送或重传过程中可以直接使用最新的丢包率,不必经过步骤2.1)的计算过程。
进一步的,步骤102中,当有重传数据时,采用如下方法确定重传策略:
步骤2.1),当重传数据包的个数N小于200时,将每个数据包传输M次,同时确保每个数据包丢失的概率小于10-3,利用公式求得每个数据包需要重传的次数;
步骤2.2),当重传数据包的个数N大于2000时,采用喷泉码编码保护,设置喷泉码译码失败概率为10-5,并依此算出所需重传的编码包数;
步骤2.3),其余情况,按照如下方法编码发送需要重发的数据包:
步骤2.3.1),首先发送需要重传的数据包;
步骤2.3.2),采用喷泉码编码,根据度分布函数选择度数,并按顺序依次循环选择数据包,当每个数据包均被选择3次后,停止编码并发送至接收方;
进一步的,步骤102中的喷泉数据包包括源ID、目的ID、d个原始数据包序号、度数、文件序号及编码包等。
进一步的,步骤103的数据发送过程如下:
步骤3.1),首先发送包含源文件名称、本次文件信息、本次需要传输的文件个数信息的元协议数据单元MPDU给接收方,其中本次文件信息包括文件大小、数据包个数、编码包个数;
步骤3.2),依次发送K个喷泉数据包,发送成功之后,发送文件结束标志EOF;
步骤3.3),如果还有待传输文件,则不必等待反馈确认,直接转到步骤101,对下一个待传输文件进行处理;如果收到反馈信息,则更新丢包率,并且释放已经正确接收的数据包,同时转到步骤102。
在上述步骤中,当同时出现有文件需要发送和重传丢失的数据时,首先重传丢失的数据;但是在待传输文件的喷泉数据包的发送过程中收到反馈信息时,则当本次文件传输的文件结束标志EOF发送之后,再处理反馈信息。
进一步的,在步骤104中,计算丢包率的步骤如下所示:
步骤4.1),根据收到的元协议数据单元MPDU,得知本次文件传输的喷泉数据包个数K;
步骤4.2),统计收到的喷泉数据包个数K′,则可根据公式得到当前链路的丢包率;
在步骤104中,所采用的联合译码算法步骤如下:
步骤4.1),首先采用置信传播译码算法对收到的编码包进行译码;
步骤4.2),如果置信传播算法译码成功,则此次数据传输成功;如果译码失败,则采用高斯消元译码算法进行译码。
本发明的优点及有益效果如下:
本发明在喷泉码和CFDP的基础上,设计一种深空多文件传输策略:在第一次发送数据时,根据信道的最新状态进行冗余控制,智能调整编码包的数量,提高一次传输的成功率;对喷泉码采用联合译码算法,充分利用编码信息,提高译码成功率;在重传时,根据丢失数据包的数量,采用不同的保护策略,提高一次重传的成功率;多个文件联合传输,第一个文件的编码包发送完毕,在发送文件结束标志EOF后立即对第二个文件进行喷泉编码,然后直接发送,不必等待第一个文件成功接收;在CFDP的基础上,将编码包作为数据域的内容发送,保证了良好的兼容性和实用性。本发明以降低时延和提高深空链路利用率为目标完成深空文件的高效可靠传输。
本发明基于喷泉码的深空多文件数据传输策略,充分利用喷泉码的无码率特性,充分利用前向信道,减少反向信道上的数据量,提高链路利用率,降低时延。本发明根据最新的丢包率信息,计算所需的编码冗余,提高一次传输的成功率并有效控制冗余;在接收方采用联合译码算法,充分利用编码信息,减少计算复杂度并提高了译码成功率;在重传时,根据不同的情况,采取不同的保护策略,减少重传次数,尽量限制在1次以内;采用多文件传输策略,不等待接收方反馈信息,直接对待传输文件进行处理,充分利用链路资源以及降低时延。本发明针对性的解决了传输时延巨大、链路时变以及信道非对称的问题,并有效控制冗余,减少传输次数,基本实现了深空文件高效可靠传输的目标。
附图说明
图1所示为本发明优选实施例深空多文件传输策略流程图;
图2为本发明中重传数据包的重传策略示意图;
图3为本发明中喷泉数据包格式的示意图;
图4为本发明中发送方的状态转移流程图;
图5为本发明的联合译码算法流程图;
图6为本发明中接收方的状态转移流程图。
具体实施方式
下面结合附图给出一个非限定的实施例对本发明作进一步的阐述。但是应该理解,这些描述只是示例的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
参照图1,本发明在传统文件传输协议的基础上,提出了一种基于喷泉码的深空多文件传输策略,主要包括以下步骤:
步骤1),在发送端,将待发送的文件进行分割,形成k个原始数据包,每个数据包大小为L字节;
步骤2),发送方根据接收到的最新信道状态和数据包个数,确定编码包个数K,对数据包进行喷泉编码,然后加上帧头信息,生成喷泉数据包;如果收到反馈信息,则更新当前的信道丢包率;如果需要重传丢失的数据,则根据需要重传数据包个数确定重传策略;
步骤3),喷泉数据包由深空信道发送至接收方,每个文件发送结束后发送文件结束标志EOF。如果还有文件需要传输,则转到步骤1;
步骤4),接收方接收到EOF后,反馈ACK PDU。然后对收到的喷泉编码包进行统计,计算丢包率,然后使用联合译码算法对收到的编码包进行译码,统计丢失的数据包;
步骤5),如果译码成功,则反馈成功接收确认信息以及信道丢包率。如果译码失败,则反馈丢失的数据包信息以及信道丢包率并开启定时器,当定时器到时后,再次对文件进行译码并统计,如果还有丢包,则重复本次步骤,直至文件成功接收;
步骤6),如果所有文件均成功发送,则传输过程结束。
在数据传输过程中,步骤1的文件分割主要包括以下步骤:
步骤1.1),首先确定数据分组的最大长度Lmax和最小长度Lmin;
步骤1.2),根据公式求得数据包个数的取值范围,Sfile表示待传输文件的字节数;
步骤1.3),优先选择k为满足条件的最大整数,则数据包的长度当Sfile<k*L时,在最后一个数据分组中添加冗余数据,使Sfile=k*L;
步骤1.4),从第一个数据包起将k个数据包编号为1,2,3、、、k。
步骤2中确定编码包个数的具体步骤如下:
步骤2.1),根据公式P=(1-λ)P1+λP2确定链路此时的丢包率,其中,P1为最近一次的丢包率,P2为上次反馈的丢包率,λ为可调节参数,取值范围是[0,1]。当P1>P2时,λ小于0.5,建议值为0.2,当P1<P2,λ取值大于0.5,建议值为0.8。
步骤2.2),根据公式计算出需要的编码冗余,其中ε′为在系统允许的喷泉码译码失败概率下,接收端译码所需要达到的编码冗余;
步骤2.3),根据公式K=k*(1+ε)计算出所需要的编码包数量。
当收到接收方反馈的信道丢包率后,在接下来的文件发送或重传过程中可以直接使用最新的丢包率,不必经过步骤2.1)的计算过程。
如图2所示,步骤2中,当有重传数据时,采用如下方法确定重传策略:
步骤2.1),当重传数据包的个数N小于200时,将每个数据包传输M次,同时确保每个数据包丢失的概率小于10-3,利用公式求得每个数据包需要重传的次数;
步骤2.2),重传数据包的个数N大于2000时,采用喷泉码编码保护,设置喷泉码译码失败概率为10-5,并依此算出所需重传的编码包数;
步骤2.3),其余情况,按照如下方法编码发送需要重发的数据包:
步骤2.3.1),首先发送需要重传的数据包;
步骤2.3.2),采用喷泉码编码,根据度分布函数选择度数,但是按顺序依次循环选择数据包,当每个数据包均被选择3次后,停止编码并发送至接收方。
如图3所示,步骤2中的喷泉数据包格式包括源ID、目的ID、d个原始数据包序号、度数、文件序号、喷泉码编码包。在帧头中将第六字段保留字段设置为“喷泉码标识”,当“喷泉码标识”为“0”时,为普通传输模式;当为“1”时,为喷泉码传输模式。
在数据域中,当为喷泉码传输模式时,“偏移”字段将改为“度”字段,指示该包由几个数据包编码而成,其后跟随构成该包的原始数据包的序号,然后是编码包数据。
如图4所示,步骤3的数据发送过程如下:
步骤3.1),首先发送包含源文件名称、本次文件信息(包括文件大小、数据包个数、编码包个数)、本次需要传输的文件个数等信息的MPDU;
步骤3.2),依次发送K个喷泉数据包,发送成功之后,发送EOF;
步骤3.3),如果还有待传输文件,则不必等待反馈确认,直接转到步骤1,对下一个待传输文件进行处理;如果收到反馈信息,则更新丢包率,并且释放已经正确接收的数据包,同时转到步骤2。
在上述步骤中,当同时出现有文件需要发送和重传丢失的数据时,优先重传丢失的数据;但是在待传输文件的喷泉数据包发送的过程中收到反馈信息时,则当本次文件传输的EOF发送之后,再处理反馈信息。
在步骤4中,计算丢包率的步骤如下所示:
步骤4.1),根据收到的MPDU,得知本次文件传输的喷泉数据包个数K;
步骤4.2),统计收到的喷泉数据包个数K′,则可根据公式得到当前链路的丢包率。
如图5所示,在步骤4中,所采用的联合译码算法步骤如下:
步骤4.1),首先采用置信传播(Belief Propagation,BP)译码算法对收到的编码包进行译码;
步骤4.2),如果BP算法译码成功,则此次数据传输成功;如果译码失败,则采用高斯消元(Gaussian Elimination,GE)算法进行译码。
在接收方,收到EOF后即开始生成编码矩阵H(行数为编码包的数目K′,列数为数据包的数目k)并开始译码。首先采用BP译码算法,查找编码包中度为1的编码包,形成译码波动集。显然,译码波动集中的编码包与数据包一一对应,可以直接译出。之后在迭代的每一步,从译码波动集中取出一个数据包,将它和所有与其具有连接关系的编码包进行异或运算,结果取代原编码包的值,相关编码包的度数减1。然后将该数据包从译码波动集中删掉,查找编码包中度为1的编码包,如果有则将其加入译码波动集。重复上述步骤,直至译码波动集为空。
在译码过程中,如果所有数据包均被译出则译码成功,否则译码失败。BP算法译码复杂度较低,能够译出绝大部分的数据包。但实际上,BP译码算法是一种次优译码算法,在译码波动集为空时即停止译码,浪费了一定的编码信息,不利于文件的高效可靠传输。此时,开始准备采用GE算法译码。对编码矩阵H进行更改,得到未译出的数据包和未释放的编码包之间的编码矩阵H′(行数为编码包的数目K″,列数为数据包的数目k′)。译码过程相当于求解线性方程:
H′*X′=N′ (1)
其中,X′为未译出的数据包信息向量,大小为k′×1,N′为接收方未释放的编码包信息向量,大小为K″×1。然后依次按照以下步骤变化矩阵:
步骤A),将矩阵H′扩展为含编码包信息向量N′的增广矩阵H″,H″=[H′/N′];
步骤B),然后利用矩阵初等行变换将此增广矩阵H″的矩阵H′转换成单位矩阵I,此时H″=[I/N″];
步骤C),若此单位矩阵满秩,则数据包信息向量X′=N″。如果单位矩阵不满秩,则译码失败,仍然有一小部分数据包没有成功接收,需要反馈未译出的数据包信息。
在步骤6中,译码结束关闭链路的过程如下:
步骤6.1),接收方发送结束符FIN以通知文件传输成功。发送方已完成所有文件的成功传输且没有新文件需要传输。在接收到FIN后回复确认信息ACKFIN,同时关闭链路连接并释放缓存;
步骤6.2),接收方在收到ACK FIN后也关闭链路连接,文件传输结束。
综上所述,如图6所示,本发明中接收方的处理方法流程如下:
步骤1),当接收方接收到MPDU后,则准备接收数据;
步骤2),接收方接收PDU,当收到EOF后,就反馈发送方一个确认信息ACKEOF,之后接收方统计接收到的喷泉数据包信息,计算丢包率,并对编码包进行译码;如果没有接收到EOF,则继续接收数据包;
步骤3),如果译码成功,则反馈成功信息和丢包率,并转到下一步;否则,反馈丢包信息和丢包率,等待继续接收重传数据;
步骤4),检查是否收到关闭链路的通知。如果收到,则本次文件传输过程结束;否则继续等待接收数据。
下面,就本发明的具体实施给出实例。假设发送方需要传输三个文件,文件的大小分别为5MB,10MB,8MB。
首先,有文件需要传送,发送方将确定文件分包的最大长度和最小长度,为兼顾文件传输策略的效率和链路丢包率,设定Lmax=2KB,Lmin=1KB。然后根据公式计算得到2560≤k≤5120,选择k为5120,则根据公式计算得到L=1KB。
之后是计算当前链路的丢包率。假设前两次反馈的丢包率分别为P1=0.04,P2=0.06,则λ取值为0.8,根据公式P=(1-λ)P1+λP2计算得出此时信道的丢包率估值为0.056。假设系统允许的喷泉码译码失败概率为0.0005,所需要的编码冗余ε′为0.06。根据公式得到所需编码冗余为0.123。则根据公式K=k*(1+ε)可得所需要的编码包大约为5750。
上述参数计算与设定完成之后,发送方先将包含源文件名称、本次文件信息(包括文件大小5MB、数据包个数5120个、编码包个数5750个)、需要传输的文件个数3个等信息的MPDU发送到接收方,通知接收方开始接收数据。然后发送方开始对第一个文件的5120个数据包进行编码,生成5750个编码包。将编码包与帧头信息以及编码信息组装成喷泉数据包并发送到接收方。发送完成后,发送方发送EOF,通知接收方第一个文件传送结束,可以开始译码。然后,发送方不必等待接收方的反馈,开始对第二个文件执行相同的处理方法。如果在第二个文件EOF发送之后,依然没有收到接收方的反馈,则继续对下一个需要传输的文件进行处理。
当接收方接收到MPDU时,准备接收文件。收到EOF后,首先反馈ACK EOF。然后接收方统计收到的喷泉数据包,根据公式计算出当前新到的丢包率。紧接着将喷泉数据包中的编码包取出来根据编码信息进行译码。如果译码成功,则反馈文件成功信息和丢包率;否则反馈丢包信息和丢包率。当收到下一个文件的喷泉数据包信息时,重复以上步骤。假设第一个文件有2个原始数据包未成功译出,反馈的丢包率为0.05。第二个文件有30个原始数据包未成功译出,丢包率为0.08。第三个文件正确接收,丢包率为0.03。
发送方接收到接收方的反馈后,如果此时正在发送下一个文件的喷泉数据包,则当本轮文件发送过后,再处理反馈信息。否则,立即更新丢包率并计算所需要的编码冗余,调整编码包个数并编码发送。当反馈的是正确译码信息时,则释放链路资源。否则根据丢包数采取重传策略。如本例所示,当收到第一个文件的反馈信息时,根据公式P=(1-λ)P1+λP2计算出丢包率为0.048。由于丢失数据包为2个,则根据公式可得M=3。所以将文件1丢失的2个数据包分别发送3次。当收到第2个文件的反馈时,更新丢包率,然后重传数据。首先将30个丢失的数据包发送到接收方。然后采用喷泉码编码,依次循环选择数据包进行编码,直至所有的数据包均被选择3次为止,将编码包和编码信息以及帧头组成喷泉数据包,然后发送到接收方。
当发送方接收到接收方的成功译码消息时,只需更新丢包率并释放相应缓存。如果此时所有文件已经正确传输,且没有新文件需要传输,则发送方回复ACK FIN,同时关闭链路并释放缓存。接收方在收到ACK FIN后也关闭链路连接,整个文件传输过程结束。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明方法权利要求所限定的范围。