发明内容
本发明提供分布式系统中的带宽控制方法及业务板,以实现采用交换网的分布式系统的带宽控制。
本发明的技术方案是这样实现的:
一种分布式系统中的带宽控制方法,所述分布式系统至少包括两个业务板,每个业务板为其它每个业务板设置一个令牌桶,包括:
每个业务板分别统计其它各业务板发来的流量,将本业务板的出接口带宽分配给其它各业务板,并将分配给其它各业务板的带宽分别转换成令牌生成速率,将各令牌生成速率分别发送给其它各业务板;
每个业务板根据其它业务板发来的令牌生成速率,更新自身为发来该令牌生成速率的业务板设置的令牌桶中的令牌数。
预先设置带宽分配周期,
所述每个业务板分别统计其它各业务板发来的流量为:
每个业务板在每个带宽分配周期到来时,根据上一带宽分配周期内其它各业务板发来的流量,将出接口带宽分配给其它各业务板。
所述每个业务板为其它每个业务板设置一个令牌桶进一步包括:
设置每个令牌桶的容量,该容量满足:
Bmax*n*(n-1)≤f,
其中,Bmax为令牌桶的容量,n为分布式系统中的业务板数目,f为分布式系统中的交换设备的缓存大小。
所述将分配给其它各业务板的带宽分别转换成令牌生成速率为:
hi=Bwi*t,
其中,Bwi表示分配给其它各业务板中的第i个业务板的带宽,t为令牌生成周期,hi为Bwi转换成的令牌生成速率。
所述每个业务板根据其它业务板发来的令牌生成速率,更新自身为发来令牌生成速率的业务板设置的令牌桶中的令牌数包括:
a、业务板确定自身为发来令牌生成速率的业务板设置的令牌桶的令牌生成周期到来,判断当前是否有报文发送给发来令牌生成速率的业务板,若有,执行步骤b;若没有,执行步骤c;
b、业务板判断Bcur+h-m<Bmax是否成立,若是,将Bcur更新为Bcur+h-m;否则,将Bcur更新为Bmax,结束本流程;
c、业务板判断Bcur+h<Bmax是否成立,若是,将Bcur更新为B cur+h;否则,将Bcur更新为Bmax,
其中,Bmax为本业务板为发来令牌生成速率的业务板设置的令牌桶的容量,Bcur为本业务板为发来令牌生成速率的业务板设置的令牌桶中的当前令牌数,h为所述其它业务板发来的令牌生成速率即:每个令牌生成周期内生成的令牌数,m为当前本业务板发送给发来令牌生成速率的业务板的报文长度。
一种分布式系统中的业务板,包括:
令牌桶设置模块,为分布式系统中的其它每个业务板设置一个令牌桶;
带宽分配模块,分别统计其它各业务板发来的流量,将本业务板的出接口带宽分配给其它各业务板,并将分配给其它各业务板的带宽分别转换成令牌生成速率,将各令牌生成速率分别发送给其它各业务板;
令牌更新模块,根据其它业务板发来的令牌生成速率,更新自身为发来该令牌生成速率的业务板设置的令牌桶中的令牌数。
所述带宽分配模块包括:流量统计模块、带宽确定模块、令牌生成速率确定模块,其中:
流量统计模块,统计其它各业务板发来的流量;
带宽确定模块,在每个带宽分配周期到来时,从流量统计模块获取最新统计的其它各业务板发来的流量,根据该流量将出接口带宽分配给其它各业务板,将分配给其它各业务板的带宽信息发送给令牌生成速率确定模块;
令牌生成速率确定模块,根据令牌生成周期,将本业务板分配给其它各业务板的带宽转换成令牌生成速率后,分别发送给其它各业务板。
所述令牌更新模块包括:
令牌生成速率记录模块,根据其它各业务板发来的令牌生成速率,更新自身记录的其它各业务板的令牌生成速率;
更新模块,在其它每个业务板的每个令牌生成周期到来时,从令牌生成速率记录模块读取所述其它业务板的令牌生成速率,判断当前本业务板是否有报文发送给所述其它业务板,若有,判断Bcur+h-m<Bmax是否成立,若成立,将Bcur更新为Bcur+h-m;若不成立,将Bcur更新为Bmax;若没有,判断Bcur+h<Bmax是否成立,若是,将Bcur更新为Bcur+h;否则,将Bcur更新为Bmax,
其中,Bmax为本业务板为所述其它业务板设置的令牌桶的容量,Bcur为本业务板为所述其它业务板设置的令牌桶中的当前令牌数,h为所述其它业务板发来的令牌数即:每个令牌生成周期生成的令牌数,m为当前本业务板发送给所述其它业务板的报文长度。
与现有技术相比,本发明通过分布式系统中的每个业务板为其它每个业务板设置一个令牌桶,每个业务板分别统计其它各业务板发来的流量,将本业务板的出接口带宽分配给其它各业务板,并将分配给其它各业务板的带宽分别转换成令牌生成速率,将各令牌生成速率分别发送给其它各业务板;每个业务板根据其它业务板发来的令牌生成速率,更新自身为发来该令牌生成速率的业务板设置的令牌桶中的令牌数,使得能够出接口带宽能够被合理地分配给各入接口使用,实现了对使用交换网的分布式系统的动态带宽控制。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图2为本发明实施例提供的在采用交换网的分布式系统中利用令牌桶进行带宽控制的流程图,如图2所示,其具体步骤如下:
步骤201:分布式系统中的每个业务板在自身为其它每个业务板分别设置一个令牌桶。
例如:若分布式系统中包含n(n≥2)个业务板,则每个业务板要设置(n-1)个令牌桶。
步骤202:分布式系统中的每个业务板实时根据其它各业务板发来的流量,将自身出接口带宽分配给其它各业务板。
步骤203:业务板将分配给其它各业务板的带宽分别转换成令牌生成速率,将各令牌生成速率分别发送给其它各业务板。
步骤204:业务板根据其它各业务板发来的令牌生成速率,更新自身为发来该令牌生成速率的业务板设置的令牌桶中的令牌数。
可见,对于每个业务板来说,其主要作两方面的工作:
一、实时根据其它各业务板的流量,将自身出接口带宽分配给其它各业务板,并将分配给其它各业务板的带宽分别转换成令牌生成速率;
二、根据其它业务板发来的令牌生成速率,更新自身为发来该令牌生成速率的业务板设置的令牌桶中的令牌数。
以下对该两方面工作分别进行说明:
图3为本发明实施例提供的在采用交换网的分布式系统中业务板为其它业务板分配带宽的流程图,如图3所示,其具体步骤如下:
步骤301:设单位令牌代表一个比特的数据,系统要求流控精细程度为g比特/秒,则令牌生成周期t为:
设置带宽分配周期T。
步骤302:每个业务板在自身为其它每个业务板设置一个令牌桶,每个令牌桶的容量Bmax为:Bmax*n*(n-1)≤f,每个令牌桶中的初始令牌数为B0。
其中,n为分布式系统中的业务板的数目,f为分布式系统中的交换设备的缓存大小,f的单位为比特。
在采用交换网的分布式系统中,每个业务板都通过交换设备与其它业务板进行数据或报文交互。
步骤303:每个业务板在每个带宽分配周期到来时,分别统计上一带宽分配周期内其它每个业务板到本业务板的流量,根据该流量将自身的出接口带宽分别分配给其它各业务板。
例如:设分布式系统中有三个业务板:a、b和c,业务板c当前出接口带宽为10G比特/秒,在上一带宽分配周期内,业务板a、b到业务板c的流量相同,则业务板c将10G比特/秒的带宽平均分配给业务板a、b,即各为5G比特/秒。
步骤304:业务板将分配给其它各业务板的带宽分别转换为令牌生成速率。
例如:设业务板b分配给业务板a的带宽为Bw比特/秒,则Bw对应的令牌生成速率h为:h=Bw*t,即:业务板a上为业务板b设置的的令牌桶在此后每个令牌生成周期内需新生成的令牌数为Bw*t。
步骤305:业务板将其它各业务板对应的令牌生成速率通过控制报文分别发送给其它各业务板。
图4为本发明实施例提供的在采用交换网的分布式系统中业务板根据其它业务板为自身分配的带宽更新令牌桶的流程图,如图4所示,其具体步骤如下:
步骤401:初始化每个令牌桶的令牌生成速率h为:h=h0,初始化每个令牌桶内的当前令牌数Bcur为:Bcur=B0。
h表示每个令牌生成周期内生成的令牌数,其单位为个/t秒,t为令牌生成周期。
步骤402:分布式系统中的一个业务板如:业务板a接收到一个其它业务板如:业务板b发来的控制报文,以报文中携带的令牌生成速率h更新自身保存的为业务板b设置的令牌桶的h。
步骤403:业务板a判断令牌生成周期是否到来,若是,执行步骤406;否则,执行步骤404。
步骤404:业务板a判断当前是否有报文发送给业务板b,若是,执行步骤405;否则,返回步骤402或403。
步骤405:业务板a将自身为业务板b设置的令牌桶的Bcur的值更新为Bcur-n*8,其中,n为本次发送的报文字节数,返回步骤402或403。
步骤406:业务板a判断当前是否有报文发送给业务板b,若是,执行步骤407;否则,执行步骤410。
步骤407:业务板a判断Bcur+h-n*8>Bmax是否成立,若是,执行步骤410;否则,执行步骤408。
步骤408:业务板a将Bcur的值更新为Bcur+h-n*8,返回步骤402或403。
步骤409:业务板a判断Bcur+h>Bmax是否成立,若是,执行步骤410;否则,执行步骤411。
步骤410:业务板a将Bcur的值更新为Bmax,返回步骤402或403。
步骤411:业务板a将Bcur的值更新为Bcur+h,返回步骤402或403。
对于分布式系统中的一个业务板a来说,当其要向其它业务板如:业务板b发送报文时,先判断自身为业务板b设置的令牌桶中的令牌数Bcur是否不小于n*8,若是,将报文发送出去,并将Bcur的值更新为Bcur-n*8;否则,丢弃报文或缓存,其中,n为待发送报文的字节数。
需要指出的是,在图3~4所示实施例中,设定单位令牌代表一个比特的数据,当单位令牌代表其它数据量如:一个字节的数据时,其实现原理可由图3~4直接地、毫无疑义地得到,在此不再一一赘述。
图5为本发明实施例提供的采用交换网的分布式系统中的业务板,如图5所示,其主要包括:令牌桶设置模块51、带宽分配模块52和令牌更新模块53,其中:
令牌桶设置模块51:为分布式系统中的其它每个业务板设置一个令牌桶。
带宽分配模块52:分别统计其它各业务板发来的流量,将本业务板的出接口带宽分配给其它各业务板,并将分配给其它各业务板的带宽分别转换成令牌生成速率,将各令牌生成速率分别发送给其它各业务板。
令牌更新模块53:根据其它业务板发来的令牌生成速率,更新自身为发来该令牌生成速率的业务板设置的令牌桶中的令牌数。
如图6所示,带宽分配模块52可包括:流量统计模块521、带宽确定模块522和令牌生成速率确定模块523,其中:
流量统计模块521:周期性地统计其它各业务板发给本业务板的流量。
带宽确定模块522:在每个带宽分配周期到来时,从流量统计模块521获取最新统计的其它各业务板发给本业务板的流量,根据该流量将出接口带宽分配给其它各业务板,将分配给其它各业务板的带宽信息发送给令牌生成速率确定模块523。
令牌生成速率确定模块523:接收带宽确定模块522发来的本业务板分配给其它各业务板的带宽信息,根据令牌生成周期,将本业务板分配给其它各业务板的带宽转换成令牌生成速率后,分别发送给其它各业务板。
如图7所示,令牌更新模块53包括:令牌生成速率记录模块531和更新模块532,其中:
令牌生成速率记录模块531:接收其它各业务板发来的令牌生成速率,根据该令牌生成速率,更新自身记录的其它各业务板的令牌生成速率。
更新模块532:在其它每个业务板的每个令牌生成周期到来时,从令牌生成速率记录模块531读取所述其它业务板的令牌生成速率,判断当前本业务板是否有报文发送给所述其它业务板,若有,判断Bcur+h-m<Bmax是否成立,若成立,将Bcur更新为Bcur+h-m;若不成立,将Bcur更新为Bmax;若没有,判断Bcur+h<Bmax是否成立,若是,将Bcur更新为Bcur+h;否则,将Bcur更新为Bmax,
其中,Bmax为本业务板为所述其它业务板设置的令牌桶的容量,Bcur为本业务板为所述其它业务板设置的令牌桶中的当前令牌数,h为所述其它业务板发来的令牌生成速率,m为当前本业务板发送给所述其它业务板的报文长度。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。