在分布式交换路由器系统中CPU报文流量控制的方法
技术领域:
本发明属于现代IP通信网络中的分布式交换路由器系统技术领域,尤其涉及具有多个业务板卡的机架式交换路由设备中CPU报文的流量控制方法。
背景技术:
在现代IP宽带通信网络中,高性能的交换路由器作为网络的核心部分具有极高的战略意义。这些交换路由器大多采用分布式的体系结构,多插槽的机架式结构,可配置一个主控板、主控板冗余备份板、以及多个业务板。无论是主控板还是业务板都有自己的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报文流量统计模块对每种类型的报文建立一个计数器,每收到一个报文计数器值加一;同时系统中有一个定时器,以设定的时间Δt为周期对所有报文计数器清空,如此,则每个报文计数器的当前值则为当前该类型CPU报文的流量。报文控制的流量门限值的计算由所述CPU报文流量统计模块的定时器触发,每间隔Δt时间计算一次。计算公式如下:
Ct(i)=Cmin(i)+a(i)*(1-P%)*Cmax(i)
式中各参数含义如下:
Ct(i)-i类型CPU报文在t时刻的流量门限值;
Cmin(i)-i类型CPU报文最小报文处理流量;
Cmax(i)-i类型CPU报文最大报文处理流量;
P%-t时刻CPU占用率;
a(i)-i类型CPU报文的流量门限调整系数。
对于参数Cmin(i),Cmax(i),a(i),在不同的设备上是不一样的,这些参数是一个试验值,可以通过做试验来确定一个合适的值。同时这几个值也可以通过命令行来修改。总之,调整到一个使用者认为合适的值就可以。
所述的分布式交换路由器系统的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报文特征做详细地分析,包括报文的目的MAC地址,源MAC地址,以太网类型,目的IP地址,源IP地址,应用层协议等。分析的目的在于排除报文过滤规则之间的相关性,做到既能一个不漏的捕获应该捕获的报文,也能在实施控制时不让报文被其他的过滤规则所捕获。换言之,每一条报文过滤规则只能捕获一种类型的报文,当规则被删除后,这种类型的报文不能被其它规则捕获。
本发明的优点和积极效果:
本发明的CPU报文流量的监测和控制方法,在CPU报文流量超过CPU处理能力时采取一定的措施减少CPU报文的流量,从而降低对CPU资源的占用率,防止主控板和业务板的CPU资源在受到大量CPU报文的冲击下被耗尽,使系统不至于因此而崩溃。
具体实施方式:
分布式CPU报文流量控制的实施要求主控板和业务板分别对各自的CPU报文队列进行监控统计,业务板从主控板获取主控板的CPU利用率并以此计算CPU报文流量的最大值。
当前系统各种类型CPU报文在单位时间内的数目通过一个CPU报文流量统计模块统计获得,该CPU报文流量统计模块对每种类型的报文建立一个计数器,每收到一个报文计数器值加一;同时系统中有一个定时器,以1秒为周期对所有报文计数器清空,如此,则每个报文计数器的当前值则为当前该类型CPU报文的流量。
报文控制的流量门限值的计算由CPU报文流量统计模块的定时器触发,每秒计算一次。计算公式如下:
Ct(i)=Cmin(i)+a(i)*(1-P%)*Cmax(i)
Ct(i)-i类型CPU报文在t时刻的流量门限值;
Cmin(i)-i类型CPU报文最小报文处理流量;
Cmax(i)-i类型CPU报文最大报文处理流量;
P%-t时刻CPU占用率;
a(i)-i类型CPU报文的流量门限调整系数。
业务板CPU报文控制流程如下:
1.设置分组处理器的报文过滤规则以捕获协议处理需要的协议报文。分组处理器根据所设置的CPU报文过滤规则捕获报文。
2.分析CPU报文,识别其类型。根据类型进入不同的CPU报文队列。
3.CPU报文流量统计模块对报文进行统计,计算出流量,并与当前允许该类报文控制的流量门限值进行比较。
4.如果报文流量未超过门限,则报文进入队列,然后经过主控板与业务板之间的控制信道发往主控板。
5.如果报文流量超过门限则启动报文控制,该报文被丢弃,同时该类报文的硬件过滤规则被关闭,停止捕获报文。
6.CPU报文流控定时器按照固定间隔时间开启所有被关闭的硬件过滤规则,业务板又开始捕获这类报文。
主控板CPU报文控制流程如下:
1.主控板从控制信道获取从业务板发来的CPU报文。
2.分析CPU报文,识别其类型,根据类型进入不同的报文队列,CPU报文流量统计模块计算当前的流量。
3.如果报文流量未超过流量门限,则报文被CPU处理,报文流量计数增加。
4.如果报文流量超过流量门限,报文被丢弃,并且在报文流量计数被刷新之前所有的该类型报文都将被丢弃。
5.CPU报文流控定时器刷新所有的报文流量计数器,重新开始流量统计。