数据通信设备CPU收发报文保护系统及方法
技术领域
本发明涉及一种数据报文收发系统,特别涉及一种数据通信设备CPU收发报文保护系统及方法。
背景技术
随着计算机网络技术的不断发展,网络中传输的数据信息量越来越庞大。在一些大型的城域网的汇聚层、小型城域网的核心层、大型企业网以及一些园区网络的骨干网络中,担当汇聚和交换作用的核心设备通常采用分布式的框式设备。分布式的框式设备一般由上联盘、主控盘和多个接口盘组成,上联盘起到汇聚的作用,提供更大的带宽通道,而主控盘负责管理和控制接口盘等功能,接口盘则具有报文转发功能。主控盘和接口盘上都带有CPU和通信芯片,通信芯片实现报文的转发,而CPU实现对管理报文和协议报文的处理,通过对通信芯片的控制,完成相关业务的功能。(图1为现有技术中分布式框式设备的结构图)。
在现有技术中的交换设备中,普通的数据报文主要通过通信芯片进行转发,上行方向从用户口(UNI口)进入,通过通信芯片转发,从上联口(NNI口)出去。下行方向从上联口(NNI口)进入,通过通信芯片转发,从UNI口出去。协议报文则会在通信芯片进行特定的处理,经过精确的匹配后,上报给CPU,由CPU对其进行操作。而CPU主要收发的报文包括通信芯片上报的协议报文和协议栈收到的管理报文。通信芯片上报的协议报文有IGMP协议报文、DHCP协议报文、PPPOE协议报文、LACP协议报文等,而协议栈收到的管理报文则有ICMP报文、TELNET报文等。图2为现有技术的交换设备报文传输流程图。
由于各个协议的处理动作千差万别,可能会涉及到发包、端口操作、批量的表操作等,这就导致各个协议占用CPU的资源不同。当大量的报文送上CPU时,会导致CPU的资源被耗尽,导致系统死机。同时,CPU还会接受网络驱动发送的管理报文,如telnet等,如果两者间不能有效协调,也会导致CPU的资源被耗尽。因此保证CPU收发报文工作的效率和稳定是交换设备正常工作的前提,只有当处理好CPU的收发包的相关问题,才能使相关的上层协议正常交互,从而使交换设备稳定、高效地运行。
在现有的系统中,由于CPU资源是有限的,且为各种协议共享资源,不能被某种协议报文全部占用,特别是在网络攻击日趋严重的情况下,每种类型的设备都需要根据自己所支持的特性,设计各种协议报文上报的带宽,给每种协议报文分配一定的带宽,从而保证了协议报文上送CPU通道时,每种协议报文不至于占据太多的带宽,从源头上保障CPU资源的合理应用。将每一种协议划分成一种类型,同时预先分配不同的上报CPU带宽,由于支持的协议种类繁多,而CPU的总入口带宽是有限的,因此分配给每个协议的带宽相对较少,且固定不变。由于当前CPU的利用率不同,往往为了CPU安全,把CPU的总入口带宽设置的相对较小。
按照现有技术的升级过程,其主要的缺点有如下几点:
(1)不同的协议预先分配的带宽是不变的,且由于为了保证CPU的正常运行,通常会把各种协议上报CPU的总入口带宽设置的相对较小,造成CPU资源利用率低,且传输效果较差。
(2)当CPU接收了大量的网络驱动发送的报文时,当前CPU的利用率很高,而同时通信芯片上报的报文数量也很大时,就可能导致CPU处理不过来,造成上层处理任务挂死,影响系统的稳定性。
(3)当CPU利用率很高时,不能灵活的控制各个协议模块的正常运行,可能会出现只有某个协议的报文被上报,而其他的报文未被上报,影响系统的稳定性。
发明内容
本发明的目的是提供一种数据通信设备CPU收发报文保护系统,能够保证CPU正常的收发包,防止上报CPU的报文数量过多,导致CPU资源被耗尽,造成系统死机;同时,通过查询CPU的利用率和检测报文的当前流量,动态调整上报CPU的带宽,使得CPU资源得到更有效的利用。
为了实现以上目的,本发明是通过以下技术方案实现的:
一种数据通信设备CPU收发报文保护系统,包含:
接口模块,所述的接口模块包含一个或多个物理接口,用于接收网络驱动向CPU发送的协议报文;
开关控制模块,所述的开关控制模块根据各个协议报文的频率分配对应的固定带宽,并通过若干个开关函数开关对应的协议,控制各个协议对应的协议报文是否上报CPU;
资源分配模块,所述的资源分配模块根据网络驱动所发送的协议报文,确定各个协议报文的优先级,并给不同的优先级设置对应的权重,生成包含各个协议所对应的固定带宽和优先级的静态协议功能表。
还包含:报警模块,所述的报警模块设置警告阀值,所述的警告阀值为设定的CPU使用率的报警上限值。
所述的网络驱动的通信芯片中的字段匹配处理器匹配网络驱动向CPU发送的协议报文,按需选取并上报若干个开关函数所开关的对应的协议。
所述的接口模块的总入口带宽为所述的开关控制模块所打开的各个协议所分配的固定带宽之和。
当资源分配模块查询CPU的利用率超过警告阀值时,检测当前各个协议报文的流量,根据预先设定的协议优先级,关闭优先级比较低的协议报文,调整总入口带宽及对应的各个协议报文的带宽,生成动态协议功能表。
当协议报文的总流量超过当前的总入口带宽时,将会按所述的资源分配模块所设置的不同优先级的协议对应的权重,对协议报文的带宽进行重新分配;当协议报文的总流量未超过当前的总入口带宽时,则根据流量值重新分配带宽。
所述的资源分配模块确定各个协议报文优先级的因素包含:报文处理速度和占用的CPU资源。
所述的报文处理速度快且占用CPU资源少的协议获得高的优先级,报文处理速度慢且占用CPU资源多的协议获得低的优先级。
一种数据通信设备CPU收发报文保护方法,包含如下步骤:
步骤1:预设置一固定时间,资源分配模块按照所述的固定时间查询CPU的利用率;
步骤2:根据静态协议功能表,通过开关控制模块的开关函数打开相应的协议报文;
步骤3:判断CPU的利用率是否超过报警模块设置的报警阀值,若超过报警阀值,检测步骤2中打开的各个协议报文的流量,根据预先设定的协议优先级,关闭优先级比较低的协议报文,调整总入口带宽及对应的各个协议报文的带宽,生成动态协议功能表,并返回执行步骤1;若未超过阀值,则执行步骤4;
步骤4:根据步骤3中所检测的步骤2中打开的各个协议报文的流量,计算出协议报文的总流量;
步骤5:判断协议报文的总流量是否大于总入口带宽,若大于,则按照分配好的权重,调整各个协议的带宽,并返回执行步骤1;若不大于,则根据各个协议报文的流量,调整各个协议带宽,向CPU发送协议报文。
本发明与现有技术相比,具有以下优点:
(1)为了确保可以更加充分利用CPU资源,通过查询CPU的利用率和当前各个协议报文流量,对各个协议分配的带宽进行动态调整,在保护CPU安全的同时,有效的分配不同协议的带宽,提高传输效果。
(2)通过查询当前CPU的利用率,当CPU被网络驱动占去大量的资源时,可以对应的降低通信芯片上报的报文的带宽,避免CPU的资源被耗尽,造成系统死机等现象。
(3)给不同的协议根据处理的速度和占有的资源来分配优先级,当CPU利用率高时,根据预先分配好的协议优先级,让处理速度快且占用资源少的协议报文以较大的比例上报CPU,而处理速度慢且占用资源多的协议报文以较小的比例上报CPU或者丢弃。使得系统效率更好,灵活性更强。
附图说明
图1为现有技术中分布式框式设备的结构图;
图2为现有技术的交换设备报文传输流程图;
图3为本发明数据通信设备CPU收发报文保护系统中当协议A、B、C打开时,各个协议与总入口带宽关系图;
图4为本发明数据通信设备CPU收发报文保护系统的当协议A、B打开,C关闭时,各个协议与总入口带宽关系图;
图5为本发明数据通信设备CPU收发报文保护系统的协议优先级和占有CPU资源和报文处理速度的关系图;
图6为本发明数据通信设备CPU收发报文保护系统的权重与优先级的关系图;
图7为本发明数据通信设备CPU收发报文保护系统的CPU利用率和总入口带宽的关系图;
图8为本发明数据通信设备CPU收发报文保护方法的流程图。
具体实施方式
以下结合附图,通过详细说明一个较佳的具体实施例,对本发明做进一步阐述。
一种数据通信设备CPU收发报文保护系统,包含:接口模块、开关控制模块、资源分配模块以及报警模块。
其中,接口模块包含一个或多个物理接口,用于接收网络驱动向CPU发送的协议报文,在本实施例中,网络驱动的通信芯片中的字段匹配处理器针对不同的协议报文的特性,精确匹配网络驱动向CPU发送的协议报文,按需选取并上报若干个开关函数所开关的对应的协议。
开关控制模块根据各个协议报文的频率分配对应的固定带宽,保证在尽可能不丢包的情况下,把需要的协议报文上报到CPU,并通过若干个开关函数开关对应的协议,控制各个协议对应的协议报文是否上报CPU,在本实施例中,通过传入开关数值0和1,其中1表示该协议报文打开,该协议报文上报CPU,而0则表示协议报文关闭,该协议报文不上报CPU。接口模块的总入口带宽为开关控制模块所打开的各个协议所分配的固定带宽之和,譬如:如图3所示,当协议A和协议B和协议C都处于打开状态时,则总入口带宽=协议A带宽+协议B带宽+协议C带宽;而如果协议A和协议B处于打开状态,而协议C处于关闭状态,则总入口带宽=协议A带宽+协议B带宽(如图4所示)。通过开关协议报文,可以达到快速释放带宽的功能,避免关闭的协议占用带宽资源,造成资源的浪费。
资源分配模块根据网络驱动所发送的协议报文,确定各个协议报文的优先级,并给不同的优先级设置对应的权重(如图6所示),而根据上层软件需要,对各个协议进行开关设置,同时,生成包含各个协议所对应的固定带宽和优先级的静态协议功能表,当上层软件修改对应的协议状态时,静态的协议功能表也随之改变。在本实施例中,由于在多任务操作系统中,各种事件需要用尽量短的时间片处理完成,以保证其他任务有足够的机会得到调度,因此,资源分配模块确定各个协议报文优先级的因素包含:报文处理速度和占用的CPU资源,而报文的处理速度主要跟处理流程有关,而占有CPU的资源则跟报文的长度,分配的空间等因素有关,协议优先级=A*占有占用CPU资源+B*报文处理速度,其中,A和B根据不同CPU试验得到;如图5所示,处理速度快且占用资源少的协议分配高优先级,处理速度慢且占用资源多的协议分配低的优先级,例如协议A,接收到报文后,添加了相应的字段后进行转发,而协议B,接收到报文后,需要根据报文,生成对应的表项,且需要下发硬件,然后再新生成新的协议报文对外转发,因此可见协议A的处理时间会短于协议B,则协议A的优先级应高于协议B的优先级。
当资源分配模块检测到协议报文的总流量超过当前的总入口带宽时,将会按资源分配模块所设置的不同优先级的协议对应的权重,对协议报文的带宽进行重新分配;当协议报文的总流量未超过当前的总入口带宽时,则根据流量值重新分配带宽。
报警模块设置警告阀值,该警告阀值为设定的CPU使用率的报警上限值。当资源分配模块查询CPU的利用率超过警告阀值时,检测当前各个协议报文的流量,根据预先设定的协议优先级,关闭优先级比较低的协议报文,调整总入口带宽及对应的各个协议报文的带宽,进行动态分配各个协议的带宽,生成动态协议功能表。譬如:开始时,预设警告阀值Mw为90%,其对应的阀值总入口带宽为Bw。协议A带宽为Ba,协议B带宽为Bb,协议C带宽为Bc,其中各种协议的优先级为:协议A的优先级是1,协议B的优先级是2,协议C的优先级是3;当检测结果CPU利用率大于90%时,表示资源已经处于繁忙状态,此时需要根据优先级,可以把协议C暂时关闭,让协议A和协议B正常运行,同时需要依据权重调整Ba和Bb,减少CPU的负荷,保证系统的正常运行;同时需要减少总入口带宽,对应减低协议A和协议B的带宽,并生成动态协议功能表。
当投入使用时,通过一个任务在一定时间周期检测CPU的利用率,根据检测结果,进行动态的带宽调整。如图7所示,CPU利用率越高,则总入口带宽越小,而CPU利用率越低,则总入口带宽越小。并且,检测当前协议报文的流量,如果总流量超过总入口带宽,则根据权重进行分配带宽,如果没有总流量超过总带宽,则根据流量值进行调整带宽。如图8所示,其具体步骤如下:
步骤1:预设置一固定时间,资源分配模块按照所述的固定时间查询CPU的利用率;
步骤2:根据静态协议功能表,通过开关控制模块的开关函数打开相应的协议报文;
步骤3:判断CPU的利用率是否超过报警模块设置的报警阀值,若超过报警阀值,检测步骤2中打开的各个协议报文的流量,根据预先设定的协议优先级,关闭优先级比较低的协议报文,调整总入口带宽及对应的各个协议报文的带宽,生成动态协议功能表,并返回执行步骤1;若未超过阀值,则执行步骤4;
步骤4:根据步骤3中所检测的步骤2中打开的各个协议报文的流量,计算出协议报文的总流量;
步骤5:判断协议报文的总流量是否大于总入口带宽,若大于,则按照分配好的权重,调整各个协议的带宽,并返回执行步骤1;若不大于,则根据各个协议报文的流量,调整各个协议带宽,向CPU发送协议报文。
综上所述,本发明数据通信设备CPU收发报文保护系统,能够保证CPU正常的收发包,防止上报CPU的报文数量过多,导致CPU资源被耗尽,造成系统死机;同时,通过查询CPU的利用率和检测报文的当前流量,动态调整上报CPU的带宽,使得CPU资源得到更有效的利用。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。