发明内容
本发明实施例的目的在于提供一种资源的动态分配方法,能够在各业务CPU间动态分配指定用户的资源值,减少丢包现象。
第一方面,一种资源的动态分配方法的方法,包括:
第一业务CPU获取用户在各业务CPU上的资源使用信息;
第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的资源使用信息调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
第一业务CPU根据调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源。
结合第一方面,在第一方面的第一种可能的实现方法中,所述第一业务CPU获取用户在各业务CPU上的资源使用信息包括:
第一业务CPU获取用户在各业务CPU上的业务流量;
所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的实际资源使用信息调整各业务CPU为所述用户分配的资源量包括:
所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量。
结合第一方面的第一种可能的实现方法,在第一方面的第二种可能的实现方法中,所述第一业务CPU获取用户在各业务CPU上的业务流量包括:
所述第一业务CPU按照设置的调整周期通过控制信道获取所述用户在各业务CPU上的业务流量;
所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量包括:
所述第一业务CPU根据所述用户在各业务CPU上的业务流量的比例获得所述用户在各业务CPU上的实际资源使用量的比例;
所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的实际资源使用量的比例调整各业务CPU为所述用户分配的资源分配量。
结合第一方面或者第一方面的第一种可能的实现方法或者第一方面的第二种可能的实现方法,在第三种可能的实现方式中,所述第一业务CPU根据调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源包括:
所述第一业务CPU将调整后的资源分配量通过控制信道分别发送给对应的业务CPU,使各业务CPU根据调整后的资源分配量为所述用户分配资源。
结合第一方面,第一方面的第四种可能的实现方式中,所述第一业务CPU获取用户在各业务CPU上的资源使用信息包括:
所述第一业务CPU获取各业务CPU为所述用户分配的资源分配量;
所述第一业务CPU根据所述用户申请的总资源量以及各业务CPU为所述用户分配的资源分配量获得所述用户的空闲资源量,其中所述用户的空闲资源量为所述总资源量与所述各业务CPU为所述用户分配的资源分配量的总量之差。
所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的资源使用信息调整各业务CPU为所述用户分配的资源分配量包括:
当接收到第二业务CPU发送的申请为所述用户分配资源的资源分配请求时,根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量。
结合第一方面的第四种可能的实现方法,在第一方面的第五种可能的实现方法中,所述根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量包括:
当所述用户的空闲资源量不为0,且所述空闲资源量不小于所述资源请求量时,根据所述资源请求量指示所述第二业务CPU为所述用户分配资源;
当所述用户的空闲资源量不为0,且所述空闲资源量小于所述资源请求量时,根据用户的空闲资源量指示所述第二业务CPU为所述用户分配资源;
当所述用户的空闲资源量为0时,拒绝所述第二业务CPU的资源分配请求。
结合第一方面的第四种或者第五种可能的实现方法,在第一方面的第六种可能的实现方法中,所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的资源使用信息调整各业务CPU为所述用户分配的资源分配量还包括:
第一业务CPU接收所述第二业务CPU发送的基于所述用户的资源释放请求,所述资源释放请求中包含有待释放的资源量;
第一业务CPU根据所述待释放的资源量调整所述第二业务CPU为所述用户分配的资源分配量,其中,调整后的所述第二业务CPU为所述用户分配的资源分配量为调整前的所述第二业务CPU为所述用户分配的资源分配量与所述待释放的资源量之差;
第一业务CPU根据所述待释放的资源量更新所述用户的空闲资源量,其中更新后的所述用户的空闲资源量为所述用户已有的空闲资量与所述待释放的资源量之和。
结合第一方面的第四种、第五种或第六种可能的实现方法,在第一方面的第七种可能的实现方法中,所述方法还包括:
当所述用户的空闲资源量为0时,将所述用户的用户状态设置为网络忙状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU不在所述用户处于网络忙状态时向所述第一业务CPU发送资源分配请求;
当所述用户的空闲资源量不为0时,将所述用户的用户状态设置为网络闲状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU在所述用户处于网络闲状态时向所述第一业务CPU发送资源分配请求。
第二方面,提供一种网络设备,所述网络设备至少包括两个业务CPU,所述设备包括:
获取单元,用于获取用户在各业务CPU上的资源使用信息;
调整单元,用于根据所述用户申请的总资源量和所述获取单元获取的所述用户在各业务CPU上的资源使用信息调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
处理单元,用于根据所述调整单元调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源。
结合第二方面,在第二方面的第一种可能的实现方法中,所述获取单元具体用于:
获取用户在各业务CPU上的业务流量;
所述调整单元具体用于:
根据所述用户申请的总资源量和所述获取单元获取的所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量。
结合第二方面的第一种可能的实现方法,在第二方面的第二种可能的实现方法中,所述获取单元具体用于:
按照设置的调整周期通过控制信道获取所述用户在各业务CPU上的业务流量;
所述调整单元包括:
分配信息获得模块,用于根据所述用户在各业务CPU上的业务流量的比例获得所述用户在各业务CPU上的实际资源使用量的比例;
资源分配模块,用于根据所述用户申请的总资源量和所述分配信息获得模块获得的所述用户在各业务CPU上的实际资源使用量的比例调整各业务CPU为所述用户分配的资源分配量。
结合第二方面或者第二方面的第一种可能的实现方法或者第二方面的第二种可能的实现方法,在第二方面的第三种可能的实现方法中,所述处理单元具体用于:
将调整后的资源分配量通过控制信道分别发送给对应的业务CPU,使各业务CPU根据调整后的资源分配量为所述用户分配资源。
结合第二方面,在第二方面的第四种可能的实现方法中,所述获取单元包括:
第一获取模块,用于获取各业务CPU为所述用户分配的资源分配量;
第二获取模块,用于根据所述用户申请的总资源量以及各业务CPU为所述用户分配的资源分配量获得所述用户的空闲资源量,其中所述用户的空闲资源量为所述总资源量与所述各业务CPU为所述用户分配的资源分配量的总量之差。
所述调整单元具体用于:
当接收到第二业务CPU发送的申请为所述用户分配资源的资源分配请求时,根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量。
结合第二方面的第四种可能的实现方法,在第二方面的第五种可能的实现方法中,所述调整单元包括:
资源分配模块,用于当所述用户的空闲资源量不为0,且所述空闲资源量不小于所述资源请求量时,根据所述资源请求量指示所述第二业务CPU为所述用户分配资源;或,当所述用户的空闲资源量不为0,且所述空闲资源量小于所述资源请求量时,根据用户的空闲资源量指示所述第二业务CPU为所述用户分配资源;
分配响应模块,用于当所述用户的空闲资源量为0时,拒绝所述第二业务CPU的资源分配请求。
结合第二方面的第四种、第五种可能的实现方法,在第二方面的第六种可能的实现方法中,所述调整单元还包括:
资源回收模块,用于接收所述第二业务CPU发送的基于所述用户的资源释放请求,所述资源释放请求中包含有待释放的资源量;
资源调整模块,用于根据所述待释放的资源量调整所述第二业务CPU为所述用户分配的资源分配量,其中,调整后的所述第二业务CPU为所述用户分配的资源分配量为调整前的所述第二业务CPU为所述用户分配的资源分配量与所述待释放的资源量之差;
资源更新模块,用于根据所述待释放的资源量更新所述用户的空闲资源量,其中更新后的所述用户的空闲资源量为所述用户已有的空闲资量与所述待释放的资源量之和。
结合第二方面的第四种、第五种、或者第六种可能的实现方法,在第二方面的第七种可能的实现方法中,所述设备还包括:
状态变迁单元,用于当所述用户的空闲资源量为0时,将所述用户的用户状态设置为网络忙状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU不在所述用户处于网络忙状态时向所述第一业务CPU发送资源分配请求;或,当所述用户的空闲资源量不为0时,将所述用户的用户状态设置为网络闲状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU在所述用户处于网络闲状态时向所述第一业务CPU发送资源分配请求。
本发明实施例通过获取用户可申请的总资源值和用户在各CPU上的实际资源使用量;根据所述用户可申请的总资源值和用户在各业务CPU上的实际资源使用量调整各CPU为用户分配的资源值。实现实时调配各用户在各业务CPU上的资源分配,使得资源分配情况按照各业务CPU的使用情况动态调整,从而能够减少因资源分配不合理造成各业务CPU丢包的情况。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例的应用场景图,如图1所示,该方法可以应用于分布式系统中,例如高速网络设备,如图1所示,该设备网络设备中有多个业务CPU,并通过所述多个业务CPU并行数据处理提高吞吐率,所述网络设备可以同时转发和处理来自不同虚拟防火墙用户(Virtual Firewall)的数据流,其中,每个虚拟防火墙用户的数据流从多个接口进出该设备,并按照负载分担原则分散到多个业务CPU上处理,每个虚拟防火墙用户可以向系统管理员申请适合自己流量规模的带宽,需要保证各业务CPU转发该用户的总数据流量不超过其申请的带宽。如图1所示,用户1的数据流通过接口进入网络设备后,可以分散到业务CPU1、业务CPU2、业务CPU3及业务CPU4上进行处理,处理完成后再集中从接口将处理结果发送出去。
参考图2,图2是本发明实施例提供的一种资源的动态分配方法流程图。如图2所示,所述方法应用于分布式处理系统中,所述分布式处理系统包含至少两个业务CPU,所述方法包括以下步骤:
步骤201,第一业务CPU获取用户在各业务CPU上的资源使用信息;
具体的,该方法应用于分布式处理系统中,该分布式处理系统包含有多个业务CPU,由多个业务CPU协同处理同一个用户的业务。本步骤中,第一业务CPU可以是一台网络设备中的各个业务CPU中的任意一个业务CPU,在实际应用中,可以将用户进行分组,使该网络设备中的每个业务CPU均负责一组用户资源的动态分配管理,使得所有业务CPU均能分担系统的调控管理工作,避免系统因单一业务CPU进行调控管理出现的性能瓶颈。在本发明实施例中,将负责一组用户资源的动态分配的业务CPU称为该组用户的第一业务CPU。所述资源使用信息包括用户在该业务CPU上的业务流量和用户在该业务CPU上的资源分配量;或者所述资源使用信息包括用户在该业务CPU上的资源分配量和空闲资源值,所述空闲带宽值是第一业务CPU上该用户分配的总资源值和各业务CPU上该用户资源分配总量之差。
具体的,本发明实施例所述的用户可以包括虚拟防火墙用户、VLAN用户、IP地址(或者IP地址集)用户或访问控制列表(Access Control List,ACL)规则匹配用户,在此不做限定。
步骤202,第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的资源使用信息调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
本步骤中,当资源使用信息包括用户在该业务CPU上的业务流量和用户在该业务CPU上的资源分配量时,根据报文的业务流量更新该报文所属用户在所述报文所在的本业务CPU的流量统计信息,例如,在当前周期用户A的流量主要集中在1号业务CPU,则下一个周期1号业务CPU比其他的业务CPU分配到更多用户A的资源值,从而减少因为资源值在业务CPU间分配不合理造成的限流误丢包。
本步骤中,所述资源使用信息包括用户在该业务CPU上的资源分配量和空闲资源值,所述空闲带宽值是第一业务CPU上该用户分配的总资源值和各业务CPU上该用户资源分配总量之差。
步骤203,第一业务CPU根据调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源。
实际应用中,各业务CPU可以根据第一业务CPU调整后的资源分配量为该用户分配资源,并根据为所述用户分配的资源处理该用户的业务,具体的,业务CPU根据为所述用户分配的资源处理用户业务可以包括:当通过某业务CPU上的该用户的业务流量小于或者等于所述用户在该业务CPU上资源分配量时,则处理该报文;当该用户的业务流量大于所述用户在该业务CPU上的资源分配量时,则丢弃该用户的报文,并更新所述用户在该业务CPU上的业务流量,以作为下一个周期为所述用户分配资源的依据。
本发明实施例提供一种资源的动态分配方法,能够通过获取用户可申请的总资源值和用户在各CPU上的实际资源使用量;根据所述用户可申请的总资源值和用户在各业务CPU上的实际资源使用量调整各CPU为用户分配的资源值。实现实时调配各用户在各业务CPU上的资源分配,使得资源分配情况按照各业务CPU的使用情况动态调整,从而能够减少因资源分配不合理造成各业务CPU丢包的情况。
参考图3,图3是本发明实施例提供的又一种资源的动态分配方法流程图;如图3所示,所述方法包括如下步骤:
步骤301,第一业务CPU获取用户在各业务CPU上的业务流量;
本步骤中,所述第一业务CPU按照设置的调整周期通过控制信道获取所述用户在各业务CPU上的业务流量。
步骤302,所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
本步骤中,所述第一业务CPU根据所述用户在各业务CPU上的业务流量的比例获得所述用户在各业务CPU上的实际资源使用量的比例;
所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的实际资源使用量的比例调整各业务CPU为所述用户分配的资源分配量。
例如,用户在所述网络设备的三个业务CPU上的当前流量比例在当前周期内为1:2:3,则下一个周期在各个业务CPU上分配的资源值为总资源值按照该比例的分配,即在各个业务CPU上的资源值为1:2:3。
其中,通过将上一个周期的各业务的流量比例作为下一个周期的资源分配的比例,实现实时调配各用户在各业务CPU上的资源分配,使得资源分配情况按照各业务CPU的使用情况动态调整,避免因资源分配不合理造成无丢包等情况。
步骤303,第一业务CPU根据调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源。
本步骤中,所述第一业务CPU将调整后的资源分配量通过控制信道分别发送给对应的业务CPU,使各业务CPU根据调整后的资源分配量为所述用户分配资源。
下面举其中一个例子具体说明第一业务CPU如何动态分配本网络设备中所有用户的资源值,假设网络设备中有N个业务CPU和M个虚拟防火墙用户,则每个业务CPU负责为M/N个用户动态分配资源值,如图4所示,假设网络设备上存在三个业务CPU,要处理9个用户的业务流量,则每个业务CPU负责为系统中9/3=3的虚拟防火墙用户动态调整资源值,即每个业务CPU需要负责为3个用户分配资源值,例如:业务CPU1负责用户1、用户4和用户7的资源值的分配;业务CPU2负责用户2、用户5和用户8的资源值的分配;业务CPU3负责用户3、用户6和用户9的资源值的分配。
每个调控周期,每个业务CPU上的动态分配资源调控的任务如下:
步骤401,每周期开始,各业务CPU通过控制信道收集本业务CPU所负责的用户在本网络设备中所有业务CPU上的流量统计信息;
例如,业务CPU1负责收集用户1、用户4和用户7在所有业务CPU上的业务流量信息,业务CPU2负责收集用户2、用户5和用户8在所有业务CPU上的业务流量信息,业务CPU3负责收集用户3、用户6和用户9在所有业务CPU上的业务流量信息。
步骤402,所述本业务CPU根据收集到的流量统计信息计算本业务CPU所负责的用户在各个业务CPU上的资源值;
第一业务CPU可以按照该用户在各业务CPU上的业务流量的比例,将用户的总资源值在各业务CPU间重新分配。具体的,所述第一业务CPU可以根据所述用户在各业务CPU上的业务流量的比例获得所述用户在各业务CPU上的实际资源使用量的比例,并根据所述用户申请的总资源量和所述用户在各业务CPU上的实际资源使用量的比例调整各业务CPU为所述用户分配的资源分配量。例如,用户在所述网络设备的三个业务CPU上的当前流量比例在当前周期内为1:2:3,则下一个周期在各个业务CPU上分配的资源值为总资源值按照该比例的分配,即在各个业务CPU上的资源值为1:2:3。
步骤403,将计算的结果下发给各业务CPU,使得各业务CPU根据计算的结果调整第一业务CPU所负责的用户在各个业务CPU上的资源值。
可以理解的是,所述网络设备中的业务CPU均是处于正常工作状态的业务CPU,在网络设备运行过程中,如果有个别业务CPU故障而使得在用的业务CPU总数量减少,或者偶尔由于扩容需要加入新的业务CPU使得在用的业务CPU总数量增加,当正常工作的业务CPU数量有改变时,需要根据当前正常工作的业务CPU的数量对用户重新进行分组。
需要说明的是,在系统启动时,第一业务CPU可以将自己负责的用户申请的总资源量根据当前处于正常工作状态的业务CPU的数量,平均分配各业务CPU为所述用户分配的资源分配量,例如,用户1申请的总资源量为3M带宽,当前处于正常工作状态的业务CPU共有3个,则初始化每个业务CPU为用户1分配的的资源分配量为1M,然后再根据用户1在工作过程中在各个业务CPU上的流量的比例动态调整各业务CPU为用户1分配的资源分配量。
本发明实施例提供一种资源的动态分配方法,通过第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量,实现实时调配各用户在各业务CPU上的资源分配,使得资源分配情况按照各业务CPU的使用情况动态调整,从而能够减少因资源分配不合理造成各业务CPU丢包的情况。同时,各业务CPU及时响应业务CPU的增删事件,将被限流用户重新分组,当前在用的各业务CPU重新对应一组用户,负责对该组用户周期性收集流量统计信息,动态分配资源值。此外,本发明实施例中,各业务CPU集体分担收集统计数据、计算和发布下周期新带宽值的工作,可以避免系统中由单一主控CPU对所有用户的资源进行管理时可能造成的性能瓶颈。
参考图5,图5是本发明实施例提供的又一种资源的动态分配方法流程图。如图5所示,所述方法包括以下步骤:
步骤501,第一业务CPU获取各业务CPU为所述用户分配的资源分配量;
本步骤中,所述资源分配量是指各业务CPU为所述用户分配的的资源值。
步骤502,所述第一业务CPU根据所述用户申请的总资源量以及各业务CPU为所述用户分配的资源分配量获得所述用户的空闲资源量,其中所述用户的空闲资源量为所述总资源量与所述各业务CPU为所述用户分配的资源分配量的总量之差;
具体的,系统启动时,第一业务CPU对自己所管辖的每个用户,均设置为该用户状态为网络闲,并初始化该用户的空闲资源值等于用户总资源值。
步骤503,当接收到第二业务CPU发送的申请为所述用户分配资源的资源分配请求时,根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量。
具体的,根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量可以包括:
当所述用户的空闲资源量不为0,且所述空闲资源量不小于所述资源请求量时,根据所述资源请求量指示所述第二业务CPU为所述用户分配资源;当所述用户的空闲资源量不为0,且所述空闲资源量小于所述资源请求量时,根据用户的空闲资源量指示所述第二业务CPU为所述用户分配资源;
当所述用户的空闲资源量为0时,拒绝所述第二业务CPU的资源分配请求。
在另一种情况下,所述方法还可以包括:
步骤504,第一业务CPU接收所述第二业务CPU发送的基于所述用户的资源释放请求,所述资源释放请求中包含有待释放的资源量;
步骤505,第一业务CPU根据所述待释放的资源量调整所述第二业务CPU为所述用户分配的资源分配量,其中,调整后的所述第二业务CPU为所述用户分配的资源分配量为调整前的所述第二业务CPU为所述用户分配的资源分配量与所述待释放的资源量之差。
步骤506,第一业务CPU根据所述待释放的资源量更新所述用户的空闲资源量,其中更新后的所述用户的空闲资源量为所述用户已有的空闲资量与所述待释放的资源量之和。
进一步,所述方法还可以包括:
当所述用户的空闲资源量为0时,将所述用户的用户状态设置为网络忙状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU不在所述用户处于网络忙状态时向所述第一业务CPU发送资源分配请求;
当所述用户的空闲资源量不为0时,将所述用户的用户状态设置为网络闲状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU在所述用户处于网络闲状态时向所述第一业务CPU发送资源分配请求。
本发明实施例提供一种资源的动态分配方法,可以适用于业务CPU间控制信道较窄的限流场景。这类应用场景中,协作限流的各业务CPU位于一个机房中不同的设备框上,或者相距很远的接入设备上;业务CPU间控制信道带宽有限,通信时延较大,或者被限流用户数量巨大,均摊到每个用户上的控制信道带宽很小。
本发明实施例提供的一种资源的动态分配方法,通过根据所述用户的空闲资源量以及第二业务CPU发送的所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量,实现实时根据用户在各业务CPU的使用情况及时调整用户资源在各个业务CPU上的动态分配,从而实现资源按需分配在各个业务CPU上。并且,本发明实施例提供的方法在为各业务CPU调整资源分配量时,可以通过对用户状态的变迁管理,使得各业务CPU可以在用户处于闲状态(即该用户具有空闲资源时)向管理该用户的业务CPU提出资源分配请求,从而可以减少控制状态的震荡。此外,本发明实施例中,各业务CPU集体分担收集统计数据、计算和发布下周期新带宽值的工作,可以避免系统中由单一主控CPU对所有用户的资源进行管理时可能造成的性能瓶颈。
参考图6,图6是本发明实施例提供的一种网络设备的装置结构图。如图6所示,所述网络设备包括获取单元601,调整单元602,处理单元603。其中:
获取单元601,用于获取用户在各业务CPU上的资源使用信息;
调整单元602,用于根据所述用户申请的总资源量和所述获取单元601获取的所述用户在各业务CPU上的资源使用信息调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
处理单元603,用于根据所述调整单元602调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源。
本发明实施例提供一种网络设备,通过获取用户可申请的总资源值和用户在各CPU上的实际资源使用量;根据所述用户可申请的总资源值和用户在各业务CPU上的实际资源使用量调整各CPU为用户分配的资源值。实现实时调配各用户在各业务CPU上的资源分配,使得资源分配情况按照各业务CPU的使用情况动态调整,从而能够减少因资源分配不合理造成各业务CPU丢包的情况。
参考图7,图7是本发明实施例提供的又一种网络设备的装置结构图。如图7所示,所述网络设备包括获取单元701,调整单元702,处理单元703。其中:
获取单元701,用于获取用户在各业务CPU上的业务流量;
具体的,所述获取单元701包括按照设置的调整周期通过控制信道获取所述用户在各业务CPU上的业务流量。
调整单元702,用于根据所述用户申请的总资源量和所述获取单元701获取的所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
具体的,所述调整单元702包括:
分配信息获得模块704,用于根据所述用户在各业务CPU上的业务流量的比例获得所述用户在各业务CPU上的实际资源使用量的比例;
资源分配模块705,用于根据所述用户申请的总资源量和所述分配信息获得模块获得的所述用户在各业务CPU上的实际资源使用量的比例调整各业务CPU为所述用户分配的资源分配量。
处理单元703,用于将调整后的资源分配量通过控制信道分别发送给对应的业务CPU,使各业务CPU根据调整后的资源分配量为所述用户分配资源。
本发明实施例提供一种网络设备,所述网络设备根据所述用户申请的总资源量和所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量,实现实时调配各用户在各业务CPU上的资源分配,使得资源分配情况按照各业务CPU的使用情况动态调整,从而能够减少因资源分配不合理造成各业务CPU丢包的情况。
参考图8,图8是本发明实施例提供的又一种网络设备的装置结构图。如图8所示,所述网络设备包括获取单元801,调整单元802,处理单元803,状态变迁单元804。其中:获取单元801,用于第一业务CPU获取各业务CPU为所述用户分配的资源分配量;
具体的,所述获取单元801包括:
第一获取模块805,用于获取各业务CPU为所述用户分配的资源分配量;
第二获取模块806,用于根据所述用户申请的总资源量以及各业务CPU为所述用户分配的资源分配量获得所述用户的空闲资源量,其中所述用户的空闲资源量为所述总资源量与所述各业务CPU为所述用户分配的资源分配量的总量之差。
调整单元802,用于所述第一业务CPU根据所述用户申请的总资源量以及各业务CPU为所述用户分配的资源分配量获得所述用户的空闲资源量,其中所述用户的空闲资源量为所述总资源量与所述各业务CPU为所述用户分配的资源分配量的总量之差;
具体的,所述调整单元802包括:
当接收到第二业务CPU发送的申请为所述用户分配资源的资源分配请求时,根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量。
在另一种情形下,所述调整单元802可以包括:
资源分配模块807,用于当所述用户的空闲资源量不为0,且所述空闲资源量不小于所述资源请求量时,根据所述资源请求量指示所述第二业务CPU为所述用户分配资源;或,当所述用户的空闲资源量不为0,且所述空闲资源量小于所述资源请求量时,根据用户的空闲资源量指示所述第二业务CPU为所述用户分配资源;
分配响应模块808,用于当所述用户的空闲资源量为0时,拒绝所述第二业务CPU的资源分配请求。
在另一种情形下,如图9所示,所述调整单元802还可以包括:
资源回收模块901,用于接收所述第二业务CPU发送的基于所述用户的资源释放请求,所述资源释放请求中包含有待释放的资源量;
资源调整模块902,用于根据所述待释放的资源量调整所述第二业务CPU为所述用户分配的资源分配量,其中,调整后的所述第二业务CPU为所述用户分配的资源分配量为调整前的所述第二业务CPU为所述用户分配的资源分配量与所述待释放的资源量之差;
资源更新模块903,用于根据所述待释放的资源量更新所述用户的空闲资源量,其中更新后的所述用户的空闲资源量为所述用户已有的空闲资量与所述待释放的资源量之和。
处理单元803,用于当接收到第二业务CPU发送的申请为所述用户分配资源的资源分配请求时,根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量。
进一步,结合本发明实施例和所述另外一种实施例,所述网络还包括状态变迁单元804,所述状态变迁单元804具体用于:
当所述用户的空闲资源量为0时,将所述用户的用户状态设置为网络忙状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU不在所述用户处于网络忙状态时向所述第一业务CPU发送资源分配请求;
或,当所述用户的空闲资源量不为0时,将所述用户的用户状态设置为网络闲状态,并发布所述用户的状态变迁公告给所有业务CPU,使各业务CPU在所述用户处于网络闲状态时向所述第一业务CPU发送资源分配请求。
本发明实施例提供一种网络设备,可以适用于业务CPU间控制信道较窄的限流场景中。这类应用场景中,协作限流的各业务CPU位于一个机房中不同的设备框上,或者相距很远的接入设备上;业务CPU间控制信道带宽有限,通信时延较大,或者被限流用户数量巨大,均摊到每个用户上的控制信道带宽很小。
本发明实施例提供的一种网络设备,所述网络设备根据所述用户的空闲资源量以及第二业务CPU发送的资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量,实现实时根据用户在各业务CPU的使用情况及时调整用户资源在各个业务CPU上的动态分配,从而实现资源按需分配在各个业务CPU上。并且,本发明实施例提供的网络设备在为各业务CPU调整资源分配量时,可以通过对用户状态的变迁管理,使得各业务CPU可以在用户处于闲状态(即该用户具有空闲资源时)向管理该用户的业务CPU提出资源分配请求,可以减少控制状态的震荡。此外,本发明实施例所述的网络设备中,各业务CPU集体分担收集统计数据、计算和发布下周期新带宽值的工作,可以避免系统中由单一主控CPU对所有用户的资源进行管理时可能造成的性能瓶颈。
参考图10,图10是本发明实施例提供的一种网络设备的装置结构图。参考图10,图10是本发明实施例提供的一种网元设备1000,,本发明具体实施例并不对所述网络设备的具体实现做限定。所述设备1000包括:
处理器(processor)1001,通信接口(Communications Interface)1002,存储器(memory)1003,总线1004。
处理器1001,通信接口1002,存储器1003通过总线1004完成相互间的通信。
通信接口1002,用于与其他网络设备进行通信;
处理器1001,用于执行程序A。
具体地,程序A可以包括程序代码,所述程序代码包括计算机操作指令。
处理器1001可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器1003,用于存放程序A。存储器1103可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序A具体可以包括:
获取单元601,用于第一业务CPU获取用户在各业务CPU上的资源使用信息;
所述调整单元602,用于第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的资源使用信息调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
处理单元603,用于第一业务CPU根据调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源。
程序A中各单元的具体实现参见图6所示实施例中的相应单元,在此不赘述。
或者程序A包括获取单元701,调整单元702,处理单元703。
获取单元701,用于第一业务CPU获取用户在各业务CPU上的业务流量;
调整单元702,用于所述第一业务CPU根据所述用户申请的总资源量和所述用户在各业务CPU上的业务流量调整各业务CPU为所述用户分配的资源分配量,其中,所述各业务CPU为所述用户分配的资源分配量之和不大于所述用户申请的总资源量;
处理单元703,用于第一业务CPU根据调整后的资源分配量指示对应的业务CPU根据调整后的资源分配量为所述用户分配资源。
程序A中各单元的具体实现参见图8所示实施例中的相应单元,在此不赘述。
或者程序A包括获取单元801,调整单元802,处理单元803,状态变迁单元804。
获取单元801,用于第一业务CPU获取各业务CPU为所述用户分配的资源分配量;
调整单元802,用于所述第一业务CPU根据所述用户申请的总资源量以及各业务CPU为所述用户分配的资源分配量获得所述用户的空闲资源量,其中所述用户的空闲资源量为所述总资源量与所述各业务CPU为所述用户分配的资源分配量的总量之差;
处理单元803,用于当接收到第二业务CPU发送的申请为所述用户分配资源的资源分配请求时,根据所述用户的空闲资源量以及所述资源分配请求中携带的资源请求量调整所述第二业务CPU为所述用户分配的资源分配量。
程序A中各单元的具体实现参见图8所示实施例中的相应单元,在此不赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部,模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。