发明内容
本发明的主要目的在于提供一种动态带宽资源分配方法及装置,以至少解决上述问题。
根据本发明的一个方面,提供了一种动态带宽资源分配方法,包括:判定当前DBA周期需要为光网络单元分配的带宽大于预设的额定带宽;为光网络单元分配大于额定带宽的带宽资源。
优选地,判定当前DBA周期需要为光网络单元分配的带宽大于预设的额定带宽包括:在当前DBA周期到达时,获取光网络单元上报的T-CONT的动态带宽报告;根据动态带宽报告确定当前DBA周期需要分配的带宽;确定当前DBA周期需要分配的带宽大于额定带宽。
优选地,为光网络单元分配大于额定带宽的带宽资源包括:根据需要分配的带宽与额定带宽,确定需要从预设的预留带宽中预借的预借带宽;为光网络单元分配带宽资源,其中,分配的带宽资源的数量为额定带宽与预借带宽之和。
优选地,根据需要分配的带宽与额定带宽,确定需要从预设的预留带宽中预借的预借带宽包括:根据需要分配的带宽与额定带宽,确定需要预借的预借带宽为额定带宽的N倍,其中,预留带宽的初始值为额定带宽的整数倍,预留带宽当前剩余的带宽为M倍额定带宽,M和N为正整数,且M≥N。
优选地,确定需要预借的预借带宽为额定带宽的N倍包括:获取需要分配的带宽与额定带宽之商的整数部分X和余数部分Y;根据X和Y的取值,确定需要预借N′倍额定带宽以满足需要分配的带宽;判断N′是否大于M,如果是,则N=M,如果不是,则N=N′。
优选地,确定需要预借N′倍额定带宽以满足需要分配的带宽包括:如果X=0,则N′的值为0;如果X≥1,则进行判断Y与预先设定的预借门限TH与额定带宽bmax的乘积做大小比较,如果Y>TH*bmax,则N′=X;如果Y≤TH*bmax,则N′=X-1。
优选地,该方法还包括:根据动态带宽报告确定当前DBA周期需要分配的带宽为0;判断预设的预留带宽的剩余带宽是否为初始值,如果不是,则预留带宽的剩余带宽增加当前DBA周期能够分配的额定带宽。
优选地,判定当前动态带宽资源分配DBA周期需要为光网络单元分配的带宽大于预设的额定带宽之前,该方法还包括:获取n个连续DBA周期内需要传输的流量P,其中,n个DBA周期包括当前DBA周期,n为大于1的整数;确定n个连续DBA周期内需要突破的k个字节,其中,k为流量P与n个DBA周期内的总额定带宽之差,k为小于n的正整数;确定n个连续DBA周期内的m个DBA周期需要传输的流量大于额定带宽,其中,m个DBA周期中各个DBA周期需要传输的流量与额定带宽之差的总数为k,m为小于或等于k的正整数;判定当前DBA周期需要为光网络单元分配的带宽大于预设的额定带宽包括:判断当前DBA周期是否为m个DBA周期中的一个,如果是,则判定当前DBA周期需要为光网络单元分配的带宽大于额定带宽。
优选地,连续DBA周期个数n的值为8。
优选地,m个DBA周期中每个DBA周期需要传输的流量与额定带宽之差为1。
根据本发明的另一方面,提供了一种动态带宽资源分配方法装置,包括:判断模块,用于判断当前DBA周期需要为光网络单元分配的带宽是否大于预设的额定带宽;分配模块,用于在判断模块的判断结果为是的情况下,为光网络单元分配大于额定带宽的带宽资源,在判断模块的判断结果为否的情况下,为光网络单元分配当前DBA周期需要为光网络单元分配的带宽。
优选地,该装置还包括:第一获取模块,用于在当前DBA周期到达时,获取光网络单元上报的传输容器T-CONT的动态带宽报告;第一确定模块,用于根据动态带宽报告确定当前DBA周期需要分配的带宽。
优选地,该装置还包括:第二获取模块,用于获取n个连续DBA周期内需要传输的流量P,其中,n个DBA周期包括当前DBA周期,n为大于1的整数;第二确定模块,用于确定n个连续DBA周期内需要突破的k个字节,其中,k为流量P与n个DBA周期内的总额定带宽之差,k为小于n的正整数;第三确定模块,用于确定n个连续DBA周期内的m个DBA周期需要传输的流量大于额定带宽,其中,m个DBA周期中各个DBA周期需要传输的流量与额定带宽之差的总数为k,m为小于或等于k的正整数;判断模块,用于判断当前DBA周期是否为m个DBA周期中的一个,如果是,则判定当前DBA周期需要为光网络单元分配的带宽大于额定带宽。
通过本发明,采用瞬间突破预先设定的额定带宽方法,解决了当以太网数据包大范围波动时导致的数据发送延时较大的问题,进而缩小了数据发送的延时,提高了数据传输的效率。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供了一种动态带宽资源分配方法,在该方法中,针对数据传输时出现的大数据包小流量的问题,即带宽不足以传输较大数据包时,容易出现数据发送时延较大的问题,提出一种解决方案,允许在某个DBA周期进行突破,即为光网络单元分配大于预设的额定带宽的资源,以缩小传输时延。
图2是根据本发明实施例的动态带宽资源分配方法的流程图,如图2所示,根据本发明实施例的动态带宽资源分配方法可以包括以下步骤:
步骤S102,判定当前DBA周期需要为光网络单元分配的带宽大于预设的额定带宽;
步骤S104,为该光网络单元分配大于额定带宽的带宽资源。
在本发明实施例中,通过在需要为光网络单元分配的带宽大于预设的额定带宽时,可以突破该额定带宽,为该光网络单元分配大于该额定带宽的带宽资源,从而可以缩短传输时延。
在本发明实施例的优选实施方式中,为了避免某个DBA周期分配的带宽资源过大,而影响其他DBA周期的资源分配,可以对分配的带宽进行限定。在本发明实施例中提供了两种实现方式。其中,第一种实现方式:可以预先设定一个预定大小的预留带宽,在某个DBA周期,如果需要分配的带宽超过额定带宽,则可以从预留带宽中预借一部分带宽,如果当前预留带宽中没有剩余带宽,则不可以再预借带宽,即每个DBA周期最多可以预借预定大小的带宽。第二种实现方式:可以先获取某几个连续DBA周期需要传输的流量,如果该流量大于这几个周期能够传输的最大流量,则可以将多余的流量分配给其中的几个DBA周期,即在这几个DBA周期内分配大于额定带宽的带宽。下面分别对这种两种实现方式进行描述。
对于第一种实现方式,可以通过以下步骤判定当前DBA周期需要为光网络单元分配的带宽是否大于预设的额定带宽(即bmax):
步骤1,在当前DBA周期到达时,获取光网络单元上报的T-CONT的动态带宽报告;
步骤2,根据该动态带宽报告确定当前DBA周期需要分配的带宽,例如,动态带宽报文中上报当前需要分配的带宽为dbru;
步骤3,判断当前DBA周期需要分配的带宽是否大于额定带宽,即判断dbru是否大于bmax,例如,可以计算dbru/bmax的值,再进行判断。
如果dbru大于bmax,则可以通过以下步骤为该光网络单元分配大带宽资源:
步骤1,根据需要分配的带宽与额定带宽,确定需要从预设的预留带宽中预借的预借带宽;
在实际应用中,为了控制总带宽,并且能够保持数据流量平稳,以达到降低数据包发送延时的目的,可以采用一个基于传输容器(Transmission Containers,简称为T-CONT)的20bit位宽的计数器来统计当前T-CONT在1s内的流量,但是这样会占用寄存器和RAM的很多资源,造成资源浪费,为了达到更好的目的,同时保持流量的平稳,每次增加的固定带宽不能太多,才能保证任意1s内的数据流量是一致的才能不导致后续的数据包没有上发的机会。
为了便于与现有技术相适应,在本发明实施例的优选实施方式中,预留带宽可以为额定带宽的整数倍,例如,可以使用一个带宽预借系数M′,代表最多可以预借M′*额定带宽(即现有技术中的最大带宽bmax)的带宽,这个M′的值一般可以设置为10(当然亦可根据实际需要进行配置),即最多可以预借10倍的bmax带宽。虽然预借带宽可能会引入总带宽误差,以1ms DBA分配周期为例,总带宽误差为1%,但这的误差则完全在系统可以接受的范围内,可以预借10倍的bmax带宽,可以在一个DBA分配周期内被借走,也可以分10次被借走,但预借额度被用完后,后续的DBA分配周期就不能再借了。
则在确定需要从预设的预留带宽中预借的预借带宽时,可以先根据需要分配的带宽与额定带宽,确定需要预借的预借带宽为额定带宽的N′倍,然后再根据预留带宽当前剩余的带宽,确定能够预借的预借带宽为额定带宽的N倍。其中,N的取值可以采用以下方式进行确定:
步骤1.1,获取所述需要分配的带宽与所述额定带宽之商的整数部分X和余数部分Y;
步骤1.2,根据X和Y的取值,确定需要预借N′倍所述额定带宽以满足需要分配的带宽;
其中,在本发明实施例的一个优选实施方式中,在确定N′的值时,可以按照以下规则确定:
如果X=0,则N′的值为0;
如果X≥1,则进行判断Y与预先设定的预借门限TH与额定带宽bmax的乘积做大小比较,如果Y>TH*bmax,则N′=X;如果Y≤TH*bmax,则N′=X-1。
当然,实际应用中,也可以采用其它规则确定N′的值。
步骤1.3,判断N′是否大于M,如果是,则N=M,如果不是,则N=N′。
步骤2,为该光网络单元分配带宽资源,其中,分配的带宽资源的数量为额定带宽与预借带宽之和。
同时,为了避免上述被预借的预借带宽在上一个DBA周期用完后,不再放回到预留带宽里造成资源的浪费,本发明实施例还包含一个归还带宽的机制:如果根据当前上报的动态带宽报告确定当前DBA周期需要分配的带宽为0,则进一步判断预留带宽的剩余带宽是否为初始值,如果不是,则预留带宽的剩余带宽增加一倍的额定带宽。
在实际应用中,可在系统内部设置一个基于T-CONT的计数器borrow_cnt,用于记录预借的bmax的个数,假设预留宽带的初始值M设置为10个bmax。初始状态时,borrow_cnt的值为0,说明有10个bmax可以预借,后续DBA分配周期内每借一个bmax,borrow_cnt就做加1操作直到值为10,当borrow_cnt值为10时说明不能再预借,如果某个DBA分配周期内T-CONT上报的需要分配的带宽dbru为0,根据预先设定的协议不需要分配带宽或分配一个最小带宽,borrow_cnt就做减1操作,即归还一个bmax的预留带宽,后续DBA分配周期可以再借一个bmax,依次相减,直到borrow_cnt的值为0,说明预借带宽已经全部还完。如果T-CONT上报的需要分配的带宽dbru大于0,并且小于bmax,则不借也不还,borrow_cnt保持原值。
例如,如图3所示,在本发明实施例中,可以按照以下步骤进行动态带宽资源的分配:
步骤301,在某个DBA分配周期内,T-CONT上报需要分配的带宽为dbru,计算x=dbru/bmax(求模),y=dbru%bmax(求余);
步骤302,判断y是否大于TH*bmax,如果是,则N=x,否则,N=max(x-1,0);
当y值很小时,为了避免过多地预借带宽导致浪费,因此,本发明实施例设置了一个基于全局的预借门限TH,只有当y大于TH*bmax时,余数部分才预借bmax带宽,否则余数部分就不分配带宽,一般情况下TH可以设置为1/2。
步骤303,判断N是否为0,如果是,则执行步骤304,否则执行步骤309;
步骤304,N为0,表示dbru在bmax的范围内,判断dbru值是否为0,如果是,则执行步骤305,否则,执行步骤308;
步骤305,判断borrow_cnt是否为0,如果是,则执行步骤306,否则,执行步骤307;
步骤306,borrow_cnt不作任何处理,表示之前预借的带宽已归还,或之前没有预借带宽,为光网络单元分配的带宽为最小带宽,即BW=min_len;
步骤307,borrow_cnt不为零,则borrow_cnt减1,表示归还了bmax的带宽,分配的带宽也为最小带宽;
步骤308:dbru不为0,表示需要正常分配带宽,分配的带宽为min(dbru,bmax),borrow_cnt保持不变;
步骤309,判断N是否大于0且小于等于M-borrow_cnt,如果是,则表示dbru在可预借的范围内,则执行步骤310,否则,表示dbur超过了当前可预借的最大带宽,执行步骤311;
步骤310,为光网络单元分配的带宽BW为min(dbru,(N+1)*bmax),且borrow_cnt=borrow_cnt+N,表示预留带宽被预借了(N+1)*bmax的带宽;
步骤311,为光网络单元分配的带宽BW为(M-borrow_cnt+1)*bmax,同时borrow_cnt=M,表示预留带宽已经预借完。当带宽被预借完而没有及时归还时,后面的DBA周期内分配的带宽不能超过bmax,直到有一个bmax的预借带宽归还为止。
例如,假设bmax=100字节,M=10,borrow_cnt初始值为0,min_len=30,TH=1/2,请参见表2,表2中列出了不同dbru上报值时的带宽和borrow_cnt值。
表2
dba cycle |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
N |
0 |
2 |
0 |
1 |
0 |
9 |
0 |
0 |
dbru |
90 |
300 |
0 |
200 |
80 |
1000 |
0 |
100 |
BW |
90 |
300 |
30 |
200 |
80 |
900 |
30 |
100 |
borrow_cnt |
0 |
2 |
1 |
2 |
2 |
10 |
9 |
9 |
从上表中可见,在第3和7个DBA周期时,dbru上报值为0,因此分别还了一个bmax的带宽,borrow_cnt作减1操作。而在第6个DBA周期时,dbru上报为1000字节,理论上需要预借9个bmax,而borrow_cnt为2,说明最多只能再借8个bmax了,因此最终的结果是借了8个bmax,再加上当前DBA周期本来就有一个bmax的带宽机会,分配的带宽值为900字节,还有100字节的数据需要下次才能上发。
在本发明实施方式中,M和TH可以是全局寄存器,所有T-CONT共用这两个参数,每个T-CONT需要单独维护的borrow_cnt需要4bit,并没有占用太多的RAM资源。另外,在计算x和y值时,也不需要单独的除法器和乘法器,由于M值取值范围较小,可以采用设置M组比较器和减法器的方法来计算出x和y值,所占的寄存器资源也不会太多。
对于本发明实施例提供的第二种动态带宽资源分配的实现方式,可以通过以下步骤实现:
步骤1,获取n个连续DBA周期内需要传输的流量P字节,n为大于1的整数;
步骤2,确定n个连续DBA周期内需要突破的k个字节,其中,k为流量P与n个DBA周期内的总额定带宽之差,k为小于n的正整数;
步骤3,确定n个连续DBA周期内的m个DBA周期需要传输的流量大于额定带宽,其中,该m个DBA周期中各个DBA周期需要传输的流量与额定带宽之差的总数为k,即有其中,m为小于或等于k的正整数,Pi为m个DBA周期中第i个DBA周期需要传输的流量,bmax为额定带宽;
步骤4:判断当前DBA周期是否为上述m个DBA周期中的一个,如果是,则判定当前DBA周期需要为光网络单元分配的带宽大于额定带宽,即为在当前DBA周期为光网络单元分配上述步骤3确定的该DBA周期需要传输的流量相当的带宽。
在本发明实施例的一个优选实施方式中,上述m个DBA周期中每个DBA周期需要传输的流量与额定带宽之差为1个字节。在现有技术中采用一个bmax参数来控制T-CONT的总带宽,每个DBA分配周期内,带宽分配值都不能超过bmax。例如,DBA分配周期为1ms,则该T-CONT的总带宽为1000*bmax,并且bmax最小只能做到以字节为单位,因此,在这种情况下的最小带宽分配精度为8kbps。但是在某些GPON系统客户需求中,带宽分配精度需要最小为1kbps,甚至是100bps,现有技术采用的上述方式不能满足这些GPON系统的需求。而通过本发明实施例提供的上述技术方案,可以实现任意带宽分配精度。
在本发明实施例的一个优选实施方式中,上述m个DBA周期可以等间隔分布,每个DBA周期增加(即突破)的字节数可以相同,即可以看作是每间隔一定DBA周期,增加预定的字节数,例如,图4是本发明优选实施例的动态带宽分配流程图,在该优选实施例中,引入了两个基于T-CONT的参数accur_cycle和参数accur_add,其中accur_cycle用于代表需要动态调整bmax参数的周期数,accur_add用于代表每次bmax增加的字节数,也就是说间隔accur_cycle个DBA分配周期bamx可以增加accur_add个字节,这样就可以实现任意带宽分配精度。在该优选实施例的一个优选实施方式中,通过一个基于T-CONT的DBA周期计数器accur_cnt,计数范围为0~accur_cycle来记录当前的周期数,当accur_cnt计到accur_cycle时,bmax需要加上accur_add值。在本优选实施例中,先获取n个DBA周期的流量,配置需要增加accur_add个字节的DBA周期为n个DBA周期中的第accur_cycle个DBA周期,如图4所示,在该优选实施例中,通过以下步骤进行动态带宽分配:
步骤401,在当前DBA周期到达时,判断accur_cnt是否等于accur_cycle,如果是,则执行步骤402,否则,执行步骤403;
步骤402,计数器accur_cnt归零,当前DBA周期的bmax=bmax+accur_add,对于对于type1和type5类型的T-CONT,fix值(RF/每秒DBA周期个数)也需要加上accur_add值,而对于type2、type3和type5类型的T-CONT,ass(RA/每秒DBA周期个数)也需要加上accur_add值;
步骤403,计数器accur_cnt加1,当前DBA周期的bmax不变,对于对于type1和type5类型的T-CONT,fix值(RF/每秒DBA周期个数)也不变,而对于type2、type3和type5类型的T-CONT,ass(RA/每秒DBA周期个数)也不变。
在本发明实施例的一个优选实施方式,1秒内的带宽配置公式如下(其中,DBA分配周期为1ms,因此,n=1000,BW单位bps):
BW=bmax*1000*8+accur_add/(accur_cycle+1)*8*1000
例如,若需要把tcont0流量配置成801kbps,则要把bmax配置成100,accur_add配置成1,accur_cycle配置成7。
每个DBA周期内的bmax值见表3:
表3
dba cycle |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
bmax |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
101 |
100 |
accur_cnt |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
从上表可见,bmax值在第1~7个DBA周期是100,在第8个DBA周期是101,也就是8个DBA周期内带宽增加了1字节,从而实现1kbps的带宽精度。
根据本发明实施例还提供了一种动态带宽资源分配装置,该装置可以用于实现本发明实施例提供的上述方法,如图5所示,图5是根据本发明实施例的装置示意图,该装置包括:判断模块30,用于判断当前DBA周期需要为光网络单元分配的带宽是否大于预设的额定带宽;分配模块40,用于在判断模块30的判断结果为是的情况下,为该光网络单元分配大于额定带宽的带宽资源,在判断模块30的判断结果为否的情况下,为所述光网络单元分配当前DBA周期需要为光网络单元分配的带宽。
其中,判断模块30首先需要准确获取传输容器T-CONT的动态带宽报告,进而确定当前DBA周期需要分配的带宽,再根据获取到的结果与预先设定的额定带宽做大小比较,得出判断结果。分配模块40根据所述判断模块30的判断结果,向所述光网络单元分配与判断结果相对应的带宽资源。
在具体实施方式中,为了准确获取传输容器T-CONT的动态带宽报告和确定需要分配的带宽,如图6所示,在本发明实施例的一个优选实施方式中,该装置还可以包括:第一获取模块12,用于在当前DBA周期到达时,获取所述光网络单元上报的T-CONT的动态带宽报告;第一确定模块14,用于根据所述动态带宽报告确定所述当前DBA周期需要分配的带宽。在实际应用中,第一确定模块14可以按照上述方法实施例部分的描述进行动态带宽的分配,具体不再赘述。
同时,为了获得可以任意分配的带宽精度,如图7所示,在本发明实施例的另一个优选实施方式中,该装置还可以包括:第二获取模块22,用于获取n个连续DBA周期内需要传输的流量P,其中,所述n个DBA周期包括所述当前DBA周期,n为大于1的整数;第二确定模块24,用于确定所述n个连续DBA周期内需要突破的k个字节,其中,k为流量P与所述n个DBA周期内的总额定带宽之差,k为小于n的正整数;第三确定模块26,用于确定所述n个连续DBA周期内的m个DBA周期需要传输的流量大于所述额定带宽,其中,所述m个DBA周期中各个DBA周期需要传输的流量与所述额定带宽之差的总数为k,m为小于或等于k的正整数;所述判断模块30,用于判断所述当前DBA周期是否为所述m个DBA周期中的一个,如果是,则判定所述当前DBA周期需要为所述光网络单元分配的带宽大于所述额定带宽。
从以上的描述中,可以看出,本发明实现了如下技术效果:采用瞬间突破预先设定的最大带宽和预借带宽的方法,解决了当以太网数据包大范围波动时导致的数据发送延时较大和带宽分配精度不能任意设定的问题,进而达到了在保证数据发送延时较小的同时可以任意调配带宽分配精度的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。