一种减少无线通信丢包率的方法和设备的制作方法

文档序号:8002298阅读:242来源:国知局
一种减少无线通信丢包率的方法和设备的制作方法
【专利摘要】本发明公开了一种减少无线通信丢包率的方法和设备,该方法步骤包括:a)发送程序将待发送的数据块送入发送队列,所述发送队列为发送程序所构建;b)发送程序从发送队列中取出数据块,并且把取出的数据块保存到发送缓冲区,所述发送缓冲区由发送程序所构建,并且由配置文件中的缓冲区大小参数所限定,配置文件为发送程序所构建;c)发送程序将所述发送缓冲区中的数据块合并成一个大数据包,并发送给接收程序;d)当大数据包发送失败的情况下,将发送缓冲区中的部分数据块丢弃,从发送队列中补充数据块,返回步骤c)。该设备包括:配置模块、生成模块和处理模块。采用本发明有效地提高了数据传输的可靠性,减少了数据的丢包率。
【专利说明】一种减少无线通信丢包率的方法和设备
【技术领域】
[0001]本发明涉及无线网络中的数据传输技术,尤其涉及一种减少无线通信丢包率的方法和设备。
【背景技术】
[0002]当前,无所不在的移动通信和无线网络技术正引领新的时代。与有线网络不同,由于受地理环境和电磁干扰等因素的影响,无线网络具有不稳定、不可靠的特性,在无线网络中传输数据会导致数据包的丢失;在一些异常复杂的恶劣气候环境下,数据包的丢包率会较大。通过无线网络进行通信的上层应用系统来自不同的领域,具有不同的用途。很多应用系统需要尽可能地降低数据包的丢包率。研究如何减少无线网络中的数据丢包率具有重要意义。
[0003]减少无线网络中的数据丢包率可以从两方面进行研究,一方面是目前比较普遍的研究方法,即从无线网络技术本身进行研究,研究的对象包括硬件网络设备、网络的数据链路层、TCP/UDP协议、数据路由方法、组播/广播等;另一方面可以从运行在无线网络之上的应用系统进行研究,这方面的研究相对较少。对于同一套无线网络而言,可以运行不同的应用系统,但不同的应用系统对于网络丢包率的要求不尽相同,例如军事应用系统明显要比其他应用系统的要求高。一个应用系统由多个程序组成,应用系统中的数据通信其实可以简化为两个程序之间的数据通信。

【发明内容】

[0004]本发明的目的是为了减少两个程序之间所要传输的数据包的丢包率,从而提高应用系统通过无线网络进行数据通信的可靠性。
[0005]为实现上述目的,一方面,本发明提供了一种减少无线通信丢包率的方法,该方法步骤包括:
[0006]a)发送程序将待发送的数据块送入发送队列,所述发送队列为发送程序所构建;
[0007]b)发送程序从发送队列中取出数据块,并且把取出的数据块保存到发送缓冲区,所述发送缓冲区由发送程序所构建,并且由配置文件中的缓冲区大小参数所限定,配置文件为发送程序所构建;
[0008]c)发送程序将所述发送缓冲区中的数据块合并成一个大数据包,并发送给接收程序;
[0009]d)当大数据包发送失败的情况下,将发送缓冲区中的部分数据块丢弃,从发送队列中补充数据块,返回步骤C)。
[0010]另一方面,本发明提供了一种减少无线通信丢包率的设备,该设备包括:
[0011]配置模块,用于构建参数配置文件,所述参数配置文件包括缓冲区大小;
[0012]生成模块,用于构建发送队列和发送缓冲区,所述发送缓冲区由所述缓冲区大小参数所限定;[0013]处理模块,用于将待发送的数据块送入发送队列;从发送队列中取出数据块,并且把取出的数据块保存到发送缓冲区;将所述发送缓冲区中的数据块合并成一个大数据包,并发送给接收程序;当大数据包发送失败的情况下,将发送缓冲区中的部分数据块丢弃,从发送队列中补充数据块后再重新发送。
[0014]本发明有效地提高了无线网络中数据传输的可靠性,减少了数据的丢包率。
【专利附图】

【附图说明】
[0015]图1示例了两个程序传输不同大小的数据包所花费的时间及效率比;
[0016]图2为本发明实施例提供的一种减少无线通信丢包率的方法流程图;
[0017]图3为图2第四步压缩、打包和发送数据的示例图;
[0018]图4为图2第四步压缩、打包和发送数据的流程图;
[0019]图5为本发明实施例提供的一种减少无线通信丢包率的设备结构框图。
【具体实施方式】
[0020]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0021]图1示例了两个程序传输不同大小的数据包所花费的时间及效率比。图1显示了两个测试程序,在千兆网上发送不同大小的数据包所花费的时间及效率之比。该示例不是用来限制本发明的范围。在图1(a)中,发送程序将长度为100和1000个字节的数据包发送到接收程序的时间分别为244.536和268.593微秒。如果将1000个字节的数据包拆成10个小包分别传输,每个小包含有100个字节,则10个小包需要花费244.536*10微秒,打成大包的效率比为244.536*10/268.593 = 9倍。图1 (b)显示了不同大小的数据包相对于100个字节的小包的传输效率比值;通常数据包越大,提高的效率也就越大。图1表明本发明实施例采用压缩和合并策略能够有效地提高数据传输的效率。
[0022]图2为本发明实施例提供的一种减少无线通信丢包率的方法流程图。如图2所示,该方法包括以下步骤:
[0023]第一步,当数据由发送程序通过无线网络传输给接收程序时,为发送程序构建参数配置文件。该文件包含3个变量:repeatTimes、bufferSize、timeout。这三个变量均为大于O的整数,其中:repeatTimes表示数据包发送失败时可重复发送的次数;bufferSize表示存放数据包的缓冲区的大小(字节数);timeout表示发送超时时间,如果发送程序在timeout时间内没有将数据发送到接收程序,则认为本次发送失败。
[0024]第二步,为发送程序构建发送队列,用来保存发给接收程序的数据块。发送程序在运行的过程中,将每次产生的要发给接收程序的数据块保存到发送队列的队尾。
[0025]第三步,为发送程序构建发送缓冲区。发送程序会将整个发送缓冲区中的数据作为一个大数据包发送给接收程序。参数文件中的bufferSize即指发送缓冲区的大小。
[0026]第四步,压缩、打包和发送数据。将发送队列中的数据块进行压缩,把压缩包保存到发送缓冲区;将发送缓冲区中的所有压缩包合并成一个大数据包,发送给接收程序。第四步的流程如下:
[0027]4.1如果程序执行完成,则转第五步;否则转4.2。
[0028]4.2令numOfSentTimes为I。numOfSentTimes为大于O的整数,表示发送次数。[0029]4.3压缩和打包
[0030]4.3.1如果发送队列中没有数据块,则转4.4,否则转4.3.2。
[0031]4.3.2计算bigPacketSize。bigPacketSize为整数,表示发送缓冲区中已有数据的长度(字节数)。
[0032]4.3.3构建压缩包。
[0033]4.3.3.1拷贝发送队列中的第一个数据块(队首元素)。
[0034]4.3.3.2采用一定的压缩算法对拷贝数据块进行压缩。本专利实施例对采用何种压缩算法没有特别要求,将数据块压缩后进行传输可以获得更高的传输效率。
[0035]4.3.3.3在压缩后的数据块前附加该数据块的长度,从而构成一个压缩包,所附加的长度占4个字节。因此,一个压缩包由压缩数据块长度与压缩数据块两部分组成。压缩包本身的长度用firstDataSize表示,f irstDataSize为大于O的整数,其值等于“压缩数据块的长度+4”。
[0036]4.3.4如果firstDataSize大于bufferSize,则表示发送缓冲区放不下一个压缩包,程序报错后转第五步;否则转4.3.5。
[0037]4.3.5 如果(firstDataSize+bigPacketSize) >bufferSize,则转 4.4 ;否则:
[0038]4.3.5.1bigPacketSize 赋值为 bigPacketSize+firstDataSize。
[0039]4.3.5.2将压缩包存放到发送缓冲区。如果已有其他压缩包,则紧挨着放到其他压缩包的后面。
[0040]4.3.5.3删除发送队列中的第一个数据块。
[0041]4.4如果发送缓冲区中没有压缩包,则转4.1 ;否则转4.5。
[0042]4.5发送数据包。
[0043]4.5.1将保存在发送缓冲区中的所有压缩包,作为一个大的数据包,其长度为bigPacketSize。通过调用系统函数将大数据包发送给接收程序。
[0044]4.5.2如果发送时间超过参数文件中的变量timeout,则认为数据发送失败,否则表示数据发送成功。
[0045]4.5.2.1数据发送失败。如果numOfSentTimes等于repeatTimes,则丢弃发送缓冲区中的第一个压缩包,转4.2 ;否则将numOfSentTimes加I后,转4.3重发。
[0046]4.5.2.2数据发送成功。删除发送缓冲区中的所有压缩包,转4.2。
[0047]第五步,结束。
[0048]本发明实施例可以达到以下技术效果:
[0049](I)效率高。采用本发明实施例后,一方面,通过对发送程序和接收程序之间需要传输的数据进行压缩,减少了网络之间传输的数据量;另一方面,将多个压缩包合并为一个大数据包进行传输,这种方式花费的时间要比单独发送每一个压缩包的时间少得多。图1对此进行了示例说明。
[0050](2)丢包率低。本发明实施例第4.5.1步提出每次发送数据时总是将整个缓冲区中的所有压缩包作为一个大数据包进行发送。其次,本发明实施例中的重发策略(4.5.2.1)不是简单地重复发送某一个固定的数据包。当一个大数据包发送失败时需要重发,但下次发送时缓冲区中可能又增加了新的压缩包,再次发送的大数据包已经不同于上次发送失败时的大数据包。当重复发送多次失败时则丢弃最前面的压缩包。本发明实施例使得在无线网络通信异常比较严重的情况下,一个压缩包发送的次数可能远大于参数文件中规定的repeatTimes值,从而有效地提高了数据传输的可靠性,减少了数据的丢包率。图3对此进行了示例说明。
[0051]图3为图2第四步压缩、打包和发送数据的示例图。该示例不是用来限制本发明的范围。在网络正常的情况下,当把多个压缩包打成一个大数据包后,发送程序只需要调用I次系统函数即可将大数据包发送到接收程序。图3是对网络丢包极为严重情况下的举例说明。在该图中,假设repeatTimes=2 ;bufferSize等于4个压缩包的字节数,即发送缓冲区或一个大数据包至多只含4个压缩包,每个压缩包的长度相同;num0fSentTimes是第4.2步定义的变量,取值区间为[1,repeatTimes],表示大数据包重复发送的次数。在该例中,记发送队列中的第i个数据块为Di,该数据块被压缩后成为压缩包Pi,记n (Pi)表示压缩包Pi已经被发送的次数。
[0052]在初始状态(O):发送程序在发送队列中产生了三个需要发送到接收程序的数据块:D1、D2、D3。
[0053]在状态⑴:numOfSentTimes为1,将D1、D2、D3分别压缩为P1、P2、P3,并依次存放到发送缓冲区。此时,大数据包还没有被发送,n (P1) =n (P2) =n (P3) =0。
[0054]在状态O=PpPyP3被作为一个大数据包发送。由于网络不正常,发送大数据包失败,n (P1) =n (P2) =n (P3) =1。此时发送程序又将数据块D4、D5存放到发送队列。
[0055]在状态(3) InumOfSentTimes为2,将D4压缩为P4后存放到发送缓冲区。因为发送缓冲区至多只能装下4个压缩包,所以D5仍在发送队列中。此时n(P1) =n(P2) =n(P3)=I,n (P4) =0。
[0056]在状态(4):由于网络不正常,发送由P1 P2、P3、P4构成的大数据包失败,n (P1) =n (P2) =n (P3) =2, η (P4) =1。由于 numOfSentTimes 等于 repeatTimes,所以发送缓冲区中的第I个压缩包P1被丢弃。发送缓冲区中还剩下压缩包p2、p3、p4。
[0057]在状态(5):numOfSentTimes为1,将D5压缩为P5后存放到发送缓冲区。此时n (P2) =n (P3) =2, n (P4) = 1, n (P5) =0。
[0058]在状态(6):由于网络不正常,发送由p2、p3、p4、p5构成的大数据包失败,n (P2) =n (P3) =3,n (P4) =2,n (P5) =1。此时发送程序又将数据块D6存放到发送队列。
[0059]在状态(7):numOfSentTimes为2,因为发送缓冲区至多只能装下4个压缩包,所以D6 仍在发送队列中。此时 n (P2) =n (P3) =3, n (P4) =2, n (P5) =1。
[0060]在状态⑶:由于网络不正常,发送大数据包失败,η(Ρ2)=η(Ρ3)=4,η(Ρ4)=3,n (P5) =2。由于numOfSentTimes等于repeatTimes,所以发送缓冲区中的第I个压缩包P2被丢弃。发送缓冲区中还剩下压缩包P3、P4、P5。
[0061]在状态(9) mumOfSentTimes为1,将D6压缩为P6后存放到发送缓冲区。此时n (P3) =4, n (P4) =3, n (P5) =2, n (P6) =0。
[0062]在状态(10):由于不稳定的网络瞬间恢复正常,由Ρ3、Ρ4、Ρ5、Ρ6构成的大数据包被成功发送到接收程序。此时,n (P3) =5, n (P4) =4, n (P5) =3, n (P6)=I。从 η (P3)、η (P4)、η (P5)的值可以看出,压缩包Ρ3、Ρ4、Ρ5分别被发送了 5次、4次、3次,它们都大于repeatTimes。
[0063]本发明实施例能够增加数据包发送的成功率,从而相应地减少数据包的丢包率。
[0064]图4为图2第四步压缩、打包和发送数据的流程图。具体步骤是:[0065]SI如果程序执行完成,则转S6。
[0066]S2num0fSentTimes 赋值为 I。
[0067]S3压缩和打包
[0068]S31如果发送队列中没有数据块,则转S4。
[0069]S32bigPacketSize赋值为发送缓冲区中已有数据的长度。
[0070]S33构建压缩包。
[0071]S331拷贝发送队列中的第一个数据块。
[0072]S332对拷贝数据块进行压缩。
[0073]S333创建压缩包,一个压缩包由压缩数据块长度与压缩数据块两部分组成,压缩数据块长度用一个4字节的整数表示。firstDataSize赋值为压缩包的长度。
[0074]S34 如果 f irstDataSize>bufferSize,则转 S36。
[0075]S35 如果(firstDataSize+bigPacketSize) >bufferSize,则表不发送缓冲区装不下新的压缩包,转S4;否则:
[0076]S351bigPacketSize 赋值为 bigPacketSize+firstDataSize。
[0077]S352将压缩包存放到发送缓冲区。如果已有其他压缩包,则紧挨着放到其他压缩包的后面。
[0078]S353删除发送队列中的第一个数据块。转S4。
[0079]S36程序报错,转S6。
[0080]S4如果发送缓冲区中没有压缩包,则转SI。
[0081]S5发送数据包。
[0082]S51将发送缓冲区中的所有压缩包,合并为一个大的数据包发送给接收程序。其长度为 bigPacketSize。
[0083]S52如果发送成功,则转S522 ;否则转S521。
[0084]S521 数据发送失败。如果 numOfSentTimes 等于 repeatTimes,则转 S5211,否则转 S5212。
[0085]S5211丢弃发送缓冲区中的第一个压缩包,转S2。
[0086]S5212num0fSentTimes 赋值为 numOfSentTimes+1,转 S3。
[0087]S522数据发送成功。删除发送缓冲区中的所有压缩包,转S2。
[0088]S6 结束。
[0089]图5为本发明实施例提供的一种减少无线通信丢包率的设备结构框图。如图5所不,该设备包括配置模块510、生成模块520和处理模块530。
[0090]配置模块510用于构建参数配置文件,参数配置文件包括缓冲区大小、数据包发送失败时可重复发送次数参数和发送超时参数。
[0091]生成模块520用于构建发送队列521和发送缓冲区522,发送缓冲区522由缓冲区大小参数所限定;
[0092]处理模块530用于将待发送的数据块送入发送队列521 ;从发送队列521中取出数据块,并且把取出的数据块保存到发送缓冲区522 ;将发送缓冲区中522中的数据块合并成一个大数据包,并发送给接收程序;当大数据包发送失败的情况下,将发送缓冲区522中的部分数据块丢弃,从发送队列中补充数据块后再重新发送。[0093]优选地,处理模块530根据数据包发送失败时可重复发送次数参数重复发送大数据包。
[0094]优选地,处理模块530根据发送超时参数规定的时间确定大数据包是否发送失败。
[0095]优选地,该设备还包括压缩模块(图中未示出),压缩模块用于将发送队列521中的数据块进行压缩,处理模块530把压缩包保存到发送缓冲区522中。
[0096]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种减少无线通信丢包率的方法,其特征在于: a)发送程序将待发送的数据块送入发送队列,所述发送队列为发送程序所构建; b)发送程序从发送队列中取出数据块,并且把取出的数据块保存到发送缓冲区,所述发送缓冲区由发送程序所构建,并且由配置文件中的缓冲区大小参数所限定,配置文件为发送程序所构建; c)发送程序将所述发送缓冲区中的数据块合并成一个大数据包,并发送给接收程序; d)当大数据包发送失败的情况下,将发送缓冲区中的部分数据块丢弃,从发送队列中补充数据块,返回步骤C)。
2.根据权利要求1所述的方法,其特征在于:所述发送程序从发送队列中取出数据块,并且把取出的数据块保存到发送缓冲区的步骤包括: 将发送队列中的数据块进行压缩,并把压缩包保存到发送缓冲区。
3.根据权利要求1所述的方法,其特征在于:所述配置文件包括数据包发送失败时可重复发送次数参数,所述发送程序将所述发送缓冲区中的数据块合并成一个大数据包,并发送给接收程序的步骤包括根据所述数据包发送失败时可重复发送次数参数重复发送所述大数据包。
4.根据权利要求1所述的方法,其特征在于:所述配置文件包括发送超时参数,所述发送程序将所述发送缓冲区中的数据块合并成一个大数据包,并发送给接收程序的步骤包括根据所述发送超时参数规定的时间确定所述大数据包是否发送失败。
5.一种减少无线通信丢包率的设备,其特征在于包括: 配置模块,用于构建参数配置文件,所述参数配置文件包括缓冲区大小; 生成模块,用于构建发送队列和发送缓冲区,所述发送缓冲区由所述缓冲区大小参数所限定; 处理模块,用于将待发送的数据块送入发送队列;从发送队列中取出数据块,并且把取出的数据块保存到发送缓冲区;将所述发送缓冲区中的数据块合并成一个大数据包,并发送给接收程序;当大数据包发送失败的情况下,将发送缓冲区中的部分数据块丢弃,从发送队列中补充数据块后再重新发送。
6.根据权利要求5所述的设备,其特征在于还包括: 压缩模块,用于将发送队列中的数据块进行压缩,所述处理模块把压缩包保存到所述发送缓冲区。
7.根据权利要求5所述的设备,其特征在于:所述配置模块还用于: 配置数据包发送失败时可重复发送次数参数,所述处理模块根据所述数据包发送失败时可重复发送次数参数重复发送所述大数据包。
8.根据权利要求5所述的设备,其特征在于:所述配置模块还用于: 配置发送超时参数,所述处理模块根据所述发送超时参数规定的时间确定所述大数据包是否发送失败。
【文档编号】H04L12/861GK103441826SQ201310294071
【公开日】2013年12月11日 申请日期:2013年7月12日 优先权日:2013年7月12日
【发明者】刘步权, 王怀民, 党岗, 鞠儒生, 朱敏, 彭绍亮, 左晓亮, 李猛 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1