一种基于多CPU的DDOS攻击识别的方法和装置与流程

文档序号:12493173
一种基于多CPU的DDOS攻击识别的方法和装置与流程

本申请涉及通信技术领域,特别涉及一种基于多CPU的DDOS攻击识别的方法和装置。



背景技术:

DDOS(Distributed Denial of Service,分布式拒绝服务)攻击是一个或多个攻击者通过控制大量的计算机作为攻击源,同时向某个服务器发送大量数据,最终导致服务器瘫痪的攻击方式。DDOS攻击会造成网络资源浪费、链路带宽堵塞、服务器资源耗尽而业务中断。

现有技术通过在接收到报文后,针对报文特征统计报文数量,获得流量速率,比较流量速率和预设的阈值。在流量速率超出预设的阈值时,对后续的该类报文进行限速或阻断等防护措施来实现识别并防护攻击的目的。

然而,在SMP(Symmetric Multi-Processing,对称多处理系统)的架构下,如果没有使用自旋锁,因为多CPU使用同一个存储结构进行流量统计,在并发进行加法操作时,会产生错误计算,导致统计的速率比实际的速率偏小;而如果使用了自旋锁,则会因为CPU等待读写而产生CPU处理资源的浪费。因此,现有技术在SMP架构下无法有效识别DDOS攻击。



技术实现要素:

有鉴于此,本申请提供一种基于多CPU的DDOS攻击识别的方法和装置,用以解决现有技术在SMP的架构下,无法有效识别DDOS攻击的问题。

具体地,本申请是通过如下技术方案实现的:

一种基于多CPU的DDOS攻击识别的方法,应用于对称多处理结构SMP设备,包括:

接收到目标会话的报文后,提取该报文的指定报文特征和处理该报文的目标CPU的标识;

基于预设的算法对所述指定报文特征进行计算得到索引值,并查找预设的索引表中与该索引值对应的索引表项,以及更新该索引表项中记录的报文数量;其中,所述索引表项包括与所述SMP设备的各CPU对应的子表项;该子表项包括对应的CPU的标识和该CPU所处理的所述目标会话的报文数量的映射关系;

基于所述索引表项中各子表项中记录的报文数量统计在单位时间内各CPU对应于所述目标会话的报文接收速率,并将各子表项对应的所述报文接收速率相加,得到所述SMP设备单位时间内对应于所述目标会话的报文接收速率;

判断所述SMP设备单位时间内对应于所述目标会话的报文接收速率是否大于预设的阈值;如果是,确定所述目标会话的报文为DDOS攻击报文。

在所述基于多CPU的DDOS攻击识别的方法中,所述方法还包括:

当根据计算得到的索引值无法在预设的索引表中查找到对应的索引表项时,新建对应该索引值的索引表项。

在所述基于多CPU的DDOS攻击识别的方法中,所述方法还包括:

确定所述目标会话的报文属于DDOS攻击后,为所述索引表项添加预设的防护标识。

在所述基于多CPU的DDOS攻击识别的方法中,所述方法还包括:

针对任一添加了所述防护标识的索引表项,基于该索引表项中各子表项中记录的报文数量统计在单位时间内各CPU对应的目标报文的接收速率,并将各子表项对应的目标报文接收速率相加,得到所述SMP设备单位时间内对应于目标会话的报文接收速率;

如果在预设时长内,所述SMP设备对应于目标会话的报文接收速率始终小于或等于预设的阈值,删除该索引表项中的防护标识;或者删除该索引表项。

在所述基于多CPU的DDOS攻击识别的方法中,所述方法还包括:

对与添加了防护标记的索引表项对应的目标会话的报文进行防护处理;其中,所述防护处理包括对所述目标会话的报文进行限速或阻断。

一种基于多CPU的DDOS攻击识别的装置,应用于对称多处理结构SMP设备,包括:

提取单元,用于接收到目标会话的报文后,提取该报文的指定报文特征和处理该报文的目标CPU的标识;

统计单元,用于基于预设的算法对所述指定报文特征进行计算得到索引值,并查找预设的索引表中与该索引值对应的索引表项,以及更新该索引表项中记录的报文数量;其中,所述索引表项包括与所述SMP设备的各CPU对应的子表项;该子表项包括对应的CPU的标识和该CPU所处理的所述目标会话的报文数量的映射关系;

计算单元,用于基于所述索引表项中各子表项中记录的报文数量统计在单位时间内各CPU对应于所述目标会话的报文接收速率,并将各子表项对应的所述报文接收速率相加,得到所述SMP设备单位时间内对应于所述目标会话的报文接收速率;

判断单元,用于判断所述SMP设备单位时间内对应于所述目标会话的报文接收速率是否大于预设的阈值;如果是,确定所述目标会话的报文为DDOS攻击报文。

在所述基于多CPU的DDOS攻击识别的装置中,所述装置还包括:

新建单元,用于当根据计算得到的索引值无法在预设的索引表中查找到对应的索引表项时,新建对应该索引值的索引表项。

在所述基于多CPU的DDOS攻击识别的装置中,所述装置还包括:

添加单元,用于确定所述目标会话的报文属于DDOS攻击后,为所述索引表项添加预设的防护标识。

在所述基于多CPU的DDOS攻击识别的装置中,所述装置还包括:

所述计算单元,进一步用于针对任一添加了所述防护标识的索引表项,基于该索引表项中各子表项中记录的报文数量统计在单位时间内各CPU对应的目标报文的接收速率,并将各子表项对应的目标报文接收速率相加,得到所述SMP设备单位时间内对应于目标会话的报文接收速率;

删除单元,用于如果在预设时长内,所述SMP设备对应于目标会话的报文接收速率始终小于或等于预设的阈值,删除该索引表项中的防护标识;或者删除该索引表项。

在所述基于多CPU的DDOS攻击识别的装置中,所述装置还包括:

防护单元,用于对与添加了防护标记的索引表项对应的目标会话的报文进行防护处理;其中,所述防护处理包括对所述目标会话的报文进行限速或阻断。

在本申请实施例中,接收到目标会话的报文后,获取所述目标会话的报文的指定报文特征和处理所述目标会话的报文的目标CPU的标识,然后根据所述指定报文特征和所述目标CPU的标识,更新所述目标CPU接收所述目标会话的报文数量,在达到预设的时间周期后,分别统计在单位时间内各CPU对应于所述目标会话的报文接收速率,并把各CPU对应于所述目标会话的报文接收速率相加,得到所述SMP设备单位时间内对应于所述目标会话的报文接收速率,判断所述SMP设备单位时间内对应于所述目标会话的报文接收速率是否大于预设的阈值,如果是,确定所述目标会话的报文属于DDOS攻击。

由于本申请实施例的技术方案,针对SMP设备的每个CPU分别统计对应于目标会话的报文接收速率,然后汇总各个CPU对应于目标会话的报文接收速率,求和得到所述SMP设备对应于目标会话的报文接收速率,所以在并发地进行统计时不会导致速率偏小,也没有因为使用了自旋锁而造成CPU处理资源的浪费。可以有效地在SMP架构下识别DDOS攻击。

附图说明

图1是本申请示出的一种基于多CPU的DDOS攻击识别的方法的流程图;

图2是本申请示出的一种基于多CPU的DDOS攻击识别的装置的逻辑框图;

图3是本申请示出的一种基于多CPU的DDOS攻击识别的装置的硬件结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。

在现有技术中,针对DDOS攻击的防御,可以在接收到目标会话的报文后,提取上述目标会话的报文的指定报文特征,然后根据上述指定报文特征统计接收上述目标会话的报文的数量,并计算单位时间内接收上述目标会话的报文的速率。然后,比较接收上述目标会话的报文的速率与预设的阈值,当接收上述目标会话的报文的速率大于预设的阈值时,确定上述目标会话的报文是DDOS攻击报文,此时,可以对后续的上述目标会话的报文进行限速或阻断等防护措施来防护DDOS攻击。

现有技术适用于使用单一存储结构进行流量统计的网络环境,如果将现有技术直接移植到SMP架构下,多CPU使用一个存储结构进行流量统计,如果使用自旋锁,则当任一CPU在统计接收到的目标会话的报文的数量时,其它CPU处于闲置状态,造成资源浪费。其中,自旋锁指的是针对多CPU架构引入的一种锁机制,在任何时刻,最多只能有一个CPU为自旋锁的保持者,该CPU可以访问存储结构,而其它CPU无法访问存储结构。

而如果不使用自旋锁,多CPU使用同一个存储结构进行流量统计时,会产生错误计算,导致统计的速率比实际的速率偏小。比如:在存储结构中记录的报文数量是100时,又接收到3个目标会话的报文,分别由3个CPU处理,每个CPU分别读取存储结构中的报文数量加1,在并行处理时,得到统计数量为101,小于实际的103,因此计算得到的单位时间的接收目标会话的报文的速率小于实际的速率。

可见,现有技术无法直接移植到SMP架构下有效地识别DDOS攻击。为此,本申请实施例引入多个存储结构,对应于SMP架构下的每一个CPU,针对每个CPU分别统计接收目标会话的报文的速率,然后汇总、相加得到SMP设备对应于目标会话的报文接收速率,通过比较计算得到的报文接收速率与预设阈值的大小,可以有效地识别DDOS攻击。

参见图1,为本申请示出的一种基于多CPU的DDOS攻击识别的方法的流程图,该方法的执行主体是SMP设备;所述方法包括以下步骤:

步骤101:接收到目标会话的报文后,提取该报文的指定报文特征和处理该报文的目标CPU的标识。

步骤102:基于预设的算法对所述指定报文特征进行计算得到索引值,并查找预设的索引表中与该索引值对应的索引表项,以及更新该索引表项中记录的报文数量;其中,所述索引表项包括与所述SMP设备的各CPU对应的子表项;该子表项包括对应的CPU的标识和该CPU所处理的所述目标会话的报文数量的映射关系。

步骤103:基于所述索引表项中各子表项中记录的报文数量统计在单位时间内各CPU对应于所述目标会话的报文接收速率,并将各子表项对应的所述报文接收速率相加,得到所述SMP设备单位时间内对应于所述目标会话的报文接收速率。

步骤104:判断所述SMP设备单位时间内对应于所述目标会话的报文接收速率是否大于预设的阈值;如果是,确定所述目标会话的报文为DDOS攻击报文。

上述SMP设备,指的是汇集了多CPU的计算机设备,其中,各CPU间共享内存子系统以及总线结构。系统将任务队列对称地分布在多个CPU上,所有的CPU都可以平等地访问内存、输入输出接口等,相比单个CPU的计算机设备而言,极大地提高了整个系统的数据处理能力。

在本申请实施例中,SMP设备针对DDOS攻击的防御,可以在接收到目标会话的报文后,提取上述目标会话的报文的指定报文特征和处理上述目标会话的报文的目标CPU的标识。其中,上述指定报文特征可以包括报文长度、TTL(Time To Live,生存时间值)、源端口、目的端口等信息,也可以包括数据段的一些信息。

根据上述指定报文特征确定的目标会话的报文可以是属于同一会话的报文,也包括属于一类会话的报文,取决于上述指定报文特征的具体内容,而上述指定报文特征的选择可以由人工设置。

在本申请实施例中,SMP设备在提取到上述目标会话的报文的指定报文特征后,可以基于预设的算法对上述指定报文特征进行计算,得到索引值。其中,上述预设的算法包括hash算法、RFC(Recursive Flow Classification,递归流分类)算法等。

SMP设备在计算得到上述指定报文特征的索引值后,可以根据该索引值查找预设的索引表,查到与该索引值对应的索引表项。上述索引表包括SMP设备接收到的报文的指定报文特征经计算得到的索引值与该指定报文特征对应的报文的接收数量的映射关系。具体而言,上述索引表的索引表项包括与SMP设备的各CPU对应的子表项,其中,每个子表项包括对应的CPU的标识和该CPU所处理的上述目标会话的报文的数量的映射关系。所以,指定报文特征计算得到的索引值对应的报文的接收数量,实际上是由子表项中记录的报文数量累加得到。

另外,如果SMP设备根据该索引值,无法在预设的索引表中查找到与该索引值对应的索引表项,说明上述目标会话的报文是上述目标会话的首报文,在这种情况下,可以新建一个与该索引值对应的索引表项。

SMP设备在查到与该索引值对应的索引表项后,根据处理上述目标会话的报文的目标CPU的标识,查找与该目标CPU的标识对应的子表项,然后在查找到对应该目标CPU的标识的子表项后,在子表项中记录的原有的报文数量上加一。

另外,如果SMP设备根据处理上述目标会话的报文的目标CPU的标识,在与该索引值对应的索引表项中无法查到与该目标CPU的标识对应的子表项,所述该目标CPU是首次处理上述目标会话的报文,在这种情况下,可以新建一个与该目标CPU的标识对应的子表项,然后,在该子表项的报文数量中记录为一。

在本申请实施例中,当达到预设的时间周期后,SMP设备可以统计在当前时间周期内上述目标会话的报文对应的索引表项中各子表项中记录的报文数量,在示出的一种实施方式中,针对每一个子表项统计报文数量,可以将当前时间周期结束时记录的报文数量减去上一个时间周期结束时记录的报文数量,得到每一个子表项对应的CPU在当前时间周期内接收上述目标会话的报文的数量。其中,上述时间周期可以根据应用需要进行设置,例如,可以设置为3秒。

在统计得到当前时间周期内接收到的上述目标会话的报文的数量后,可以接着计算每一个子表项对应的CPU在当前时间周期内对应于上述目标会话的报文接收速率,然后将各子表项对应的报文接收速率相加,得到SMP设备对应于上述目标会话的报文接收速率。

在本申请实施例中,SMP设备在计算得到对应于上述目标会话的报文接收速率后,可以将该报文接收速率与预设的阈值比较大小,其中,预设的阈值可以根据实际的应用环境人工配置。如果该报文接收速率大于预设的阈值,则可以确定上述目标会话的报文为DDOS攻击报文。

当SMP设备确定上述目标会话的报文为DDOS攻击报文时,可以为上述目标会话的报文对应的上述索引表项添加预设的防护标识。

通过该防护标识,SMP设备可以针对上述索引表项对应的上述目标会话的报文进行防护处理。其中,防护处理包括对上述目标会话的报文进行限速或者阻断。

在示出的一种实施方式中,SMP设备在接收到报文后,可以提取指定报文特征,并根据该指定报文特征查找预设的索引表中与该指定报文特征对应的索引表项,如果该索引表项被添加防护标记,则可以丢弃该报文。

在本申请实施例中,添加了上述防护标识的索引表项对应的目标会话的报文可能并非始终为DDOS攻击报文,在这种情况下,如果SMP设备始终以处理DDOS攻击报文的方式处理添加了上述防护标识的索引表项对应的目标会话的报文,显然是错误的处理方式。因此,本申请实施例对添加了防护标记的索引表项引入老化机制,用以解决上述问题。

针对任一添加了上述防护标记的索引表项,SMP设备可以继续统计接收该索引表项对应的目标会话的报文的数量,在达到周期时间后,统计该索引表项中各子表项中记录的报文数量,确定在这个时间周期内各CPU接收该索引表项对应的目标会话的报文的数量,并计算单位时间内各CPU对应于该目标会话的报文接收速率,并进行累加,得到SMP设备对应于该目标会话的报文接收速率。

在得到报文接收速率后,仍旧将该报文接收速率与预设的阈值比较大小。在预设时长内,SMP设备可以统计比较多次,如果该报文接收速率始终小于或等于预设的阈值,则说明该索引表项对应的目标会话的报文可能已经不是DDOS攻击报文了,在这种情况下,可以对该索引表项进行相应的处理。其中,上述预设时长即为老化机制的表项老化时长,可以根据实际应用情况进行配置,例如,预设时长可以配置为15秒。

在示出的一种实施方式中,SMP设备可以删除该索引表项,用于清理该索引表项占据的内存。在示出的另一种实施方式中,SMP设备可以删除该索引表项中的防护标识,表明该索引表项对应的目标会话的报文不再是DDOS攻击报文。上述措施可以有效规避SMP对报文的错误处理。

综上所述,在本申请实施例中,SMP设备针对DDOS攻击,在接收到目标会话的报文后,提取该目标会话的报文的指定报文特征以及处理该目标会话的报文的CPU的标识,然后在与该指定报文特征计算得到的索引值对应的索引表项中,与该CPU的标识对应的子表项中更新报文数量。由于对接收到的目标会话的报文的对应每一个CPU都有一个独立的存储结构进行流量统计,因此,在统计过程中不会出错。在预设的时间周期达到后,SMP设备可以计算各CPU对应于该目标会话的报文接收速率,然后累加得到SMP设备对应于该目标会话的报文接收速率,并比较报文接收速率与预设的阈值的大小,从而确定该目标会话的报文是否为DDOS攻击报文。可见,本申请实施例可以有效地在SMP架构下识别DDOS攻击。

与本申请基于多CPU的DDOS攻击识别的方法的实施例相对应,本申请还提供了用于执行上述方法的实施例的装置的实施例。

参见图2,为本申请示出的一种基于多CPU的DDOS攻击识别的装置的逻辑框图:

如图2所示,该基于多CPU的DDOS攻击识别的装置20包括:

提取单元210,用于接收到目标会话的报文后,提取该报文的指定报文特征和处理该报文的目标CPU的标识。

统计单元220,用于基于预设的算法对所述指定报文特征进行计算得到索引值,并查找预设的索引表中与该索引值对应的索引表项,以及更新该索引表项中记录的报文数量;其中,所述索引表项包括与所述SMP设备的各CPU对应的子表项;该子表项包括对应的CPU的标识和该CPU所处理的所述目标会话的报文数量的映射关系。

计算单元230,用于基于所述索引表项中各子表项中记录的报文数量统计在单位时间内各CPU对应于所述目标会话的报文接收速率,并将各子表项对应的所述报文接收速率相加,得到所述SMP设备单位时间内对应于所述目标会话的报文接收速率。

判断单元240,用于判断所述SMP设备单位时间内对应于所述目标会话的报文接收速率是否大于预设的阈值;如果是,确定所述目标会话的报文为DDOS攻击报文。

在本例中,所述装置还包括:

新建单元250,用于当根据计算得到的索引值无法在预设的索引表中查找到对应的索引表项时,新建对应该索引值的索引表项。

在本例中,所述装置还包括:

添加单元260,用于确定所述目标会话的报文属于DDOS攻击后,为所述索引表项添加预设的防护标识。

在本例中,所述装置还包括:

所述计算单元230,进一步用于针对任一添加了所述防护标识的索引表项,基于该索引表项中各子表项中记录的报文数量统计在单位时间内各CPU对应的目标报文的接收速率,并将各子表项对应的目标报文接收速率相加,得到所述SMP设备单位时间内对应于目标会话的报文接收速率。

删除单元270,用于如果在预设时长内,所述SMP设备对应于目标会话的报文接收速率始终小于或等于预设的阈值,删除该索引表项中的防护标识;或者删除该索引表项。

在本例中,所述装置还包括:

防护单元280,用于对与添加了防护标记的索引表项对应的目标会话的报文进行防护处理;其中,所述防护处理包括对所述目标会话的报文进行限速或阻断。

本申请基于多CPU的DDOS攻击识别的装置的实施例可以应用在SMP设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在SMP设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请基于多CPU的DDOS攻击识别的装置所在SMP设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的SMP设备通常根据该基于多CPU的DDOS攻击识别的装置的实际功能,还可以包括其他硬件,对此不再赘述。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1