一种预测带宽的数据发送方法

文档序号:7563002阅读:171来源:国知局
专利名称:一种预测带宽的数据发送方法
技术领域
本发明涉及数据传输技术,尤其涉及一种预测带宽的数据发送方法。
背景技术
随着无线局域网技术的应用日渐普及,无线数据传输技术已经运用到许多领域,例如,投影机厂商纷纷将无线数据传输技术运用到投影机上,开发出无线投影机,极大的方便了用户的使用。
常见的无线网络协议有电气和电子工程师协会(IEEE)提出的IEEE802.11协议,以传输图像数据为例,目前比较流行的无线数据发送方法主要有以下两种现有技术一阻塞方式传送。阻塞方式传送的流程如图1中的步骤101到步骤104所示,在这种方案中,图像数据的获取和传送在同一个线程中处理完成。首先所述处理线程获取当前要发送的数据,再发送这些获取的数据,数据发送之后需要等待接收方的确认,由于不知道接收方给出确认的时间,程序会设置一个定长的延迟时间,直到接收方有确认时,才会继续获取数据。这种方案造成的缺点为该方法在发送数据时将线程阻塞住,即传送数据时不能获取数据,只有当数据传送完毕且收到确认后,才能继续获取数据,然后再发送新获取的数据,无法保证数据获取的连续性,效率很低,丢帧现象严重;另外,当程序每开始一次新的延迟等待时,如果有应答返回,这时线程还会继续等待至定长的时间,因此存在无谓的等待时间,效率不高。
现有技术二异步方式传送。异步传送方式有两个线程,包括获取数据线程和发送数据线程。图2所示为获取数据线程的流程图,如图2中步骤201到步骤205所示,在获取数据线程中,首先获取当前要发送的数据包,然后申请缓冲池,如果申请失败则再重新申请,如此反复申请,直到申请成功,将数据包的索引作为一个任务节点发送给发送队列;由于发送队列不能够无限长,否则会造成发送延迟严重,所以,如果当发送队列的任务节点数达到上限时,根据经验,一般发送队列的上限节点数为16,则再重新向发送队列发送该数据包的索引,如此反复发送,直到发送队列释放任务节点,将该数据包的索引加入到发送队列中,开始启动发送数据线程,由传输控制协议(TCP)完成发送任务。图3为发送数据线程的流程图,如图3所示,该流程包括以下步骤步骤301从发送队列中获取发送任务节点;步骤302从缓冲池中读取步骤301中获取任务节点所对应的数据包;步骤303发送步骤302中读取的数据包;步骤304释放步骤303中所述数据包所占缓冲池的空间;步骤305在发送队列中释放所述任务节点。
采用现有技术二所述的方法可以使得获取数据和发送数据不会相互阻塞,相对现有技术一来说提高了效率,但是,数据包在被发送之前会进入缓冲池,一般缓冲池的存储空间大小以能接收到最大数据包为标准,例如,在图像数据的发送中,由于图像数据一般最大为2兆(M),所以缓冲池大小一般为2M,如果缓冲池已经存满了数据包,则会申请失败,该数据包就需要等待,只有当缓冲池内的数据包被发送,缓冲池内腾出足够的空间时,新的图像数据包才能进入缓冲池。在现有技术二中,采用两个存储空间相同的缓冲池存储数据包,这种方案的缺点是当数据包的大小差异比较悬殊,而且连续有几个大数据包生成时,每个数据包会独自占据一个缓冲池。这时,新产生的数据包无论大小,都需要排队等候,而大数据包传送的时间比较长,这样就造成了较多的新数据包需要等待很长时间才能进入发送缓冲池。例如,在发送图像数据的技术中,设定两个缓冲池的大小都为2M,有一个下列大小的数据包队列100K,200K,200K,1.6M,1.5M,400K,100K...。首先,100K、200K,200K的数据包都会被分配到第一缓冲池中,然后1.6M的数据包会被分配到第二缓冲池中,然后1.5M的数据包进入第一缓冲池中,从而造成两个缓冲池很快饱和,之后的数据包无论大小都需要等待,而且需要等待很长的时间才能进入缓冲池,所以这种大小相等的双缓冲池机制方法造成了大量数据包需要排队等候,效率不高。
现有技术二中没有给出怎样获取等待时间的方法,因此,当缓冲池没有足够的空间时,需要反复申请缓冲池;或者当发送队列满时,需要反复向发送队列发送数据包索引,这样会耗费大量的处理器资源。
在无线网络中,由于无线信号非常不稳定,所以需要经常预测网络的实际带宽,在现有的底层协议中,有一种预测带宽并计算等待时间的方法,该带宽预测计算方法如公式(1)RTT=总发送时间/总字节数 (1)网络带宽可用环路时间(RTT,Round Trip Time)来表示,RTT为数据包从发送到收到接收方的应答所经历的时间,所述的总发送时间为设定的一段时间,所述的总字节数为在所述的总发送时间内发送的所有数据包的字节数之和,再利用公式(2)获得需等待的时间TT=sizeof(data)×RTT/2n (2)公式(2)中的sizeof(data)为发送队列中所有数据包的字节数之和,n为发送队列的节点数,RTT为根据上述公式(1)获得的RTT。
公式(1)中的RTT其实是网络的平均带宽,由于无线网络信号易受外界干扰,无线网络的带宽实时变化比较大,平均带宽往往不能反映当前的网络状况,所以这种计算方法往往不能正确预测当前带宽,从而不能准确地获得等待时间T,所以不能及时地将数据包送入缓冲池,效率不高,若数据包较大,则可能会造成后续数据包延迟严重,甚至发生丢帧错误。

发明内容
有鉴于此,本发明的主要目的是提供所一种预测带宽的数据发送方法,使得在数据的发送过程中,降低对处理器资源的耗费,并减少需等待的数据包的数量,缩短数据包的等待时间,从而提高数据发送的实时性和连续性,提高数据的发送效率。
为了实现上述目的,本发明的技术方案具体是这样实现的一种预测带宽的数据发送方法,包括获取数据线程和发送数据线程,其特征在于,在发送设备的内存中开辟空间大小不同的至少两块缓冲池,所述的获取数据线程包括以下步骤A、判断是否有数据包要发送,如果有,则获取一个要发送的数据包;否则,返回步骤A,继续判断;B、为所获取的数据包在第一缓冲池中申请空间,如果申请成功,则执行步骤F,否则,执行步骤C;C、为所获取的数据包在下一个缓冲池中申请空间,如果申请成功,则执行步骤F;否则,则执行步骤D;D、判断是否还有缓冲池,若有,则返回步骤C,若没有,则执行步骤E;E、获取等待时间,经过该等待时间后,返回步骤B;F、判断发送队列是否满,如果满,则执行步骤G;否则,执行步骤H;G、获取等待时间,经过该等待时间后,返回步骤F;H、将所获取的数据包自身的索引作为一个任务节点发送给发送队列,由发送数据线程完成数据包的发送,并返回步骤A。
所述缓冲池为两块大小不同的缓冲池,且大缓冲池空间大小为在数据发送过程中最大数据包的大小。
所述小缓冲池空间大小为大缓冲池空间大小的一半。
所述获取等待时间的方法为预测当前网络带宽,再根据T=sizeof(data)×RTTcur/2n计算等待时间,其中,T为等待时间,sizeof(data)为发送队列中所有数据包的字节数之和,n为发送队列的节点数,RTTcur为当前网络带宽。
所述的当前网络带宽为发送当前数据包时的网络带宽。
所述预测当前网络带宽的方法为根据RTTcur=α×RTTprev1+(1-α)×RTTprev2迭代获取当前网络带宽,其中,RTTprev1为发送上一个数据包时的网络带宽,RTTprev2为发送上上个数据包时的网络带宽,α为权重系数。
所述权重系数的取值范围介于0到1之间。
所述RTTcur的计算中,最初两个RTT的值为发送数据包所用的时间/该数据包的总字节数。
所述的发送数据线程利用传输控制协议TCP实现。
由于本发明所述的方法采用了空间大小不同的双缓冲池机制,可以有效地降低新的数据包进入缓冲池之前的等待时间,能够避免大数据包阻塞缓冲池的现象,使得大小数据包均可以及时进入发送缓冲池,合理的减少了排队等候的时间。另外,本发明所述方法利用动态预测带宽技术预测带宽并获取等待时间,从而避免对缓冲池的多次无谓的重复申请,降低对处理器资源的耗费,动态预测带宽技术比现有的带宽预测技术更科学、更合理,更能够反映当前网络的带宽,更准确地计算出当前的网络带宽,更及时地反映出当前的网络状况,并根据这个预测带宽值来获取准确的等待时间,然后及时的将数据包丢进发送缓冲池,这样就避免了无谓的等待时间,减少数据包传送的延迟以及降低丢帧的概率。综上所述,本发明所述的方法提高了在网络带宽不稳定以及数据大小差异比较大时数据发送的实时性和连续性,进一步提高了数据的发送效率。


图1为现有技术一所述无线数据发送方法的流程图;图2为现有技术二所述的获取数据线程的流程图;图3为现有技术二所述的发送数据线程的流程图;图4为本发明实施例所述获取数据线程的流程图。
具体实施例方式
下面结合附图和具体实施例对本发明再作进一步详细的说明。
本实施例中,以无线图像数据发送为例说明本发明所述的方法。本发明所述的方法采用双线程来完成无线数据的发送,包括获取数据线程和发送数据线程。在获取数据线程中,为了提高无线发送数据的效率,本发明所述的方法采用了大小不等的多缓冲池机制,即在内存中开辟多块大小不同的缓冲池。针对图像数据的特点,本实施例中,在发送设备内存中开辟两块缓冲池,第一缓冲池的空间大小是第二缓冲池空间大小的一半,第二缓冲池的空间大小为最大数据包的大小。本实施例中以发送图像数据为例,一般情况下,最大的图像数据包大小为大概为2M Byte。因此在本实施例中,第一缓冲池的空间大小为1M Byte,第二缓冲池的空间大小为2M Byte。
当获取当前要发送的数据包后,将为该数据包申请缓冲池,首先是在第一缓冲池内申请,如果第一缓冲池满或者没有足够的空间,则在第二缓冲池中申请,如果在第二缓冲池内也申请不到内存空间,则该数据包就需要等待。直到当前发送的数据包传送结束之后,该数据包占用的缓冲池将被释放,缓冲池才可能有足够的空间容纳新的数据包。采用大小不等的双缓冲池机制,能够有效的降低数据包的排队时间,当数据包的大小差异比较悬殊,而且连续有几个大数据包生成时,大的数据包在大的缓冲池中申请,小的数据包可在两个缓冲池中申请,这样就避免了两个缓冲池都被大数据包占据的情况,减少需要排队等待的数据包的数量,使得后续的小数据包可及时进入缓冲池,减少丢帧的概率。例如,有一下列大小的数据包队列100K,200K,200K,1.6M,1.5M,400K,100K...。首先,100K、200K,200K的数据包都会被分配到第一缓冲池中,然后1.6M的数据包会被分配到第二缓冲池中,这时1.5M的数据包就需要等待申请第二缓冲池,而1.5M数据包后面的400K以及100K数据包仍可以进入第一缓冲池,需要等待的数据包只有1.5M一个。所以,这种一大一小的双缓冲池设计机制有效地降低了新的数据包进入缓冲池之前的等待时间,能够避免大数据包阻塞缓冲池的现象,使得大小数据包均可以及时进入发送缓冲池,合理的减少了排队等候的时间。
当缓冲池没有足够的空间时,需要预测带宽并计算数据包需要等待的时间,当等待的时间结束后,立即重新申请缓冲池,及时地将数据包放入缓冲池中。为了解决现有技术中预测带宽技术存在的缺点,本发明所述的方法采用了动态预测带宽技术,预测带宽的计算方法如公式(3)RTTcur=α×RTTprev1+(1-α)×RTTprev2(3)公式(3)中,RTTcur为发送当前数据包时的RTT预测值,RTTprev1为发送上一个数据包时的RTT预测值,RTTprev2为发送上上个数据包时的RTT预测值,α为权重系数,α的取值范围介于0到1之间。所述的公式(3)根据上两次的网络流量来预测当前网络带宽,并运用统计学原理,选取合适的权重系数,使得预测结果非常贴近真实的网络带宽。所述的公式(3)是一个迭代的过程,发送头两个数据包时的RTT根据公式(4)来获得RTT=发送数据包所用的时间/该数据包的总字节数 (4)根据公式(4)可获得发送第一个数据包时的RTT,以及发送第二个数据包时的RTT,再根据公式(3)迭代获得后续发送每个数据包时的RTT。
预测出当前网络的带宽RTTcur后,依据该带宽获取等待时间T,即当前发送的数据包的传送时间,获取方法如公式(5)T=sizeof(data)×RTTcur/2n(5)上述公式(5)中的sizeof(data)为发送队列中所有数据包的字节数之和,n为发送队列的节点数,RTTcur为根据上述公式(3)获得发送当前数据包时的RTT。
本发明所述的动态预测带宽技术能够比较准确地计算出当前的网络带宽,及时地反映出当前的网络状况,并根据这个预测带宽值来获取准确的等待时间,然后及时的将数据包丢进发送缓冲池,避免了无谓的等待时间。
图4为本发明实施例所述获取数据线程的流程图,如图4所示,该流程包括以下步骤步骤401、判断是否有数据包要发送,如果有,则获取一个要发送的数据包作为当前要发送的数据包;否则,返回步骤401,继续判断;步骤402、为当前获取的数据包在第一缓冲池中申请空间,如果申请成功,则执行步骤406,否则,执行步骤403;步骤403、为当前获取的数据包在下一缓冲池中申请空间,如果申请成功,则执行步骤406;否则,则执行步骤404;如果有多块缓冲池,且在第二块缓冲池中没有申请成功空间,则在步骤403之后还要判断是否还有缓冲池,若有,则返回步骤403,若没有,则执行步骤404;步骤404、根据上述的公式(3)和公式(4)预测当前网络带宽RTTcur,并根据上述公式(5)获取等待时间T;步骤405、经过上述等待时间T后,返回步骤402;步骤406、判断发送队列是否满,如果发送队列满,则执行步骤407;否则,执行步骤409;步骤407、根据上述的公式(3)和公式(4)预测当前网络带宽RTTcur,并根据上述公式(5)获取等待时间T;步骤408、经过步骤407获得的等待时间T后,返回步骤406;步骤409、将所述的当前获取数据包的索引作为一个任务节点发送给发送队列,由发送数据线程完成发送,并返回步骤401;本线程返回步骤401后,继续获取新的图像数据包,并将其加入发送队列,这种周而复始地高效地分配数据包的方法,能够充分利用网络的带宽,并最大限度的减少数据包的等待时间,因此能获得很好的图像数据发送效果。
本发明的发送数据线程与现有技术二的发送数据线程相同,如图3所示,该线程包括以下步骤
步骤301从发送队列中获取发送任务节点;步骤302从缓冲池中读取步骤301中获取任务节点所对应的数据包;步骤303发送步骤302中读取的数据包;步骤304释放步骤303中所述数据包所占缓冲池的空间;步骤305在发送队列中释放所述任务节点。
以上所述,仅为本发明较佳的具体实施方式
,但本发明所述的方法还可适用于其他带宽不稳定的数据的发送方式,例如互联网(Internet)上数据的发送。本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
权利要求
1.一种预测带宽的数据发送方法,包括获取数据线程和发送数据线程,其特征在于,在发送设备的内存中开辟空间大小不同的至少两块缓冲池,所述的获取数据线程包括以下步骤A、判断是否有数据包要发送,如果有,则获取一个要发送的数据包;否则,返回步骤A,继续判断;B、为所获取的数据包在第一缓冲池中申请空间,如果申请成功,则执行步骤F,否则,执行步骤C;C、为所获取的数据包在下一个缓冲池中申请空间,如果申请成功,则执行步骤F;否则,则执行步骤D;D、判断是否还有缓冲池,若有,则返回步骤C,若没有,则执行步骤E;E、获取等待时间,经过该等待时间后,返回步骤B;F、判断发送队列是否满,如果满,则执行步骤G;否则,执行步骤H;G、获取等待时间,经过该等待时间后,返回步骤F;H、将所获取的数据包自身的索引作为一个任务节点发送给发送队列,由发送数据线程完成数据包的发送,并返回步骤A。
2.如权利要求1所述的方法,其特征在于,所述缓冲池为两块大小不同的缓冲池,且大缓冲池空间大小为在数据发送过程中最大数据包的大小。
3.如权利要求2所述的方法,其特征在于,所述小缓冲池空间大小为大缓冲池空间大小的一半。
4.如权利要求1所述的方法,其特征在于,所述获取等待时间的方法为预测当前网络带宽,再根据T=sizeof(data)×RTTcur/2n计算等待时间,其中,T为等待时间,sizeof(data)为发送队列中所有数据包的字节数之和,n为发送队列的节点数,RTTcur为当前网络带宽。
5.如权利要求4所述的方法,其特征在于,所述的当前网络带宽为发送当前数据包时的网络带宽。
6.如权利要求4所述的方法,其特征在于,所述预测当前网络带宽的方法为根据RTTcur=α×RTTprev1+(1-α)×RTTprev2迭代获取当前网络带宽,其中,RTTprev1为发送上一个数据包时的网络带宽,RTTprev2为发送上上个数据包时的网络带宽,α为权重系数。
7.如权利要求6所述的方法,其特征在于,所述权重系数的取值范围介于0到1之间。
8.如权利要求6所述的方法,其特征在于,所述RTTcur的计算中,最初两个RTT的值为发送数据包所用的时间/该数据包的总字节数。
9.如权利要求1所述的方法,其特征在于,所述的发送数据线程利用传输控制协议TCP实现。
全文摘要
本发明公开了一种预测带宽的数据发送方法,包括获取数据线程和发送数据线程,该方法在内存中开辟空间大小不同的多块缓冲池,获取数据线程首先获取当前要发送的数据包,为该数据包在第一缓冲池中申请空间,如果申请不成功,则为该数据包在第二缓冲池中申请空间,如果申请还不成功,则获取等待时间,经过该等待时间后,再重新申请缓冲池;如果申请成功,则判断发送队列是否满,如果发送队列满,则获取等待时间,经过该等待时间后,重新判断发送队列是否满,如果不满,则将所述的当前获取数据包的索引作为一个任务节点发送给发送队列,由发送数据线程完成数据包的发送。利用该方法可提高数据发送的实时性和连续性,提高数据的发送效率。
文档编号H04L12/56GK1630290SQ200310121859
公开日2005年6月22日 申请日期2003年12月19日 优先权日2003年12月19日
发明者颜毅强, 孙成昆, 赵牧, 赵俊先 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1