[发明专利]令牌桶的刷新方法及装置有效
申请号: | 201110096479.X | 申请日: | 2011-04-18 |
公开(公告)号: | CN102164083A | 公开(公告)日: | 2011-08-24 |
发明(设计)人: | 翟勇 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56 |
代理公司: | 深圳市爱派知识产权事务所 44292 | 代理人: | 罗水江 |
地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 令牌 刷新 方法 装置 | ||
技术领域
本发明涉及通信数据领域,尤其涉及一种令牌桶的刷新方法及装置。
背景技术
通常情况下,三层交换机和路由器的核心部件是由交换芯片、网络处理器和CPU(Central Processing Unit,中央处理器)等器件组成。交换芯片和网络处理器负责数据报文的转发,通过把数据报文转发到交换机上的其他端口而完成转发过程。对于IP(Internet Protocol,网络协议)网络中的协议报文如ARP(Address Resolution Protocol,地址解析协议)包、OSPF(Open Shortest Path First,开放式最短路径优先)协议包和IGMP(Internet Group Multicast Protocol,互联网组管理协议)包等是通过交换芯片和网络处理器转发到CPU,由CPU来完成对协议包的处理。
越来越多的协议报文需要通过交换芯片或网络处理器上送到CPU,使得CPU的负担越来越重。通常的协议报文上送频率并不大,但若系统中的多个器件同时上送协议包,而且对上送到CPU的协议包个数不进行限制的话,CPU很容易会被突发的大流量协议包冲死,导致设备不能正常运行,所以必须对某一时刻上送给CPU的协议包数量进行限制,最常用的方法就是通过令牌桶来实现。
常用的令牌桶刷新方法,是通过设置令牌桶深度和刷令牌速率,并根据本次刷新时间与上次刷令牌时间的时间差和刷令牌速率产生新的令牌放到令牌桶中。当有协议包上送时,检查令牌桶状态,若令牌桶状态为可用,则从令牌桶中获取一个令牌,协议包上送,若令牌桶状态为不可用,则该协议包被丢弃,不上送CPU。这种令牌桶刷新方法的不足是,令牌桶深度和刷令牌速率是固定的,无论CPU繁忙还是空闲,其每秒钟刷的令牌数一样,这使得CPU在繁忙时,很容易被大流量协议包冲死,导致设备不能正常运行。
发明内容
本发明的目的在于提供一种令牌桶的刷新方法及装置,本发明提升了现有CPU的处理能力,容易实现。
本发明提供了一种令牌桶的刷新方法,上述方法包括以下步骤:
获取CPU的当前利用率,
根据上述CPU的当前利用率计算上述令牌桶的当前深度和当前刷令牌速率;
根据上述当前刷令牌速率,计算本次刷新预增令牌数;
放入上述预增令牌数个令牌到上述令牌桶。
优选地,上述方法在初始化时,执行以下步骤:
设置上述令牌桶深度的最大值与最小值,上述令牌桶刷令牌速率的最大值与最小值,上述令牌桶中令牌数的最低门限值,上述令牌桶深度增量以及刷令牌速率增量;
设置CPU利用率的最低门限值和最高门限值以及CPU利用率的步进值。
优选地,上述放入上述预增令牌数个令牌到上述令牌桶步骤之后,还包括以下步骤:
获取上述令牌桶的当前状态;
判断上述令牌桶的当前状态的类型,若为可用,则本次刷新结束;若为不可用,
则判断上述令牌桶中的当前令牌数是否大于最低门限值,若是,则将令牌桶的状态设为可用;否则,本次刷新结束。
优选地,上述根据CPU的当前利用率计算令牌桶的当前深度和当前刷令牌速率步骤具体包括以下步骤:
判断上述CPU的当前利用率是否小于上述CPU利用率的最低门限值,若是,则上述令牌桶的当前深度等于上述令牌桶深度的最大值,上述令牌桶的当前刷令牌速率等于上述令牌桶刷令牌速率的最大值;否则,
判断上述CPU的当前利用率是否大于上述CPU利用率的最高门限值,若是,则上述令牌桶的当前深度等于上述令牌桶深度的最小值,上述令牌桶的当前刷令牌速率等于上述令牌桶刷令牌速率的最小值;否则,
根据上述CPU的当前利用率,计算CPU的当前步进数;
根据上述CPU的当前步进数,计算上述令牌桶的当前深度以及当前刷令牌速率。
优选地,上述CPU的当前步进数通过以下公式计算:
step_number=(rate-low _ate)/utility
其中,step_number表示CPU的当前步进数,rate表示CPU当前利用率,low_rate表示CPU利用率的最低门限值,utility表示CPU利用率的步进值。
优选地,上述令牌桶的当前深度通过以下公式计算:
depth=min_depth+A*step_number
其中,depth表示令牌桶的当前深度,min_depth表示令牌桶深度的最小值,A表示令牌桶深度增量,step_number表示CPU的当前步进数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110096479.X/2.html,转载请声明来源钻瓜专利网。