多播封包的发送速度控制方法

文档序号:7762884阅读:576来源:国知局
专利名称:多播封包的发送速度控制方法
技术领域
本发明关于一种多播封包的发送速度控制方法,特别是一种高精密度的多播封包的发送速度控制方法。
背景技术
在与网络封包的发送技术相关的领域中,对发送速度进行控制是一个重要的议题。网络数据发送速度的计算方式是数据发送量与发送时间的比值。目前,微软 (Microsoft)的窗口(Windows)系统使用延时(Sle印)函数控制网络封包的发送速度。延时函数就是在延时过程中不占用系统资源,但是它的精度太低,大约仅能精确到毫秒级。且实际执行延时函数时的误差一般会达到10毫秒,因此不适用于需要高速且稳定的发送速度的应用。而窗口系统亦提供了一种精度能与机器时钟同步计数器,其能精确到纳秒(ns) 级。但是利用此计数器进行延迟的方法需要系统频繁计数并确认延时时间是否到达,而严重占用中央处理器(central processor unit, CPU)资源,进而影响其它软件及系统的运行。也就是说,在传统上发送多播(multi-cast)等网络封包的发送速度控制中,具有延时精度过低而容易引起发送速度的波动的问题,或是具有需要极度耗费CPU资源的缺
点O

发明内容
为了解决上述问题,在此提供一种多播封包(multi-cast package)的发送速度控制方法,其用于令一网络卡(network interface card,NIC)以一目标速度发送多个多播封包。多播封包的发送速度控制方法包括依据多播封包的大小以及目标速度计算一标准时间,并记录一累计误差时间;发送多播封包之一,并计算发送的多播封包的一发送时间;计算标准时间与发送时间的差值,将标准时间与发送时间的差值记录为一本次误差时间,将累计误差时间与本次误差时间合计,并将合计结果记录一预定休眠时间;当预定休眠时间大于一误差门坎值时,执行以下步骤休眠预定休眠时间;自休眠中被唤醒,并计算一实际休眠时间;以及计算得到新的累计误差时间为预定休眠时间减实际休眠时间;以及回到上述依据多播封包的大小以及目标速度计算标准时间,并记录累计误差时间的步骤,以发送下一个多播封包。其中在依据多播封包的大小以及目标速度计算一标准时间,并记录一累计误差时间的步骤之中,另可包括建立一累计发送时间。而在发送多播封包之一,并计算发送的多播封包的一发送时间的步骤之前,多播封包的处理方法另可包括计算一累计发送时间; 以及当累计发送时间大于一累计时间门坎值时,将累计误差时间以及累计发送时间重设为 O0根据一实施范例,多播封包的发送速度控制方法另可包括当预定休眠时间不大于一误差门坎值时,将预定休眠时间作为新的累计误差时间。其中发送时间可以是将发送的多播封包发送前后的一系统时间相减得到。此外,上述的累计时间门坎值可以是1秒(s)。误差门坎值可以是1毫秒(ms)。实际休眠时间可以是大于10毫秒。综上所述,多播封包的发送速度控制方法利用原本为低精度的延时函数,但实现高精度组播控速。透过实时将累积误差时间回馈给延时函数,并定时将其清空的技术,多播封包的发送速度控制方法能够保证网络数据传输的高效稳定又不占用过多的中央处理器 (central processor unit, CPU)资源。


图1为一实施范例的多播封包的发送速度控制方法的流程图;图2为另一实施范例的多播封包的发送速度控制方法的部分流程图;图3为一实施范例的发送速度的曲线图。其中,附图标记20发送速度曲线
具体实施例方式以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域的技术人员了解本发明的技术内容并据以实施,且根据本说明书所公开的内容、权利要求保护范围及附图,任何本领域的技术人员可轻易地理解本发明相关的目的及优点。本发明关于一种多播封包(multi-cast package)的发送速度控制方法,其用于令一网络卡(network interface card, NIC)以一目标速度发送多个多播封包。请参照图1,为一实施范例的多播封包的发送速度控制方法的流程图。多播封包的发送速度控制方法首先依据要传送的多播封包的大小以及目标速度计算一标准时间,并记录一累计误差时间(步骤S110)。其中标准时间为多播封包的大小除以目标速度的商数。接着另网络卡实际以目标速度发送一个多播封包,并计算发送的多播封包的一发送时间(步骤S120)。发送时间可以是将发送的多播封包发送前后的一系统时间相减得到。更详细地说,可以在发送多播封包前后读取包括此网络卡的计算器所维护的系统时间,再将发送前后的时间相减便能得到实际发送此多播封包所花费的发送时间。接着计算标准时间与发送时间的差值,将标准时间与发送时间的差值记录为本次误差时间;将累计误差时间与本次误差时间合计,并将合计结果记录一预定休眠时间(步骤S130)。也就是说,在步骤S130中将累计误差时间回馈至预定休眠时间,以更灵敏地反应及调整发送速度。得到预定休眠时间后,判断预定休眠时间是否大于一误差门坎值(步骤S140)。根据一实施范例,误差门坎值可以是1毫秒(ms)。误差门坎值能够确实地掌握发送速度的控制的精准度,可依实际发送多播封包的需要设定,在此并不对其做限制。当预定休眠时间大于误差门坎值时,令网络卡休眠一预定休眠时间,其中预定休眠时间为累计误差时间加上本次误差时间的和(步骤S160)。步骤S160中可透过例如窗口(Windows)系统的延时(Sle印)函数等应用程序接口(application program interface, API)实作。相对的,当预定休眠时间不大于误差门坎值时,则可将预定休眠时间作为新的累计误差时间(步骤S150)。由步骤S150以及S160可以见悉,多播封包的发送速度控制方法将每次延时产生的本次误差时间进行保留,而不是丢弃。本次误差时间并实时回馈至下一次的延时控制中, 而能够动态补偿误差,从而减小延时误差以及提高控制精度。此外,由于利用这种误差补偿机制,即使缩小测量时间产生的误差也可以得到有效补偿。网络卡休眠了预定休眠时间之后自休眠中被唤醒,并计算实际休眠时间(步骤 S170)。类似地,亦可将网络卡休眠前后的系统时间相减,以得到实际休眠时间。由于Sle印函数的可测精度大于10毫秒,因此一般而言实际休眠时间均会大于10毫秒。多播封包的发送速度控制方法接着计算预定休眠时间减去实际休眠时间的差值, 并将预定休眠时间减去实际休眠时间的差值作为新的累计误差时间(步骤S180)。且每传送一个多播封包后都会判断是否已将全部的多播封包发送完成(步骤S190)。若是,则可结束控制。若否,则回到步骤SllO以发送下一个多播封包。须注意的是,上述的“误差门坎值”、“实际休眠时间”以及“累计时间门坎值”所举例的数值都可依实际发送多播封包的需要设定,在此并不对其做限制。透过调整这些数值, 可以设定动态误差补偿的范围,以及多快可以恢复到目标设定速度等。请参考图2,为另一实施范例的多播封包的发送速度控制方法的部分流程图。于本实施范例中,在步骤SllO亦可同时建立一累计发送时间。且在实际发送多播封包(步骤 S120)之前可执行下述用以重置累计误差时间。在每次发送多播封包之前,先计算累计发送时间(步骤S210);也就是计算累计发送时间被建立或是被重置为0到目前已过了多久的时间。接着判断发送时间是否大于一累计时间门坎值(步骤S220);当大于累计时间门坎值时,将累计误差时间以及累计发送时间重设为0 (步骤S230)。根据一实施范例,累积误差门坎值可以是1秒(S)。累积误差门坎值亦可依实际发送多播封包的需要设定,在此并不对其做限制。由于每隔一段时间便将累积误差时间重置为0,故能够保证累积误差时间在一小段时间内进行动态误差补偿。请参照图3,为一实施范例的发送速度的曲线图。由图3的一发送速度曲线20可以见悉,网络卡刚开始启动时尚在进行环境的配置等动作而无法快速传送多播封包。但随后为了将累积的多播封包实时传出,变成完全不需执行延时函数,能传多快就传多快而达到网络卡的发送速度上限。但为了调整过快的发送速度,多播封包的发送速度控制方法透过累积误差时间迅速地将发送速度回复到目标速度。综上所述,多播封包的发送速度控制方法实时将累积误差时间回馈给延时函数, 并定时将其清空。因此多播封包的发送速度控制方法能够保证网络数据传输的高效稳定又不占用过多的中央处理器(central processor unit,CPU)资源。换句话说,多播封包的发送速度控制方法能够同时达到低资源利用率以及高精度控制的效果。更进一步地,本方法能包括此网络卡的多播服务器的压力,而保证多播数据能高速稳定传输,并减少了网络数据传输出错的可能性。以上较佳具体实施范例,是用于更加清楚的描述本发明的特征与精神,并非以上述公开的较佳具体实施范例对本发明的范畴加以限制。相反地,各种改变及具相等性的变形方案皆涵盖于本发明的专利保护范围内。
权利要求
1.一种多播封包的发送速度控制方法,用于令一网络卡以一目标速度发送多个多播封包,其特征在于,该多播封包的发送速度控制方法包括依据该些多播封包的大小以及该目标速度计算一标准时间,并记录一累计误差时间; 发送该些多播封包之一,并计算该发送的多播封包的一发送时间; 计算该标准时间与该发送时间的差值,将该标准时间与该发送时间的差值记录为一本次误差时间,将该累计误差时间与该本次误差时间合计,并将合计结果记录一预定休眠时间;当该预定休眠时间大于一误差门坎值时,执行以下步骤 休眠该预定休眠时间;自休眠中被唤醒,并计算一实际休眠时间;以及计算该预定休眠时间减去该实际休眠时间的差值,并将该预定休眠时间减去该实际休眠时间的差值作为新的该累计误差时间;以及回到上述依据该些多播封包的大小以及该目标速度计算一标准时间,并记录一累计误差时间的步骤,以发送下一个该多播封包。
2.如权利要求1所述的多播封包的发送速度控制方法,其特征在于,在该依据该些多播封包的大小以及该目标速度计算一标准时间,并记录一累计误差时间的步骤之中,还包括建立一累计发送时间;而在该发送该些多播封包之一,并计算该发送的多播封包的一发送时间的步骤之前,该多播封包的处理方法还包括计算该累计发送时间;以及当该累计发送时间大于一累计时间门坎值时,将该累计误差时间以及该累计发送时间重设为0。
3.如权利要求2所述的多播封包的发送速度控制方法,其特征在于,该累计时间门坎值为1秒。
4.如权利要求1所述的多播封包的发送速度控制方法,其特征在于,该误差门坎值为1毫秒。
5.如权利要求1所述的多播封包的发送速度控制方法,其特征在于,另包括当该预定休眠时间不大于该误差门坎值时,将该预定休眠时间作为新的该累计误差时间。
6.如权利要求1所述的多播封包的发送速度控制方法,其特征在于,该发送时间为将该发送的多播封包发送前后的一系统时间相减得到。
7.如权利要求1所述的多播封包的发送速度控制方法,其特征在于,该实际休眠时间大于10毫秒。
全文摘要
本发明公开了一种多播封包的发送速度控制方法,包括计算标准时间,并记录累计误差时间;发送多播封包,并计算发送的多播封包的发送时间;计算标准时间与发送时间的差值,将差值记录为本次误差时间,将累计误差时间与本次误差时间合计,并将合计结果记录预定休眠时间;当预定休眠时间大于误差门坎值时,执行以下步骤休眠预定休眠时间;自休眠中被唤醒,并计算实际休眠时间;以及计算得到新的累计误差时间为预定休眠时间减实际休眠时间;以及回到最初的步骤,以发送下一个多播封包。
文档编号H04L12/56GK102457424SQ20101051653
公开日2012年5月16日 申请日期2010年10月19日 优先权日2010年10月19日
发明者李连成, 陈志丰 申请人:英业达股份有限公司, 英业达集团(天津)电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1