限速方法及装置与流程

文档序号:13168856阅读:251来源:国知局
限速方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种限速方法及装置。



背景技术:

在互联网领域,限流技术被用作控制网络接口收发通信数据的速率,可以用来优化性能,减少延迟和提高带宽等。

令牌桶算法是网络流量整形(trafficshaping)和速率限制(ratelimiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。但是传统的令牌桶算法针对小流量的限制存在一定的偏差,如:

假设系统主频为200mhz,速率填充周期设置为1000(1000为典型值,1000个时钟填充一次令牌),每个填充周期填充1个令牌(一个令牌等于一个字节),那么总带宽为:[(200×106)/1000]×8=1600kbps

此时,针对限速颗粒度为1600kbps时,限速才准确,但是对于很多业务要求最小颗粒度达到64kbps甚至更小的限速要求时,这种限速显然是不能达到限速要求的。相关技术中针对这种对限速精度要求很高的问题,主要有如下两种解决方法:一种是缩小填充周期,另一种是降低填充速率。

针对相关技术中如何达到高限速精度要求的问题,目前还没有有效的解决方案。



技术实现要素:

本发明实施例提供了一种限速方法及装置,以至少解决相关技术中如何达到高限速精度要求的问题。

根据本发明的一个实施例,提供了一种限速方法,包括:检测经过令牌桶的数据包长度,其中,所述令牌桶中的令牌数包括小数部分和整数部分;在确定所述数据包长度小于预设令牌数时,所述数据包通过检验。

可选地,所述方法还包括:按照预定周期向所述令牌桶中填充指定数量的令牌,并将所述令牌桶中的剩余令牌数更新为以下数目:所述预设令牌数与所述指定数量的和值,其中,所述指定数量的令牌包括小数部分和整数部分。

可选地,所述方法还包括:在所述剩余令牌数大于所述令牌桶的容量时,将所述令牌桶的中的剩余令牌数更新为以下数目:所述令牌桶的容量。

可选地,所述数据包通过检验之后,所述方法还包括:将所述令牌桶中的剩余令牌数更新为以下数目:所述预设令牌数与所述数据包长度的差值。

可选地,在检测经过令牌桶的数据包长度之后,所述方法还包括:在所述数据包长度大于所述令牌桶中的令牌数时,将所述数据包丢弃。

根据本发明的另一个实施例,提供了一种限速装置,包括:检测模块,用于检测经过令牌桶的数据包长度,其中,所述令牌桶中的令牌数包括小数部分和整数部分;确定模块,用于在确定所述数据包长度小于预设令牌数时,所述数据包通过检验。

可选地,所述确定模块还用于按照预定周期向所述令牌桶中填充指定数量的令牌,并将所述令牌桶中的剩余令牌数更新为以下数目:所述预设令牌数与所述指定数量的和值,其中,所述指定数量的令牌包括小数部分和整数部分。可选地,在所述剩余令牌数大于所述令牌桶的容量时,将所述令牌桶的中的剩余令牌数更新为以下数目:所述令牌桶的容量。

可选地,所述数据包通过检验之后,将所述令牌桶中的剩余令牌数更新为以下数目:所述预设令牌数与所述数据包长度的差值。

可选地,,在检测经过令牌桶的数据包长度之后,所述确定模块还用于在所述数据包长度大于所述令牌桶中的令牌数时,将所述数据包丢弃。

根据本发明的又一个实施例,还提供了一种存储介质。所述存储介质设置为存储用于执行以下步骤的程序代码:检测经过令牌桶的数据包长度,其中,所述令牌桶中的令牌数包括小数部分和整数部分;在确定所述数据包长度小于预设令牌数时,所述数据包通过检验。

通过本发明,使用本申请文件中的令牌桶对数据包进行限速,本申请文件记载的令牌桶中的令牌数包括小数部分和整数部分,使用存在小数部分的令牌桶对数据包可以进行精度更高的限速,解决了相关技术中如何达到高限速精度的问题,大幅提高了令牌桶限速的精度。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种限速方法的流程图;

图2是根据本发明可选实施例的令牌桶限速原理图;

图3是根据本发明可选实施例中的令牌桶令牌填充示意图;

图4是根据本发明可选实施例的填充速率计量方法一的示意图;

图5是根据本发明可选实施例的填充速率计量方法二的示意图;

图6是根据本发明实施例的一种限速装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

令牌桶是一种常用的流量控制技术。令牌桶本身没有丢弃和优先级策略,令牌桶算法是网络流量整形和速率限制中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。

在上述实施例中记载的令牌桶的容量即相关技术中的令牌桶深度,单位为bit,抽象的意义类似于水桶的深度。

实施例1

本申请的实施例应用于无源光纤网络(passiveopticalnetwork,简称为pon)网络。需要说明的是,本申请文件记载的技术方案可以应用于上述场景但不局限于上述场景。

在本实施例中提供了一种运行于上述网络架构的一种限速方法,图1是根据本发明实施例的一种限速方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,检测经过令牌桶的数据包长度,其中,该令牌桶中的令牌数包括小数部分和整数部分;

步骤s104,在确定该数据包长度小于预设令牌数时,该数据包通过检验。

通过上述步骤,采用带有小数部分的令牌数对经过令牌桶的数据包进行限速,解决了相关技术中使用令牌桶限速精度低的问题,大幅提高了令牌桶限速的精度。

在上述可选实施例对通过令牌桶的数据包限速之后,将该令牌桶中的剩余令牌数更新为以下数目:该预设令牌数与该数据包长度的差值。令牌桶的剩余令牌数在令牌桶检验过数据包之后,需要补充令牌数,在本发明的一个可选实施例中,按照预定周期向该令牌桶中填充指定数量的令牌,并将该令牌桶中的剩余令牌数更新为以下数目:该预设令牌数与该指定数量的和值,其中,该指定数量的令牌包括小数部分和整数部分。在向令牌桶补充令牌数时补充的就是带小数部分的令牌数。可选地,在该剩余令牌数大于该令牌桶的容量时,将该令牌桶的中的剩余令牌数更新为以下数目:该令牌桶的容量。令牌桶的容量即相关技术中令牌桶深度,表示令牌桶中最大存储的令牌数目,类似水桶的容量表示的含义。

可选地,数据包长度小于令牌数目,该数据包通过检验,如果数据包长度大于令牌数,将该数据包进行限速,将该数据包丢失。

在本发明的一个可选实施例中,在系统主频为200mhz及填充周期1000(1000为典型值,1000个时钟填充一次令牌)固定不变的情况下,通过修改填充速率来提高限速准确度。

在相关技术中,令牌桶算法都是以一个字节作为最小计算单元,填充速率是以字节为单位进行令牌填充,为了达到更小的颗粒度,通常都是通过增大或者缩小填充周期来达到精度要求,如为了达到64kbps的颗粒度要求,将填充周期设置为(主频200×106)/(64×103/8)=25000(表示25000个时钟填充一次令牌),但当限速达到20mbps时甚至更高时,每个周期填充(20×106×25000)/[(200×106)×8]=312字节,这种填充方式由于填充周期过长,对小字节数据包造成波动性丢包。

本发明的一个可选实施例,为了让数据包平滑的通过,同时考虑到1gpon光网络最大速率(1g以太无源光网络(ethernet-pon,简称为epon)上下行共2gbps速率,1g无源光接入系统(gigabit-capable,简称为pon),简称为gpon)上下行共3.75gbps速率),保留了较小的填充周期,将填充周期令牌单位精确到1/n个令牌进行填充,即每次填充可以精确到1/8、1/16、1/32,甚至更小的令牌单位进行填充。

如对于相关技术中大部分gpon光网络最高限速要求为3.75g(上行1.25g,下行2.5g共用一个令牌桶)而言,填充速率要求为:

(3.75×109)/([(200×106)/1000]×8)=2343.75字节,整数部分2343只占11个bit位。所以对于32位操作系统,如果令牌的小数部分用8个bit表示,整数部分用24bit表示,已经可以达到最大限速要求。

而对8bit小数部分,最小颗粒度可以达到6.25kbps,计算如下::1600/256=6.25kbps,1600在本申请文件背景技术中有记载,(是在填充周期为1000,每个填充周期填充一个令牌的情况下算出的总带宽),对于本发明的实施例中有8bit的小数部分,即每个填充周期可以填充1/256个令牌。

图2是根据本发明可选实施例的令牌桶限速原理图,如图2所示,令牌限速桶中包含一个能自动填充令牌的令牌桶,该令牌桶由限速填充令牌存储器,令牌桶容量存储器,剩余令牌存储器组成。

当数据包经过限速令牌桶时,先比较数据包长度(以字节为单位)是否大于剩余令牌桶中令牌数,如果数据包长度大于令牌数,则将该数据包丢弃,以此达到限速效果;如果数据包长度小于剩余令牌数,则数据包通过,此时将剩余令牌桶中的剩余令牌数减去数据包长度得到新的剩余令牌数。

图3是根据本发明可选实施例中的令牌桶令牌填充示意图,如图3所示,限速令牌桶的填充:按固定周期填充,比如填充周期为1000,则每1000个时钟周期为令牌桶填充一次令牌,最后将填充的令牌数加上剩余令牌桶中的令牌数作为新的剩余令牌数。

需要强调的是,在本申请文件中令牌桶中剩余令牌数和填充速率都是带小数位的,低8位为小数位。

图4是根据本发明可选实施例的填充速率计量方法一的示意图,如图4所示,假设当前达到最小限速6.25kbps,则填充速率为

(6.25×103)/([(200×106)/1000]×8)=0.00390625字节,将整数部分0左移8位,低8位记录小数部分,即0.00390625个令牌,最后填充速率令牌桶存储器计量方法为图4所示,低8bit记录0.00390625个令牌,高24个bit记录0个令牌。

图5是根据本发明可选实施例的填充速率计量方法二的示意图,如图5所示,假设当前达到最大限速为3.75g,则填充速率为2343.75,将整数部分2343左移8位,低8位记录小数部分,即0.75个令牌,最后填充速率令牌桶存储器计量方法为图5所示,低8bit记录0.75个令牌,高24个bit记录2343个令牌。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例该的方法。

实施例2

在本实施例中还提供了一种限速装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图6是根据本发明实施例的一种限速装置的结构框图,如图6所示,该装置包括:

检测模块62,用于检测经过令牌桶的数据包长度,其中,该令牌桶中的令牌数包括小数部分和整数部分;

确定模块64,与检测模块62连接,用于在确定该数据包长度小于预设令牌数时,该数据包通过检验。

可选地,该确定模块64还用于按照预定周期向该令牌桶中填充指定数量的令牌,并将该令牌桶中的剩余令牌数更新为以下数目:该预设令牌数与该指定数量的和值,其中,该指定数量的令牌包括小数部分和整数部分。可选地,在该剩余令牌数大于该令牌桶的容量时,将该令牌桶的中的剩余令牌数更新为以下数目:该令牌桶的容量。

可选地,该数据包通过检验之后,将该令牌桶中的剩余令牌数更新为以下数目:该预设令牌数与该数据包长度的差值。

可选地,,在检测经过令牌桶的数据包长度之后,该确定模块64还用于在该数据包长度大于该令牌桶中的令牌数时,将该数据包丢弃。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s1,检测经过令牌桶的数据包长度,其中,该令牌桶中的令牌数包括小数部分和整数部分;

s2,在确定该数据包长度小于预设令牌数时,该数据包通过检验。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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