CN1787424A - 适于带宽变化的链路分层共享和管理域的带宽重分配方法 - Google Patents

适于带宽变化的链路分层共享和管理域的带宽重分配方法 Download PDF

Info

Publication number
CN1787424A
CN1787424A CNA2005101306890A CN200510130689A CN1787424A CN 1787424 A CN1787424 A CN 1787424A CN A2005101306890 A CNA2005101306890 A CN A2005101306890A CN 200510130689 A CN200510130689 A CN 200510130689A CN 1787424 A CN1787424 A CN 1787424A
Authority
CN
China
Prior art keywords
bandwidth
class
guarantee
management domain
link
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005101306890A
Other languages
English (en)
Other versions
CN100418313C (zh
Inventor
史立
鲁士文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Pu Pu Software Co., Ltd.
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CNB2005101306890A priority Critical patent/CN100418313C/zh
Publication of CN1787424A publication Critical patent/CN1787424A/zh
Application granted granted Critical
Publication of CN100418313C publication Critical patent/CN100418313C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及计算机网络通信技术领域,是对网络中带宽变化的链路进行分层管理的方法,为数据流提供服务质量保证。通过在输出缓存测量包的出队的速率和缓存队列的长度来计算当前实际的有效带宽,通知调度器根据此有效带宽调整其下传的速率,从而将输出缓存队列长度控制在一定范围内,同时使调度能够及时了解当前的有效输出带宽,进而可以根据此有效带宽,对分级共享树各类的带宽比例进行相应的调整,满足用户的服务质量要求。该方法中的参数选取范围宽广,在不同的参数下,都能取得良好稳定结果,并且可使带宽保证级和队列调度优先级分离。

Description

适于带宽变化的链路分层共享和管理域的带宽重分配方法
技术领域
本发明涉及计算机网络通信技术领域,是对网络中带宽变化的链路进行分层管理的方法,为数据流提供服务质量保证。
背景技术
随着通信技术的不断发展,尤其是IP技术和因特网的迅速发展,使得原有的仅传输一种类型数据流的网络,如传统的电话网仅传语音,逐渐向可以承载各种流量类型数据流的包交换网络转移。为保证不同数据流的服务质量要求,需要对网络中各个链路带宽进行分配管理。对链路共享的不同需求导致需要对链路进行分层共享(hierarchical link-sharing),链路共享结构为一树状结构,根为链路总带宽,根的子节点为各个组织机构,各组织机构进一步将分配给它的带宽分配给不同的数据类,见附图1。
目前满足这种分层链路共享结构的算法有基于类的排队方法(CBQ,class-based queueing),CBQ由分类器,队列缓存,常规包调度器,估计器和链路共享调度器组成,见附图2。其工作原理为:分层共享结构树中每个叶子节点为一个流量类别,分配有相应的缓存队列,输入的流量经过分类器根据过滤规则被放入相应类别的队列缓存中;常规调度器对各个类队列缓存中数据包进行调度;估计器测量每类包的离开时间间隔,检查其流速是否超过分配给它的比率。链路共享调度器根据估计器的结果,如果某类流速超出了其分配的带宽比率,则会将该类挂起,暂停其被常规调度器调度,暂停的时间是使该类发送速率符合其分配的带宽计算得来的。通过这种方式,可使当常规调度器采用基于优先级的调度方法时,低优先级的类仍可获得分配给的带宽,而不至于被饿死,从而为实时性任务提供了时延保证,同时又为其他任务提供了带宽保证。
CBQ是建立在链路带宽恒定的基础上,对于点到点的有线链路来说这种假设是合理的,但对于无线链路和共享信道的链路这种假设不成立。由于无线电波在传播过程中会受到各种干扰,为了抵抗这些干扰,一般采用自适应传送技术,即根据链路质量下降情况调整信号处理和传送方式,自适应传送技术又可进一步分为三类:分级编码,分级调制和降低数据速率三类,而这些措施将导致带宽随着通信状况下降而下降。对于共享信道链路,如以太网,链路带宽随着链路负载变化而变化。由于CBQ采用的是基于优先级的包调度机制,当带宽下降时,估计器对超限的判定仍然按原来的带宽计算,这样高优先级的将挤占低优先级分配的带宽,原链路共享带宽比例结构被破坏。
发明内容
本发明的目的在于提供一种适于带宽变化的链路分层共享和管理域的带宽重分配方法。
由于带宽变化会造成CBQ带宽共享结构无法满足,因此需要采取措施消除这些影响,使链路有效带宽发生变化时,能够对包的调度进行调整,满足用户的服务质量要求。首先要使调度器能够获知下层链路的带宽变化,另外因为链路要为不同用户所共享,每个用户有不同类型的数据流类,因此在带宽下降时,要将带宽重新在各个类之间分配,满足用户的需求,带宽重分配需要满足以下目标:
组织间的公平性:这里公平性是指两个类别带宽比例保持原共享结构的带宽比例。即当每个组织有足够的流量时,带宽重分配应保持组织间的分配比例关系。
组织内可管理性和公平性:组织内可以根据用户需求来进行带宽重分配,为用户提供通用分配策略来满足用户不同的重新分配政策,为用户提供绝对和相对保证,并且在满足用户对关键任务需求基础上,满足不同类间公平性要求。
数据流的优先级和重分配分离:为满足实时业务需求,链路共享将基于优先级的调度算法纳入到其框架中,从而为实时业务提供时延保证,而用户的关键业务并不一定是实时业务,因此要将各类的优先级与重分配策略分离。
我们提出了一种适于带宽变化的分层链路共享方法和带宽重分配方法来满足这些目标。
技术方案
一种适于带宽变化的链路分层共享和基于管理域的带宽重分配方法,通过在输出缓存测量包的出队的速率和缓存队列的长度来计算当前实际的有效带宽,通知调度器根据此有效带宽调整其下传的速率,从而将输出缓存队列长度控制在一定范围内,同时使调度能够及时了解当前的有效输出带宽,进而可以根据此有效带宽,对分级共享树各类的带宽比例进行相应的调整,满足用户的服务质量要求。
所述的适于带宽变化的链路分层共享和基于管理域的带宽重分配方法,有效带宽估计和带宽调整方法,对有效的输出带宽进行估计,其方法是根据输出缓存的包的出队速率,输出缓存的队列长度及其变化对其进行估计;具体方法为在包离开缓存队列时,计算包的离开速率,并用EWMA计算包的出队速率估计,在包到达输出缓存的队列时,计算队列长度变化率,并以该变化率乘以设定系数加上当前的下行速率作为下行速率来通知调度器调整,并以队列的出口速率估计值作为约束条件,当输出缓存为空,而下行速率小于出队速率估计,说明链路带宽增加,下行速率设为出队速率估计;当队列长度小于设定队列长度控制下限时,并且队列长度变化率小于0,如计算下行速率小于出队速率估计,将其设为出队速率估计;当队列长度大于设定队列长度控制上限时,并且队列长度变化率大于0,如果计算下行速率大于出队速率估计,将其设为出队速率估计,将计算的下行速率通知给调度器,调度器根据此值计算包调度时机来调整下行速率,并对该下行速率进行EWMA估计,当估计值相对于上次用于带宽调整速率差值比例超过一定预定值,则对链路共享结构中各类带宽其进行重新分配,满足用户服务质量要求。
所述的适于带宽变化的链路分层共享和基于管理域的带宽重分配方法,基于管理域的带宽重分配方法,
将链路共享结构按组织关系和用户需求划分成不同管理域,管理域中各叶子类根据用户要求分为不同的保证级别,绝对保证类赋予最高保证级别,弹性保证类可进一步根据其重要程度分为不同级别,分级带宽重分配策略为,当链路带宽变化需要带宽调整时,将带宽按管理域分配的带宽比例分配给各个管理域,然后对管理域中各类带宽进行调整,调整的方法为保证最高级保证级带宽(即绝对保证类带宽),其所需的带宽先从最低保证级别中获取,如果不能满足再从高一级中获取,直至满足为止,如仍不满足,则按最高保证级各类比例关系分配带宽;对于弹性保证级别的服务类,如果在上述保证策略完成后还有可以得到一定带宽,则该级别的类按原有的比例分配剩余带宽,这样一方面可以为绝对保证类提供带宽保证,又可满足同级别保证类的公平性,另外使带宽保证和类的优先级分离。
本发明实现于路由器和操作系统内核中,运行于网络协议栈网络层和物理层之间,在网卡驱动的输出缓存增加了对链路有效带宽的估计,其基本思想是通过在输出缓存测量包的出队的速率和缓存队列的长度来计算当前实际的有效带宽,通知调度器根据此有效带宽调整其下传的速率,从而将输出缓存队列长度控制在一定范围内,同时使调度能够及时了解当前的有效输出带宽,进而可以根据此有效带宽,对分级共享树各类的带宽比例进行相应的调整,满足用户的服务质量要求。对有效的输出带宽进行估计,其方法是根据输出缓存的包的出队速率,输出缓存的队列长度及其变化对其进行估计,因此需要测量包的出队速率,输出缓存的队列长度及其变化,这样就涉及对输出缓存的入队函数和出队函数进行修改,以及接收到当前有效带宽时,修改包调度时机来调整下行速率以及对带宽重新分配满足用户服务质量要求,原理见附图3。具体实现如下:
    enqueue(p)/*入队函数*/

       sendbuffer.enqueue(p)/*将包加入缓存队列*/

       Q=(1-wq)*Q+wq*sendbuffer.length();/*公式(2)*/

       VQ=(Q-Qlast)/(now-last_time);/*公式(3)*/

       Qlast=Q;

       last_time=now:
        <!-- SIPO <DP n="4"> -->
        <dp n="d4"/>
        if(Q<QL && VQ<0)then

           Va=Va-Kp*VQ;/*公式(4)*/

           If(Va<Vd)then

               Va=Vd;

           end if

           notify(Va);/*将Va反馈至调度器*/

        else if(Q>QU && VQ>0)

           Va=Va-Kp*VQ;/*公式(4)*/

           If(Va>Vd)then

               Va=Vd;

           end if

           notify(Va);/*将Va反馈至调度器*/

        end if

    deque()/*出队函数*/

      p=sendbuffer.dequeue()/*从缓存取一个包*/

      If(p!=NULL)then/*队列非空*/

        Vd(1-wv)*wd+wv*p.length()/(now-last_time);/*公式(1)*/

        last_time=now;

        send(p);/*发送*/

      else

          If(Va<Vd)then

              Va=Vd;

              notify(Va);/*将Va反馈至调度器*/

          end if

      end if

    recvnotify(Va)/*调度器收到输出缓存通知下传速率*/

      Vout=Va;

      V’=(1-w)V’+w*Va;/*公式(6)*/

      if(|V’-Vlast|/Vlast>Vth)then
        <!-- SIPO <DP n="5"> -->
        <dp n="d5"/>
          reallocte(V’);

          Vlast=V’;

       end if

    cbq_vb_dequeue()/*CBQ_VB_出队函数*/

       p=cbq_dequeue();/*CBQ算法取出应被调度的包*/

       if(sendbuffer.length()>qlimit)/*缓存满*/

           cbq_requeue(p);

       else

           enqueue(p);

           txt_time=p.length/Va;/*计算下一次调度时机,公式(5)*/

           set_timer(now+txt_time);/*设置下一次该函数被调用的时间*/

       end if
注:链路初始带宽为V,当前平均队列长度为Q,平均队列长度变化率为VQ,平均队列长度控制下界为QL,上界为QU,当前出队速率估计为Vd,当前下传速率Va,调整阈值为Vth,初始Va=V
实现说明:
出队函数:在出队函数中要对包的出队速度进行测量,为消除瞬间带宽变化的影响,对包出队速率采用指数权重滑动平均(EWMA)进行估计,设包的大小为L,t为测量得到的包离开的时间间隔,则第n个包离开时的估计速率:
V n = ( 1 - w v ) V n - 1 + w v L t , n > 1 . . . ( 1 )
其中wv为权重值,V0是为初始速度设为链路带宽。包的出队速率可以看作是当前链路可以为上层提供的有效带宽的度量,在反馈给调度器下行速率时,它作为一个约束条件,使下行速率能快速跟上链路带宽变化,详见下面入队函数说明。
入队函数说明:入队函数对输出缓存的队列长度和变化进行测量,并根据出队函数测量的有效带宽,计算调度器向输出缓存下行的速率,将此速率反馈给调度器,使其根据此速率对其包调度进行调整,一方面将输出缓存队列长度控制在一定范围内,另一方面,使调度器及时了解当前链路带宽,调整带宽分配,满足用户的服务质量要求。
由于到达缓存的数据是以包为单位,而包的大小不同,队列长度也采用EWMA估计来消除随机波动,则第n个包到达时的队列长度估计为:
          Qn=(1-wq)Qn-1+wqQc,n>1         (2)
其中Qc为第n个包到达时的实际队列长度,wq为权重值。因此平均队列长度变化率为:
V Q = Q n - Q n - 1 t , n > 1 . . . ( 3 )
其中t为两次计算队列长度的时间间隔。
当前速率估计:
          Vcur=V-KpVQ                      (4)
其中Vcur为当前估计速率,V为上次估计速率,Kp为比例系数,VQ为队列变化率。
为平滑瞬时波动影响,设定队列上下限进行控制,当队列长度低于下限或高于上限,开始反馈速率通知对调度器下行速率进行调整,并以队列的出口速率作为约束条件,在出队函数中,当输出缓存为空,而下行速率小于出队速率,说明链路带宽增加,及时调节下行速率等于出队速率,基于同样原理对入队函数带宽反馈进行调整。
当调度器接受到反馈的速率Va,记录当前下行速率(此处假设为Vout),计算下次调度时机:
          T=Lcur/Vout                       (5)
其中T为当前时间到下次调度的时间间隔,Lcur为当前包的大小。根据此值设定定时器下次启动调度器的时间。
对下行速率进行EWMA估计:
          Vn’=(1-w)Vn-1’+w*Vout          (6)
其中Vn’为本次估计值,Vn-1’为上次估计值,w为权重值(根据实际情况选取,一般在0.001~0.2间),当其相对于上次调整速率(Vlast)差值比例超过一定预定值Vth,则对其进行调整(见步骤S4)样可以滤掉小幅的波动,除掉不必要的调整,减少了调整频率,大幅减少算法运行时的复杂度。
由于输出缓存将下行速率反馈给调度器,一方面可以根据此速率设定定时器启动下一次调度时机,另一方面可以根据这一反馈的速率对各个类占用的带宽进行调整,来满足用户需求,我们称之为带宽重分配,由于重分配一般需要遍历共享结构树的每个节点,本方法对反馈的速率进行EWMA估计,当其相对于上次调整速率差值比例超过一定预定值Vth,则对其进行调整,这样可以滤掉小幅的波动,除掉不必要的调整,减少了调整频率,大幅减少算法运行时的复杂度。
为说明带宽重分配方法,我们首先引入下列定义(原理参见附图4):
管理域:一个管理域是由以一个链路共享结构树的内部节点为根和其所有的子孙节点组成,每个管理域中采用统一的带宽重分配政策,管理域间满足公平性要求。
绝对保证类:链路共享结构中,带宽重分配时需要保证原有带宽恒定的叶子类。如实时非弹性业务和需要一定带宽的数据业务。
弹性保证类:链路共享结构中,带宽重分配时带宽可以随链路带宽变化的叶子类,例如具有自适应特性业务流。这两种保证类的定义是根据用户服务质量需求而来的。
分级带宽重分配策略:管理域中需要为用户提供直观简洁的带宽重分配策略来满足用户需求,用户的业务流可以分为绝对保证类和弹性保证类,因此可以将各类分为不同保证级别,绝对保证类赋予最高保证级别,这部分任务应由接入控制保证在链路状况最坏的情况下能够保证其足够的带宽,弹性保证类可进一步根据其重要程度分为不同级别,分级带宽重分配策略为,当链路带宽下降时,保证最高级保证级带宽(绝对保证类),其所需的带宽先从最低保证级别中获取,如果不能满足再从高一级中获取,直至满足为止。对于弹性保证级别的服务类,如果在上述保证策略完成后还有可以得到一定带宽,则该级别的类按原有的比例分配剩余带宽,满足公平性要求。
带宽重分配方法描述:首先依据机构的组织和带宽分配原则将链路共享结构树划分为不同的管理域,带宽先在每个管理域间按共享结构比例分配,每个管理域中,根据用户分配政策,将域内各叶子类分为不同的保证级,采用分级带宽重分配策略进行带宽重分配。
带宽重分配方法包含了管理域的生成和带宽重分配两部分,管理域的生成是在初始化构建带宽共享结构时完成,带宽重分配在调度其接到来自缓存队列反馈时,进行调整时被调用(见上面描述),管理域与其根节点关联并构成一个链表以便在重分配时进行遍历,每个管理域记录不同保证级别的带宽比例,并将同级保证类的叶子类链接起来,以便在重分配时进行遍历。具体实现如下:
    register_domain(c)/*c为链路共享结构的一个节点(类)*/

       if(c is domain root)then

           d=creat_new_domain(c);/*生成一个新管理域*/

           domainlist.add(d);/*将管理域加入链表*/

       end if

       if(c is leaf)then

           p=find_domain_root(c);/*找到所属管理域根节点*/

           d=p.domain();/*与根节点关联的管理域*/

           /*将该类加入该管理域相应的保证级别链表中*/

           d.guarantee[c.gurantee_class].list.add(c);
           /*将分配带宽累计到该级别分配的带宽中*/

           d.guarantee[c.gurantee_class].bandwidth_sum+=c.allot;

       end if

    reallocate(V)/*V为调整后速率*/

       d=domainlist.gethead();/*取第一个管理域*/

       while(d!=NULL)

       /*根据公式(8)计算绝对保证级别的需要的额外带宽*/

       f=d.guarantee[0].bandwidth_sum(BW/V-1)/*BW为链路原始带宽*/

          fs=f

       for(i=lowestclass;i>1;i--)/*从最低保证级别开始获取带宽给绝对保证级

        (保证级0)*/

        c=d.guarantee[i].list.gethead();

        while(c!=NULL)

         /*根据公式(9)调整该级别带宽比例*/
        <!-- SIPO <DP n="9"> -->
        <dp n="d9"/>
       oldallot=c.allot;

       if(d.guarantee[i].bandwidth_sum>f)

       c.allot=c.allot_origin(1-f/d.guarantee[i].bandwidth_sum);

        else

          c.allot=0;

       end if

       diff=oldallot-c.allot;

       p=c.parent

       while(p!=NULL && p is not domain root)

          p.allot-=diff;

       end while

       c=d.guarantee[i].list.getnext();

          end while

     if(f>d.guarantee[i].bandwidtg_sum)then

       f=f-d.guarantee[i].bandwidth_sum

           else

              f=0;

           end

    end for

       if(f>0)then

           notif_error();/*通知未能满足客户绝对保证*/

       end

       /*调整级别0(绝对保证级)的带宽比例*/

     f=fs-f;/*计算绝对保证级实得带宽比例(并不一定获得所需带宽)

    */

      c=d.guarantee[0].list.gethead();

      while(c!=NULL)

       oldallot=c.allot;

       c.allot=c.allot_origin(1-f/d.guarantee[0].bandwidth_sum);

       diff=oldallot-c.allot;
        <!-- SIPO <DP n="10"> -->
        <dp n="d10"/>
       p=c.parent

       while(p!=NULL && p is not domain root)

          p.allot-=diff;

       end while

      c=d.guarantee[0].list.getnext();

      end while

    d=domainlist.getnext();/*取下一管理域*/
       end while
实现说明:
假设初始链路带宽为r0,某管理域的分配给最高保证级别的带宽为f0,假设链路带宽变为r1,则为保证原有最高保证级别速率,需要将其调整为f1
f 1 = f 0 r 0 r 1 . . . ( 7 )
需要低保证级供给的带宽为:
Vf = f 0 ( r 0 r 1 - 1 ) . . . ( 8 )
对于某一保证级别假设其初始分配带宽为f′,其包含n个类,初始分配带宽为f1′,f2′...fn′,其中f′=f1′+f2′+...+fn′,该保证级别需要供给最高级别Δf带宽,则该级别n个类的带宽分配比例应该变化为fi″(i=l,..n)满足:
f i &prime; &prime; = f i &prime; f &prime; ( f &prime; - Vf ) = f i &prime; ( 1 - Vf f &prime; ) , f &prime; > Vf 0 , f &prime; &le; Vf . . . ( 9 )
发明特点
适于带宽变化的链路分层共享和基于管理域的带宽重分配方法根据输出缓存测量反馈有效带宽来动态调整链路共享结构,可以屏蔽底层的特性,同时能够及时跟踪带宽变化,及时进行调整,能够满足用户提供绝对带宽保证以及域间和类间公平性。该方法中的参数选取范围宽广,在不同的参数下,都能取得良好稳定结果。
我们在仿真环境下对本文发明对原有的CBQ进行对比,仿真环境为空间站和地面用户进行通信,由于空间站和地面站之间通过无线链路进行通信,会受到各种因素干扰,如降水、大气吸收等,在链路层物理层需要采用各种措施来减轻这些干扰的影响,而这些抗干扰技术大都会造成链路带宽受到干扰时带宽下降。仿真环境如附图5所示,由空间站(国际空间站,圆形轨道,高度400公里,倾角51.6度),地面站(经度为116.46,纬度为39.92)和用户站点组成,其中站1,2属于单位A。站3,4属于单位B。分别用CBQ和本文的算法对地面站到空间站的上行链路带宽进行分配管理,链路共享结构和管理域的划分见附图6所示。各个类的流量由CBR产生,每个类的流量都超过其分配带宽以测试带宽管理效果,各类优先级设置如附图所示。仿真时间为40秒(在此期间里,空间站和地面站之间在可见范围内,即一直可以通信),对由调度器到队列缓存的所有包进行采样,计算各个类的流量,计算流量时间间隔采用1秒,实验结果见附图7。
原CBQ方法当链路带宽下降时,优先级高的流将挤占优先级低的流的带宽,无法为低优先级的类提供带宽保证,即优先级与它们获得的带宽是相关的,单位A将挤占单位B的带宽,无法保证它们之间的公平性。
本发明由于采用测量反馈机制,及时调整调度器出口速率,各个类流量在带宽变化时,满足保证级别设定,从而可以满足用户不同的带宽重分配政策,使带宽保证和队列调度的优先级分离。管理域A和B所占带宽保持原有比例,保证了管理域之间的公平性。
附图说明
图l是链路带宽首先在不同的组织机构间共享图。
图2是CBQ的组成模块图。
图3是适于带宽变化的链路共享方法原理图。
图4是基于管理域的带宽重分配方法原理图。
图5是实验仿真环境图。
图6是实验链路共享结构和管理域的划分和各个类对应的流和优先级图。
图7是实验结果见附图。
图8为本发明的一个典型的应用环境图。
图9适于带宽变化的链路分层共享和基于管理域的带宽重分配方法实施步骤图。
具体实施方式
图1是链路带宽首先在不同的组织机构间共享,各机构将其带宽进一步分在不同的流量类型数据流间共享。
图2是CBQ的组成模块原理图,它包含了分类器,缓存队列,常规调度器,流量估计器和链路共享调度器。
图3是适于带宽变化的链路共享方法原理图。其方法是根据输出缓存的包的出队速率,输出缓存的队列长度及其变化对其进行估计;具体方法为在包离开缓存队列时,计算包的离开速率,并用EWMA计算包的出队速率估计,在包到达输出缓存的队列时,计算队列长度变化率,并以该变化率乘以设定系数加上当前的下行速率作为下行速率来通知调度器调整,并以队列的出口速率估计值作为约束条件,当输出缓存为空,而下行速率小于出队速率估计,说明链路带宽增加,下行速率设为出队速率估计;当队列长度小于设定队列长度控制下限时,并且队列长度变化率小于0,如计算下行速率小于出队速率估计,将其设为出队速率估计;当队列长度大于设定队列长度控制上限时,并且队列长度变化率大于0,如果计算下行速率大于出队速率估计,将其设为出队速率估计,将计算的下行速率通知给调度器,调度器根据此值计算包调度时机来调整下行速率,并对该下行速率进行EWMA估计,当估计值相对于上次用于带宽调整速率差值比例超过一定预定值,则对链路共享结构中各类带宽其进行重新分配,满足用户服务质量要求。
图4是基于管理域的带宽重分配方法原理图,其方法是将链路共享结构按组织关系和用户需求划分成不同管理域,管理域中各叶子类根据用户要求分为不同的保证级别,绝对保证类赋予最高保证级别,弹性保证类可进一步根据其重要程度分为不同级别,分级带宽重分配策略为,当链路带宽变化需要带宽调整时,将带宽按管理域分配的带宽比例分配给各个管理域,然后对管理域中各类带宽进行调整,调整的方法为保证最高级保证级带宽(即绝对保证类带宽),其所需的带宽先从最低保证级别中获取,如果不能满足再从高一级中获取,直至满足为止,如仍不满足,则按最高保证级各类比例关系分配带宽;对于弹性保证级别的服务类,如果在上述保证策略完成后还有可以得到一定带宽,则该级别的类按原有的比例分配剩余带宽,这样一方面可以为绝对保证类提供带宽保证,又可满足同级别保证类的公平性,另外使带宽保证和类的优先级分离。图5是本发明典型应用环境,它适于对多个用户共享一条带宽变化的链路进行管理分配,保证用户服务质量要求,同时提高链路利用率。该图也是本发明进行实验的环境。
图6是链路共享结构和管理域的划分和各个类对应的流和优先级的一个实例,用来验证说明本发明。
图7是实验结果,各图中上部的虚线为链路带宽,实线为所有流的流量总合,(a)和(b)为原CBQ用于链路共享结果,(a)各个类流量与其综合流量(b)单位A和B之间占用带宽比例;(c)和(d)为本发明用于链路共享结果,其中流1,2,3,4,5,6的保证级别分别为0,1,2,0,1,2,(c)各个类流量与其综合流量(d)单位A和B之间占用带宽比例;(c)和(d)为本发明用于链路共享结果,其中流1,2,3,4,5,6的保证级别分别为0,1,0,0,1,1,(c)各个类流量与其综合流量(d)单位A和B之间占用带宽比例。
本发明适用于对带宽变化的链路进行管理,如无线链路和共享链路,该链路与路由器相连,并多个组织和用户所共享,不同组织和用户传输的数据类型多样,有实时的和非实时的数据流,有需要带宽绝对保证的数据流,又有可以自适应带宽变化的数据流,本发明实现于与该链路相连的路由器中,如附图8为本发明典型的应用环境,将本发明根据技术方案描述实现于路由器A和B中,对相连的带宽变化链路进行管理。链路共享结构和各个类的保证级别配置可以由管理员静态配置,也可以由接入控制动态配置。
各个权重值的选取可以使其值能跟上速率或队列变化,同时又能消除小幅扰动,因此wv(见公式1)和w(见技术方案recvnotify(Va)函数)取0.1~0.2,wq(见公式2)选0.01~0.1。队列上下控制限选取使队列尽量控制在一半的水平,因此队列上控制限可以选0.5~0.6,队列下控制限可以选0.4~0.5。Kp(见公式4)选取可根据链路带宽波动的实际情况设定,参考值0.000001~0.01。Vth(见技术方案recvnotify(Va)函数)可根据链路带宽波动的实际情况和服务质量要求设定,参考值为0.01。
图9是适于带宽变化的链路分层共享和基于管理域的带宽重分配方法实施步骤流程,其步骤如下:
步骤S1更改网络适配器输出缓存的入队和出队函数,具体方法为:出队函数修改:在出队函数中要对包的出队速度进行测量,为消除瞬间带宽变化的影响,对包出队速率采用指数权重滑动平均(EWMA)进行估计,设包的大小为L,t为测量得到的包离开的时间间隔,则第n个包离开时的估计速率:
V n = ( 1 - w v ) V n - 1 + w v L t , n > 1
其中wv为权重值,V0是为初始速度设为链路带宽,
入队函数修改:入队函数对输出缓存的队列长度和变化进行测量,并根据出队函数测量的有效带宽(即出队速率),计算调度器向输出缓存下行的速率,将此速率反馈给调度器,使其根据此速率对其包调度进行调整,一方面将输出缓存队列长度控制在一定范围内,另一方面,使调度器及时了解当前链路带宽,调整带宽分配,满足用户的服务质量要求,
由于到达缓存的数据是以包为单位,而包的大小不同,队列长度也采用EWMA估计来消除随机波动,则第n个包到达时的队列长度估计为:
            Qn=(1-wq)Qn-1+wqQc,n>1
其中Qc为第n个包到达时的实际队列长度,wq为权重值。因此平均队列长度变化率为:
V Q = Q n - Q n - 1 t , n > 1
其中t为两次计算队列长度的时间间隔,
当前下行速率估计为:
      Vcur=V-KpVQ
其中Vcur为当前下行估计速率,V为上次估计速率,Kp为比例系数,VQ为队列变化率,
为平滑瞬时波动影响,设定队列上下限进行控制,当队列长度低于下限或高于上限,开始反馈速率通知对调度器下行速率进行调整,并以队列的出口速率作为约束条件,在出队函数中,当输出缓存为空,而下行速率小于出队速率,说明链路带宽增加,及时调节下行速率等于出队速率,基于同样原理对入队函数带宽反馈进行调整。相应实现伪代码如下:
enqueue(p)/*入队函数*/
   sendbuffer.enqueue(p)/*将包加入缓存队列*/
Q=(1-wq)*Q+wq*sendbuffer.length();/*公式Qn=(1-wq)Qn-1+wqQc,n>1*/
   VQ=(Q-Qlast)/(now-last_time);/*公式 V Q = Q n - Q n - 1 t , n > 1 */
   Qlast=Q;
   last_time=now;
   if(Q<QL && VQ<0)then
       Va=Va-Kp*VQ;/*公式Vcur=V-KpVQ*/
       If(Va<Vd)then
           Va=Vd
       end if
       notify(Va);/*将Va反馈至调度器*/
   else if(Q>QU && VQ>0)
        Va=Va-Vp*VQ;/*公式Vcur=V-KpVQ*/
        If(Va>Vd)then
            Va=Vd
        end if
        notify(Va);/*将Va反馈至调度器*/
   end if
deque()/*出队函数*/
   p=sendbuffer.dequeue()/*从缓存取一个包*/
   If(P!=NULL)then/*队列非空*/
           Vd=(1-wv)*Vd+wv*p.length()/(now-last_time);/*公式
V n = ( 1 - w v ) V n - 1 + w v L t , n > 1 */
     last_time=now;
     send(p);/*发送*/
   else
       If(Va<Vd)then
           Va=Vd
           notify(Va);/*将Va反馈至调度器*/
       end if
   end if
步骤S2更改调度器的出队调度函数,使其根据当前反馈的有效带宽调整包调度时机,具体方法为:
当调度器接受到反馈的速率Va,记录当前下行速率此处假设为Vout,计算下次调度时机:
T=Lcur/Vout
其中T为当前时间到下次调度的时间间隔,Lcur为当前包的大小,根据此值设定定时器下次启动调度器的时间,
对下行速率进行EWMA估计:
Vn’=(1-w)Vn-1’+w*Vout
其中Vn’为本次估计值,Vn-1’为上次估计值,w为权重值(根据实际情况选取,一般在0.001~0.2间),当其相对于上次调整速率Vlast差值比例超过一定预定值Vth,则对其进行调整见步骤S4样可以滤掉小幅的波动,除掉不必要的调整,减少了调整频率,大幅减少算法运行时的复杂度。其实现伪代码如下:
    recvnotify(Va)/*调度器收到输出缓存通知下传速率*/

        Vout=Va;

        V’=(1-w)V’+w*Va;/*公式Vn’=(1-w)Vn-1’+w*Vout*/

        if(|V’-Vlast|/Vlast>Vth)then

            reallocte(V’);

            Vlast=V’;

        end if

     cbq_vb_dequeue()/*CBQ_VB_出队函数*/

       p=cbq_dequeue();/*CBQ算法取出应被调度的包*/

       if(sendbuffer.length()>qlimit)/*缓存满*/

           cbq_requeue(p);

       else

           enqueue(p);

        txt_time=p.length/Vout;/*计算下一次调度时机,公式T=Lcur/Vout*/

       set_timer(now+txt_time);/*设置下一次该函数被调用的时间*/

       end if
步骤S3增加管理域注册模块,修改CBQ与用户的接口,增加节点的保证级别和管理域两个属性,当用户配置链路和初始化构建带宽共享结构时,构建管理域,管理域与其根节点关联并构成一个链表以便在重分配时进行遍历,每个管理域记录不同保证级别的带宽比例,并将管理域中同级保证类的叶子类链接起来,以便在重分配时进行遍历,在构建共享结构树时,各个叶子类加入其管理域相应的保证级别链表中(管理域结构见图6)。实现伪代码如下:
    register_domain(c)/*c为链路共享结构的一个节点(类)*/

        if(c is domain root)then

            d=creat_new_domain(c);/*生成一个新管理域*/

            domainlist.add(d);/*将管理域加入链表*/

        end if

        if(c is leaf)then

            p=find_domain_root(c);/*找到所属管理域根节点*/
        <!-- SIPO <DP n="18"> -->
        <dp n="d18"/>
        d=p.domain();/*与根节点关联的管理域*/

        /*将该类加入该管理域相应的保证级别链表中*/

        d.guarantee[c.gurantee_class].list.add(c);

        /*将分配带宽累计到该级别分配的带宽中*/

        d.guarantee[c.gurantee_class].bandwidth_sum+=c.allot;

     end if
步骤S4增加基于管理域的带宽重分配策略模块,当反馈的有效带宽超过设定阈值时见步骤S2,带宽先在每个管理域间按共享结构比例分配,每个管理域中,根据用户分配政策,将域内各叶子类分为不同的保证级,采用分级带宽重分配策略进行带宽重分配,分级带宽重分配策略为:用户的业务流可以分为绝对保证类和弹性保证类,因此可以将各类分为不同保证级别,绝对保证类赋予最高保证级别,这部分任务应由接入控制保证在链路状况最坏的情况下能够保证其足够的带宽,弹性保证类可进一步根据其重要程度分为不同级别,分级带宽重分配策略为,当链路带宽下降时,保证最高级保证级带宽(绝对保证类),其所需的带宽先从最低保证级别中获取,如果不能满足再从高一级中获取,直至满足为止,对于弹性保证级别的服务类,如果在上述保证策略完成后还有可以得到一定带宽,则该级别的类按原有的比例分配剩余带宽,满足公平性要求,
假设初始链路带宽为r0,某管理域的分配给最高保证级别的带宽为f0,假设链路带宽变为r1,则为保证原有最高保证级别速率,需要将其调整为f1
f 1 = f 0 r 0 r 1
需要低保证级供给的带宽为:
Vf = f 0 ( r 0 r 1 - 1 )
对于某一保证级别假设其初始分配带宽为f′,其包含n个类,初始分配带宽为f1′,f2′,...fn′,其中f′=f1′+f2′+...+fn′,该保证级别需要供给最高级别Δf带宽,则该级别n个类的带宽分配比例应该变化为fi″(i=l..n)满足:
f i &prime; &prime; = f i &prime; f &prime; ( f &prime; - Vf ) = f i &prime; ( 1 - Vf f &prime; ) , f &prime; > Vf 0 , f &prime; &le; Vf
实现伪代码如下:
reallocate(V)/*V为调整后速率*/
    d=domainlist.gethead();/*取第一个管理域*/
    while(d!=NULL)
/*根据公式 Vf = f 0 ( r 0 r 1 - 1 ) 计算绝对保证级别的需要的额外带宽*/
    f=d.guarantee[0].bandwidth_sum(BW/V-1)/*BW为链路原始带宽*/
        fs=f
    for(i=lowestclass;i>1;i--)/*从最低保证级别开始获取带宽给绝对保证级
(保证级0)*/
    c=d.guarantee[i].list.gethead();
    while(c!=NULL)
/*根据式 f i &prime; &prime; = f i &prime; f &prime; ( f &prime; - Vf ) = f i &prime; ( 1 - Vf f &prime; ) , f &prime; > Vf 0 , f &prime; &le; Vf 调整该级别带宽比例*/
    oldallot=c.allot;
    if(d.guarantee[i].bandwidth_sum>f)
    c.allot=c.allot_origin(1-f/d.guarantee[i].bandwidth_sum);
    else
         c.allot=0;
    end if
    diff=oldallot-c.allot;
    p=c.parent
    while(p!=NULL && p is not domain root)
        p.allot-=diff;
    end while
    c=d.guarantee[i].list.getnext();
        end while
  if(f>d.guarantee[i].bandwidth_sum)then
    f=f-d.guarantee[i].bandwidth_sum
        else
               f=0;
            end
     end for
        if(f>0)then
            notif_error();/*通知未能满足客户绝对保证*/
        end
/*调整级别0(绝对保证级)的带宽比例*/f=fs-f;/计算绝对保证级实得带宽比例(并不一定获得所需带宽)*/
      c=d.guarantee[0].list.gethead();
      while(c!=NULL)
       oldallot=c.allot;
       c.allot=c.allot_origin(1-f.d.guarantee[0].bandwidth_sum);
       diff=oldallot-c.allot;
       p=c.parent
       while(p!=NULL && p is not domain root)
          p.allot-=diff;
       end while
       c=d.guarantee[0].list.getnext();
          end while
   d=domainlist.getnext();/*取下一管理域*/
  end while。

Claims (4)

1.一种适于带宽变化的链路分层共享和基于管理域的带宽重分配方法,其特征在于,通过在输出缓存测量包的出队的速率和缓存队列的长度来计算当前实际的有效带宽,通知调度器根据此有效带宽调整其下传的速率,从而将输出缓存队列长度控制在一定范围内,同时使调度能够及时了解当前的有效输出带宽,进而可以根据此有效带宽,对分级共享树各类的带宽比例进行相应的调整,满足用户的服务质量要求。
2.根据权利要求1所述的适于带宽变化的链路分层共享和基于管理域的带宽重分配方法,其特征是:有效带宽估计和带宽调整方法,对有效的输出带宽进行估计,其方法是根据输出缓存的包的出队速率,输出缓存的队列长度及其变化对其进行估计;具体方法为在包离开缓存队列时,计算包的离开速率,并用EWMA计算包的出队速率估计,在包到达输出缓存的队列时,计算队列长度变化率,并以该变化率乘以设定系数加上当前的下行速率作为下行速率来通知调度器调整,并以队列的出口速率估计值作为约束条件,当输出缓存为空,而下行速率小于出队速率估计,说明链路带宽增加,下行速率设为出队速率估计;当队列长度小于设定队列长度控制下限时,并且队列长度变化率小于0,如计算下行速率小于出队速率估计,将其设为出队速率估计;当队列长度大于设定队列长度控制上限时,并且队列长度变化率大于0,如果计算下行速率大于出队速率估计,将其设为出队速率估计,将计算的下行速率通知给调度器,调度器根据此值计算包调度时机来调整下行速率,并对该下行速率进行EWMA估计,当估计值相对于上次用于带宽调整速率差值比例超过一定预定值,则对链路共享结构中各类带宽其进行重新分配,满足用户服务质量要求。
3.根据权利要求2所述的适于带宽变化的链路分层共享和基于管理域的带宽重分配方法,其特征是:基于管理域的带宽重分配方法,将链路共享结构按组织关系和用户需求划分成不同管理域,管理域中各叶子类根据用户要求分为不同的保证级别,绝对保证类赋予最高保证级别,弹性保证类可进一步根据其重要程度分为不同级别,分级带宽重分配策略为,当链路带宽变化需要带宽调整时,将带宽按管理域分配的带宽比例分配给各个管理域,然后对管理域中各类带宽进行调整,调整的方法为保证最高级保证级带宽(即绝对保证类带宽),其所需的带宽先从最低保证级别中获取,如果不能满足再从高一级中获取,直至满足为止,如仍不满足,则按最高保证级各类比例关系分配带宽;对于弹性保证级别的服务类,如果在上述保证策略完成后还有可以得到一定带宽,则该级别的类按原有的比例分配剩余带宽,这样一方面可以为绝对保证类提供带宽保证,又可满足同级别保证类的公平性,另外使带宽保证和类的优先级分离。
4.根据权利要求1或2或3所述的适于带宽变化的链路分层共享和基于管理域的带宽重分配方法,其具体步骤如下:
步骤S1更改网络适配器输出缓存的入队和出队函数,具体方法为:
出队函数修改:在出队函数中要对包的出队速度进行测量,为消除瞬间带宽变化的影响,对包出队速率采用指数权重滑动平均进行估计,设包的大小为L,t为测量得到的包离开的时间间隔,则第n个包离开时的估计速率:
V n = ( 1 - w v ) V n - 1 + w v L t , n > 1
其中wv为权重值,V0是为初始速度设为链路带宽,入队函数修改:入队函数对输出缓存的队列长度和变化进行测量,并根据出队函数测量的有效带宽,计算调度器向输出缓存下行的速率,将此速率反馈给调度器,使其根据此速率对其包调度进行调整,一方面将输出缓存队列长度控制在一定范围内,另一方面,使调度器及时了解当前链路带宽,调整带宽分配,满足用户的服务质量要求,
由于到达缓存的数据是以包为单位,而包的大小不同,队列长度也采用EWMA估计来消除随机波动,则第n个包到达时的队列长度估计为:
Qn=(1-wq)Qn-1+wqQc,n>1
其中Qc为第n个包到达时的实际队列长度,wq为权重值,因此平均队列长度变化率为:
V Q = Q n - Q n - 1 t , n > 1
其中t为两次计算队列长度的时间间隔,
当前下行速率估计为:
Vcur=V-KpVQ
其中Vcur为当前下行估计速率,V为上次估计速率,Kp为比例系数,VQ为队列变化率,
为平滑瞬时波动影响,设定队列上下限进行控制,当队列长度低于下限或高于上限,开始反馈速率通知对调度器下行速率进行调整,并以队列的出口速率作为约束条件,在出队函数中,当输出缓存为空,而下行速率小于出队速率,说明链路带宽增加,及时调节下行速率等于出队速率,基于同样原理对入队函数带宽反馈进行调整,相应实现伪代码如下:
enqueue(p)/*入队函数*/
   sendbuffer.enqueue(p)/*将包加入缓存队列*/
Q=(1-wq)*Q+wq*sendbuffer.length();/*公式Qn=(1-wq)Qn-1+wqQc,n>1*/
   VQ=(Q-Qlast)/(now-last_time);/*公式 V Q = Q n - Q n - 1 t , n>1*/
   Qlast=Q;
   last_time=now;
   if(Q<QL&&VQ<0)then
   Va=Va-Kp*VQ;/*公式Vcur=V-KpVQ*/
   If(Va<Vd)then
       Va=Vd
   end if
   notify(Va);/*将Va反馈至调度器*/
   else if(Q>QU&&VQ>0)
   Va=Va-Kp*VQ;/*公式Vcur=V-KpVQ*/
   If(Va>Vd)then
       Va=Vd
   end if
   notify(Va);/*将Va反馈至调度器*/
   end if
   deque()/*出队函数*/
p=sendbuffer.dequeue()/*从缓存取一个包*/
If(p!=NULL)then/*队列非空*/
  Vd=(1-wv)*Vd+wv*p.length()/(now-last_time);/*公式 V n = ( 1 - w v ) V n - 1 + w v L t , n>1*/
  last_time=now;
  send(p);/*发送*/
else
    If(Va<Vd)then
        Va=Vd
        notify(Va);/*将Va反馈至调度器*/
    end if
end if
步骤S2更改调度器的出队调度函数,使其根据当前反馈的有效带宽调整包调度时机,具体方法为:
当调度器接受到反馈的速率Va,记录当前下行速率,此处假设为Vout,计算下次调度时机:
T=Lcur/Vout
其中T为当前时间到下次调度的时间间隔,Lcur为当前包的大小,根据此值设定定时器下次启动调度器的时间,
对下行速率进行EWMA估计:
Vn’=(1-w)Vn-1’+w*Vout
其中Vn’为本次估计值,Vn-1’为上次估计值,w为权重值,当其相对于上次调整速率Vlast差值比例超过一定预定值Vth,则对其进行调整见步骤S4样可以滤掉小幅的波动,除掉不必要的调整,减少了调整频率,大幅减少算法运行时的复杂度,其实现伪代码如下:
recvnotify(Va)/*调度器收到输出缓存通知下传速率*/

    Vout=Va;

    V’=(1-w)V’+w*Va;/*公式Vn’=(1-w)Vn-1’+w*Vout*/

    if(|V’-Vlast|/Vlast>Vth)then
        <!-- SIPO <DP n="4"> -->
        <dp n="c4"/>
      reallocte(V’);

      Vlast=V’;
   end if
cbq_vb_dequeue()/*CBQ_VB_出队函数*/
   p=cbq_dequeue();/*CBQ算法取出应被调度的包*/
   if(sendbuffer.length()>qlimit)/*缓存满*/

       cbq_requeue(p);
   else

       enqueue(p);

    txt_time=p.length/Vort;/*计算下一次调度时机,公式T=Lcur/Vout*/

    set_timer(now+txt_time);/*设置下一次该函数被调用的时间*/
   end if
步骤S3增加管理域注册模块,修改CBQ与用户的接口,增加节点的保证级别和管理域两个属性,当用户配置链路和初始化构建带宽共享结构时,构建管理域,管理域与其根节点关联并构成一个链表以便在重分配时进行遍历,每个管理域记录不同保证级别的带宽比例,并将管理域中同级保证类的叶子类链接起来,以便在重分配时进行遍历,在构建共享结构树时,各个叶子类加入其管理域相应的保证级别链表中,实现伪代码如下:
register_domain(c)/*c为链路共享结构的一个节点(类)*/

    if(c is domain root)then

        d=creat_new_domain(c);/*生成一个新管理域*/

        domainlist.add(d);/*将管理域加入链表*/

    end if

    if(c is leaf)then

        p=find_domain_root(c);/*找到所属管理域根节点*/

        d=p.domain();/*与根节点关联的管理域*/

        /*将该类加入该管理域相应的保证级别链表中*/
        d.guarantee[c.gurantee_class].list.add(c);

        /*将分配带宽累计到该级别分配的带宽中*/
        <!-- SIPO <DP n="5"> -->
        <dp n="c5"/>
       d.guarantee[c.gurantee_class].bandwidth_sum+=c.allot;
   end if
步骤S4增加基于管理域的带宽重分配策略模块,当反馈的有效带宽超过设定阈值时,见步骤S2,带宽先在每个管理域间按共享结构比例分配,每个管理域中,根据用户分配政策,将域内各叶子类分为不同的保证级,采用分级带宽重分配策略进行带宽重分配,分级带宽重分配策略为:用户的业务流可以分为绝对保证类和弹性保证类,因此可以将各类分为不同保证级别,绝对保证类赋予最高保证级别,这部分任务应由接入控制保证在链路状况最坏的情况下能够保证其足够的带宽,弹性保证类可进一步根据其重要程度分为不同级别,分级带宽重分配策略为,当链路带宽下降时,保证最高级保证级带宽,其所需的带宽先从最低保证级别中获取,如果不能满足再从高一级中获取,直至满足为止,对于弹性保证级别的服务类,如果在上述保证策略完成后还有可以得到一定带宽,则该级别的类按原有的比例分配剩余带宽,满足公平性要求,
假设初始链路带宽为r0,某管理域的分配给最高保证级别的带宽为f0,假设链路带宽变为r1,则为保证原有最高保证级别速率,需要将其调整为f1
f 1 = f 0 r 0 r 1
需要低保证级供给的带宽为:
vf = f 0 ( r 0 r 1 - 1 )
对于某一保证级别假设其初始分配带宽为f′,其包含n个类,初始分配带宽为f1′,f2′,...fn′,其中f′=f1′+f2′+...+fn′,该保证级别需要供给最高级别Δf带宽,则该级别n个类的带宽分配比例应该变化为fi″(i=1,..n)满足:
f i &prime; &prime; = f i &prime; f &prime; ( f &prime; - Vf ) = f i &prime; ( 1 - Vf f &prime; ) , f &prime; > Vf 0 , f &prime; &le; Vf
实现伪代码如下:
reallocate(V)/*V为调整后速率*/
d=domainlist.gethead();/*取第一个管理域*/
while(d!=NULL)
/*根据公式 Vf = f 0 ( r 0 r 1 - 1 ) 计算绝对保证级别的需要的额外带宽*/
f=d.guarantee[0].bandwidth_sum(BW/V-1)/*BW为链路原始带宽*/
   fs=f
for(i=lowestclass;i>1;i--)/*从最低保证级别开始获取带宽给绝对保证级
(保证级0)*/
   c=d.guarantee[i].list.gethead();
   while(c!=NULL)
/*根据式 f i &prime; &prime; = f i &prime; f &prime; ( f &prime; - Vf ) = f i &prime; ( 1 - Vf f &prime; ) , f &prime; > Vf 0 , f &prime; &le; Vf 调整该级别带宽比例*/
oldallot=c.allot;
if(d.guarantee[i].bandwidth_sum>f)
c.allot=c.allot_origin(1-f/d.guarantee[i].bandwidth_sum);
else
    c.allot=0;
end if
diff=oldallot-c.allot;
p=c.parent
while(p!=NULL&&p is not domain root)
   p.allot-=diff;
end while
c=d.guarantee[i].list.getnext();
   end while
  if(f>d.guarantee[i].bandwidth_sum)then
f=f-d.guarantee[i].bandwidth_sum
    else
        f=0;
    end
end for
   if(f>0)then
    notif_error();/*通知未能满足客户绝对保证*/
   end
   /*调整级别0(绝对保证级)的带宽比例*/
f=fs-f;/计算绝对保证级实得带宽比例(并不一定获得所需带宽)*/
  c=d.guarantee[0].list.gethead();
  while(c!=NULL)
   oldallot=c.allot;
   c.allot=c.allot_origin(1-f/d.guarantee[0].bandwidth_sum);
   diff=oldallot-c.allot;
   p=c.parent
   while(p!=NULL && p is not domain root)
      p.allot-=diff;
   end while
   c=d.guarantee[0].list.getnext();
      end while
   d=domainlist.getnext();/*取下一管理域*/
  end while。
CNB2005101306890A 2005-12-21 2005-12-21 适于带宽变化的链路分层共享和管理域的带宽重分配方法 Expired - Fee Related CN100418313C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101306890A CN100418313C (zh) 2005-12-21 2005-12-21 适于带宽变化的链路分层共享和管理域的带宽重分配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101306890A CN100418313C (zh) 2005-12-21 2005-12-21 适于带宽变化的链路分层共享和管理域的带宽重分配方法

Publications (2)

Publication Number Publication Date
CN1787424A true CN1787424A (zh) 2006-06-14
CN100418313C CN100418313C (zh) 2008-09-10

Family

ID=36784756

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101306890A Expired - Fee Related CN100418313C (zh) 2005-12-21 2005-12-21 适于带宽变化的链路分层共享和管理域的带宽重分配方法

Country Status (1)

Country Link
CN (1) CN100418313C (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100466628C (zh) * 2006-11-13 2009-03-04 华为技术有限公司 配置缓存队列门限的方法及装置、流量控制的方法及装置
CN101478436B (zh) * 2009-01-21 2011-01-19 杭州华三通信技术有限公司 一种输入输出调度方法和装置
CN102056212A (zh) * 2009-11-05 2011-05-11 中国移动通信集团山东有限公司 检测上网速率的方法及网络侧设备
CN101547478B (zh) * 2009-05-12 2011-09-21 华为技术有限公司 节点带宽管理方法、装置及系统
CN102388575A (zh) * 2008-02-08 2012-03-21 思科技术公司 在订户同意情况下的动态dsl线路带宽管理
CN102611605A (zh) * 2011-01-20 2012-07-25 华为技术有限公司 一种数据交换网的调度方法、装置和系统
CN102638401A (zh) * 2012-03-27 2012-08-15 中国科学院声学研究所 一种区分服务体系结构网络的带宽分配方法
CN102685077A (zh) * 2011-03-16 2012-09-19 腾讯科技(深圳)有限公司 一种处理网络数据包的方法和装置
CN102833158A (zh) * 2012-08-15 2012-12-19 北京神州绿盟信息安全科技股份有限公司 网络数据发送方法和装置、网络数据系统
CN102859491A (zh) * 2010-04-23 2013-01-02 国际商业机器公司 通过利用接收侧缩放(rss)软件为网络适配器动态添加或移除队列对的资源关联
CN103312631A (zh) * 2013-05-29 2013-09-18 深圳市普联技术有限公司 一种带宽控制方法及路由器
CN103401808A (zh) * 2013-07-04 2013-11-20 中国船舶重工集团公司第七二二研究所 高性能同轴网络带宽分配方法及装置
CN104022965A (zh) * 2014-05-20 2014-09-03 华为技术有限公司 一种报文出队调度的方法和设备
CN104488239A (zh) * 2012-05-18 2015-04-01 阿尔卡特朗讯公司 用于实现可变瓶颈速率的主动队列管理增强的系统和方法
CN106961398A (zh) * 2017-05-26 2017-07-18 郑州云海信息技术有限公司 一种分布式文件系统的带宽控制方法及装置
CN107113290A (zh) * 2014-09-17 2017-08-29 阿普福米克斯有限公司 向数据中心应用提供服务质量
CN108063734A (zh) * 2017-12-05 2018-05-22 郑州云海信息技术有限公司 一种网络资源调度方法及装置
CN110430112A (zh) * 2019-06-26 2019-11-08 苏州浪潮智能科技有限公司 一种实现虚拟机网络io优先级的方法和装置
CN111262799A (zh) * 2020-01-14 2020-06-09 燕山大学 一种用于工业现场通信的自适应带宽调整的方法
CN111371705A (zh) * 2020-02-24 2020-07-03 维沃移动通信有限公司 一种下载任务执行方法及电子设备
US10868742B2 (en) 2017-03-29 2020-12-15 Juniper Networks, Inc. Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control
US11068314B2 (en) 2017-03-29 2021-07-20 Juniper Networks, Inc. Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment
US11140039B2 (en) 2013-09-26 2021-10-05 Appformix Inc. Policy implementation and management
CN114338523A (zh) * 2014-12-30 2022-04-12 华为技术有限公司 一种报文转发方法和装置
US11323327B1 (en) 2017-04-19 2022-05-03 Juniper Networks, Inc. Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles
US11658874B2 (en) 2015-07-29 2023-05-23 Juniper Networks, Inc. Assessment of operational states of a computing environment
WO2023174081A1 (zh) * 2022-03-16 2023-09-21 华为技术有限公司 一种队列调度的方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE508284C2 (sv) * 1996-03-15 1998-09-21 Ericsson Telefon Ab L M Metod och anordning för flödesstyrning i paketförmedlande nät
US6038217A (en) * 1996-06-27 2000-03-14 Xerox Corporation Rate shaping in per-flow output queued routing mechanisms for available bit rate (ABR) service in networks having segmented ABR control loops
US6990113B1 (en) * 2000-09-08 2006-01-24 Mitsubishi Electric Research Labs., Inc. Adaptive-weighted packet scheduler for supporting premium service in a communications network
KR100503417B1 (ko) * 2002-12-20 2005-07-22 학교법인 한국정보통신학원 이더넷 수동형 광 네트워크에서의 QoS 보장형 스케쥴링시스템 및 방법
CN1206835C (zh) * 2003-04-11 2005-06-15 华中科技大学 一种数据包的调度方法
EP1575224A1 (en) * 2004-03-09 2005-09-14 Matsushita Electric Industrial Co., Ltd. Packet output-controlling device

Cited By (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100466628C (zh) * 2006-11-13 2009-03-04 华为技术有限公司 配置缓存队列门限的方法及装置、流量控制的方法及装置
CN102388575A (zh) * 2008-02-08 2012-03-21 思科技术公司 在订户同意情况下的动态dsl线路带宽管理
CN102388575B (zh) * 2008-02-08 2015-11-25 思科技术公司 在订户同意情况下的动态dsl线路带宽管理方法、系统及设备
CN101478436B (zh) * 2009-01-21 2011-01-19 杭州华三通信技术有限公司 一种输入输出调度方法和装置
CN101547478B (zh) * 2009-05-12 2011-09-21 华为技术有限公司 节点带宽管理方法、装置及系统
CN102056212B (zh) * 2009-11-05 2014-04-09 中国移动通信集团山东有限公司 检测上网速率的方法及网络侧设备
CN102056212A (zh) * 2009-11-05 2011-05-11 中国移动通信集团山东有限公司 检测上网速率的方法及网络侧设备
CN102859491A (zh) * 2010-04-23 2013-01-02 国际商业机器公司 通过利用接收侧缩放(rss)软件为网络适配器动态添加或移除队列对的资源关联
CN102611605A (zh) * 2011-01-20 2012-07-25 华为技术有限公司 一种数据交换网的调度方法、装置和系统
CN102611605B (zh) * 2011-01-20 2015-02-25 华为技术有限公司 一种数据交换网的调度方法、装置和系统
CN102685077A (zh) * 2011-03-16 2012-09-19 腾讯科技(深圳)有限公司 一种处理网络数据包的方法和装置
CN102685077B (zh) * 2011-03-16 2015-04-29 腾讯科技(深圳)有限公司 一种处理网络数据包的方法和装置
CN102638401B (zh) * 2012-03-27 2014-09-10 中国科学院声学研究所 一种区分服务体系结构网络的带宽分配方法
CN102638401A (zh) * 2012-03-27 2012-08-15 中国科学院声学研究所 一种区分服务体系结构网络的带宽分配方法
CN104488239B (zh) * 2012-05-18 2017-09-22 阿尔卡特朗讯公司 用于实现可变瓶颈速率的主动队列管理增强的系统和方法
CN104488239A (zh) * 2012-05-18 2015-04-01 阿尔卡特朗讯公司 用于实现可变瓶颈速率的主动队列管理增强的系统和方法
CN102833158B (zh) * 2012-08-15 2015-05-20 北京神州绿盟信息安全科技股份有限公司 网络数据发送方法和装置、网络数据系统
CN102833158A (zh) * 2012-08-15 2012-12-19 北京神州绿盟信息安全科技股份有限公司 网络数据发送方法和装置、网络数据系统
CN103312631B (zh) * 2013-05-29 2016-05-18 普联技术有限公司 一种带宽控制方法及路由器
CN103312631A (zh) * 2013-05-29 2013-09-18 深圳市普联技术有限公司 一种带宽控制方法及路由器
CN103401808B (zh) * 2013-07-04 2016-09-28 中国船舶重工集团公司第七二二研究所 高性能同轴网络带宽分配方法及装置
CN103401808A (zh) * 2013-07-04 2013-11-20 中国船舶重工集团公司第七二二研究所 高性能同轴网络带宽分配方法及装置
US12021692B2 (en) 2013-09-26 2024-06-25 Juniper Networks, Inc. Policy implementation and management
US11140039B2 (en) 2013-09-26 2021-10-05 Appformix Inc. Policy implementation and management
CN104022965A (zh) * 2014-05-20 2014-09-03 华为技术有限公司 一种报文出队调度的方法和设备
CN104022965B (zh) * 2014-05-20 2017-12-22 华为技术有限公司 一种报文出队调度的方法和设备
CN107113290A (zh) * 2014-09-17 2017-08-29 阿普福米克斯有限公司 向数据中心应用提供服务质量
CN107113290B (zh) * 2014-09-17 2020-07-28 阿普福米克斯有限公司 用于带宽管理的方法和系统
CN114338523A (zh) * 2014-12-30 2022-04-12 华为技术有限公司 一种报文转发方法和装置
US11658874B2 (en) 2015-07-29 2023-05-23 Juniper Networks, Inc. Assessment of operational states of a computing environment
US11068314B2 (en) 2017-03-29 2021-07-20 Juniper Networks, Inc. Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment
US10868742B2 (en) 2017-03-29 2020-12-15 Juniper Networks, Inc. Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control
US11240128B2 (en) 2017-03-29 2022-02-01 Juniper Networks, Inc. Policy controller for distributed virtualization infrastructure element monitoring
US11888714B2 (en) 2017-03-29 2024-01-30 Juniper Networks, Inc. Policy controller for distributed virtualization infrastructure element monitoring
US12021693B1 (en) 2017-04-19 2024-06-25 Juniper Networks, Inc. Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles
US11323327B1 (en) 2017-04-19 2022-05-03 Juniper Networks, Inc. Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles
CN106961398B (zh) * 2017-05-26 2020-03-06 郑州云海信息技术有限公司 一种分布式文件系统的带宽控制方法及装置
CN106961398A (zh) * 2017-05-26 2017-07-18 郑州云海信息技术有限公司 一种分布式文件系统的带宽控制方法及装置
CN108063734A (zh) * 2017-12-05 2018-05-22 郑州云海信息技术有限公司 一种网络资源调度方法及装置
CN110430112A (zh) * 2019-06-26 2019-11-08 苏州浪潮智能科技有限公司 一种实现虚拟机网络io优先级的方法和装置
CN111262799B (zh) * 2020-01-14 2022-03-22 燕山大学 一种用于工业现场通信的自适应带宽调整的方法
CN111262799A (zh) * 2020-01-14 2020-06-09 燕山大学 一种用于工业现场通信的自适应带宽调整的方法
CN111371705B (zh) * 2020-02-24 2023-09-12 维沃移动通信有限公司 一种下载任务执行方法及电子设备
CN111371705A (zh) * 2020-02-24 2020-07-03 维沃移动通信有限公司 一种下载任务执行方法及电子设备
WO2023174081A1 (zh) * 2022-03-16 2023-09-21 华为技术有限公司 一种队列调度的方法及装置

Also Published As

Publication number Publication date
CN100418313C (zh) 2008-09-10

Similar Documents

Publication Publication Date Title
CN1787424A (zh) 适于带宽变化的链路分层共享和管理域的带宽重分配方法
CN1258900C (zh) 路由设备
CN1432243A (zh) 数据包丢弃
CN1853385A (zh) 通过基站确定服务质量指标来调度来自用户设备的上行链路传输的方法,以及相应的基站、用户设备和通信系统
CN1518278A (zh) 网络通信中实现资源分配的系统及其方法
CN1829121A (zh) 分组发送控制装置、分组发送控制方法
CN1910870A (zh) 负载分散方法、节点和控制程序
EP1130872A1 (en) Method of packet scheduling, with improved delay performance, for wireless networks
CN1500337A (zh) 用于改进队列的方法及设备
CN1662074A (zh) 数据包发送控制装置及数据包发送控制方法
CN1921444A (zh) 基于服务质量的分级包调度及资源分配方法
CN1929441A (zh) 具有通信质量控制功能的包中继装置
CN1636341A (zh) 将数据流按比例多路复用成一个数据流的方法和设备
CN101077010A (zh) 用于通过无线网络的数字视频传输的方法和系统
CN1436014A (zh) 基站、控制装置、通信系统和通信方法
CN1853367A (zh) 无线通信装置和副载波分配方法
CN1575614A (zh) 用于优化网络性能的方法和系统
CN1391671A (zh) 计算环境中的工作负载管理
CN1708951A (zh) 通信管理方法、中央控制台、通信台、通信管理程序及记录媒体
CN1747467A (zh) 一种ngn中的资源和准入控制子系统及方法
US20110145449A1 (en) Differentiated Storage QoS
CN102223300A (zh) 一种网络设备中多媒体数据的传输控制方法
CN1610337A (zh) 分组发送控制装置和分组发送控制方法
CN1885824A (zh) 主动队列管理的分类器实现方法
Guo et al. Dynamic quality adaptation and bandwidth allocation for adaptive streaming over time-varying wireless networks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HANGZHOU AIPU SOFTWARE CO., LTD.

Free format text: FORMER OWNER: INSTITUTE OF COMPUTING TECHNOLOGY HINESE ACADEMY OF SCIENCES

Effective date: 20130104

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100080 HAIDIAN, BEIJING TO: 310015 HANGZHOU, ZHEJIANG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20130104

Address after: Hangzhou City, Zhejiang province 310015 Gongshu District Dengyun Road No. 518 building 3 room 1118

Patentee after: Hangzhou Pu Pu Software Co., Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080910

Termination date: 20141221

EXPY Termination of patent right or utility model