一种基于令牌桶的ACS系统过载保护方法与流程

文档序号:19303141发布日期:2019-12-03 18:34阅读:159来源:国知局
一种基于令牌桶的ACS系统过载保护方法与流程

本发明涉及acs系统技术领域,具体为一种基于令牌桶的acs系统过载保护方法。



背景技术:

cwmp(cpewanmanagementprotocol,cpe广域网管理协议)是由dsl(digitalsubscriber'sline,数字用户线路)论坛发起开发的技术规范之一,编号为tr-069,所以又被称为tr-069协议。它提供了对下一代网络中家庭网络设备进行管理配置的通用框架、消息规范、管理方法和数据模型。

cwmp主要应用于dsl接入网络环境。在dsl接入网络中,由于用户设备数量繁多、部署分散,通常位于用户侧,不易进行设备的管理和维护,cwmp提出通过acs(auto-configurationserver,自动配置服务器)对cpe(customerpremisesequipment,用户侧设备)进行远程集中管理,解决cpe设备的管理困难,节约维护成本,提高问题解决效率。

现有acs系统一般采用架设反向代理等方式在系统过载时进行限流,适用于一般网站的http限流。tr069虽然基于http,但tr069与一般意义上的基于http网站应用存在较大差异。

1,tr069协议是基于状态机的:按常见方法限流,很容易出现数据传输一半,突然中断的情况。

2,tr069协议的重连机制:在cpe设备连接失败后,设备会立即尝试重新连接,这更增加了系统的过载。所以,这个时候,需要尽可能的给cpe一个响应,防止重连接的发生。



技术实现要素:

针对上述问题,本发明提供了一种基于令牌桶的acs系统过载保护方法,能够有效的分配acs系统资源,减轻acs系统服务压力。

其技术方案是这样的:一种基于令牌桶的acs系统过载保护方法,其特征在于,包括以下步骤:

在acs系统中建立两个令牌桶:全速令牌桶和半速令牌桶,全速令牌桶中注入一级令牌,半速令牌桶中注入二级令牌;

针对cpe设备向acs系统发出的cpe请求,尝试从全速令牌桶中获取一级令牌,获取一级令牌成功,则执行全速tr069请求,按标准流程处理tr069业务;

获取一级令牌失败,则再尝试从半速令牌桶获取二级令牌,获取二级令牌成功,则执行半速tr069请求,处理inform信息;

获取二级令牌失败,acs系统输出http403应答,表示acs系统禁止请求。

进一步的,包括以下步骤:

步骤1:在acs系统中建立两个令牌桶:全速令牌桶和半速令牌桶,全速令牌桶中注入一级令牌,半速令牌桶中注入二级令牌;

步骤2:根据acs系统的硬件使用率,分别确定全速令牌桶和半速令牌桶的桶深度和注入的令牌数;

步骤3:cpe设备访问acs系统发出cpe请求,acs系统尝试取得cpe请求的cookie中存储的令牌,若获取成功,则执行步骤7,否则执行步骤4;

步骤4:尝试从全速令牌桶获取一级令牌,判断全速令牌桶中存在的一级令牌数是否足够发送接收cpe请求,如果一级令牌数量足够则获取成功,执行步骤8,否则执行步骤5;

步骤5:尝试从半速令牌桶桶获取二级令牌,判断半速令牌桶中存在的二级令牌数是否足够发送接收cpe请求,如果二级令牌数量足够则获取成功,则执行步骤9,否则执行步骤6;

步骤6:生成系统繁忙令牌,执行步骤10;

步骤7:判断当前cpe请求中的cookie中存储的令牌是否是一级令牌,是则执行步骤11,否则执行步骤12;

步骤8:将一级令牌写入cpe请求中的cookie中,继续执行步骤11;

步骤9:将二级令牌写入cpe请求中的cookie中,继续执行步骤13;

步骤10:将系统繁忙令牌写入cpe请求中的cookie中,执行步骤14;

步骤11:acs系统执行全速tr069请求,处理lnfor信息,检查配置,升级,性能参数读取等标志位,下发相关业务;

步骤12:判断当前cpe请求中的cookie中存储的令牌是否是二级令牌,是则执行步骤13,否则执行步骤14;

步骤13:acs系统执行半速tr069请求,处理lnfor信息,禁止下发相关业务;

步骤14:acs系统输出http403应答,表示acs系统禁止请求。

进一步的,步骤2具体包括以下步骤:

步骤201:根据acs系统的硬件使用率,生成合乎当前acs系统的令牌桶的桶深度以及可注入的令牌数,执行步骤202;

步骤202:向令牌桶中注入令牌;如果发现令牌桶中令牌数超出桶深度,设置当前令牌数为桶深度,执行步骤203;

步骤203:判定令牌桶的当前状态,如果正常,继续执行步骤204,否则,执行步骤205;

步骤204:开启延时定时器,如果定时器时间到,执行步骤201;

步骤205:关闭令牌桶。

进一步的,在步骤201中acs系统的硬件使用率包括cpu使用率、内存使用率、硬盘使用率和网络带宽使用率。

进一步的,在步骤201中,根据acs系统的硬件使用率计算得到系统压力值,根据系统压力值计算得到注入令牌桶的令牌数。

进一步的,系统压力值通过以下压力检测评估函数公式计算:

c=(x1*x1r+x2*x2r...+xn*xnr)*nr+oldrat*or

其中,x1为硬件x1的使用率,x1r为硬件x1的使用因子,其中x2为硬件x2的使用率,x2r为硬件x2的使用因子,其中xn为硬件xn的使用率,xnr为硬件xn的使用因子,nr为评估因子,oldrat为上一次评估结果,or为评估因子,满足x1r+x2r+...+xnr=1,nr+or=1;

进一步的,计算注入令牌桶的令牌数通过以下公式计算:

(1-c)*(max-min)+min

其中,c为系统压力值,max为最大注入令牌数,min为最小注入令牌数。

进一步的,根据单项评估函数分别acs系统中各个硬件的单项评估可用率,分别得到acs系统中各个硬件的评估可用率,根据多个单项评估可用率得到系统可用度,根据木桶理论由最低的单项评估可用率确定系统可用度,根据系统可用度,计算得到桶深度。

进一步的,单项评估可用率通过单项评估函数以下公式计算:

(min(max(x,xmin),xmax)-xmin)/(xmax-xmin)

其中为x为x指标实测空闲率,范围为0-1,表示实际的系统硬件的空闲率,xu为x指标的评估可用率,表示根据该检测指标计算出的实际可用率,xu范围为0-1,xmin为x指标的最小实测空闲率,xmin范围为0-1,xmax为x指标的最大实测空闲率,xmax范围为0-1,min是最小值函数,max是最大值函数,min(max(x,xmin),xmax)计算x取值范围只能在xmin-xmax之间;

系统可用度通过以下公式计算:

yu=min([x1u,x2u..........xnu])

其中,yu为系统最终可用度,范围为0-1,min为返回数组最小值计算函数,x1u为根据单指标评估函数计算出的实际x1空闲率,x2u为根据单指标评估函数计算出的实际x2空闲率,xnu为根据单指标评估函数计算出的实际xn空闲率。

进一步的,桶深度通过以下公式计算:

tu=(1-tr)*(yu*(tmax-tmin)+tmin)+tr*tux

其中,tu为最终桶深度,yu为系统可用度,tmax为桶最大深度,tmin为桶最小深度,tr为惯性因子(0-1),tux为前一次计算的桶深度。

本发明的基于令牌桶的acs系统过载保护方法,根据tr069协议的特点,针对cpe设备访问acs系统发出的cpe请求,采用两个速度控制令牌桶,建立全速令牌桶和半速令牌桶,全速令牌桶中注入一级令牌,半速令牌桶中注入二级令牌,其中获取一级令牌的cpe请求,则执行全速tr069请求,按标准流程处理tr069业务,这个时候,cpe完成各种协议规定的最耗时任务;获取一级令牌失败的cpe请求,尝试获取二级令牌,执行半速tr069请求,处理inform信息,这个时候,只执行tr069规定的必须处理inform信息的流程,inform信息处理很快,可以有效防止cpe设备的重复链接,避免acs系统过载,cpe设备不会出现上报接口的异常告警;对以上两种令牌都获取失败的,设定直接认定为系统严重超载,这个时候直接返回http403应答,表示acs系统禁止请求;同时,本发明的令牌桶可以根据acs系统中硬件的使用率,调节令牌桶的深度和注入令牌桶的令牌数,在系统硬件使用率较高时减小令牌桶深度和注入令牌桶的令牌数,在系统硬件使用率较低时增加令牌桶深度和注入令牌桶的令牌数,在不更换acs系统硬件的情况下,提升了acs系统的硬件的处理能力,其方法实现简单,可靠,可以有效的应对在系统过载的处理,增强acs系统的稳定性。

附图说明

图1为本发明的基于令牌桶的acs系统过载保护方法的流程图;

图2为本发明的调节令牌桶的深度和注入令牌桶的令牌数的过程的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

具体实施例1:

见图1、图2,本发明的一种基于令牌桶的acs系统过载保护方法,包括以下步骤:

步骤1:在acs系统中建立两个令牌桶:全速令牌桶和半速令牌桶,全速令牌桶中注入一级令牌,半速令牌桶中注入二级令牌;

步骤2:根据acs系统的硬件使用率,分别确定全速令牌桶和半速令牌桶的桶深度和注入的令牌数。

步骤3:cpe设备访问acs系统发出cpe请求,acs系统尝试取得cpe请求的cookie中存储的令牌,若获取成功,则执行步骤7,否则执行步骤4;

步骤4:尝试从全速令牌桶获取一级令牌,判断全速令牌桶中存在的一级令牌数是否足够发送接收cpe请求,如果一级令牌数量足够则获取成功,执行步骤8,否则执行步骤5;

步骤5:尝试从半速令牌桶桶获取二级令牌,判断半速令牌桶中存在的二级令牌数是否足够发送接收cpe请求,如果二级令牌数量足够则获取成功,则执行步骤9,否则执行步骤6;

步骤6:生成系统繁忙令牌,执行步骤10;

步骤7:判断当前cpe请求中的cookie中存储的令牌是否是一级令牌,是则执行步骤11,否则执行步骤12;

步骤8:将一级令牌写入cpe请求中的cookie中,继续执行步骤11;

步骤9:将二级令牌写入cpe请求中的cookie中,继续执行步骤13;

步骤10:将系统繁忙令牌写入cpe请求中的cookie中,执行步骤14;

步骤11:acs系统执行全速tr069请求,处理lnfor信息,检查配置,升级,性能参数读取等标志位,下发相关业务;

步骤12:判断当前cpe请求中的cookie中存储的令牌是否是二级令牌,是则执行步骤13,否则执行步骤14;

步骤13:acs系统执行半速tr069请求,处理lnfor信息,禁止下发相关业务;

步骤14:acs系统输出http403应答,表示acs系统禁止请求。

其中,步骤2具体包括以下步骤:

步骤201:根据acs系统的硬件使用率,生成合乎当前acs系统的令牌桶的桶深度以及可注入的令牌数,执行步骤202;

步骤202:向令牌桶中注入令牌;如果发现令牌桶中令牌数超出桶深度,设置当前令牌数为桶深度,执行步骤203;

步骤203:判定令牌桶的当前状态,如果正常,继续执行步骤204,否则,执行

步骤204:开启延时定时器,如果定时器时间到,执行步骤201;

步骤205:关闭令牌桶。

在步骤201中,acs系统的硬件使用率包括cpu使用率和内存使用率;根据系统的硬件使用率计算得到系统压力值,根据系统压力值计算得到注入令牌桶的令牌数,系统压力值通过以下压力检测评估函数公式计算:

系统压力值通过以下压力检测评估函数公式计算:

c=(x1*x1r+x2*x2r)*nr+oldrat*or

其中x1为cpu的使用率,x1r为cpu的使用因子,其中x2为内存的使用率,x2r为内存的使用因子,nr为评估因子,oldrat为上一次评估结果,or为评估因子,满足x1r+x2r=1,nr+or=1;

算注入令牌桶的令牌数通过以下公式计算:

(1-c)*(max-min)+min

其中,c为系统压力值,max为最大注入令牌数,min为最小注入令牌数。

根据单项评估函数分别计算系统中硬件的单项评估可用率,分别得到cpu和内存的评估可用率,单项评估可用率通过单项评估函数以下公式计算:

(min(max(x,xmin),xmax)-xmin)/(xmax-xmin)

其中为x为x指标实测空闲率,范围为0-1,表示实际的cpu或内存等的空闲率,xu为x指标的评估可用率,表示根据该检测指标计算出的实际可用率,xu范围为0-1,xmin为x指标的最小实测空闲率,xmin范围为0-1,xmax为x指标的最大实测空闲率,xmax范围为0-1,min是最小值函数,max是最大值函数,min(max(x,xmin),xmax)计算x取值范围只能在xmin-xmax之间;

根据多个单项评估可用率得到系统可用度,根据木桶理论由最低的单项评估可用率确定系统可用度,系统可用度通过以下公式计算:

yu=min([x1u,x2u])

其中,yu为系统最终可用度,范围为0-1,min为返回数组最小值计算函数,x1u为根据单指标评估函数计算出的实际cpu空闲率,x2u为根据单指标评估函数计算出的实际内存空闲率;

根据系统可用度,计算得到桶深度,桶深度通过以下公式计算:

tu=(1-tr)*(yu*(tmax-tmin)+tmin)+tr*tux

其中,tu为最终桶深度,yu为系统可用度,tmax为桶最大深度,tmin为桶最小深度,tr为惯性因子,范围为0-1,该指标越小,每次生成的桶深度越平滑,tux为前一次计算的桶深度。

具体实施例2:

见图1、图2,本发明的一种基于令牌桶的acs系统过载保护方法,包括以下步骤:

步骤1:在acs系统中建立两个令牌桶:全速令牌桶和半速令牌桶,全速令牌桶中注入一级令牌,半速令牌桶中注入二级令牌;

步骤2:根据acs系统的硬件使用率,分别确定全速令牌桶和半速令牌桶的桶深度和注入的令牌数。

步骤3:cpe设备访问acs系统发出cpe请求,acs系统尝试取得cpe请求的cookie中存储的令牌,若获取成功,则执行步骤7,否则执行步骤4;

步骤4:尝试从全速令牌桶获取一级令牌,判断全速令牌桶中存在的一级令牌数是否足够发送接收cpe请求,如果一级令牌数量足够则获取成功,执行步骤8,否则执行步骤5;

步骤5:尝试从半速令牌桶桶获取二级令牌,判断半速令牌桶中存在的二级令牌数是否足够发送接收cpe请求,如果二级令牌数量足够则获取成功,则执行步骤9,否则执行步骤6;

步骤6:生成系统繁忙令牌,执行步骤10;

步骤7:判断当前cpe请求中的cookie中存储的令牌是否是一级令牌,是则执行步骤11,否则执行步骤12;

步骤8:将一级令牌写入cpe请求中的cookie中,继续执行步骤11;

步骤9:将二级令牌写入cpe请求中的cookie中,继续执行步骤13;

步骤10:将系统繁忙令牌写入cpe请求中的cookie中,执行步骤14;

步骤11:acs系统执行全速tr069请求,处理lnfor信息,检查配置,升级,性能参数读取等标志位,下发相关业务;

步骤12:判断当前cpe请求中的cookie中存储的令牌是否是二级令牌,是则执行步骤13,否则执行步骤14;

步骤13:acs系统执行半速tr069请求,处理lnfor信息,禁止下发相关业务;

步骤14:acs系统输出http403应答,表示acs系统禁止请求。

其中,步骤2具体包括以下步骤:

步骤201:根据acs系统的硬件使用率,生成合乎当前acs系统的令牌桶的桶深度以及可注入的令牌数,执行步骤202;

步骤202:向令牌桶中注入令牌;如果发现令牌桶中令牌数超出桶深度,设置当前令牌数为桶深度,执行步骤203;

步骤203:判定令牌桶的当前状态,如果正常,继续执行步骤204,否则,执行

步骤204:开启延时定时器,如果定时器时间到,执行步骤201;

步骤205:关闭令牌桶。

在步骤201中,系统的硬件使用率包括cpu使用率、内存使用率、硬盘使用率和网络带宽使用率,根据系统的硬件使用率得到系统压力值,根据系统压力值计算得到注入令牌桶的令牌数,系统压力值通过以下压力检测评估函数公式计算:

系统压力值通过以下压力检测评估函数公式计算:

c=(x1*x1r+x2*x2r+x3*x3r+x4*x4r)*nr+oldrat*or

其中x1为cpu的使用率,x1r为cpu的使用因子,其中x2为内存的使用率,x2r为内存的使用因子,x3为硬盘的使用率,x3r为硬盘的使用因子,其x4为网络带宽的使用率,x4r为网络带宽的使用因子,nr为评估因子,oldrat为上一次评估结果,or为评估因子,满足x1r+x2r+x3r+x4r=1,nr+or=1;

计算注入令牌桶的令牌数通过以下公式计算:

(1-c)*(max-min)+min

其中,c为系统压力值,max为最大注入令牌数,min为最小注入令牌数。

根据单项评估函数分别计算系统中硬件的单项评估可用率,分别得到cpu和内存、硬盘和网络带宽的评估可用率,单项评估可用率通过单项评估函数以下公式计算:

(min(max(x,xmin),xmax)-xmin)/(xmax-xmin)

其中为x为x指标实测空闲率,范围为0-1,表示实际的cpu、内存、硬盘或网络带宽的空闲率,xu为x指标的评估可用率,表示根据该检测指标计算出的实际可用率,xu范围为0-1,xmin为x指标的最小实测空闲率,xmin范围为0-1,xmax为x指标的最大实测空闲率,xmax范围为0-1,min是最小值函数,max是最大值函数,min(max(x,xmin),xmax)计算x取值范围只能在xmin-xmax之间;

根据多个单项评估可用率得到系统可用度,根据木桶理论由最低的单项评估可用率确定系统可用度,系统可用度通过以下公式计算:

yu=min([x1u,x2u,x3u,x4u])

其中,yu为系统最终可用度,范围为0-1,min为返回数组最小值计算函数,x1u为根据单指标评估函数计算出的实际cpu空闲率,x2u为根据单指标评估函数计算出的实际内存空闲率,x3u为根据单指标评估函数计算出的实际硬盘空闲率,x4u为根据单指标评估函数计算出的实际网络带宽空闲率;

根据系统可用度,计算得到桶深度,桶深度通过以下公式计算:

tu=(1-tr)*(yu*(tmax-tmin)+tmin)+tr*tux

其中,tu为最终桶深度,yu为系统可用度,tmax为桶最大深度,tmin为桶最小深度,tr为惯性因子,范围为0-1,该指标越小,每次生成的桶深度越平滑,tux为前一次计算的桶深度。

在步骤2的具体过程,本发明的令牌桶可以根据acs系统中硬件的使用率,调节令牌桶的深度和注入令牌桶的令牌数,在系统硬件使用率较高时减小令牌桶深度和注入令牌桶的令牌数,在系统硬件使用率较低时增加令牌桶深度和注入令牌桶的令牌数,在不更换acs系统硬件的情况下,提升了acs系统的硬件的处理能力,其方法实现简单,可靠,可以有效的应对在系统过载的处理,增强acs系统的稳定性,采用多指标评估,综合考虑了包括cpu使用率、内存使用率、硬盘使用率、网络带宽使用率,可以准确的评估系统负载状况,提高系统稳定水平,其方法实现简单,可靠,可以有效的应对在系统过载的处理,增强系统的稳定性。

本发明的基于令牌桶的acs系统过载保护方法,根据tr069协议的特点,针对cpe设备访问acs系统发出的cpe请求,采用两个速度控制令牌桶,建立全速令牌桶和半速令牌桶,全速令牌桶中注入一级令牌,半速令牌桶中注入二级令牌,其中获取一级令牌的cpe请求,则执行全速tr069请求,按标准流程处理tr069业务,这个时候,cpe完成各种协议规定的最耗时任务;获取一级令牌失败的cpe请求,尝试获取二级令牌,执行半速tr069请求,处理inform信息,这个时候,只执行tr069规定的必须处理inform信息的流程,inform信息处理很快,可以有效防止cpe设备的重复链接,避免acs系统过载,cpe设备不会出现上报接口的异常告警;对以上两种令牌都获取失败的,设定直接认定为系统严重超载,这个时候直接返回http403应答,表示acs系统禁止请求。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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