CN108183893B - 一种分片包检测方法、检测装置、存储介质和电子设备 - Google Patents
一种分片包检测方法、检测装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN108183893B CN108183893B CN201711421831.6A CN201711421831A CN108183893B CN 108183893 B CN108183893 B CN 108183893B CN 201711421831 A CN201711421831 A CN 201711421831A CN 108183893 B CN108183893 B CN 108183893B
- Authority
- CN
- China
- Prior art keywords
- fragment
- packet
- node
- detection
- offset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种分片包检测方法,应用于多核处理器,多核处理器包括转发处理器和检测处理器,当所述转发处理器接收到分片包时,将所述分片包存储到存储池中,并将所述分片包的索引发送到正向缓冲队列中;检测处理器从所述正向缓冲队列获取所述分片包的索引,并根据所述分片包的索引从所述存储池中获取所述分片包;所述检测处理器根据分片包的分片偏移量和分片长度对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列发送给所述转发处理器。本发明有效的降低了检测过程中对CPU以及内存的消耗,同时避免了因再次分包转发过程中对连通性的影响;提高了检测结果的准确性和检查方法的可用性。
Description
技术领域
本发明涉及互联网领域,特别是涉及一种分片包的检测方法、检测装置、存储介质和电子设备。
背景技术
IP分片是指当数据包比链路最大传输单元大时,就可以被分解为很多的足够小片段,以便能够在其上进行传输,它被广泛的运用在数据传输中;而TCP/IP协议对IP分片的设计存在安全漏洞,经常被黑客用来发起拒绝服务攻击。其中分片超长和分片重叠是黑客经常利用的攻击方法。因此,相对应的,现有的网络安全产品中,通常采用重组分片的方式来判断是否存在攻击行为,在分片包数量不多时,能够较好地起到安全防御作用,但随着日前日益加大的数据流量,凸显出很多技术问题:
分片重组需要将各个分片重新组合成为一个完整的数据包,因此存在多次的数据拷贝动作,特别是在涉及多核处理的过程中重组数据包需要加锁解锁,CPU开销较大;当出现分片洪水攻击时,分片包的重组处理将会消耗大量的CPU比重,导致正常的流量得不到处理。
发明内容
为了解决现有技术中对IP分片攻击检测时CPU大部分消耗在分片包处理上,导致正常流量得不到处理的问题,本发明提供了一种分片包检测方法,以解决现有技术中的问题。
根据本发明的一个方面,提供了一种分片包的检测方法,所述方法应用于多核处理器,所述多核处理器包括转发处理器和检测处理器,所述方法包括:
当所述转发处理器接收到分片包时,将所述分片包存储到存储池中,并将所述分片包的索引发送到正向缓冲队列中,所述存储池、所述正向缓冲队列、反向缓存队列是共享内存中的数据结构,可同时被所述转发处理器和所述检测处理器访问;
所述检测处理器从所述正向缓冲队列获取所述分片包的索引,并根据所述分片包的索引从所述存储池中获取所述分片包;
所述检测处理器对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列发送给所述转发处理器。
进一步的,所述检测处理器对所述分片包进行合法性检测,包括:
根据所述分片包的五元组信息及分片标识获取所述分片包的分片偏移量及分片长度;
判断所述分片包的分片偏移量与分片长度的和是否大于预定数值;
若所述分片包的分片偏移量与分片长度的和大于该预定数值,则确定所述分片包未通过所述合法性检测。
进一步的,若所述分片包的分片偏移量与分片长度的和小于或等于预定数值,则判断哈希表下的链表中是否存储所述分片包对应的节点;所述哈希表中的每个节点对应一个链表,每个链表中的各节点记录有对应分片包的分片偏移量与分片长度;
若所述哈希表下的链表中未存储所述分片包对应的节点,则根据所述分片包的分片偏移量和分片长度创建第一节点,并确定所述分片包通过所述合法性检测。
进一步的,若所述哈希表下的链表中存储所述分片包对应的节点,则根据所述分片包的分片偏移量和分片长度创建第二节点,根据所述分片包的分片偏移量的大小将所述第二节点顺序插入所述链表中;
通过插入所述链表中第二节点的左节点和/或右节点检测所述分片包是否合法。
进一步的,所述通过插入所述链表中第二节点的左节点和/或右节点检测所述分片包是否合法,包括:
判断所述左节点的分片偏移量与分片长度的和是否大于所述第二节点的分片偏移量;和/或
判断所述第二节点的分片偏移量与分片长度的和是否大于所述右节点的分片偏移量;
若所述左节点的分片偏移量与分片长度的和小于所述第二节点的分片偏移量,且所述第二节点的分片偏移量与分片长度的和小于所述右节点的分片偏移量,则确定所述分片包通过所述合法性检测;
若所述左节点的分片偏移量与分片长度的和大于所述第二节点的分片偏移量,或所述第二节点的分片偏移量与分片长度的和大于所述右节点的分片偏移量,则将所述第二节点从所述链表中删除,并确定所述分片包未通过所述合法性检测。
进一步的,若所述左节点的分片偏移量与分片长度的和等于所述第二节点的分片偏移量,则将所述左节点和所述第二节点融合成为一个新节点,并确定所述分片包通过所述合法性检测;
若所述第二节点的分片偏移量与分片长度的和等于所述右节点的分片偏移量,则将所述右节点和所述第二节点融合成为一个新节点,并确定所述分片包通过所述合法性检测。
进一步的,当检测处理器检测到同一五元组及分片标识的首个分片包时,开始计时;当计时超过预设的阈值T而同一五元组及分片标识的分片包中至少有一个尚未通过合法性检测时,删除同一五元组及分片标识的分片包对应的节点。
根据本发明的另一方面,还提供一种分片包检测装置,该装置包括:
多核处理器,所述多核处理器包括转发处理器和检测处理器;
收发单元,用于在所述转发处理器收到分片包时,将所述分片包存储到存储池中,并将所述分片包的索引发送到正向缓冲队列中;
获取单元,用于从所述正向缓冲队列获取所述分片包的索引,并根据所述分片包的索引从所述存储池中获取所述分片包;
检测单元,用于通过所述检测处理器对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列发送给所述转发处理器;
共享存储单元,所述共享存储单元包括存储池、所述正向缓冲队列和所述反向缓存队列,可同时被所述转发处理器和所述检测处理器访问。
根据本发明的另一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述任一项所述方法的步骤。
根据本发明的另一方面,还提供一种电子设备,包括:
上述的计算机可读存储介质;以及
一个或多个处理器,用于执行所述计算机可读存储介质中的程序。
本发明的分片包的检测方法,将现有技术中同时用于转发及检测的处理器,分成两个独立的处理器,分别进行转发和检测,受到分片攻击时尽管检测处理器消耗会增大,但正常流量仍可由转发处理器处理不受影响。对分片包的检测由于数据存储在共享内存中,避免了多次的拷贝和加锁,加快了处理速度。由于采用了逐个分片判断合法性,而不必等待所有分片到达之后再重组判断合法性,因此检测时间大大缩短,检测合法或非法之后用于缓存分片包的内存空间即可迅速释放,因此有效降低了对内存的消耗。
附图说明
图1为本发明实施例所提供的一种分片包检测方法的流程示意图;
图2为本发明另一实施例所提供的检测处理器对分片包进行合法性检测的方法流程示意图。
图3为本发明另一实施例所提供的检测处理器对分片包进行合法性检测的方法流程示意图。
图4为本发明另一实施例所提供的一种分片包检测装置的结构示意图。
图5为本发明另一实施例所提供的一种分片包检测装置的结构示意图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
根据本发明的一个方面,如图1所示,提供一种分片包检测方法,该方法应用于多核处理器,该多核处理器包括转发处理器和检测处理器,方法包括:
步骤S110,当转发处理器接收到分片包时,将该分片包存储到存储池中,并将该分片包的索引发送到正向缓冲队列中。
其中,存储池、正向缓冲队列、反向缓存队列是共享内存中的数据结构,可同时被转发处理器和检测处理器访问。
目前内存通常习惯的分配方式是直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块地址不连续,实现共享内存比较困难。本发明提供一种存储池的内存分配方式,即在真正使用内存之前,一般先申请分配一定数量的、大小相等的内存块留作备用,这些一定数量的、大小相等的内存块组成存储池,当有新的内存需求时,就从存储池中分出一块或一部分内存块,这样做的一个显著优点是,存储池是一段地址连续的空间(即内存),可以通过地址转换技术方便地在处理器间实现共享内存,可以在不使用系统调用的前提下,同时被转发处理器和检测处理器访问。
共享内存可由转发处理器创建,其包括存储池、正向缓冲队列以及反向缓存队列,其中,存储池用来存储分片包;正向缓冲队列以及反向缓存队列存储的是分片包的索引数据,索引数据指向内存池中对应的分片包。索引数据可以是分片包的标志和寻址指针,也可以是分片包在存储池中存储地址的指针,还可以是分片包在存储池中存储位置的引用索引,或者其他的指示方式,只要能够通过这个索引的指示,从内存池中寻址到分片包即可。
正向缓冲队列以及反向缓存队列组成环形缓冲队列,该环形缓冲队列是一种读写安全的先入先出队列,采用无锁数据结构,用于本发明转发处理器和检测处理器间的通信,在本实施例中,环形缓冲队列可以有两个,正向缓冲队列用于转发处理器给检测处理器发送分片包;反向缓存队列用于检测处理器将检测通过后的分片包发回给转发处理器。
当然,作为改进,正向缓冲队列以及反向缓存队列并不局限于上述的各一个,也可以根据需要分别设置多个队列。
环形缓冲队列的长度是有限的,当检测处理器计算资源不足时正向缓冲队列就会出现分片包的索引数据包积压,因此,当已缓冲的索引数据包长度占正向缓冲队列总队列长度的比值达到预设的丢包阈值后,按与该阈值相关的比率丢弃索引数据包,同时丢弃该索引数据包指向的存储池中的分片包,当然,如果待缓冲的索引数据包与通过反向缓存队列接收过的索引数据包具有相同的分片特征,则优先处理缓冲避免丢弃,比如索引数据对应的分片包片1、片2已经被检测是正常的了,那么对于具有相同的分片特征的片3,则优先处理避免丢弃。又比如,当索引数据包积压到正向缓冲队列总长度的一半时,后续再有索引数据包进入的话,就要选择性丢弃。对于反向缓存队列,由于传输的都是通过合法性检测的索引数据包,其数据量小于正向缓冲队列中的数据量,因此原则上不容易发生积压,除非转发处理器出现积压。
本步骤将传统的转发、检测功能于一体的处理器拆分为转发处理器和检测处理器,二者具有独立的地址空间,并且通过共享内存进行通信。当转发处理器接收到分片包时,从存储池中申请一个数据结构用于表示分片包,将该分片包存储到存储池中,并将该分片包的索引发送到正向缓冲队列中。转发处理器承担着除分片攻击检测功能以外的数据面的其它所有功能。
步骤S120,检测处理器从正向缓冲队列获取该分片包的索引,并根据该分片包的索引从存储池中获取分片包。
数据收发进程给分片检测进程发送数据后,需要通过一种机制通知分片检测进程。如果采用非轮询的方式,就只能通过消息队列或者信号量等方法实现进程间通信,而这类方法都需要使用系统调用,开销较大,会降低数据收发进程的转发性能,进而引起数据包丢失等问题。因此,本发明的检测处理器采用轮询的方式在正向缓冲队列中收取分片包的索引数据包,该索引数据包指向存储池中对应的分片包,根据该索引数据包可以从存储池中获取对应的分片包。
步骤S130,检测处理器对获取的分片包进行合法性检测,并将合法性检测通过的分片包的索引通过反向缓存队列发送给转发处理器。
分片包的合法性检测由检测处理器完成,检测处理器会将合法性检测结果写到分片包的指定位置上,比如写在分片包可扩展使用的自定义字段上,之后通过反向缓存队列将通过合法性检测的分片包索引发回给转发处理器,由转发处理器进行后续处理。
检测处理器可与转发处理器同时启动,也可以是在转发处理器启动完成后启动,并把共享内存区域映射到自身处理器的空间中。为避免抢占转发处理器的CPU资源,本发明设计转发处理器和检测处理器分开在两个CPU核心里。
本发明的分片包的检测方法,将现有技术中同时用于转发及检测的处理器,分成两个具有独立地址空间且通过共享内存进行通信的转发处理器和检测处理器,进而有效的降低了检测过程中对CPU以及对内存的消耗。该方法不对分片包进行重组和再次分包,在不缓存数据包的前提下,实现了对分片包异常的单包检测,减少了内存消耗的同时避免了因再次分包转发过程中对连通性的影响。另外,本发明的方法通过对分片包进行合法性检测,把分片包的处理过程由同步操作转换为异步操作,有效降低了数据转发平面处理分片包的开销,相较于传统的分片重组检测更为精确和便捷,提高了检测结果的准确性和检查方法的可用性。
作为上一实施例的进一步改进,在上一实施例的基础上,在步骤S130之后,还包括:
步骤S140,转发处理器接收经检测处理器合法性检测通过的分片包的索引,根据该索引找到存储池中对应的分片包后进行后续操作。
转发处理器轮询反向缓存队列,接收经检测处理器合法性检测通过的分片包索引。当转发处理器接收到一个分片包索引时,由于存储池建立在共享内存中,因此转发处理器通过分片包索引的内存地址直接访问存储池中该索引指向的分片包即可,而无需进行数据拷贝。之后,转发处理器完成或辅助完成后续处理流程,比如将该分片包发送给网络,或者重组后进行高层的应用等等。
本发明设计了一个独立于转发处理器的检测处理器进行分片包的合法性检测。转发处理器通过共享内存将分片包索引发送给检测处理器,并由检测处理器完成对索引指向的分片包的合法性检测,把分片包的处理过程由同步操作转换为异步操作,有效降低了转发处理器处理分片包的开销,同时保证了数据转发的安全性。
根据本发明的另一方面,基于上述实施例的原理,本发明还提供一种分片包合法性检测方法,如图2所示,所述方法包括:
步骤S210,根据分片包的五元组信息及分片标识获取所述分片包的分片偏移量及分片长度。
分片包的五元组信息包括分片包的源IP地址、源端口、目的IP地址、目的端口以及传输层协议。本算法的核心结构是根据五元组确定哈希表下面的链表,根据分片标识确定链表下的对应的节点。哈希表的节点中存储的是一个链表,链表节点记录数据包的描述信息,结构如下:
Offset |
Length |
其中offset代表数据包的起始偏移,起始偏移表示的含义是该分片包的起始位置在整个数据包中的偏移量。一个大的完整的数据包可能会被切分成为多个分片包,所以每个分片包的数据是从完整数据包的哪个位置开始,就是由这个起始偏移确定的。length代表分片数据包的长度。
步骤S220,判断该分片包的分片偏移量与分片长度的和是否大于预定数值。
步骤S221,若该分片包的分片偏移量与分片长度的和大于该预定数值,则确定该分片包未通过合法性检测;
步骤S222,如果该分片包的分片偏移量与分片长度的和小于或等于该预定数值,则确定该分片包通过合法性检测。
比如,对于TCP/IP协议来说,其协议规定数据包传输的最大数值为65535字节,当超过65535字节时即为不合法数据包,对于本发明来说,65535即为预定数值,计算起始偏移offset和分片包长度length的和是否大于65535,如果大于65535,说明该分片包非法,该分片包未通过合法性检测,链表中对应该键值的节点删除,算法结束;否则进行后续检测。
在图2实施例的基础上,作为更详细的检测方法,如图3所示,相同步骤的原理在此不再赘述:
步骤S310,根据分片包的五元组信息及分片标识获取所述分片包的分片偏移量及分片长度。
步骤S320,判断该分片包的分片偏移量与分片长度的和是否大于预定数值,若大于,则执行步骤S370,否则,执行步骤S330。
步骤S330,如果该分片包的分片偏移量与分片长度的和小于或等于该预定数值,则判断哈希表下的链表中是否存储所述分片包对应的节点,若未存储有分片包对应的节点,则执行步骤S340,否则执行步骤S350;所述哈希表中的每个节点对应一个链表,每个链表中的各节点记录有对应分片包的分片偏移量与分片长度。
步骤S340,若所述哈希表下的链表中未存储所述分片包对应的节点,则根据所述分片包的分片偏移量和分片长度创建第一节点,执行步骤S380。
步骤S350,若所述哈希表下的链表中存储有所述分片包对应的节点,则根据所述分片包的分片偏移量和分片长度创建第二节点node,根据所述分片包的分片偏移量的大小将所述第二节点node顺序插入所述链表中,插入后依然保证所述链表的大小顺序(比如从大到小或者从小到大),执行步骤S360;
步骤S360,通过插入所述链表中第二节点node的左节点lnode和右节点rnode检测所述分片包是否合法,具体判断方法为:
判断所述左节点lnode的分片偏移量与分片长度的和是否大于所述第二节点node的分片偏移量;或判断所述第二节点node的分片偏移量与分片长度的和是否大于所述右节点rnode的分片偏移量:
若所述左节点lnode的分片偏移量与分片长度的和小于所述第二节点node的分片偏移量,或所述第二节点node的分片偏移量与分片长度的和小于所述右节点rnode的分片偏移量,则执行步骤S380。例如,将第二节点node和其左节点lnode做比较,如果左节点的分片偏移量与左节点的分片长度之和小于第二节点node的分片偏移量(即lnode->Offset+lnode->Length<node->Offset),则说明该分片包通过合法性检测;将第二节点node和其右节点rnode做比较,如果第二节点node的分片偏移量与第二节点node分片长度的和小于右节点rnode的分片偏移量(即node->Offset+node->Length<rnode->Offset),则说明该分片包通过合法性检测。
若所述左节点lnode的分片偏移量与分片长度的和大于所述第二节点node的分片偏移量,或所述第二节点node的分片偏移量与分片长度的和大于所述右节点rnode的分片偏移量,则将所述第二节点node从所述链表中删除,执行步骤S370。例如,将第二节点node和其左节点lnode做比较,如果左节点lnode的分片偏移量与左节点lnode分片长度的和大于第二节点node的分片偏移量(即lnode->Offset+lnode->Length>node->Offset),则说明该分片包存在重合,该分片包没有通过合法性检测,删除该分片包,并把哈希表中对应该键值的节点删除,算法结束;将第二节点node和其右节点rnode做比较,如果第二节点node的分片偏移量与第二节点node分片长度的和大于右节点rnode的分片偏移量(即node->Offset+node->Length>rnode->Offset),则说明该分片包存在重合,该分片包没有通过合法性检测,删除该分片包,并把哈希表中对应该键值的节点删除,算法结束。
作为上述实施例的进一步改进,若左节点lnode的分片偏移量与分片长度的和等于第二节点node的分片偏移量,则将左节点lnode和第二节点node融合成为一个新节点,执行步骤S380;若第二节点node的分片偏移量与分片长度的和等于右节点rnode的分片偏移量,则将右节点rnode和第二节点node融合成为一个新节点,执行步骤S380。例如,将第二节点node和其左节点lnode做比较,如果左节点的分片偏移量与左节点分片长度的和等于第二节点node的分片偏移量(即lnode->Offset+lnode->Length=node->Offset),则将第二节点node和其左节点lnode融合,融合后新节点newnode的分片偏移量等于左节点lnode的分片偏移量(即newnode->Offset=lnode->offset);新节点newnode的分片长度等于左节点lnode的分片长度与第二节点node的分片长度之和(即newnode->length=lnode->length+node->length)。将第二节点node和其右节点rnode融合的原理与左节点相同,在此不再赘述。
步骤S370,确定该分片包未通过合法性检测。
步骤S380,确定该分片包通过合法性检测。
作为上述实施例的进一步改进,当检测处理器检测到同一五元组及分片标识的首个分片包时,开始计时;当计时超过预设的阈值T而同一五元组及分片标识的分片包中至少有一个尚未通过合法性检测时,删除同一五元组及分片标识的分片包对应的节点,结束检测。
进一步的,将未通过合法性检测的分片包进行废弃处理。废弃处理的具体方式取决于设备的属性和用户的配置。一般地,防火墙设备可以根据用户配置,丢弃数据包,和/或发送日志等。
哈希节点删除的时机包括:检测存在攻击时删除对应的节点;相同键值所有分片均处理完成时删除对应的节点;以及设定一个时间门限T,如果自首个分片包收到经过时间T后,该键值对应的分片包仍未处理完成时,删除对应的节点。
本发明的一种分片包的检测方法,可有效检测IP分片攻击并对检测处理后的数据进行后续处理,本发明能有效降低检测过程中对CPU以及内存的消耗;所述方法不对分片包进行重组和再次分包,在不缓存数据包的前提下,实现了对分片包异常的单包检测,减少了内存消耗的同时避免了因再次分包转发过程中对连通性的影响;所述方法通过对分片包进行合法性检测,把分片包的处理过程由同步操作转换为异步操作,有效降低了数据转发平面处理分片包的开销,相较于传统的分片重组检测更为精确和便捷,提高了检测结果的准确性和检查方法的可用性。
基于上述原理,根据本发明的另一方面,如图4所示,还提供一种分片包检测装置,由于其原理与检测方法相对应,因此不再赘述。一种分片包检测装置,该装置包括多核处理器和共享内存430,所述多核处理器包括转发处理器410和检测处理器420,其中:
所述转发处理器410用于在接收到分片包时,将所述分片包存储到存储池431中,并将所述分片包的索引发送到正向缓冲队列432中;
所述检测处理器420用于从所述正向缓冲队列432获取所述分片包的索引,并根据所述分片包的索引从所述存储池431中获取所述分片包;
所述检测处理器420还用于对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列433发送给所述转发处理器410;
所述共享内存430包括存储池431、所述正向缓冲队列432和所述反向缓存队列433,可同时被所述转发处理器410和所述检测处理器420访问。
根据本发明的另一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
当所述转发处理器接收到分片包时,将所述分片包存储到存储池中,并将所述分片包的索引发送到正向缓冲队列中,所述存储池、所述正向缓冲队列、反向缓存队列是共享内存中的数据结构,可同时被所述转发处理器和所述检测处理器访问;
所述检测处理器从所述正向缓冲队列获取所述分片包的索引,并根据所述分片包的索引从所述存储池中获取所述分片包;
所述检测处理器对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列发送给所述转发处理器。
基于上述原理,根据本发明的另一方面,如图5所示,还提供一种分片包检测装置,由于其原理与检测方法相对应,因此不再赘述。一种分片包检测装置,该装置500包括:
多核处理器510,所述多核处理器包括转发处理器和检测处理器;
收发单元520,用于在所述转发处理器收到分片包时,将所述分片包存储到存储池中,并将所述分片包的索引发送到正向缓冲队列中;
获取单元530,用于从所述正向缓冲队列获取所述分片包的索引,并根据所述分片包的索引从所述存储池中获取所述分片包;
检测单元540,用于通过所述检测处理器对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列发送给所述转发处理器;
共享存储单元550,所述共享存储单元包括存储池、所述正向缓冲队列和所述反向缓存队列,可同时被所述转发处理器和所述检测处理器访问。
根据本发明的另一方面,还提供一种电子设备,包括:
上述的计算机可读存储介质;以及
一个或多个处理器,用于执行所述计算机可读存储介质中的程序。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (9)
1.一种分片包检测方法,其特征在于,所述方法应用于多核处理器,所述多核处理器包括具有独立地址空间并且通过共享内存进行通信的转发处理器和检测处理器,所述方法包括:
当所述转发处理器接收到分片包时,将所述分片包存储到存储池中,并将所述分片包的索引发送到正向缓冲队列中,所述存储池、所述正向缓冲队列、反向缓存队列是共享内存中的数据结构,可同时被所述转发处理器和所述检测处理器访问;所述存储池包括数量、大小相等的多个内存块;其中正向缓冲队列以及反向缓存队列组成采用无锁数据结构的环形缓冲队列;当已缓冲的索引的数据包长度占正向缓冲队列总队列长度的比值达到预设的丢包阈值后,按与该丢包阈值相关的比率丢弃索引的数据包,同时丢弃该索引的数据包指向的存储池中的分片包;如果待缓冲的索引的数据包与通过反向缓存队列接收过的索引的数据包具有相同的分片特征,则优先处理缓冲避免丢弃;所述检测处理器采用轮询的方式从所述正向缓冲队列获取所述分片包的索引,并根据所述分片包的索引从所述存储池中获取所述分片包;
所述检测处理器在不对分片包进行重组和再次分包,并且在不缓存分片包的前提下对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列发送给所述转发处理器,转发处理器通过分片包的索引的内存地址直接访问存储池中该索引指向的分片包;
所述检测处理器对所述分片包进行合法性检测,包括:
根据所述分片包的五元组信息及分片标识获取所述分片包的分片偏移量及分片长度;
判断所述分片包的分片偏移量与分片长度的和是否大于预定数值;
若所述分片包的分片偏移量与分片长度的和小于或等于预定数值,则判断哈希表下的链表中是否存储所述分片包对应的节点;所述哈希表中的每个节点对应一个链表,每个链表中的各节点记录有对应分片包的分片偏移量与分片长度;
若所述哈希表下的链表中未存储所述分片包对应的节点,则根据所述分片包的分片偏移量和分片长度创建第一节点,并确定所述分片包通过所述合法性检测。
2.根据权利要求1所述的方法,其特征在于,所述检测处理器对所述分片包进行合法性检测,包括:
若所述分片包的分片偏移量与分片长度的和大于该预定数值,则确定所述分片包未通过所述合法性检测。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述哈希表下的链表中存储所述分片包对应的节点,则根据所述分片包的分片偏移量和分片长度创建第二节点,根据所述分片包的分片偏移量的大小将所述第二节点顺序插入所述链表中;
通过插入所述链表中第二节点的左节点和/或右节点检测所述分片包是否合法。
4.根据权利要求3所述的方法,其特征在于,所述通过插入所述链表中第二节点的左节点和/或右节点检测所述分片包是否合法,包括:
判断所述左节点的分片偏移量与分片长度的和是否大于所述第二节点的分片偏移量;和/或
判断所述第二节点的分片偏移量与分片长度的和是否大于所述右节点的分片偏移量;
若所述左节点的分片偏移量与分片长度的和小于所述第二节点的分片偏移量,且所述第二节点的分片偏移量与分片长度的和小于所述右节点的分片偏移量,则确定所述分片包通过所述合法性检测;
若所述左节点的分片偏移量与分片长度的和大于所述第二节点的分片偏移量,或所述第二节点的分片偏移量与分片长度的和大于所述右节点的分片偏移量,则将所述第二节点从所述链表中删除,并确定所述分片包未通过所述合法性检测。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:若所述左节点的分片偏移量与分片长度的和等于所述第二节点的分片偏移量,则将所述左节点和所述第二节点融合成为一个新节点,并确定所述分片包通过所述合法性检测;
若所述第二节点的分片偏移量与分片长度的和等于所述右节点的分片偏移量,则将所述右节点和所述第二节点融合成为一个新节点,并确定所述分片包通过所述合法性检测。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
当检测处理器检测到同一五元组及分片标识的首个分片包时,开始计时;
当计时超过预设的阈值T而同一五元组及分片标识的分片包中至少有一个尚未通过合法性检测时,删除同一五元组及分片标识的分片包对应的节点。
7.一种分片包检测装置,其特征在于,该装置包括:
多核处理器,所述多核处理器包括具有独立地址空间并且通过共享内存进行通信的转发处理器和检测处理器;
收发单元,用于在所述转发处理器收到分片包时,将所述分片包存储到存储池中,并将所述分片包的索引发送到正向缓冲队列中;所述存储池、所述正向缓冲队列、反向缓存队列是共享内存中的数据结构,可同时被所述转发处理器和所述检测处理器访问;所述存储池包括数量、大小相等的多个内存块;其中正向缓冲队列以及反向缓存队列组成采用无锁数据结构的环形缓冲队列;当已缓冲的索引的数据包长度占正向缓冲队列总队列长度的比值达到预设的丢包阈值后,按与该丢包阈值相关的比率丢弃索引的数据包,同时丢弃该索引的数据包指向的存储池中的分片包;如果待缓冲的索引的数据包与通过反向缓存队列接收过的索引的数据包具有相同的分片特征,则优先处理缓冲避免丢弃;
获取单元,用于采用轮询的方式从所述正向缓冲队列获取所述分片包的索引,并根据所述分片包的索引从所述存储池中获取所述分片包;
检测单元,用于通过所述检测处理器在不对分片包进行重组和再次分包,并且在不缓存分片包的前提下对所述分片包进行合法性检测,并将合法性检测通过的所述分片包的索引通过所述反向缓存队列发送给所述转发处理器,转发处理器通过分片包的索引的内存地址直接访问存储池中该索引指向的分片包;
所述检测处理器对所述分片包进行合法性检测,包括:
根据所述分片包的五元组信息及分片标识获取所述分片包的分片偏移量及分片长度;
判断所述分片包的分片偏移量与分片长度的和是否大于预定数值;
若所述分片包的分片偏移量与分片长度的和小于或等于预定数值,则判断哈希表下的链表中是否存储所述分片包对应的节点;所述哈希表中的每个节点对应一个链表,每个链表中的各节点记录有对应分片包的分片偏移量与分片长度;
若所述哈希表下的链表中未存储所述分片包对应的节点,则根据所述分片包的分片偏移量和分片长度创建第一节点,并确定所述分片包通过所述合法性检测;
共享存储单元,所述共享存储单元包括存储池、所述正向缓冲队列和所述反向缓存队列,可同时被所述转发处理器和所述检测处理器访问。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述方法的步骤。
9.一种电子设备,其特征在于,包括:
权利要求8中所述的计算机可读存储介质;以及
一个或多个处理器,用于执行所述计算机可读存储介质中的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711421831.6A CN108183893B (zh) | 2017-12-25 | 2017-12-25 | 一种分片包检测方法、检测装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711421831.6A CN108183893B (zh) | 2017-12-25 | 2017-12-25 | 一种分片包检测方法、检测装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108183893A CN108183893A (zh) | 2018-06-19 |
CN108183893B true CN108183893B (zh) | 2021-03-30 |
Family
ID=62547378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711421831.6A Active CN108183893B (zh) | 2017-12-25 | 2017-12-25 | 一种分片包检测方法、检测装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108183893B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109714756A (zh) * | 2018-12-28 | 2019-05-03 | 东信和平科技股份有限公司 | Profile数据包处理方法及装置、嵌入式SIM卡 |
CN109992701B (zh) * | 2019-04-11 | 2020-05-15 | 苏州浪潮智能科技有限公司 | 一种链表实现方法、装置、设备及可读存储介质 |
CN111614794B (zh) * | 2020-04-24 | 2022-09-23 | 南京南瑞继保工程技术有限公司 | 报文传输方法、装置、电子设备及存储介质 |
CN111581253A (zh) * | 2020-05-04 | 2020-08-25 | 上海维信荟智金融科技有限公司 | 基于反欺诈模型的实时检测方法及系统 |
CN113810337B (zh) * | 2020-06-12 | 2023-08-08 | 天翼云科技有限公司 | 用于网络报文去重的方法、装置、以及存储介质 |
CN112114947B (zh) * | 2020-09-17 | 2024-02-02 | 石家庄科林电气股份有限公司 | 一种基于边缘计算网关的系统资源调度方法 |
CN114039749B (zh) * | 2021-10-26 | 2024-09-10 | 中国银联股份有限公司 | 一种攻击检测方法、装置、设备及存储介质 |
CN114500403A (zh) * | 2022-01-24 | 2022-05-13 | 中国联合网络通信集团有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN115269392B (zh) * | 2022-07-20 | 2023-11-14 | 北京斯年智驾科技有限公司 | 一种用于融合感知的可视化调试方法、设备、介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7411969B2 (en) * | 2003-10-28 | 2008-08-12 | Intel Corporation | Method, system, and apparatus for a credit based flow control in a computer system |
CN1852100A (zh) * | 2005-07-22 | 2006-10-25 | 华为技术有限公司 | 一种接收端重组数据包的方法 |
CN103023808B (zh) * | 2012-12-28 | 2015-06-03 | 南京邮电大学 | 基于块状链表结构的6lowpan数据包重装缓存方法 |
CN104821924B (zh) * | 2014-01-30 | 2018-11-27 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN106789730B (zh) * | 2016-12-29 | 2020-02-11 | 杭州迪普科技股份有限公司 | 分片报文的处理方法及装置 |
-
2017
- 2017-12-25 CN CN201711421831.6A patent/CN108183893B/zh active Active
Non-Patent Citations (2)
Title |
---|
"无锁环形队列的一种高效实现";博客博主;《博客园 https://www.cnblogs.com/dodng/p/4367791.html》;20150326;全文 * |
"网络数据包高性能并行处理技术研究";黄益彬,金倩倩,纪元;《计算机与现代化》;20161231(第256期);第57-61页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108183893A (zh) | 2018-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108183893B (zh) | 一种分片包检测方法、检测装置、存储介质和电子设备 | |
US9356844B2 (en) | Efficient application recognition in network traffic | |
US8724496B2 (en) | System and method for integrating line-rate application recognition in a switch ASIC | |
US8681794B2 (en) | System and method for efficient matching of regular expression patterns across multiple packets | |
US7930516B1 (en) | Linked list traversal with reduced memory accesses | |
US10104043B2 (en) | Method and system for analyzing a data flow | |
JP4743894B2 (ja) | データ・パケットを伝送しながらセキュリティを改良するための方法及び装置 | |
US20130205037A1 (en) | Tcp-aware receive side coalescing | |
JP2009534001A (ja) | 悪質な攻撃の検出システム及びそれに関連する使用方法 | |
CN110519265B (zh) | 一种防御攻击的方法及装置 | |
US9866639B2 (en) | Communication apparatus, information processor, communication method, and computer-readable storage medium | |
KR101221045B1 (ko) | 패킷 처리 방법 및 이를 이용한 toe 장치 | |
CN109255057B (zh) | 区块生成方法、装置、设备及存储介质 | |
CN108965148B (zh) | 一种处理器及报文处理方法 | |
CN106878343B (zh) | 一种云计算环境下提供网络安全即服务的系统 | |
CN111314328A (zh) | 网络攻击防护方法、装置、存储介质及电子设备 | |
WO2020037781A1 (zh) | 一种实现服务器防攻击方法及装置 | |
US9985885B1 (en) | Aggregating common portions of forwarding routes | |
CN107454120A (zh) | 网络攻击防御系统和防御网络攻击的方法 | |
CN111786905A (zh) | 报文重组方法及装置、处理器、存储介质及网络设备 | |
US9838500B1 (en) | Network device and method for packet processing | |
US20140331306A1 (en) | Anti-Virus Method and Apparatus and Firewall Device | |
US20150264141A1 (en) | Communication apparatus, information processor, communication method, and computer-readable storage medium | |
JP2010045617A (ja) | ホワイトリストを利用したサーバ割り当てシステムおよびその方法 | |
US9225654B2 (en) | Method and apparatus for sending packet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |