一种缓存空间的管理方法及装置与流程

文档序号:14522746阅读:160来源:国知局
一种缓存空间的管理方法及装置与流程

本发明涉及通讯领域,尤其涉及一种缓存空间的管理方法及装置。



背景技术:

现在互联网intenet网络业务中不仅对带宽要求日益增多,在原有单播业务需求量巨大的基础上,对多播业务需求也越来越多,比如远程教育,视频会议,视频点播等等,因此无论接入网,路由器,交换机都需要支持多播处理。

多播是一种一点对多点分发数据的重要技术,由于多播管理的复杂性和对资源的要求,现有芯片设计技术中多播和单播通常采用静态方法,并且对多播和单播分开管理,即缓存空间分为单播缓存空间和多播缓存空间,分配缓存空间时首先判断包类型,单播包进入单播缓存空间,多播包进入多播缓存空间。假设总缓存为s,初始时为多播包划分固定的多播缓存空间s1,为单播包划分固定的单播缓存空间s2,其中s=s1+s2,当多播包占用的缓存空间超过多播缓存空间s1时,将当前多播包全部丢弃,这样即使单播缓存空间s2空闲,多播包也无法占用,当单播包占用的缓存空间超过单播缓存空间s2时,将当前单播包全部丢弃,这样即使多播缓存空间s1空闲,单播包也无法占用。

因此,现有的这种缓存空间的管理方法会导致无法充分利用缓存空间,造成缓存空间的利用率低。



技术实现要素:

有鉴于此,本发明实施例提供一种缓存空间的管理方法及装置,以使得缓存空间能够被充分利用,从而提高缓存空间的利用率。

本发明实施例的技术方案是这样实现的:

一种缓存空间的管理方法,包括:

获取多播包占用的多播缓存空间;

根据所述多播缓存空间计算单播缓存空间的动态丢弃阈值;其中,所述单播缓存空间为单播包占用的缓存空间;

根据所述单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间。

如上所述的方法,所述根据所述多播缓存空间计算单播缓存空间的动态丢弃阈值,包括:

设置所述单播缓存空间的最大丢弃阈值和所述单播缓存空间的n级丢弃系数;其中,n为正整数,所述最大丢弃阈值为正整数,所述n级丢弃系数均为正整数,且第1级丢弃系数<第2级丢弃系数<…<第n级丢弃系数;

根据所述单播缓存空间的最大丢弃阈值、所述单播缓存空间的n级丢弃系数和所述多播缓存空间,计算所述单播缓存空间的n级动态丢弃阈值。

如上所述的方法,所述根据所述单播缓存空间的最大丢弃阈值、所述单播缓存空间的n级丢弃系数和所述多播缓存空间,计算所述单播缓存空间的n级动态丢弃阈值,包括:

根据所述单播缓存空间的最大丢弃阈值和所述多播缓存空间计算得到最大动态丢弃阈值;

根据所述最大动态丢弃阈值和单播缓存空间的所述单播缓存空间的n级丢弃系数计算得到单播缓存空间的n级动态丢弃阈值。

如上所述的方法,所述根据所述单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间之前,所述方法还包括:

获取所述当前单播包携带的队列号;

计算若所述当前单播包入队后对应的队列所需的预估缓存空间;其中,所述当前单播包根据所述队列号入队;

相应的,所述根据所述单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间,包括:

根据所述预估缓存空间和所述单播缓存空间的n级动态丢弃阈值确定是否允许所述当前单播包入队,并为所述当前单播包分配缓存空间。

如上所述的方法,所述根据所述预估缓存空间和所述单播缓存空间的n级动态丢弃阈值确定是否允许所述当前单播包入队,并为所述当前单播包分配缓存空间,包括:

设置所述单播缓存空间的n级丢弃概率;其中,每一级丢弃概率与每一级动态丢弃阈值之间具有对应关系,并且第1级丢弃概率>第2级丢弃概率>…>第n级丢弃概率;

根据所述预估缓存空间、所述单播缓存空间的n级动态丢弃阈值和所述单播缓存空间的n级丢弃概率确定是否允许所述当前单播包入队,并为所述当前单播包分配缓存空间。

如上所述的方法,所述计算若所述当前单播包入队后对应的队列所需的预估缓存空间,包括:

根据所述队列号在队列深度实时统计表中获取原始队列占用的缓存空间;

获取所述当前单播包所需的缓存空间;

根据所述原始队列占用的缓存空间、所述当前单播包所需的缓存空间和队列活跃个数计算得到所述当前单播包入队后对应的队列所需的预估缓存空间;其中所述队列活跃个数是所述缓存空间有效的单播包队列个数。

如上所述的方法,所述根据所述预估缓存空间、所述单播缓存空间的n级动态丢弃阈值和所述单播缓存空间的n级丢弃概率确定是否允许所述当前单播包入队,并为所述当前单播包分配缓存空间,包括:

若所述预估缓存空间大于第1级动态丢弃阈值,将所述单播包丢弃;

若所述预估缓存空间小于第i级动态丢弃阈值,且大于第i+1级动态丢弃阈值,比较第i+1级丢弃概率和由随机数算法生成的随机数的大小,若所述第i+1级丢弃概率大于所述随机数,丢弃所述当前单播包,若所述第i+1级丢弃概率小于所述随机数,允许所述当前单播包入队,并为所述当前单播包分配缓存空间;其中,i=1、2…n-1;

若所述预估缓存空间小于第n级动态丢弃阈值,允许所述单播包入队,并为所述当前单播包分配缓存空间。

如上所述的方法,还包括:

获取所述多播包更新后占用的多播缓存空间;

相应的,所述根据所述多播缓存空间计算单播缓存空间的动态丢弃阈值,包括:

根据所述多播包更新后占用的多播缓存空间计算单播缓存空间的n级动态丢弃阈值。

一种缓存空间的管理装置,包括:

获取模块,用于获取多播包占用的多播缓存空间;

计算模块,用于根据所述多播缓存空间计算单播缓存空间的动态丢弃阈值;其中,所述单播缓存空间为单播包占用的缓存空间;

处理模块,用于根据所述单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间。

如上所述的装置,所述计算模块包括:

第一设置单元,用于设置所述单播缓存空间的最大丢弃阈值和所述单播缓存空间的n级丢弃系数;其中,n为正整数,所述最大丢弃阈值为正整数,所述n级丢弃系数均为正整数,且第1级丢弃系数<第2级丢弃系数<…<第n级丢弃系数;

计算单元,用于根据所述单播缓存空间的最大丢弃阈值、所述单播缓存空间的n级丢弃系数和所述多播缓存空间计算所述单播缓存空间的n级动态丢弃阈值。

如上所述的装置,所述处理模块包括:

第二设置单元,用于设置所述单播缓存空间的n级丢弃概率;其中,每一级丢弃概率与每一级动态丢弃阈值之间具有对应关系,并且第1级丢弃概率>第2级丢弃概率>…>第n级丢弃概率;

处理单元,用于根据预估缓存空间、所述单播缓存空间的n级动态丢弃阈值和所述单播缓存空间的n级丢弃概率确定是否允许所述当前单播包入队,并为所述当前单播包分配缓存空间。

如上所述的装置,所述处理单元,具体用于若所述预估缓存空间大于第1级动态丢弃阈值,将所述单播包丢弃;若所述预估缓存空间小于第i级动态丢弃阈值,且大于第i+1级动态丢弃阈值,比较第i+1级丢弃概率和由随机数算法生成的随机数的大小,若所述第i+1级丢弃概率大于所述随机数,丢弃所述当前单播包,若所述第i+1级丢弃概率小于所述随机数,允许所述当前单播包入队,并为所述当前单播包分配缓存空间;其中,i=1、2…n-1;若所述预估缓存空间小于第n级动态丢弃阈值,允许所述单播包入队,并为所述当前单播包分配缓存空间。

本发明实施例提供的缓存空间的管理方法及装置,该方法包括获取多播包占用的多播缓存空间;根据多播缓存空间计算单播缓存空间的动态丢弃阈值;根据单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的丢弃阈值,进而根据计算出的动态丢弃阈值确定是为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

附图说明

图1为本发明实施例提供的一种缓存空间的管理方法的流程示意图;

图2为本发明实施例提供的另一种缓存空间的管理方法的流程示意图;

图3为本发明实施例提供的又一种缓存空间的管理方法的流程示意图;

图4为本发明实施例提供的又一种缓存空间的管理方法的流程示意图;

图5为本发明实施例提供的一种缓存空间的管理装置的结构示意图;

图6为本发明实施例提供的另一种缓存空间的管理装置的结构示意图;

图7为本发明实施例提供的又一种缓存空间的管理装置的结构示意图;

图8为本发明实施例提供的又一种缓存空间的管理装置的结构示意图;

图9为本发明实施例提供的又一种缓存空间的管理装置的结构示意图。

具体实施方式

图1为本发明实施例提供的一种缓存空间的管理方法的流程示意图,如图1所示,本实施例提供的方法包括以下步骤:

步骤101、获取多播包占用的多播缓存空间。

具体的,步骤101获取多播包占用的多播缓存空间可以由缓存空间的管理装置实现。需要说明的是,多播包占用的多播缓存空间就是指多播包占用的多播缓存空间的大小。

还需要说明的是,当确定是为当前多播包分配缓存空间还是丢弃当前多播包时采用现有技术的全局优先级算法,具体的处理过程如下:

设置多播包的优先级个数和每个优先级多播缓存空间的丢弃阈值以及丢弃概率。

假设当前多播包能够正常入队并获得相应的缓存空间,计算当前多播包入队后所有多播包占用的多播缓存空间,当前多播包入队后所有多播包占用的多播缓存空间等于当前多播包没有入队前所有多播包占用的多播缓存空间与当前多播包所需的缓存空间之和,即mnew=mold+bm,其中,mold为当前多播包没有入队前所有多播包占用的多播缓存空间,bm为当前多播包所需的缓存空间。

获取当前多播包的优先级,用当前多播包入队后所有多播包占用的多播缓存空间和每个优先级多播缓存空间的动态丢弃阈值进行匹配,获得相应的丢弃概率,进而确定是为当前的多播包分配缓存空间还是丢弃当前多播包。

步骤102、根据多播缓存空间计算单播缓存空间的动态丢弃阈值。其中,单播缓存空间为单播包占用的缓存空间。

具体的,步骤102根据多播缓存空间计算单播缓存空间的动态丢弃阈值可以由缓存空间的管理装置实现。动态丢弃阈值可以是一个,也可以是多个,如果是多个,动态丢弃阈值可以分为n级,n为大于等于1的整数,n的具体取值可以根据实际缓存空间的所需要的利用程度进行设置,如果需要较大程度地利用缓存空间,则可以将n设置地大一些,这样计算出的动态丢弃阈值的级数就相应地多,进而在步骤103中所进行判断的依据会更多,从而更好地确定是否为当前单播包分配缓存空间还是丢弃当前单播包。

步骤103、根据单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间。

具体的,步骤103根据单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间可以由缓存空间的管理装置实现。步骤103中的动态丢弃阈值是步骤102中计算出的动态丢弃阈值,如果步骤102中计算得到一个动态丢弃阈值,步骤103则根据这一个动态丢弃阈值确定是否为当前单播包分配缓存空间,如果步骤102中计算得到多个动态丢弃阈值,步骤103则根据这些动态丢弃阈值确定是否为当前单播包分配缓存空间。

本实施例提供的缓存空间的管理方法,获取多播包占用的多播缓存空间;根据多播缓存空间计算单播缓存空间的动态丢弃阈值;根据单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的丢弃阈值,进而根据计算出的动态丢弃阈值确定是为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

图2为本发明实施例提供的另一种缓存空间的管理方法的流程示意图,如图2所示,本实施例提供的方法包括以下步骤:

步骤201、缓存空间的管理装置获取多播包占用的多播缓存空间。

步骤202、缓存空间的管理装置设置单播缓存空间的最大丢弃阈值和单播缓存空间的n级丢弃系数。其中,n为正整数,最大丢弃阈值为正整数,n级丢弃系数均为正整数,且第1级丢弃系数<第2级丢弃系数<…<第n级丢弃系数。

需要说明的是,最大丢弃阈值为计算单播缓存空间的n级动态丢弃阈值的初始输入值。

步骤203、缓存空间的管理装置根据单播缓存空间的最大丢弃阈值、单播缓存空间的n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值。

具体的,步骤203包括:缓存空间的管理装置根据最大丢弃阈值和多播缓存空间计算得到最大动态丢弃阈值;缓存空间的管理装置根据最大动态丢弃阈值和单播缓存空间的n级丢弃系数计算得到单播缓存空间的n级动态丢弃阈值。

需要说明的是,n级丢弃系数包括第1级丢弃系数、第2级丢弃系数…第n级丢弃系数,根据单播缓存空间的最大丢弃阈值、单播缓存空间的n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值,具体包括:

根据单播缓存空间的最大丢弃阈值、单播缓存空间的第1级丢弃系数和多播缓存空间计算播缓存空间的第1级动态丢弃阈值;根据单播缓存空间的最大丢弃阈值、单播缓存空间的第2级丢弃系数和多播缓存空间计算播缓存空间的第2级动态丢弃阈值;以此类推,根据单播缓存空间的最大丢弃阈值、单播缓存空间的第n级丢弃系数和多播缓存空间计算播缓存空间的第n级动态丢弃阈值。

具体的,单播缓存空间的第1级动态丢弃阈值t1=(t0-qm)/β1,单播缓存空间的第2级动态丢弃阈值t2=(t0-qm)/β2,…,单播缓存空间的第n级动态丢弃阈值tn=(t0-qm)/βn,其中,qm为播包占用的多播缓存空间,t0为所配置的配置单播缓存空间的最大丢弃阈值,β1、β2…βn分别为单播缓存空间的n级丢弃系数。

步骤204、缓存空间的管理装置根据单播缓存空间的n级动态丢弃阈值确定是否为当前单播包分配缓存空间。

需要说明的是,本实施例中与其它实施例中相同步骤或概念的解释可以参照其它实施例中的描述,此处不再赘述。

本实施例提供的缓存空间的管理方法,获取多播包占用的多播缓存空间;设置单播缓存空间的最大丢弃阈值和单播缓存空间的n级丢弃系数;根据单播缓存空间的最大丢弃阈值、单播缓存空间的n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值;根据单播缓存空间的n级动态丢弃阈值确定是否为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的n级丢弃阈值,进而根据计算出的n级动态丢弃阈值确定是为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

图3为本发明实施例提供的又一种缓存空间的管理方法的流程示意图,如图3所示,本实施例提供的方法包括以下步骤:

步骤301、缓存空间的管理装置获取多播包占用的多播缓存空间。

步骤302、缓存空间的管理装置设置单播缓存空间的最大丢弃阈值和单播缓存空间的n级丢弃系数。其中,n为正整数,所述最大丢弃阈值为正整数,所述n级丢弃系数均为正整数,且第1级丢弃系数<第2级丢弃系数<…<第n级丢弃系数。

步骤303、缓存空间的管理装置根据最大丢弃阈值和多播缓存空间计算得到最大动态丢弃阈值。

步骤304、缓存空间的管理装置根据最大动态丢弃阈值和单播缓存空间的n级丢弃系数计算得到单播缓存空间的n级动态丢弃阈值。

步骤305、缓存空间的管理装置获取当前单播包携带的队列号。

需要说明的是,单播包的队列号是单播包的一个属性,因为缓存空间有不止一列的单播包队列,每个单播包入队前,缓存空间的管理装置都要知道该单播包将要入队的相关信息,因此每个单播包都会携带关于入队的相关信息,该相关信息就是该单播包所要入队的队列号。

步骤306、缓存空间的管理装置计算若当前单播包入队后对应的队列所需的预估缓存空间。其中,当前单播包根据队列号入队。

需要说明的是,步骤406是假设在当前单播包入队的情况下,对入队后对应的队列所需的预估缓存空间进行计算的过程。

步骤307、缓存空间的管理装置设置单播缓存空间的n级丢弃概率。其中,每一级丢弃概率与每一级动态丢弃阈值之间具有对应关系,并且第1级丢弃概率>第2级丢弃概率>…>第n级丢弃概率。

需要说明的是,第1级丢弃概率对应第1级动态丢弃阈值,第2级丢弃概率对应第2级动态丢弃阈值,依次类推,第n级丢弃概率对应第n级动态丢弃阈值。

步骤308、缓存空间的管理装置根据预估缓存空间、单播缓存空间的n级动态丢弃阈值和单播缓存空间的n级丢弃概率确定是否允许当前单播包入队,并为当前单播包分配缓存空间。

需要说明的是,如果允许当前单播包入队,则为当前单播包分配缓存空间以放置当前单播包,如果不允许当前单播包入队,则丢弃当前单播包。

还需要说明的是,本实施例中与其它实施例中相同步骤或概念的解释可以参照其它实施例中的描述,此处不再赘述。

本实施例提供的缓存空间的管理方法,获取多播包占用的多播缓存空间;设置单播缓存空间的最大丢弃阈值和单播缓存空间的n级丢弃系数;根据最大丢弃阈值、n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值;计算若当前单播包入队后对应的队列所需的预估缓存空间;根据预估缓存空间、n级动态丢弃阈值和预先设置的n级丢弃概率确定是否允许当前单播包入队,并为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的n级丢弃阈值,进而根据计算出的n级动态丢弃阈值确定是否为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

图4为本发明实施例提供的又一种缓存空间的管理方法的流程示意图,如图4所示,本实施例提供的方法包括以下步骤:

步骤401、缓存空间的管理装置获取多播包占用的多播缓存空间。

步骤402、缓存空间的管理装置设置单播缓存空间的最大丢弃阈值和单播缓存空间的n级丢弃系数。其中,n为正整数,所述最大丢弃阈值为正整数,所述n级丢弃系数均为正整数,且第1级丢弃系数<第2级丢弃系数<…<第n级丢弃系数。

步骤403、缓存空间的管理装置根据最大丢弃阈值和多播缓存空间计算得到最大动态丢弃阈值。

步骤404、缓存空间的管理装置根据最大动态丢弃阈值和单播缓存空间的n级丢弃系数计算得到单播缓存空间的n级动态丢弃阈值。

步骤405、缓存空间的管理装置获取当前单播包携带的队列号。

步骤406、缓存空间的管理装置根据队列号在队列深度实时统计表中获取原始队列占用的缓存空间。

需要说明的是,原始队列是指当前单播包没有入队之前的队列,队列深度实时统计表记录有每个队列所占用的缓存空间说明,根据队列号就可以从队列深度实时统计表中获取该队列号对应的队列占用的缓存空间。

步骤407、缓存空间的管理装置获取当前单播包所需的缓存空间。

步骤408、缓存空间的管理装置根据原始队列占用的缓存空间、当前单播包所需的缓存空间和队列活跃个数计算得到当前单播包入队后对应的队列所需的预估缓存空间。其中队列活跃个数是所述缓存空间有效的单播包队列个数。

需要说明的是,预估缓存空间可以根据原始队列占用的缓存空间与当前单播包所需的缓存空间做加法运算,再与队列活跃个数做乘法运算得到。当前单播包入队后对应的队列所需的预估缓存空间可以通过下面的计算方法获得:首先计算如果当前单播包入队该队列新的缓存空间占用值,该队列新的缓存空间占用值(qnew)等于该队列原来的缓存占用值(qold)+当前单播包所需的缓存空间占用值(bu),即qnew=qold+bu;然后,获取缓存空间中的单播激活队列数an;最后计算当前单播包入队后对应的队列所需的预估缓存空间et=qnew*an。

步骤409、缓存空间的管理装置设置单播缓存空间的n级丢弃概率。其中,每一级丢弃概率与每一级动态丢弃阈值之间具有对应关系,并且第1级丢弃概率>第2级丢弃概率>…>第n级丢弃概率。

步骤410、缓存空间的管理装置根据预估缓存空间、单播缓存空间的n级动态丢弃阈值和单播缓存空间的n级丢弃概率确定是否允许当前单播包入队,并为当前单播包分配缓存空间。

具体的,步骤410包括:若预估缓存空间大于第1级动态丢弃阈值,将单播包丢弃;若预估缓存空间小于第1级动态丢弃阈值,且大于第2级动态丢弃阈值,比较第2级丢弃概率和由随机数算法生成的随机数的大小,若第2级丢弃概率大于随机数,丢弃单播包,若第2级丢弃概率小于随机数,允许当前单播包入队,并为当前单播包分配缓存空间;依次类推,若预估缓存空间小于第n-1级动态丢弃阈值,且大于第n级动态丢弃阈值,比较第n级丢弃概率和由随机数算法生成的随机数的大小,若第n级丢弃概率大于随机数,丢弃单播包,若第n级丢弃概率小于随机数,允许当前单播包入队,并为当前单播包分配缓存空间;若预估缓存空间小于第n级动态丢弃阈值,允许单播包入队,并为当前单播包分配缓存空间。

需要说明的是,生成随机数的随机数算法有多种,其中一种随机数算法为:new[7:0]={old[6:0],old[0]^old[1]^old[2]^old[3]^old[7]},其中用于计算随机数的初始值old=8‘h56。具体的,在确定是否允许第一个当前单播包入队时,用来与丢弃概率比较的随机数是由初始值通过随机数算法计算得到的随机数,在确定是否允许第二个当前单播包入队时,用来与丢弃概率比较的随机数是由上次随机数通过随机数算法计算得到的新随机数;也就是说,只有在确定是否允许第一个单播包入队时,所用的随机数是由初始值通过随机数算法计算得到的,在确定是否允许其它单播包入队时,所用的随机数是由上一次得到的随机数通过随机数算法计算得到的。

还需要说明的是,本实施例中与其它实施例中相同步骤或概念的解释可以参照其它实施例中的描述,此处不再赘述。

本实施例提供的缓存空间的管理方法,获取多播包占用的多播缓存空间;根据预先设置的最大丢弃阈值、预先设置的n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值;计算若当前单播包入队后对应的队列所需的预估缓存空间;根据预估缓存空间、n级动态丢弃阈值和预先设置的n级丢弃概率确定是否允许当前单播包入队,并为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的n级丢弃阈值,进而根据计算出的n级动态丢弃阈值确定是否为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

进一步,本发明提供的缓存空间的管理方法还包括:获取多播包更新后占用的多播缓存空间;相应的,根据多播缓存空间计算单播缓存空间的动态丢弃阈值,包括:根据多播包更新后占用的多播缓存空间计算单播缓存空间的n级动态丢弃阈值。

需要说明的是,若多播包发生更新,即多播缓存空间释放一部分缓存空间或增加一部分缓存空间,则重新获取多播包占用的多播缓存空间,根据多播缓存空间重新计算单播缓存空间的动态丢弃阈值,也就是说,单播空间的丢弃阈值是动态变化的,随着多播缓存空间的变动而变化。

下面以一个实施例说明如何实现缓存空间的管理:

计算当前单播包入队后对应的队列所需的预估缓存空间。

配置单播缓存空间的最大丢弃阈值t0,单播缓存空间的n级丢弃系数β1、β2…βn,和单播缓存空间的n级丢弃概率p1、p2…pn,其中t0为大于0的整数,β1<β2…<βn,p1>p2…>pn。

获取多播包占用的多播缓存空间qm。

分别计算单播缓存空间的第1级动态丢弃阈值t1,第2级动态丢弃阈值t2,…,以及第n级动态丢弃阈值tn。

若该队列新的缓存空间占用值et超过第1级动态丢弃阈值t1,将当前单播包全部丢弃;若该队列新的缓存空间占用值et超过第2级动态丢弃阈值t2并且没有超过第1级动态丢弃阈值t1,比较第2级丢弃概率p2和由随机数算法生成的随机数的大小,若p2大于随机数,丢弃当前单播包,若p2小于随机数,允许当前单播包入队,并为当前单播包分配缓存空间;依次类推,若该队列新的缓存空间占用值et超过第n级动态丢弃阈值tn并且没有超过第n-1级动态丢弃阈值tn-1,比较第n级丢弃概率pn和由随机数算法生成的随机数的大小,若pn大于随机数,丢弃当前单播包,若pn小于随机数,允许当前单播包入队,并为当前单播包分配缓存空间;若该队列新的缓存空间占用值et没有超过第n级动态丢弃阈值tn,则允许当前单播包入队,并为当前单播包分配缓存空间。

由上述实施例可以看出,单播空间的动态丢弃阈值一直处于动态调整中,随着多播包占用的多播缓存空间qm增大,单播缓存空间的动态丢弃阈值空间减小表示单播包可用空间减小;而随着多播包占用的多播缓存空间qm减少,单播缓存空间的动态阈值增大表示单播包可用空间增大。

下面再以二个具体实施例说明如何实现缓存空间的管理,第一个实施例为:

假设缓存空间是128,当前需要为一个优先级为0的多播包和一个单播包分配缓存空间。

首先配置多播缓存空间为128,配置单播缓存空间为128。

其次设置多播包的优先级个数为4,分别为优先级0、优先级1、优先级2和优先级3,设置多播包优先级0的丢弃阈值为mth0,丢弃概率为mp0,设置多播包优先级1的丢弃阈值为mth1、丢弃概率为mp1,设置多播包优先级2的丢弃阈值为mth2、丢弃概率为mp2,设置多播包优先级3的丢弃阈值为mth3、丢弃概率为mp3;其中,mth0>mth1>mth2>mth3且mth0≤128,mp0>mp1>mp2>mp3。设置单播缓存空间的最大阈值t0,设置单播缓存空间的3级丢弃系数β1、β2、β3,设置单播缓存空间的3级丢弃概率p1、p2、p3。

如果先确定是否为优先级为0的多播包分配缓存空间,具体过程包括:假设之前的多播包占用的缓存空间为32,当前多播包所需的缓存空间为8,则如果为当前多播包分配缓存空间,则多播包占用的多播缓存空间为32+8=40。假设配置多播包优先级0的丢弃阈值为mth0=120,由于120>40,为当前优先级0的多播包分配缓存空间。

如果先确定是否为单播包分配缓存空间,具体过程包括:假设之前的多播包占用的缓存空间为32,假设t0=120,β1=1,β2=2,β3=3;此时多播缓存空间为40,计算单播缓存空间的第1级动态丢弃阈值t1=(120-32)/1=88,计算单播缓存空间的第2级动态丢弃阈值t2=(120-32)/2=44,计算单播缓存空间的第3级丢动态弃阈值t3=(120-32)/3≈29。若单播包入队后队列所占的缓存空间大于第1级动态丢弃阈值88,将该单播包丢弃;若单播包入队后队列所占的缓存空间小于第1级动态丢弃阈值88,并且大于第2级动态丢弃阈值44,则比较p2与随机数算法生成的随机数进行大小比较从而确定是否让该单播包入队,并为分配缓存空间;若单播包入队后队列所占的缓存空间小于第2级动态丢弃阈值44,并且大于第3级动态丢弃阈值29,则比较p3与随机数算法生成的随机数进行大小比较从而确定是否让该单播包入队,并为其分配缓存空间;若单播包入队后队列所占的缓存空间小于第3级动态丢弃阈值29,让该单播包入队,并为其分配缓存空间。

若假设多播包更新后占用的多播缓存空间为16,那么根据上述单播缓存空间的动态丢弃阈值计算公式可以计算得出单播缓存空间的第1级动态丢弃阈值、第2级动态丢弃阈值、第3级动态丢弃阈值分别为104,52,34。

由此可以看出,随着多播缓存空间的释放,单播包可用的缓存空间开始增加。

第二个实施例为:

假设缓存空间是128,当前需要为一个优先级为0的多播包、一个优先级为1的多播包和一个携带队列号0的单播包、一个携带队列号1的单播包分配缓存空间。

首先配置多播缓存空间为128,配置单播缓存空间为128。

其次设置多播包的优先级个数为2,分别为优先级0和优先级1,设置多播包的优先级0的丢弃概率为mth0、丢弃概率为mp0,设置多播包优先级1的丢弃阈值为mth1、丢弃概率为mp1;其中mth0>mth1且mth0≤128,mp0>mp1。设置单播缓存空间的最大阈值t0且t0≤128,设置单播缓存空间的3级丢弃系数β1、β2、β3,设置单播缓存空间的3级丢弃概率p1、p2、p3。

先确定是否为优先级为1的多播包分配缓存空间,具体过程包括:假设之前的多播包占用的缓存空间为32,当前多播包所需的缓存空间为8,则如果为当前多播包分配缓存空间,则多播包占用的多播缓存空间为32+8=40,假设配置多播包优先级1的丢弃阈值为mth1=60,由于60>40,为当前优先级1的多播包分配缓存空间。

然后确定是否为优先级为0的多播包分配缓存空间,具体过程包括:之前的多播包占用的缓存空间为40,假设当前多播包所需的缓存空间为16,则如果为当前多播包分配缓存空间,则多播包占用的多播缓存空间为40+16=56,假设配置多播包优先级0的丢弃阈值为mth0=120,由于120>56,为当前优先级0的多播包分配缓存空间。

接下来确定是否为携带队列号0的单播包分配缓存空间,具体过程包括:假设t0=120,β1=1,β2=2,β3=3;此时多播缓存空间为56,计算单播缓存空间的第1级动态丢弃阈值t1=(120-56)/1=64,计算单播缓存空间的第2级动态丢弃阈值t2=(120-56)/2=32,计算单播缓存空间的第3级动态丢弃阈值t3=(120-56)/3≈21。假设队列0之前占用的缓存空间qold=32,队列号0的单播包所需要的缓存空间为8,因为当前单播包的队列号种类数为2,所以若队列号为0的单播包进入队列0后队列0所需的预估缓存空间et=qnew*an=(32+8)×2=80,由于80>第1级动态丢弃阈值64,因此将该单播包全部丢弃。

若此时,多播包更新导致多播包占用的多播缓存空间释放了一部分,假设释放的多播缓存空间为32,那么多播缓存空间变为56-32=24。相应的,计算单播缓存空间的第1级动态丢弃阈值t1=(120-24)/1=96,计算单播缓存空间的第2级动态丢弃阈值t2=(120-24)/2=48,计算单播缓存空间的第3级动态丢弃阈值t3=(120-24)/3=32。

确定是否为携带队列号1的单播包分配缓存空间,具体过程包括:假设队列1之前占用的缓存空间qold=36,队列号1的单播包所需要的缓存空间为8,计算若队列号为1的单播包进入队列1后队列1所需的预估缓存空间et=qnew*an=(36+8)×2=88,由于第1级动态丢弃阈值96>80>第2级动态丢弃阈值48,因此将第2级丢弃概率p2与随机数算法生成的随机数进行大小比较从而确定是否让该单播包入队,并为其分配缓存空间。

本实施例提供的缓存空间的管理方法,获取多播包占用的多播缓存空间;根据预先设置的最大丢弃阈值、预先设置的n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值;计算若当前单播包入队后对应的队列所需的预估缓存空间;根据预估缓存空间、n级动态丢弃阈值和预先设置的n级丢弃概率确定是否允许当前单播包入队,并为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的n级丢弃阈值,进而根据计算出的n级动态丢弃阈值确定是为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

图5为本发明实施例提供的一种缓存空间的管理装置的结构示意图,如图5所示,该装置5包括:

获取模块51,用于获取多播包占用的多播缓存空间。

计算模块52,用于根据多播缓存空间计算单播缓存空间的动态丢弃阈值;其中,单播缓存空间为单播包占用的缓存空间。

处理模块53,用于根据单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间。

本实施例提供的缓存空间的管理装置,获取多播包占用的多播缓存空间;根据多播缓存空间计算单播缓存空间的动态丢弃阈值;根据单播缓存空间的动态丢弃阈值确定是否为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的丢弃阈值,进而根据计算出的动态丢弃阈值确定是否为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

进一步,图6为本发明实施例提供的另一种缓存空间的管理装置的结构示意图,如图6所示,计算模块52包括:

第一设置单元521,用于设置单播缓存空间的最大丢弃阈值和单播缓存空间的n级丢弃系数;其中,其中,n为正整数,最大丢弃阈值为正整数,n级丢弃系数均为正整数,且第1级丢弃系数<第2级丢弃系数<…<第n级丢弃系数。

计算单元522,用于根据单播缓存空间的最大丢弃阈值、单播缓存空间的n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值。

进一步,计算单元522具体用于根据最大丢弃阈值和多播缓存空间计算得到最大动态丢弃阈值;根据最大动态丢弃阈值和单播缓存空间的n级丢弃系数计算得到单播缓存空间的n级动态丢弃阈值。

获取模块51,还用于获取当前单播包携带的队列号。

计算模块52,还用于若当前单播包入队后对应的队列所需的预估缓存空间;其中,当前单播包根据队列号入队。

处理模块53,还用于根据预估缓存空间和单播缓存空间的n级动态丢弃阈值确定是否允许当前单播包入队,并为当前单播包分配缓存空间。

进一步,图7为本发明实施例提供的又一种缓存空间的管理装置的结构示意图,如图7所示,处理模块53包括:

第二设置单元531,用于设置单播缓存空间的n级丢弃概率;其中,每一级丢弃概率与每一级动态丢弃阈值之间具有对应关系,并且第1级丢弃概率>第2级丢弃概率>…>第n级丢弃概率。

处理单元532,用于根据预估缓存空间、单播缓存空间的n级动态丢弃阈值和单播缓存空间的n级丢弃概率确定是否允许当前单播包入队,并为当前单播包分配缓存空间。

进一步,图8为本发明实施例提供的又一种缓存空间的管理装置的结构示意图,如图8所示,计算模块52还包括:

获取单元523,用于根据队列号在队列深度实时统计表中获取原始队列占用的缓存空间;获取当前单播包所需的缓存空间;

计算单元522,具体用于根据原始队列占用的缓存空间、当前单播包所需的缓存空间和队列活跃个数计算得到当前单播包入队后对应的队列所需的预估缓存空间;其中队列活跃个数是所述缓存空间有效的单播包队列个数。

进一步,处理单元532,具体用于若预估缓存空间大于第1级动态丢弃阈值,将单播包丢弃;若预估缓存空间小于第i级动态丢弃阈值,且大于第i+1级动态丢弃阈值,比较第i+1级丢弃概率和由随机数算法生成的随机数的大小,若第i+1级丢弃概率大于随机数,丢弃当前单播包,若第i+1级丢弃概率小于随机数,允许当前单播包入队,并为当前单播包分配缓存空间;其中,i=1、2…n-1;若预估缓存空间小于第n级动态丢弃阈值,允许单播包入队,并为当前单播包分配缓存空间。

进一步,获取模块51,还用于获取多播包更新后占用的多播缓存空间。

计算模块52,还用于根据多播包更新后占用的多播缓存空间计算单播缓存空间的n级动态丢弃阈值。

需要说明的是,本实施例中各个模块和单元之间的交互过程,可以参照图1~5对应的方法实施例,此处不再赘述。

本实施例提供的缓存空间的管理装置,获取多播包占用的多播缓存空间;根据预先设置的最大丢弃阈值、预先设置的n级丢弃系数和多播缓存空间计算单播缓存空间的n级动态丢弃阈值;计算若当前单播包入队后对应的队列所需的预估缓存空间;根据预估缓存空间、n级动态丢弃阈值和预先设置的n级丢弃概率确定是否允许当前单播包入队,并为当前单播包分配缓存空间;这样,能够根据多播包实际所占用的缓存空间动态地计算单播缓存空间的n级丢弃阈值,进而根据计算出的n级动态丢弃阈值确定是为当前单播包分配缓存空间还是丢弃当前单播包,从而实现了充分利用缓存空间,提高缓存空间利用率的目的。

在实际应用中,所述获取模块51、计算模块52、第一设置单元521、计算单元522、获取单元523、处理模块53、第二设置单元531、处理单元532,均可由位于缓存空间的管理装置中的中央处理器(centralprocessingunit,cpu)、微处理器(microprocessorunit,mpu)、数字信号处理器(digitalsignalprocessor,dsp)或现场可编程门阵列(fieldprogrammablegatearray,fpga)等实现。

图9为本发明实施例提供的又一种缓存空间的管理装置的结构示意图,如图9所示,该装置6包括:

报文类型区分模块61,用于区分新入队的报文是多播还是单播,多播报文送到多播处理模块,单播报文送到单播处理模块。

配置模块62,用于配置缓存大小,多播缓存空间的阈值,单播缓存空间的最大阈值,单播缓存空间的丢弃系数以及单播缓存空间的丢弃概率等。

多播处理模块63,用于确定是否为当前多播包分配缓存空间。

单播处理模块64,用于确定是否为当前单播包分配缓存空间。

动态阈值计算模块65,用于计算单播缓存空间的动态丢弃阈值。

随机数计算模块66,用于进行随机数计算。

在实际应用中,报文类型区分模块61、配置模块62、多播处理模块63、单播处理模块64、动态阈值计算模块65、随机丢弃计算模块66,均可由位于缓存空间的管理装置中的cpu、mpu、dsp或fpga等实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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