一种在非实时系统上精确网络限速的方法

文档序号:7921099
专利名称:一种在非实时系统上精确网络限速的方法
技术领域
本发明涉及互联网通信技术领域,具体涉及一种在非实时系统上精确网络限速的方法。
背景技术
如今,互联网通信发展十分迅速,用户数和应用日益增长,网络流量也快速增加。 因此为保证准确地为用户分配带宽,为每个用户提供良好的上网体验,需要能够按设定的带宽精确地对用户进行限速。现有技术的网络限速方案采用按限速单位(如用户)统计流量,设定一个时间段能使用的流量额度。当统计的流量达到限额时则丢掉报文,等到下一个时间段有流量额度可用时,再继续发送报文。当在使用路由器等网络设备管理流量时,因为设备的实时性比较高,所以采用这种限速策略限速效果没有问题。但在很多应用场景里对流量的管理则是使用主机系统进行的,因为主机系统的实时性能比较差,使用select函数和usleep函数等唤醒机制的精度只能达到10ms,因此当在这种应用场景中采用上述策略实现的网络限速在较大时间粒度下(IOms)是均勻的,但是在更小的时间粒度内则会很不均勻。例如10ms内的流量份额,可能会在IOms内的前^is 报文就发完了,而后面剩余的8ms网络便会空闲,这就造成瞬间网络带宽占用很高问题。因此现有技术的限速方法在这种非实时系统中无法满足对网络带宽占用精度要求比较高的环境。本发明的目的就是解决非实时系统的网络数据发送精确限速的问题。

发明内容
本发明的目的在于,为解决现有技术的网络限速方法应用在非实时系统中并不能解决精确网络限速的问题,从而提供一种在非实时系统上精确网络限速的方法。为了实现上述目的,本发明提供一种在非实时系统上精确网络限速的方法,该方法用于处理非实时系统上的精确网络限速问题,所述方法为步骤1,用于创建一个检查线程的步骤。步骤2,用于利用所述检查线程检测非实时系统的时钟,为数据报文发送线程提供精确控制时钟的步骤。可选的,所述步骤1之前还包含如下步骤设置检查非实时系统时钟的时间间隔和报文发送速度,并创建一个信号量,该信号量用于触发报文发送线程发送数据。采用上述可选步骤后所述步骤2进一步包含如下子步骤启动检查线程,当所述检查线程检查到所述非实时系统的时钟到达所述时间间隔时,释放所述信号量。发送线程被唤醒,计算发送份额,发送报文;当发送数据份额用完后,再次等待信号量。
当检测到信号量时重复上述步骤,直至所有数据报文发送结束。其中,上述步骤所述采用信号量触发发送线程的策略可用采用网络通信方式加上系统时钟检查方式的策略替换;其中,所述网络通信方式加上系统时钟检查方式的策略为数据报文发送线程监听一个网络端口,当检查线程检查到所述非实时系统的时钟到达所述时间间隔时,向数据报文报文发送线程监听的端口发送一个报文,唤醒该线程,执行发送份额计算及发送报文。可选的,所述检查线程采用死循环的方式循环检查所述非实时系统的时钟;所述非实时系统设置有多颗CPU ;所述数据报文发送线程为多个。进一步优化的,当所述发送线程为多个时当检查线程发现所述非实时系统的时钟到达所述时间间隔值后逐个释放发送线程等待的信号量。可选的,所述检查线程和发送线程间通过IPC信号量机制同步。,所述发送线程根据所述报文发送速度和时间间隔计算每个时隙内应该发生的数据量。所述的份额为本次时间间隔内应该发送的数据量,所述时间间隔是指当前时间与上次发送数据时记录的时间的差值,其计算公式为份额=(带宽/8)/(1秒/时间间隔)。与现有技术相比,本发明由一个系统时钟检查线程为其它数据报文发送线程提供精确的时钟,精度可以达到微秒量级,其缺点是一颗CPU的占用率始终是100 %,不过目前的服务器配置的都是多颗多核CPU,使用该方法后,并不会影响应用服务的性能,因此占用一颗CPU而实现为其他多个报文发送线程提供精确的时钟是值得的。此外,本发明还通过系统信号量的方式唤醒数据发送线程,不会出现延时情况,可以保证数据发送速度控制的精确性。综上所述,本发明的优势在于由独立的定时线程提供定时服务,精度可以达到100 微秒,比现有技术精度提高100倍以上。可以保证限速更准确、均勻。


图1是本发明的非实时系统上精确网络限速的方法检查线程(即实施例的定时线程)流程示意图;图2是本发明的数据报文发送线程流程示意图。
具体实施例方式下面结合附图和具体的实施方式对本发明的内容进一步详细描述。为了保证精确、均勻地发送报文,本发明提供了在非实时系统上精确网络限速的方法,包括以下步骤步骤1,系统中有一个或多个线程处理数据报文发送(以下称发送线程),用一个系统时钟检查线程为发包线程提供精确的定时;检查线程和发送线程间通过IPC信号量机制同步。检查的时间间隔根据报文发送的精度要求预先设定(如500微秒)。步骤2,检查线程循环检查系统时钟,到设定时间间隔后,释放信号量;(因为一直循环运行,所以称做忙等方式)。步骤3,发送线程在有可用流量份额时,循环发送报文,发送份额用光后,等待信号量。
步骤4,检查线程释放信号量后,发送线程被唤醒,根据当前系统时间重新计算发送份额,发送报文。所述的步骤⑵具体为定时线程循环检测系统时钟,当发现系统时钟到达预先设定时间间隔值后逐个释放发包线程等待的信号量。所述的步骤(4)具体为发包线程被唤醒后,按预先设定的带宽和已经流逝时间计算本次数据发送可用份额,按计算的份额量发送报文。所谓的流逝时间是指当前时间与上次发送数据时记录的时间的差值。发送份额计算公式为份额=(带宽/8)/(1秒/时间间隔)。本发明技术方案的实施具体步骤如下实施例1如图1所示,具体描述如下。步骤101,提供数据下载服务的缓存系统,对每个连接限制带宽10M。步骤102,系统为每个连接建立报文发送线程(以下称发送线程)发送用户下载的内容,用一个系统时钟检查线程为发包线程提供精确的定时(以下称定时线程);定时(检查)线程和发包线程间通过网络通信方式进行同步,每个发送线程监听一个网络端口。定时的时间间隔根据报文发送的精度要求预先设定(本实例为2毫秒)。步骤103,定时线程,线程循环检查系统时钟,每到1毫秒,设置下次超时时标,同时向发送线程发送一个网络报文。步骤104,发包线程计算本次时间间隔内应该发送的数据量,循环发送报文,然后从IOM额度中减去本次已经发送的数据量,当本次应发送的份额用完后,等待接收网络端口上的数据。其中,所述的份额为本次时间间隔内应该发送的数据量,这里的时间间隔是指当前时间与上次发送数据时记录的时间的差值。其计算公式为份额=(带宽/8)/(1秒/时间间隔)。例如带宽为10Mbps,距离上次发送数据的时间间隔为500微秒,那么本次时间间隔内发送的份额为(10*1024*1024/8)/(1000000/500) = 655字节。当剩余数据不足655 字节时,按照实际字节数发送。步骤105,定时线程释放发送网络报文后,发包线程接收到数据被唤醒,根据当前系统时间重新计算本次应发送的数据份额,然后执行数据发送。实施例2:采用本发明的技术方案并采用信号量触发发送流程的步骤如下步骤201,HFC加速系统,从有线网络向用户下推数据,对IPQAM限制下行带宽38M ; 步骤202,系统为每个IPQAM建立线程通过IPQAM向用户下推数据(以下称发包线程)。用一个系统时钟检查线程为发包线程提供精确的定时(以下称定时线程);定时线程和发包线程间通过IPC信号量机制同步。定时的时间间隔根据报文发送的精度要求预先设定(本实例为500微秒)。步骤203,定时线程,线程循环检查系统时钟,每到500微秒,设置下次超时时标, 同时释放信号量。步骤204,发包线程每个时隙应该发送的数据量,循环发送报文,然后从38M额度中减去本次发包数据量,当本次应发送份额用完后,等待信号量。步骤205,定时线程释放信号量后,发包线程被唤醒,根据当前系统时间重新计算本次应发送的数据份额,执行报文发送。其中,所述的份额为本次时间间隔内应该发送的数据量,这里的时间间隔是指当前时间与上次发送数据时记录的时间的差值。其计算公式为份额=(带宽/8)/(1秒/时间间隔)。例如带宽为10Mbps,距离上次发送数据的时间间隔为500微秒,那么本次时间间隔内发送的份额为(10*1024*1024/8)/(1000000/500) =655字节。当剩余数据不足655字节时,按照实际字节数发送。上述两个实施例所述的发包线程执行报文发送的详细流程如图2所示,当发送线程计算本次发送份额后,根据情况判断是否可以发送数据。当判断条件成立时,按照计算的份额发送数据;当判断条件不成立时,记录本次计算的份额,并继续等待唤醒,在下次被唤醒后,如果满足发送条件,将当前份额与上次份额累加后一起发送。本发明的在非实时系统上精确网络限速的方法,也可以用在其它需要精确定时的环境。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种在非实时系统上精确网络限速的方法,该方法用于处理非实时系统上的精确网络限速问题,所述方法为步骤1,用于创建一个检查线程的步骤;步骤2,用于利用所述检查线程检测非实时系统的时钟,为数据报文发送线程提供精确控制时钟的步骤。
2.根据权利要求1所述的在非实时系统上精确网络限速的方法,其特征在于,所述步骤1之前还包含如下步骤设置检查非实时系统时钟的时间间隔和报文发送速度,并创建一个信号量,该信号量用于触发报文发送线程发送数据。
3.根据权利要求2所述的在非实时系统上精确网络限速的方法,其特征在于,所述步骤2进一步包含如下子步骤启动检查线程,当所述检查线程检查到所述非实时系统的时钟到达所述时间间隔时, 释放所述信号量;发送线程被唤醒,计算发送份额,发送报文;当发送数据份额用完后,再次等待信号量;当检测到信号量时重复上述步骤,直至所有数据报文发送结束。
4.根据权利要求3所述的在非实时系统上精确网络限速的方法,其特征在于,所述采用信号量触发发送线程的策略可用采用网络通信方式加上系统时钟检查方式的策略替换;其中,所述网络通信方式加上系统时钟检查方式的策略为数据报文发送线程监听一个网络端口,当检查线程检查到所述非实时系统的时钟到达所述时间间隔时,向数据报文报文发送线程监听的端口发送一个报文,唤醒该线程,执行发送份额计算及发送报文。
5.根据权利要求3所述的在非实时系统上精确网络限速的方法,其特征在于,所述检查线程采用死循环的方式循环检查所述非实时系统的时钟。
6.根据权利要求1或3所述的在非实时系统上精确网络限速的方法,其特征在于,所述非实时系统设置有多颗CPU ;所述发送线程为多个。
7.根据权利要求6所述的在非实时系统上精确网络限速的方法,其特征在于,所述发送线程为多个时当检查线程发现所述非实时系统的时钟到达所述时间间隔值后逐个释放发送线程等待的信号量。
8.根据权利要求2或3所述的在非实时系统上精确网络限速的方法,其特征在于,所述检查线程和发送线程间通过IPC信号量机制同步;所述的时间间隔根据报文发送的精度要求进行设定。
9.根据权利要求3所述的在非实时系统上精确网络限速的方法,其特征在于,所述发送线程根据所述报文发送速度和时间间隔计算每个时隙内应该发生的数据量。
10.根据权利要求3所述的在非实时系统上精确网络限速的方法,其特征在于,所述的份额为本次时间间隔内应该发送的数据量,所述时间间隔是指当前时间与上次发送数据时记录的时间的差值,其计算公式为份额=(带宽/8)/(1秒/时间间隔)。
全文摘要
本发明提供了一种在非实时系统上精确网络限速的方法,用于处理非实时系统上的精确网络限速,所述方法为步骤1,创建一个检查线程;步骤2,利用所述检查线程检测非实时系统的时钟,为数据报文发送线程提供精确控制时钟。所述步骤1之前还包含如下步骤设置检查非实时系统时钟的时间间隔和报文发送速度,并创建一个信号量,该信号量用于触发报文发送线程发送数据。所述步骤2为启动检查线程,当所述检查线程检查到所述非实时系统的时钟到达所述时间间隔时,释放所述信号量;发送线程被唤醒,计算发送份额,发送报文;当发送数据份额用完后,再次等待信号量;当检测到信号量时重复上述步骤。本发明的网速控制精度可以达到100微秒。
文档编号H04L12/56GK102368729SQ20111028699
公开日2012年3月7日 申请日期2011年9月23日 优先权日2011年9月23日
发明者王超峰, 陈海涛 申请人:北京东方网信科技股份有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1