具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
参考图1,在本发明实施例一中,实现本发明实施例一所提供的方法可以包括以下步骤:
步骤101:当接收到网络中断请求时,执行中断处理程序;
其中,本实施例一中执行中断处理程序可以由第一CPU执行,所述第一CPU为接收到网络中断请求的CPU;其中,执行中断处理程序的过程即是第一CPU处理上半部中断响应的过程;
步骤102:确定需要参与中断处理的CPU组;
其中,本实施例一中确定需要参与中断处理的CPU组可以由第一CPU来执行;
步骤103:触发所述CPU组中各CPU开始进行网络数据的中断处理;
其中,本实施例一中所述触发所述CPU组中各CPU开始进行网络数据的中断处理可以由第一CPU来执行;
在本发明实施例一中,以Linux操作系统为例,中断处理程序可以分为上半部(top half)和下半部(bottom half),上半部是一般的中断服务程序,由硬件中断触发,应当尽可能短小,处理尽可能快;而下半部是单独的一段处理程序,一般将其放入立即队列中以便快速执行。在本实施例中,所述第一CPU为接收到网络中断请求的CPU,当操作系统中的第一CPU接收到网卡发送的网络中断请求时,第一CPU开始执行中断处理程序,然后确定需要参与中断处理的CPU组,其中所述CPU组可以包括所述第一CPU,也可以不包括所述第一CPU,然后第一CPU再触发所述CPU组中各CPU开始进行网络数据的中断处理,使系统进入软中断环境,所述各CPU可以共同进行网络数据的中断处理;
在本实施例中,通过确定需要参与中断处理的CPU组,并唤醒所述CPU组中各CPU的内核进程以共同处理网络数据引起的中断响应,从而可以使多CPU操作系统中的使用率较低的CPU也能处理中断响应,解决了系统资源的浪费问题,并且,多个CPU处理中断请求,可以大幅度的提高CPU处理网络数据的性能,进一步减少了丢包现象的产生。
参考图2,在本发明实施例二中,实现本发明实施例二所提供的方法可以包括以下步骤:
步骤201:当接收到网络数据报文时,网卡产生网络中断请求;
当网卡收到一系列网络数据报文时,网卡产生网络中断请求;
步骤202:当接收到网卡发送的网络中断请求时,第一CPU执行中断处理程序;
其中,所述第一CPU是指多核CPU中接收到该网络中断请求的CPU;当所述第一CPU接收到所述网络中断请求时,响应该中断,进入中断服务程序处理函数中,开始处理上半部中断;其中,上半部中断的处理可以为刷新各种中断相关的寄存器状态,以保证中断处理的及时性;
步骤203:查询多核CPU中各CPU的使用参数;
所述第一CPU查询多核CPU中各个CPU的使用参数,以获得每一个CPU的当前使用情况,其中,所述使用参数可以为占用率;
步骤204:根据所述使用参数,按照预置规则选择需要参与中断处理的CPU组;
根据步骤203中查询到的使用参数,在实际中可以为占用率,按照预置的规则选择需要参与中断处理的CPU,其中所述预置规则可以是,当某一CPU的占用率低于预置的门限值时,例如,所述占用率低于40%,将该CPU确定为需要参与中断处理的CPU;
步骤205:唤醒所述CPU组中各的内核进程;
唤醒CPU组中各CPU的内核进程,即是激活所述CPU预先设定的网络数据处理的内核进程;
步骤206:所述CPU组中的各CPU共同进行网络数据的中断处理;
当所述CPU组中各CPU的内核进程被唤醒时,所述各CPU开始进入软中断环境,共同进行网络数据的中断处理;
优选的,本步骤可以包括以下子步骤:
子步骤A1:获取网卡接收到的数据包;
子步骤A2:查询所述数据包的目的地址;
网卡接收到的数据包每个都包含有目的地址,可以查询其目的地址,以确定下一步发送的目的地;
子步骤A3:根据数据包的目的地址发送数据包;
将数据包发送到指定地址;
优选的,所述步骤206还可以包括:
子步骤A4:查询数据包是否全部发送,如果是,进入步骤207,如果否,则进入子步骤206;
当数据包没有全部发送完时,继续获取接收到的数据包,当数据包全部发送完时,转入步骤207;
步骤207:将所述参与中断处理的CPU的内核进程转为休眠状态;
优选的,本实施例中所述步骤205之后,还可以包括:
步骤B:第一CPU响应后续的中断处理请求。
当第一CPU唤醒所述参与处理中断的其他CPU之后,可以返回网络中断处理函数,响应后续的其他网络中断请求。
需要说明的是,本发明实施例不仅适用于防火墙、DDOS类网关系统和旁路的类似IDS检测系统,还可以在路由器上集成使用,并且,在网卡接收到数据包时可以采用该方法,在发送数据包也可采用类似方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
与上述本发明实施例所提供的方法相对应,参见图3,本发明实施例还提供了一种网络数据的中断处理装置,所述装置包括:
执行程序模块301,用于当接收到网络中断请求时,执行中断处理程序;
确定模块302,用于确定需要参与中断处理的CPU组;
触发模块303,用于触发所述CPU组中各CPU开始进行网络数据的中断处理。
在本实施例中,所述装置可以细分为三个模块,处理模块可以在第一CPU收到网络中断请求时,执行中断处理程序,确定模块在处理模块处理完上半部中断响应后,可以根据多核CPU的使用参数确定需要参与中断处理的CPU,然后触发模块触发所述CPU组中各CPU开始进行网络数据的中断处理。
可以看出,三个模块协同工作,共同完成网络数据的中断处理过程,与现有技术中只有一个CPU处理中断请求的过程相比,用本实施例中的装置去实现中断处理,可以解决多核CPU的平台下,其他CPU的系统资源浪费的问题,同时,因为中断响应能够及时地处理,还可以减少丢包现象,能够大幅度提高CPU处理网络流量的性能。
与本发明方法实施例二相对应,参考图4所示,示出了本发明装置实施例二的结构框图,如图所示,该装置可以包括:
产生模块401,用于接收到网络数据报文时,产生网络数据中断请求;
当网卡接收到一系列的数据报文时,产生模块生成网络中断请求;
执行程序模块402,用于当接收到网络中断请求时,执行中断处理程序;
查询参数子模块403,用于查询多核CPU的使用参数;
选择子模块404,用于根据所述使用参数,按照预置规则选择需要参与中断处理的CPU;
唤醒子模块405,用于唤醒所述CPU组中各CPU的内核进程;
中断处理子模块406,用于进行网络数据的中断处理;
优选的,在本实施例中所述中断处理子模块406具体可以包括:
获取子模块4061,用于获取网卡接收到的数据包;
查询地址子模块4062,用于查询所述数据包的目的地址;
发送子模块4063,用于根据数据包的目的地址发送数据包;
优选的,所述中断处理子模块406还可以包括:
查询数据包子模块4064,用于查询数据包是否全部发送;
优选的,在前述基础上,该装置还可以包括:
转换模块407,用于当所述查询数据包子模块的结果为是时,将所述CPU的内核进程转为休眠状态;
执行模块408,用于当所述查询数据包子模块的结果为否时,执行所述中断处理子模块功能。
优选的,所述装置还可以包括:
返回模块,用于返回网络中断处理函数,以响应后续的中断处理请求。
所述返回模块,可以使得第一CPU唤醒所述参与处理中断的其他CPU之后,第一CPU返回网络中断处理函数,以处理其他的中断请求。其中,所述第一CPU也可以和确定模块确定的需要参与中断处理的CPU共同处理网络数据的中断响应,也可以响应后续的中断处理请求。
在本实施例中,通过根据多核CPU的使用参数,即是占用率来确定需要参与中断处理的CPU组,可以使得那些使用率不高的CPU也参与到中断处理的过程中,从而可以大幅度地提高CPU处理网络流量的性能,使得系统处理网络的速度加快,进一步的,因为多核CPU的网络数据处理能够大规模地提高收包效率,也减少了丢包现象的产生。
需要说明的是,因为前述网络数据的中断处理方法介绍的十分详尽,所以所述网络数据的中断处理装置实施例未详尽之处,可以参见前述对网络数据的中断处理方法实施例的描述,在此不再对装置作详细描述。
通过以上实施例的描述,本领域的技术人员可以清楚地了解到需要说明的是,本发明实施例不需要引入独立的功能部件,可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以执行本发明各个实施例所述的方法。这里所称的存储介质,如:ROM/RAM、磁盘、光盘等。
以上对本发明实施例所提供的一种网络数据的中断处理方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其思想;同时,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。