基于UDP自适应冗余编码的无线P2P传输方法及模型与流程

文档序号:16510513发布日期:2019-01-05 09:18阅读:266来源:国知局
基于UDP自适应冗余编码的无线P2P传输方法及模型与流程

本发明涉及无线p2p网络文件共享技术领域,具体涉及一种基于udp自适应冗余编码的无线p2p传输方法及模型。



背景技术:

由于物联网的兴起以及wifi的广泛使用,无线网络中的p2p文件共享变得越来越重要。但由于传输通道的特性不同,无线网络中丢包、链路故障等不利因素的影响将比有线网络严重得多。在有线网络中适用的p2p模型在无线环境中可能会出现性能下降的情况。现在主流的p2p模型,如bittorrent、电驴,均是被设计在有线网络中运行的,大部分都是使用tcp或者utp作为传输协议。但是tcp和utp在无线网络中,由于丢包率相对更高,均存在着很大的性能局限。同时,无线网络中的链路失败和波动很大的端对端延时,会对tcp和utp的传输过程带来严重的影响。因此,传统的主流有线网络p2p模型,并不适合在无线网络中使用。

为了实现在无线网络中高效的p2p文件共享,一些新的模型近几年来不断地被提出,其中具有代表性的模型简单介绍如下:

现有技术一:为无线p2p网络设计调度算法

原理:该技术首先将网络划分为不重叠的子网格,并根据网络子格设计目标函数来分别计算网络中用户的下载速率和其他节点的上传速率,然后提出一个动态算法来最大化这些目标函数,最后使用目标函数,去为每一个请求做最佳调度。它证明,当每个用户需要一个无限长度的单个文件时,该算法可以提供几乎最佳的效率,并将其扩展到有限文件大小的情况。为了激励参与,该技术也包含了对应的奖励和惩罚的机制。

缺点:该技术只能用于单跳无线网络。在多跳无线网络中,网络拓扑断开,路由开销过大,共享机会降低和远程路径的不稳定性是影响该技术发挥性能的主要负面因素。

现有技术二:寻找网络拓扑上最靠近的p2p节点提供下载

原理:将所有p2p节点表示成一颗最小生成树,确保节点之间的联通性,并且根据节点的网络状况,定义逻辑层上的邻居节点和每个节点的共享区域;每个节点与其共享区域内的邻居节点共享资源,并随机选择共享区域中的一个节点对外共享其上传带宽以增加资源的多样性。由于遵循这种策略,大部分路由开销仅限于共享区域,同时能够提升节点之间的资源共享机会。

缺点:该技术实际上将整个p2p网络划分成若干个子网,减少了路由开销,但是同时也减少了网络节点间的资源共享机会,同时跨区域之间的共享,需要通过中间节点进行转发;而且在网络条件不好的情况下,跨区域传输还是会遭遇丢包率高,重传次数增多的问题。

现有技术三:利用网络编码减少p2p无线网络中中间节点的转发数据量

原理:中间转发节点将需要分发到两个目的节点的数据包进行网络编码,得到编码数据包,并编码数据包通过组播一并发送到两个目的节点;目的节点根据自身已有数据和编码数据包,进行解码,得到另一目的节点发送过来的数据;这种做法能够使中间节点发送数据量大大减少,解决了无线网络中由于中间节点转发数据量大,导致网络传输效率降低的问题。

缺点:该技术需要判断网络包是否可以通过编码转发,并且若要支持多跳路由,还需要进行潜在路径的挖掘,同时还需要设计路由度量算法,判断采用编码转发还是直接转发,需要考虑网络链路开销以及自干扰等网络因素,计算量大,算法较为复杂,实施技术难度大。

现有技术四:利用节点的内存进行缓存加速传输

原理:该技术为每个节点设计一个位于传输层之上的缓存层,并设计一个非对称协作缓存算法,该算法缓存经常被重复利用的数据,可以最大限度地减少应用层的处理开销,尤其是内核与用户空间之间的数据复制;采用缓存后,能够有效的减少节点在传输过程中的开销,在同样的时间内,传输更多的数据。

缺点:该技术需要设计并改造系统内核,并不能部署在普通的系统节点上,不具有普遍通用性,只能用于专用网络中。

综上所述,由于无线网络条件多变,网络环境更加恶劣,使得现有的有线p2p网络技术不能提供令人满意的下载性能;而现有的无线p2p网络技术,要么不能支持多跳网络,要么算法过于复杂,要么实施难度大,不具有普遍通用性,且均没有从改变传输方式的角度考虑,因此还不能完全适应无线网络。



技术实现要素:

本发明的目的是针对上述现有技术的不足,从改善网络数据传输方式的角度考虑,提供了一种基于udp自适应冗余编码的无线p2p传输方法,所述方法能够显著改善节点间的传输效率,减少重传次数,在网络环境不稳定、丢包率高时,也能保持令人满意的下载速度。

本发明的另一目的在于提供一种基于udp自适应冗余编码的无线p2p传输模型。

本发明的目的可以通过如下技术方案实现:

一种基于udp自适应冗余编码的无线p2p传输方法,所述方法在p2p传输过程中会传输额外的raid冗余编码数据以减少丢包重传的发生,并且根据综合丢包率自适应地调整冗余编码数据的冗余比例;在传输过程中使用tcp传输控制信息(包括传输任务的信息、传输速度调整的信息和重传数据包的信息),使用udp传输文件数据信息和冗余数据信息,以确保控制信息能够被对端准确接收同时提高数据传输效率;另外通过限定udp数据包发送的平均时间间隔,根据网络丢包率自适应地调整udp的发送速率。

进一步地,所述综合丢包率计算如下:

综合丢包率=0.5*历史丢包率+0.5*当前丢包率。

进一步地,所述方法中raid冗余编码的具体方法如下:如当前冗余比例为n:1,则将n段1mb大小的文件段分别分割成2048个512字节大小的数据包并进行编号,相同序列号的数据包进行对应的异或操作,即相同比特位的数据进行n次异或操作,得到一个比特位的编码数据,因此n段文件段编码过后,得到1mb大小的冗余数据段;若传输过程中,相同序列号的n个数据包中的一个丢失,则利用接收到的冗余数据包,通过相同的异或操作进行恢复,若丢失数据包数量多于1个,则需要进行重传。

进一步地,所述方法中,raid冗余比例计算机制如下:raid冗余编码数据与传输数据的比例使用阶梯式,阶梯值为0,1∶100,1∶50,1∶25,1∶10,1∶5,若传输轮次的综合丢包率高于上阈值,则提高冗余比例,若连续三次低于下阈值,则降低冗余比例,否则保持不变;具有最低综合丢包率的资源节点seeder需要对传输轮次中传输的数据进行raid冗余数据编码,计算出冗余编码数据并传给下载节点leecher。

进一步地,传输过程被划分成多个传输轮次,每个传输轮次传输的总数据量将由下载节点leecher根据上一次的综合丢包率进行计算,并呈阶梯式增加或减少,阶梯值为5m,10m,25m,50m,100m;若综合丢包率高于上阈值,则减少数据量,若低于下阈值,则增加数据量;

传输过程中由下载节点leecher根据各个资源节点seeder的综合丢包率对seeder进行筛选和任务下发,一个下载任务为至少一个文件段,根据综合丢包率不同,各个seeder会分配到不同数据量的下载任务,并且综合丢包率最低的资源节点seeder将负责提供raid冗余编码数据的下载;

即在每个传输轮次结束后,下载节点leecher计算传输轮次的综合丢包率和各个资源节点seeder的综合丢包率,选择下一轮传输的seeder节点,并确定下一个传输轮次的传输数据量和冗余数据的比例,同时对资源节点seeder按照综合丢包率进行排序,选择综合丢包率低于阈值的seeder进行下载任务的下发,并告知综合丢包率最低的seeder传输raid冗余编码数据。

进一步地,每隔一个固定的时间间隔,下载节点leecher将调整各个资源节点seeder的udp发送速率,发送速率的调整通过限定udp数据包发送的平均时间间隔实现,具体方法如下:

a、计算固定时间间隔t的网络丢包率loss;

b、计算资源节点seeder的udp平均发送速率s=mtu*n*8/t,mtu为udp包的大小,n为收到的数据包数量;

c、如果网络丢包率loss为0,则计算更新的发送速率s′=s+ε(s),其中ε(s)是一个随着s增加而减少的函数,ε(s)=10max(c-lgs-τ,1)/t,c是一个限制发动速率最大增长量的常数,τ是一个表示网络丢包率对发送速率增长量的衰减值;

d、如果网络丢包率loss大于阈值,则:

s′=s*(0.95-loss),

τ′=τ*(1+loss);

e、最后将s′转换为平均时间间隔p=mtu*8/s′。

进一步地,所述p2p传输网络中的所有节点均遵循同一种文件分割方案:先将文件分割成多个大小为1mb的文件段,然后对其进行编号,再将1mb文件段分割成2048个文件块,并对文件块进行编号,对每一个文件块加上其文件段编号、文件块编号和其数据量大小,得到一个udp数据包;下载节点leecher在传输轮次结束后,将根据标志位,找出丢失的数据包,并且尝试使用接收到的raid冗余编码数据进行恢复,若数据恢复失败,则将数据包信息打包成tcp报文,传递给资源节点seeder,资源节点seeder将重新发送udp数据包,直到所有的数据包均被下载节点leecher正确接收。

本发明的另一目的可以通过如下技术方案实现:

一种基于udp自适应冗余编码的无线p2p传输模型,所述模型包括:

索引节点tracker,用于管理p2p网络中节点的存活状态、节点的ip地址信息以及节点的共享资源信息,同时响应网络内的节点的各种请求;

资源节点seeder,在集群中提供共享资源下载;

下载节点leecher,发起资源下载请求;

tcp线程池,用于保存和tracker以及p2p网络中其他节点的tcp连接,通过不同的线程标识,找到对应的节点,并传输心跳包和相应的传输控制信息;

udp线程池,用于保存和维持在数据传输过程中用到的udp线程,减少在传输过程中由于频繁创建和销毁线程带来的系统开销;

文件划分模块,发送过程中用于将共享文件划分成大小为1m的文件段,并对文件段进一步划分,得到对应的文件块,最后将文件块打包成udp数据包;在接收过程中计算数据包数据的文件偏移量,将数据写入文件对应位置;

数据传输模块,用于从发送缓冲区中发送tcp和udp数据包,将接收到的tcp和udp数据包放到接收缓冲区中,并实现对应的计数功能,如规定时间间隔内的数据包接收和发送数量;

网络状况统计模块,利用数据传输模块的统计信息,计算网络丢包率,计算发送和接收速度;

传输调整模块,利用计算出的网络丢包率和发送、接收速度,筛选出下一个传输轮次的对应的seeder节点,计算下一个传输轮次的传输数据量,并确定它们的传输任务和传输速度,确定冗余数据的冗余比例;

冗余编码模块,发送过程中用于对该传输轮次中的所有传输文件段根据冗余比例进行raid冗余编码,并得出大小为1m的冗余数据段,放置到发送缓冲区中;接收过程中用于对冗余数据进行解码并尝试恢复丢失数据包;

重传模块,用于检测传输轮次中所有的丢失的数据包,并尝试用冗余数据进行恢复,如果恢复失败,则将丢失数据包信息打包成tcp数据包,并放到发送缓冲区,等待重传数据包的到来,直到所有的数据包都正确接收到;

共享内存池,用于在传输过程中多线程之间的状态同步,以及充当接收和发送数据包的缓冲区。

本发明与现有技术相比,具有如下优点和有益效果:

本发明将文件传输划分成多个传输轮次,并根据上一个传输轮次的综合丢包率,调整下一个传输轮次的发送数据量,选取丢包率最低的资源节点;在p2p传输过程中,本发明能够自适应地计算冗余数据比例并选取最佳资源节点传输额外的raid冗余编码数据,即使传输过程中发生丢包,下载节点也有极高的机率能够将丢失的数据包进行恢复,从而能够减少重传次数。本发明通过同时结合tcp和udp进行传输,使用tcp传输控制信息,udp传输文件数据,保证了控制信息的准确接收同时也利用了udp简单的传输机制,使文件数据能够更快速地传输;同时,为了避免网络层数据包的分割,本发明将文件分割成多个512b大小的数据块,并封装成udp数据包;为了得出当前最合适的传输速度,本发明设计了一个udp速度控制算法,通过定时监测网络丢包率,计算出发送速度是否到达当前网络上限,并根据计算结果对udp发送速度进行提升或减缓,该算法能够使发送速度快速提升,并在网络发生拥挤或丢包率高时,及时的减小。基于以上几点,本发明能够适应无线网络中的复杂多变的网络环境,提供高效的p2p传输效率。

附图说明

图1为本发明实施例提供的一种基于udp自适应冗余编码的无线p2p传输模型示意图。

图2为本发明实施例文件划分模块提供的文件分割示意图。

图3为本发明实施例冗余编码模块提供的raid冗余编码示意图。

图4为本发明实施例p2p文件传输过程的流程示意图。

图5为本发明实施例提供的一种基于udp自适应冗余编码的无线p2p传输方法示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例:

针对现今无线网络中p2p传输受到网络丢包率高、网络链路错误发生频繁、端对端延时高且不稳定的影响而使传输质量受损的问题,本实施例公开了一种基于udp自适应冗余编码的无线p2p传输方法,如图5所示,所述方法包括以下方法的组合:在p2p传输中会传输额外的raid冗余编码数据,以恢复丢失数据包,减少丢包重传次数,同时实现了冗余编码数据的动态调整机制:在网络丢包率高时,传输较多的冗余数据,而在丢包率变小时,自适应的减小传输的冗余数据量;使用tcp传输控制信息,确保控制信息能够被对端准确接收,而大量的文件数据则使用简单的udp进行发送以提高发送效率,使p2p传输同时具备关键信息准确完整和数据传输速率高,动作响应速度快的优点;设计实现了udp速率控制算法,能够根据网络丢包率自适应的调整udp的发送速率,在丢包率低时能够快速爬升到网络带宽上限,并且网络出现阻塞时能够及时的降低发送速率,解决了udp不能适应网络变化的问题,提高了udp的灵敏性。本发明由于实现了冗余机制,能尽可能减少丢包重传的发生,同时结合使用udp传输数据,有效的提高传输速度,解决了无线p2p网络中由于丢包率高而造成的传输效率低下的问题。

本实施例还公开了一种基于udp自适应冗余编码的无线p2p传输模型,如图1所示,包括:

索引节点tracker(101),用于管理p2p网络中节点的存活状态、节点的ip地址信息以及节点的共享资源信息,同时响应网络内的节点的各种请求;

资源节点seeder(102),在集群中提供共享资源下载;

下载节点leecher(103),发起资源下载请求;

tcp线程池(104),用于保存和tracker以及p2p网络中其他节点的tcp连接,通过不同的线程标识,找到对应的节点,并传输心跳包和相应的传输控制信息;

udp线程池(105),用于保存和维持在数据传输过程中用到的udp线程,减少在传输过程中由于频繁创建和销毁线程带来的系统开销;

文件划分模块(106),发送过程中用于将共享文件划分成大小为1m的文件段,并对文件段进一步划分,得到对应的文件块,最后将文件块打包成udp数据包;在接收过程中计算数据包数据的文件偏移量,将数据写入文件对应位置;

数据传输模块(107),用于从发送缓冲区中发送tcp和udp数据包,将接收到的tcp和udp数据包放到接收缓冲区中,并实现对应的计数功能,如规定时间间隔内的数据包接收和发送数量;

网络状况统计模块(108),利用数据传输模块的统计信息,计算网络丢包率,计算发送和接收速度;

传输调整模块(109),利用计算出的网络丢包率和发送、接收速度,筛选出下一个传输轮次的对应的seeder节点,计算下一个传输轮次的传输数据量,并确定它们的传输任务和传输速度,确定冗余数据的冗余比例;

冗余编码模块(110),发送过程中用于对该传输轮次中的所有传输文件段根据冗余比例进行raid冗余编码,并得出大小为1m的冗余数据段,放置到发送缓冲区中;接收过程中用于对冗余数据进行解码并尝试恢复丢失数据包;

重传模块(111),用于检测传输轮次中所有的丢失的数据包,并尝试用冗余数据进行恢复,如果恢复失败,则将丢失数据包信息打包成tcp数据包,并放到发送缓冲区,等待重传数据包的到来,直到所有的数据包都正确接收到;

共享内存池(112),用于在传输过程中多线程之间的状态同步,以及充当接收和发送数据包的缓冲区。

所述文件划分模块(106)提供的文件分割方法如图2所示:

先将文件分割成多个大小为1m的文件段,然后对其进行编号,再将1m文件段分割成2048个文件块,并对文件块进行编号,对每一个文件块加上其文件段编号,文件块编号和其数据量大小,得到一个udp数据包。

所述冗余编码模块(110)提供的raid冗余编码方法如图3所示:

如当前冗余比例为n:1,则将n段1mb大小的文件段进行对应的异或操作,相同比特位的数据进行n次异或操作,得到一个比特位的编码数据,因此n段文件段编码过后,得到1m大小的冗余数据段;若传输过程中,相同序列号的n个数据包中的一个丢失,则通过接收到的冗余数据包,可以通过相同的异或操作进行恢复。

如图4,虚线表示udp传输,实现表示tcp传输,本发明实施例p2p文件传输过程的流程步骤如下:

步骤401:系统初始化的时候,资源节点向索引节点登记节点信息,更新共享资源列表;

步骤402:下载开始时,下载节点向索引节点查询可用资源节点;

步骤403:索引节点返回可用资源节点;

步骤404:下载节点向各个可用资源节点发起资源下载请求;

步骤405:资源节点检查资源可用性,确认下载请求;

步骤406:资源节点向下载节点发起建立tcp、udp线程池的请求,双方进行预连接;

步骤407:下载节点统计资源节点信息,初始化各项传输参数,确定首轮传输任务分发;

步骤408:下载节点向各个资源节点下发传输任务;

步骤409:资源节点向下载节点传输文件数据;

步骤410:具有最低综合丢包率的资源节点进行冗余数据编码;

步骤411:具有最低综合丢包率的资源节点同时传输冗余编码数据;

步骤412:下载节点对文件数据进行解包,解码,计算文件偏移,检查数据包是否丢失,若丢失,尝试使用冗余数据进行恢复,若恢复失败,则进行重传;

步骤413:将需要重传数据包的信息打包成tcp报文,传输给综合丢包率最低的资源节点请求重传;

步骤414:综合丢包率最低的资源节点进行数据重传;

步骤415:若仍然有数据丢失,则进行步骤412~414,直到所有数据均被正确接收;若所有数据均以完整收到,则统计这轮传输丢包率,然后计算下一轮的传输的下发任务和传输速度,重复步骤408~415,直到传输结束。

以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1