CN110019232A - 一种报文保存方法及装置 - Google Patents
一种报文保存方法及装置 Download PDFInfo
- Publication number
- CN110019232A CN110019232A CN201711446709.4A CN201711446709A CN110019232A CN 110019232 A CN110019232 A CN 110019232A CN 201711446709 A CN201711446709 A CN 201711446709A CN 110019232 A CN110019232 A CN 110019232A
- Authority
- CN
- China
- Prior art keywords
- address
- memory space
- message
- tuple information
- source
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及互联网安全技术领域,尤其涉及一种报文保存方法及装置,用以解决现有技术中DPI设备存在着数据访问效率较低的问题;本申请实施例提供的报文保存方法,包括:接收到报文时,提取报文的五元组信息;若根据五元组信息确定报文符合预设的报文检测条件,则基于五元组信息和第一存储空间的首地址进行寻址,得到存放该报文所属数据流的第六存储空间的首地址,或者,基于五元组信息和建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放该报文所属数据流的第六存储空间的首地址,地址编码是根据五元组信息确定的;将报文保存在所述首地址标识的第六存储空间中,将符合报文检测条件的数据流存储在同一块存储空间中,因此访问效率更高。
Description
技术领域
本申请涉及互联网安全技术领域,尤其涉及一种报文保存方法及装置。
背景技术
为了对报文进行识别、控制和安全防护,深度包检测(Deep Packet Inspection,DPI)设备通常以数据流为单位对经过的报文进行分类、重组和管理,其中,数据流是指五元组信息相同、且在发送时间和上下文上有一定关系的报文。
现有技术中,DPI设备主要利用hash表来管理数据流,具体地,当DPI设备确定检测到符合检测条件的数据流时,对数据流中的每一报文,把报文的源IP地址、目的IP地址、源端口、目的端口和传输层协议这些五元组信息作为key,通过hash算法把这些五元组信息转换成一个数值key,然后以key-value的方式把报文放入hash表中。在hash算法中,将五元组信息进行映射后得到的value值不连续,将不连续的value值再映射到具体的存储空间时,存储空间也是不连续的,即同一数据流中的报文会被保存在不连续的存储空间中,因此,在访问同一数据流中的报文时只能采用随机I/O的方式,这样,会降低DPI设备的数据访问效率。
可见,现有技术中DPI设备存在着数据访问效率较低的问题。
发明内容
本申请实施例提供一种报文保存方法及装置,用以解决现有技术中DPI设备存在着数据访问效率较低的问题。
本申请实施例提供的一种报文保存方法,应用于报文检测设备,包括:
接收到报文时,提取所述报文的五元组信息;
若根据所述五元组信息确定所述报文符合报文检测条件,则基于所述五元组信息和第一存储空间的首地址进行寻址,得到存放所述报文所属数据流的第六存储空间的首地址,或者,基于所述五元组信息和建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放所述报文所属数据流的第六存储空间的首地址,所述地址编码是根据所述五元组信息确定的;
将所述报文保存在所述首地址标识的第六存储空间中;其中,
所述第一存储空间为一块连续的存储空间,用于存放符合报文检测条件的所有数据流,且对每一待检测的源IP地址,在所述第一存储空间中为所述源IP地址分配有一块连续的第二存储空间,在所述第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在所述第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在所述第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在所述第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,每一第六存储空间用于存放一条符合报文检测条件的数据流。
本申请实施例提供的一种报文保存装置,设置于报文检测设备中,包括:
提取模块,用于接收到报文时,提取所述报文的五元组信息;
确定模块,用于若根据所述五元组信息确定所述报文符合报文检测条件,则基于所述五元组信息和第一存储空间的首地址进行寻址,得到存放所述报文所属数据流的第六存储空间的首地址,或者,基于所述五元组信息和建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放所述报文所属数据流的第六存储空间的首地址,所述地址编码是根据所述五元组信息确定的;
保存模块,用于将所述报文保存在所述首地址标识的第六存储空间中;其中,
所述第一存储空间为一块连续的存储空间,用于存放符合报文检测条件的所有数据流,且对每一待检测的源IP地址,在所述第一存储空间中为所述源IP地址分配有一块连续的第二存储空间,在所述第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在所述第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在所述第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在所述第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,每一第六存储空间用于存放一条符合报文检测条件的数据流。
本申请实施例提供的一种电子设备,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述电子设备执行上述报文保存方法的步骤。
本申请实施例提供的一种计算机可读存储介质,包括程序代码,当所述程序代码在电子设备上运行时,使所述电子设备执行上述报文保存方法的步骤。
本申请实施例中,预先对需要进行检测的IP段分配一块连续的第一存储空间,用于存放所有符合报文检测条件的数据流,并对IP段中的每一源IP地址,在第一存储空间中为该源IP地址分配一块连续的第二存储空间,在第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,每一第六存储空间用于存放一条符合报文检测条件的数据流。在接收到报文时,提取报文的五元组信息,若根据报文的五元组信息确定报文符合预先设置的报文检测条件,则基于五元组信息和第一存储空间的首地址进行寻址,得到存放报文所属数据流的第六存储空间的首地址,或者,基于五元组信息和建立的地址编码与第六存储空间之间的对应关系,确定存放报文的第六存储空间的首地址,其中,地址编码是根据报文的五元组信息确定的,进而将报文保存在确定的首地址所标识的第六存储空间中,这样,将符合报文检测条件的数据流存储在同一块存储空间中,在访问同一条数据流中的报文时,可以从相应的存储空间中连续读取,而不必再采用随机I/O的方式逐个读取,因此访问效率更高。
附图说明
图1为本申请实施例提供的报文保存方法流程图;
图2为本申请实施例提供的确定报文的五元组信息对应的地址编码的流程图;
图3为本申请实施例提供的根据报文的五元组信息确定存放报文所属数据流的第六存储空间的首地址的流程;
图4为本申请实施例提供的DPI设备的内部实现框图;
图5为本申请实施例提供的32位的地址编码的构成示意图;
图6为本申请实施例提供的IP地址表、端口表和协议表之间的对应关系示意图;
图7为本申请实施例提供的数据流的存储示意图;
图8为本申请实施例提供的又一数据流的存储示意图;
图9为本申请实施例提供的对数据流进行增、删、改操作的示意图;
图10为本申请实施例提供的对数据流进行查询的示意图;
图11为本申请实施例提供的报文保存装置结构图;
图12为本申请实施例提供的用于实现报文保存方法的电子设备的硬件结构示意图。
具体实施方式
本申请实施例中,预先对需要进行检测的IP段分配一块连续的第一存储空间,用于存放所有符合报文检测条件的数据流,并对IP段中的每一源IP地址,在第一存储空间中为该源IP地址分配一块连续的第二存储空间,在第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,每一第六存储空间用于存放一条符合报文检测条件的数据流。在接收到报文时,提取报文的五元组信息,若根据报文的五元组信息确定报文符合预先设置的报文检测条件,则基于五元组信息和第一存储空间的首地址进行寻址,得到存放报文所属数据流的第六存储空间的首地址,或者,基于五元组信息和建立的地址编码与第六存储空间之间的对应关系,确定存放报文的第六存储空间的首地址,其中,地址编码是根据报文的五元组信息确定的,进而将报文保存在确定的首地址所标识的第六存储空间中,这样,将符合报文检测条件的数据流存储在同一块存储空间中,在访问同一条数据流中的报文时,可以从相应的存储空间中连续读取,而不必再采用随机I/O的方式逐个读取,因此访问效率更高。
下面结合说明书附图对本申请实施例作进一步详细描述。
实施例一
在具体实施过程中,DPI设备预先为需要进行检测的IP段分配一块连续的第一存储空间,对IP段中的每一源IP地址,在第一存储空间中为该源IP地址分配一块连续的第二存储空间,在第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,其中,每一第六存储空间用于存放一条符合报文检测条件的数据流。
并且,可以对IP段中的每一源IP地址进行排序,按照排序结果为源IP地址依次分配第二存储空间,这样,不同源IP地址对应的地址空间,按照该排序结果也是连续的,类似地,在为源端口、传输层协议、目的IP地址和目的端口分配存储空间时,也可以采用相同的策略,方便后续对同类数据流进行批量查询,其中,同类数据流是指五元组信息中某几个元素的取值相同的数据流,如源IP地址相同的数据流、源IP地址和源端口都相同的数据流、源IP地址、源端口和传输层协议都相同的数据流等。
如图1所示,为本申请实施例提供的报文保存方法流程图,包括以下步骤:
S101:接收到报文时,提取报文的五元组信息。
实际应用中,DPI设备在工作以前,可以接收用户设定的报文检测条件,比如,用户可以指定需要进行检测的IP地址段,也可以同时指定IP地址段和端口段。
S102:若根据报文的五元组信息确定报文符合预先设置的报文检测条件,则基于报文的五元组信息和第一存储空间的首地址进行寻址,得到存放报文所属数据流的第六存储空间的首地址,或者,基于报文的五元组信息和建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放报文所属数据流的第六存储空间的首地址,其中,地址编码是根据报文的五元组信息确定的。
在具体实施过程中,经过DPI设备的报文一般都属于某一条数据流,因为同一条数据流中报文的五元组信息相同、且在发送时间和上下文上有一定的关系,因此,可以将一定时间段内接收到的五元组信息相同的报文确定为属于同一条数据流的报文。
可选地,DPI设备根据报文的五元组信息确定报文符合用户设定的检测条件时,可以根据报文的五元组信息和第一存储空间的首地址进行寻址,得到存放报文所属数据流的第六存储空间的首地址;也可以根据报文的五元组信息计算地址编码,之后再根据预先建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放报文所属数据流的第六存储空间的首地址。
具体地,如图2所示,为本申请实施例提供的确定报文的五元组信息对应的地址编码的流程图,包括以下步骤:
S201a:根据报文的五元组信息中的源IP地址、目的IP地址和第一偏移量,确定第一地址。
比如,可以分别提取源IP地址和目的IP地址中的数字信息,并将从源IP地址中提取的数字和从目的IP地址中提取的数字进行拼接,计算拼接后的数值与第一偏移量之间的差值,该差值为二进制数,再将该差值左移N位,将左移N位后得到的数值作为第一地址,其中,N为整数,可以为16。
S202a:根据五元组信息中的源端口、目的端口和第二偏移量,确定第二地址。
比如,可以将源端口和目的端口的端口号的数值进行拼接,计算拼接后的数值与第二偏移量之间的差值,该差值为二进制数,将该差值左移M位,将左移M位后得到的数值作为第二地址,其中,M为小于N的整数,可以为8。
S203a:根据五元组信息中的传输层协议、第三偏移量和缓存数据流的大小,确定第三地址。
比如,可以计算传输层协议的协议号与第三偏移量之间的差值,该差值为二进制数,计算缓存数据流的大小与该差值的乘积,将乘积作为第三地址。
S204a:将第一地址、第二地址和第三地址依次拼接得到地址编码。
在具体实施过程中,将第一地址、第二地址和第三地址依次拼接起来,将拼接后的数据作为五元组信息对应的地址编码。
上述过程中,第一偏移量、第二偏移量和第三偏移量均是预设的,由用户根据实际设置的需要进行检测的源IP地址段、源端口段和传输层协议确定,并且,缓存数据流的大小等于第六存储空间的大小。
具体地,如图3所示,为本申请实施例提供的根据报文的五元组信息确定存放报文所属数据流的第六存储空间的首地址的流程,包括以下步骤:
S301a:根据五元组信息中的源IP地址和第一存储空间的首地址,确定在第一存储空间中为源IP地址分配的第二存储空间的首地址。
比如,可以提取源IP地址中的数字,根据提取的源IP数字和预先建立的数字与偏移量之间的对应关系,确定源IP地址对应的偏移量,根据该偏移量对第一存储空间的首地址进行偏移,得到在第一存储空间中为源IP地址分配的第二存储空间的首地址。
S302a:根据第二存储空间的首地址和五元组信息中的源端口,确定在第一存储空间中为源端口分配的第三存储空间的首地址。
进一步地,根据五元组信息中的源端口的端口号和预先建立的源端口的端口号与偏移量之间的对应关系,确定源端口对应的偏移量,根据该偏移量对第二存储空间的首地址进行偏移,得到在第二存储空间中为源端口分配的第三存储空间的首地址。
S303a:根据第三存储空间的首地址和五元组信息中的传输层协议,确定在第三存储空间中为传输层协议分配的第四存储空间的首地址。
进一步地,根据五元组信息中传输层协议的协议号和预先建立的协议号与偏移量之间的对应关系,确定协议号对应的偏移量,根据该偏移量对第三存储空间的首地址进行偏移,得到在第三存储空间中为传输层协议分配的第四存储空间的首地址。
S304a:根据第四存储空间的首地址和五元组信息中的目的IP地址,确定在第四存储空间中为目的IP地址分配的第五存储空间的首地址。
进一步,提取目的IP地址中的数字,根据提取的数字和预先建立的目的IP数字与偏移量之间的对应关系,确定目的IP地址对应的偏移量,根据该偏移量对第四存储空间的首地址进行偏移,得到在第四存储空间中为目的IP地址分配的第五存储空间的首地址。
S305a:根据第五存储空间的首地址和五元组信息中的目的端口,确定在第五存储空间中为目的端口分配的第六存储空间的首地址。
进一步地,根据五元组信息中目的端口的端口号和预先建立的目的端口的端口号与偏移量之间的对应关系,确定目的端口对应的偏移量,根据该偏移量对第五存储空间的首地址进行偏移,得到在第五存储空间中为目的端口分配的第六存储空间的首地址。
S103:将报文保存在确定的首地址所标识的第六存储空间中。
可选地,可以利用链表将报文保存在第六存储空间的尾部。
实施例二
本申请实施例利用线性表的方式来管理数据流,DPI设备对外部提供增、删、改、查的接口,使用方式与现有的使用方式一致,不会破坏DPI设备原有的系统结构,主要区别在于内部的实现。
如图4所示,为本申请实施例提供的DPI设备的内部实现框图,包括三部分:操作接口、特征映射和结构化存储,其中:
1、操作接口:为其它应用系统提供插入、删除、更新、查询的接口,同时也屏蔽了内部的实现方式,其它系统对DPI设备的内部不感知。
2、特征映射:完成原始数据和内部存储结构之间的转换和映射,提取报文的源IP地址、目的IP地址、源端口、目的端口和传输层协议这些五元组信息,并把五元组信息作为报文的key值,使用简单的算法把这些key值做换算排序后映射到线性存储表中。
在具体实施过程中,报文经过DPI设备时,DPI设备可以解析报文的五元组信息,若根据这些五元组信息确定报文符合预设的报文检测条件,则可以根据这些五元组信息找到存储报文的地址空间,现有技术中,利用hash算法把这些五元组信息转换成一个数值key,由于hash算法不保证映射后的存储地址会均匀地分布在一个线性表上,即具有相近特征的五元组信息,比如同类数据流的五元组信息,经过hash算法计算以后得到的key值没有规律、不具有连续性,如果使用hash后的key值作为索引来映射存储空间意味着hash表对相似数据的存储是分散的,无法对相似数据进行批量查询。并且,hash算法甚至会存在不同的五元组信息计算以后得到相同的key值出现冲突的现象,此时,会导致同一个存储地址映射了多个不同的数据,数据在存储和查找的时候需要使用额外的算法来确定使用哪个数据,因此,hash算法不规律存储和冲突的特点都会降低DPI设备的数据访问效率。
为此,本申请实施例提供两种简单地映射方法,不但可以提高计算效率,并且由于预先划分的地址是连续的,所以还可以提高查找同类数据流的效率。
方式一
可选地,考虑到端口和协议号在定义中就是数值的形式,IP地址虽然是一个字符串,但也可以转换成数值的表示形式,并且一个DPI设备中管理的数据流的IP地址、端口和协议号并不是从0开始的,而是有一定的范围,因此,可以对转换成数值的五元组信息做一些简单的加减运算得到一个新的地址编码,并且这个地址编码在数值上是连续性的,减去一个偏移值也可以有效的减少预分配的存储空间。
比如,对任一五元组信息,可以利用如下公式计算对应的地址编码。
地址编码=(IP数值–第一偏移量)<<16|(端口值–第二偏移量)<<8+(协议号–第三偏移量)*缓存数据流的大小。
其中,IP数值为源IP地址和目的IP地址中的数字拼接后的数值;端口值为源端口和目的端口的端口号数值拼接后的数值;并且,第一偏移量、第二偏移量和第三偏移量均是预设的,缓存数据流的大小等于第六存储空间的大小。
如图5所示,为32位的地址编码的构成示意图,对每一五元组信息,(IP数值–第一偏移量)<<16,可以得到地址编码中的高16位数据;(端口值–第二偏移量)<<8,可以得到地址编码中的中间8位数据;(协议号–第三偏移量)*缓存数据流的大小,可以得到地址编码中的后8位数据,将这三部分数据依次拼接起来就可以得到五元组信息对应的地址编码。
由于预先对需要进行检测的源IP地址、源端口、传输层协议、目的IP地址和目的端口进行了排序,所以对不同报文的五元组信息进行转换以后的地址编码一定不同,并且可以预先按照地址编码从小到大的顺序对每一数据流分配存储空间,这样,不但能保证同一数据流中的报文存储在一块连续的存储空间,而且能保证同类数据流也能够按照地址编码从小到大的顺序在存储空间中连续存储。
方式二
可选地,五元组信息可以转换成5个数值,将这5个数值分为IP地址、端口和协议三类值,之后对这3类值建立关联关系并使用这三类值做映射,在使用的过程中依次查看IP地址表、端口表和协议表就能确定数据流的存储位置。
如图6所示,为IP地址表、端口表和协议表之间的对应关系示意图,其中,IP地址表中存储有每一端口对应的端口表的存储位置,端口表中存储有每一传输层协议对应的协议表的存储位置,协议表中存储有各条数据流对应的存储空间的首地址。由于源IP地址和目的IP地址的数据结构相同,因此,可以使用同一个IP地址表来存放源IP地址和目的IP地址分别对应的端口表的信息,类似地,用同一个端口表来存放源端口和目的端口表分别对应的传输层协议的信息。
3、结构化存储:实际存储空间的管理者和执行者,所有的存储空间在系统初始化的时候就已经做了计划,为要管理的每个数据流分配了地址编码并划分了对应的存储空间,之后根据用户的操作方式对数据流进行增、删、改、查的操作。
相应地,数据流的存储结构也有两种。
第一种:利用一个线性表存储数据流。
对应上述方式一,五元组信息经过转换后形成一个地址编码,地址编码唯一标识一块存放一条数据流的空间,只需要一个线性表就可以存储所有的数据流,如图7所示,为数据流的存储示意图,其中,每一地址编码对应一块连续的存储空间,该存储空间用于存放数据流内容。
第二种:利用多个线性表存储数据流。
对应上述方式二,五元组信息被转换成了3类不同用途的数值,使用数据结构对这3类信息建立起一个逻辑上的关联关系,在存储数据流时,除了一个用于存储数据流内容的线性表,还需要增加2个线性表用来存储3个数值之间的关联关系。查询数据流时,可以依次查询这3个线性表来定位数据流的存储位置,由于3个都是线性表,因此,并不会对查询带来太大的开销。
如图8所示,为又一数据流的存储示意图,其中,IP地址表、端口表和协议表之间的对应关系同图6,在此不再赘述,当根据报文的五元组信息确定需要对报文进行存储时,在源IP地址表中通过源IP地址和预先确定的源IP地址在IP地址表中的偏移量找到该报文所属数据流在源端口表中的位置,在源端口表中通过源端口和预先确定的源端口在源端口表中的偏移量找到该报文所属数据流在协议表中的位置,在协议表中通过协议号和预先确定的协议号在协议表中的偏移量找到该报文所属数据流在目的IP地址表中的位置,在目的IP地址表中通过目的IP地址和预先确定的目的IP地址在目的IP地址表中的偏移量找到该报文所属数据流在目的端口表中的位置,通过报文的目的端口和预先确定的目的端口在目的端口表中的偏移量确定该报文所属数据流的具体存储位置,进而将报文存储到对应的存储空间中。
由于预先对存储空间按照检测条件中的五元组信息进行了详细划分,因此,这里只需根据具体报文的五元组信息依次对存储首地址进行偏移,最终找到报文的存储空间即可。
如图9所示,为对数据流进行增、删、改操作的示意图,当接收到报文(数据报文)时,对报文进行特征提取,主要提取报文的五元组信息,把五元组信息进行转换编码形成一个或者多个编码,按照IP地址、端口、协议的顺序分别做映射,定位到数据流的具体位置,该过程同图7或图8,在此不再赘述,进而对数据流执行相应的操作。
在具体实施过程中,从数据流的地址编码和存储结构上可以看出,同类的数据流都是存储在一起的,所以在存储结构上是支持通过五元组信息批量查询数据流的,同时由于同类数据流依次存储在一个连续的空间内,系统可以使用顺序I/O对数据的访问,因此,可以提高数据访问的效率。
如图10所示,为本申请实施例提供的对数据流进行查询的示意图,接收数据流查询请求,查询请求中携带有五元组信息,之后把五元组信息进行转换编码形成一个或者多个编码,按照IP地址、端口、协议的顺序分别做映射,定位到数据流的具体位置,该过程同图7或图8,在此不再赘述。如果查询结果是一条数据流,则可以定位到数据流的存储位置,如果查询结果是一类数据流查询结果定位到第一条数据流存储的位置,剩余的结果连续存储在后续的空间中。
实施例三
基于同一发明构思,本申请实施例中还提供了一种与报文保存方法对应的报文保存装置,由于该装置解决问题的原理与本申请实施例报文保存方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图11所示,为本申请实施例提供的报文保存装置结构图,包括:
提取模块1101,用于接收到报文时,提取所述报文的五元组信息;
确定模块1102,用于若根据所述五元组信息确定所述报文符合报文检测条件,则基于所述五元组信息和第一存储空间的首地址进行寻址,得到存放所述报文所属数据流的第六存储空间的首地址,或者,基于所述五元组信息和建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放所述报文所属数据流的第六存储空间的首地址,所述地址编码是根据所述五元组信息确定的;
保存模块1103,用于将所述报文保存在所述首地址标识的第六存储空间中;其中,
所述第一存储空间为一块连续的存储空间,用于存放符合报文检测条件的所有数据流,且对每一待检测的源IP地址,在所述第一存储空间中为所述源IP地址分配有一块连续的第二存储空间,在所述第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在所述第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在所述第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在所述第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,每一第六存储空间用于存放一条符合报文检测条件的数据流。
可选地,所述确定模块1102根据以下步骤确定所述五元组信息对应的地址编码:
根据所述五元组信息中的源IP地址、目的IP地址和第一偏移量,确定第一地址;
根据所述五元组信息中的源端口、目的端口和第二偏移量,确定第二地址;
根据所述五元组信息中的传输层协议、第三偏移量和缓存数据流的大小,确定第三地址;
将所述第一地址、第二地址和第三地址依次拼接得到所述地址编码;
其中,第一偏移量、第二偏移量和第三偏移量均是预设的,所述缓存数据流的大小等于所述第六存储空间的大小。
可选地,所述确定模块1102具体用于:
分别提取所述源IP地址和目的IP地址中的数字信息;
将从所述源IP地址中提取的数字和从所述目的IP地址中提取的数字进行拼接;
计算拼接后的数值与所述第一偏移量之间的差值,所述差值为二进制数;
将所述差值左移N位,其中,N为整数;
将左移N位后得到的数值作为所述第一地址。
可选地,所述确定模块1102具体用于:
将所述源端口和目的端口的端口号数值进行拼接;
计算拼接后的数值与所述第二偏移量之间的差值,所述差值为二进制数;
将所述差值左移M位,其中,M为小于N的整数;
将左移M位后得到的数值作为所述第二地址。
可选地,所述确定模块1102具体用于:
计算所述传输层协议的协议号与第三偏移量之间的差值,所述差值为二进制数;
计算所述缓存数据流的大小与所述差值的乘积;
将所述乘积作为所述第三地址。
可选地,所述确定模块1102具体用于:
根据所述五元组信息中的源IP地址和所述第一存储空间的首地址,确定在所述第一存储空间中为所述源IP地址分配的第二存储空间的首地址;
根据所述第二存储空间的首地址和所述五元组信息中的源端口,确定在所述第一存储空间中为所述源端口分配的第三存储空间的首地址;
根据所述第三存储空间的首地址和所述五元组信息中的传输层协议,确定在所述第三存储空间中为所述传输层协议分配的第四存储空间的首地址;
根据所述第四存储空间的首地址和所述五元组信息中的目的IP地址,确定在所述第四存储空间中为所述目的IP地址分配的第五存储空间的首地址;
根据所述第五存储空间的首地址和所述五元组信息中的目的端口,确定在所述第五存储空间中为所述目的端口分配的第六存储空间的首地址。
实施例四
如图12所示,为本申请实施例提供的用于实现报文保存方法的电子设备的硬件结构示意图,包括至少一个处理单元1201、以及至少一个存储单元1202,其中,存储单元存储有程序代码,当程序代码被所述处理单元执行时,使得电子设备执行上述报文保存方法的步骤。
实施例五
本申请实施例提供的一种计算机可读存储介质,包括程序代码,当所述程序代码在电子设备上运行时,使电子设备执行上述报文保存方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (9)
1.一种报文保存方法,应用于报文检测设备,其特征在于,包括:
接收到报文时,提取所述报文的五元组信息;
若根据所述五元组信息确定所述报文符合报文检测条件,则基于所述五元组信息和第一存储空间的首地址进行寻址,得到存放所述报文所属数据流的第六存储空间的首地址,或者,基于所述五元组信息和建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放所述报文所属数据流的第六存储空间的首地址,所述地址编码是根据所述五元组信息确定的;
将所述报文保存在所述首地址标识的第六存储空间中;其中,
所述第一存储空间为一块连续的存储空间,用于存放符合报文检测条件的所有数据流,且对每一待检测的源IP地址,在所述第一存储空间中为所述源IP地址分配有一块连续的第二存储空间,在所述第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在所述第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在所述第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在所述第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,每一第六存储空间用于存放一条符合报文检测条件的数据流。
2.如权利要求1所述的方法,其特征在于,根据以下步骤确定所述五元组信息对应的地址编码:
根据所述五元组信息中的源IP地址、目的IP地址和第一偏移量,确定第一地址;
根据所述五元组信息中的源端口、目的端口和第二偏移量,确定第二地址;
根据所述五元组信息中的传输层协议、第三偏移量和缓存数据流的大小,确定第三地址;
将所述第一地址、第二地址和第三地址依次拼接得到所述地址编码;
其中,第一偏移量、第二偏移量和第三偏移量均是预设的,所述缓存数据流的大小等于所述第六存储空间的大小。
3.如权利要求2所述的方法,其特征在于,根据所述五元组信息中的源IP地址、目的IP地址和第一偏移量,确定第一地址,包括:
分别提取所述源IP地址和目的IP地址中的数字信息;
将从所述源IP地址中提取的数字和从所述目的IP地址中提取的数字进行拼接;
计算拼接后的数值与所述第一偏移量之间的差值,所述差值为二进制数;
将所述差值左移N位,其中,N为整数;
将左移N位后得到的数值作为所述第一地址。
4.如权利要求2所述的方法,其特征在于,根据所述五元组信息中的源端口、目的端口和第二偏移量,确定第二地址,包括:
将所述源端口和目的端口的端口号数值进行拼接;
计算拼接后的数值与所述第二偏移量之间的差值,所述差值为二进制数;
将所述差值左移M位,其中,M为小于N的整数;
将左移M位后得到的数值作为所述第二地址。
5.如权利要求2所述的方法,其特征在于,根据所述五元组信息中的传输层协议、第三偏移量和缓存数据流的大小,确定第三地址,包括:
计算所述传输层协议的协议号与第三偏移量之间的差值,所述差值为二进制数;
计算所述缓存数据流的大小与所述差值的乘积;
将所述乘积作为所述第三地址。
6.如权利要求1所述的方法,其特征在于,基于所述五元组信息和所述第一存储空间的首地址进行寻址,得到存放所述报文所属数据流的第六存储空间的首地址,包括:
根据所述五元组信息中的源IP地址和所述第一存储空间的首地址,确定在所述第一存储空间中为所述源IP地址分配的第二存储空间的首地址;
根据所述第二存储空间的首地址和所述五元组信息中的源端口,确定在所述第一存储空间中为所述源端口分配的第三存储空间的首地址;
根据所述第三存储空间的首地址和所述五元组信息中的传输层协议,确定在所述第三存储空间中为所述传输层协议分配的第四存储空间的首地址;
根据所述第四存储空间的首地址和所述五元组信息中的目的IP地址,确定在所述第四存储空间中为所述目的IP地址分配的第五存储空间的首地址;
根据所述第五存储空间的首地址和所述五元组信息中的目的端口,确定在所述第五存储空间中为所述目的端口分配的第六存储空间的首地址。
7.一种报文保存装置,设置于报文检测设备中,其特征在于,包括:
提取模块,用于接收到报文时,提取所述报文的五元组信息;
确定模块,用于若根据所述五元组信息确定所述报文符合报文检测条件,则基于所述五元组信息和第一存储空间的首地址进行寻址,得到存放所述报文所属数据流的第六存储空间的首地址,或者,基于所述五元组信息和建立的地址编码与第六存储空间的首地址之间的对应关系,确定存放所述报文所属数据流的第六存储空间的首地址,所述地址编码是根据所述五元组信息确定的;
保存模块,用于将所述报文保存在所述首地址标识的第六存储空间中;其中,
所述第一存储空间为一块连续的存储空间,用于存放符合报文检测条件的所有数据流,且对每一待检测的源IP地址,在所述第一存储空间中为所述源IP地址分配有一块连续的第二存储空间,在所述第二存储空间中为每一待检测的源端口分配有一块连续的第三存储空间,在所述第三存储空间中为每一待检测的传输层协议分配有一块连续的第四存储空间,在所述第四存储空间中为每一待检测的目的IP地址分配有一块连续的第五存储空间,在所述第五存储空间中为每一待检测的目的端口分配有一块连续的第六存储空间,每一第六存储空间用于存放一条符合报文检测条件的数据流。
8.一种电子设备,其特征在于,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述电子设备执行权利要求1~6任一所述方法的步骤。
9.一种计算机可读存储介质,其特征在于,包括程序代码,当所述程序代码在电子设备上运行时,使所述电子设备执行权利要求1~6任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711446709.4A CN110019232B (zh) | 2017-12-27 | 2017-12-27 | 一种报文保存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711446709.4A CN110019232B (zh) | 2017-12-27 | 2017-12-27 | 一种报文保存方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019232A true CN110019232A (zh) | 2019-07-16 |
CN110019232B CN110019232B (zh) | 2021-04-27 |
Family
ID=67187074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711446709.4A Active CN110019232B (zh) | 2017-12-27 | 2017-12-27 | 一种报文保存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019232B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114489503A (zh) * | 2022-01-21 | 2022-05-13 | 北京安天网络安全技术有限公司 | 数据报文的存储方法、装置、计算机设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070230477A1 (en) * | 2006-04-03 | 2007-10-04 | Worley John S | Method and system for managing computational resources |
CN101197781A (zh) * | 2007-12-18 | 2008-06-11 | 中兴通讯股份有限公司 | 一种ip报文发送方法及系统 |
CN102014005A (zh) * | 2010-12-17 | 2011-04-13 | 天津曙光计算机产业有限公司 | 一种利用多级内存查找方式进行tcp连接管理的方法 |
CN102930011A (zh) * | 2012-10-31 | 2013-02-13 | 杭州华三通信技术有限公司 | 流转发表项的处理方法及装置 |
CN103678553A (zh) * | 2013-12-06 | 2014-03-26 | 上海寰创通信科技股份有限公司 | 基于共享内存设计的无线终端数据库构建方法 |
CN103812860A (zh) * | 2014-01-20 | 2014-05-21 | 北京赛博兴安科技有限公司 | 一种基于fpga的高速网络策略匹配方法 |
CN104378263A (zh) * | 2014-11-27 | 2015-02-25 | 盛科网络(苏州)有限公司 | 基于tcp会话的网络流量监测方法、装置及报文处理芯片 |
CN104539537A (zh) * | 2014-12-25 | 2015-04-22 | 北京华为数字技术有限公司 | 一种路由查找方法和装置 |
CN104753931A (zh) * | 2015-03-18 | 2015-07-01 | 中国人民解放军信息工程大学 | 一种基于正则表达式的深度报文检测方法 |
CN105049276A (zh) * | 2015-05-29 | 2015-11-11 | 北京东方棱镜科技有限公司 | 对广域网流量行为进行监测管理的方法和装置 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
US20170054749A1 (en) * | 2015-05-14 | 2017-02-23 | International Business Machines Corporation | Detecting web exploit kits by tree-based structural similarity search |
-
2017
- 2017-12-27 CN CN201711446709.4A patent/CN110019232B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070230477A1 (en) * | 2006-04-03 | 2007-10-04 | Worley John S | Method and system for managing computational resources |
CN101197781A (zh) * | 2007-12-18 | 2008-06-11 | 中兴通讯股份有限公司 | 一种ip报文发送方法及系统 |
CN102014005A (zh) * | 2010-12-17 | 2011-04-13 | 天津曙光计算机产业有限公司 | 一种利用多级内存查找方式进行tcp连接管理的方法 |
CN102930011A (zh) * | 2012-10-31 | 2013-02-13 | 杭州华三通信技术有限公司 | 流转发表项的处理方法及装置 |
CN103678553A (zh) * | 2013-12-06 | 2014-03-26 | 上海寰创通信科技股份有限公司 | 基于共享内存设计的无线终端数据库构建方法 |
CN103812860A (zh) * | 2014-01-20 | 2014-05-21 | 北京赛博兴安科技有限公司 | 一种基于fpga的高速网络策略匹配方法 |
CN104378263A (zh) * | 2014-11-27 | 2015-02-25 | 盛科网络(苏州)有限公司 | 基于tcp会话的网络流量监测方法、装置及报文处理芯片 |
CN104539537A (zh) * | 2014-12-25 | 2015-04-22 | 北京华为数字技术有限公司 | 一种路由查找方法和装置 |
CN104753931A (zh) * | 2015-03-18 | 2015-07-01 | 中国人民解放军信息工程大学 | 一种基于正则表达式的深度报文检测方法 |
US20170054749A1 (en) * | 2015-05-14 | 2017-02-23 | International Business Machines Corporation | Detecting web exploit kits by tree-based structural similarity search |
CN105049276A (zh) * | 2015-05-29 | 2015-11-11 | 北京东方棱镜科技有限公司 | 对广域网流量行为进行监测管理的方法和装置 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
Non-Patent Citations (2)
Title |
---|
SAILESH KUMAR: "Advanced algorithms for fast and scalable deep packet inspection", 《2006 SYMPOSIUM ON ARCHITECTURE FOR NETWORKING AND COMMUNICATIONS SYSTEMS》 * |
戴宣: "一种基于索引的TCP数据流存储模型及其应用", 《2006北京地区高校研究生学术交流会——通信与信息技术会议论文集(上)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114489503A (zh) * | 2022-01-21 | 2022-05-13 | 北京安天网络安全技术有限公司 | 数据报文的存储方法、装置、计算机设备 |
CN114489503B (zh) * | 2022-01-21 | 2024-02-23 | 北京安天网络安全技术有限公司 | 数据报文的存储方法、装置、计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110019232B (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
CN103324533B (zh) | 分布式数据处理方法、装置及系统 | |
CN108074031A (zh) | 订单组分配方法及装置 | |
CN105100146A (zh) | 数据存储方法、装置及系统 | |
CN106294421A (zh) | 一种数据写入、读取方法及装置 | |
CN104765749A (zh) | 一种数据存储方法及装置 | |
CN105677904B (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN106407768B (zh) | 一种设备指纹的确定、对目标设备进行识别的方法和设备 | |
CN110427364A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN104731951A (zh) | 一种数据查询方法及装置 | |
CN112100185A (zh) | 区块链数据平衡负载的索引系统及方法 | |
CN108073352A (zh) | 虚拟磁盘处理方法及装置 | |
CN107391039B (zh) | 一种数据对象存储方法和装置 | |
CN109743309A (zh) | 一种非法请求识别方法、装置及电子设备 | |
CN106296095A (zh) | 一种基于智慧仓储的物资调配方法和设备 | |
CN105718319A (zh) | 一种内存池版图解析方法和内存池装置 | |
CN115048382A (zh) | 基于二叉树的层级数据搜索方法、装置、设备及存储介质 | |
CN104951370B (zh) | 一种内存管理方法及装置 | |
CN109271438A (zh) | 一种数据库访问方法及其系统 | |
CN110019232A (zh) | 一种报文保存方法及装置 | |
CN110019234A (zh) | 用于分片存储数据的方法和系统 | |
CN109101608A (zh) | 一种数据存储方法、数据查询方法及装置 | |
CN110633053B (zh) | 存储容量均衡方法、对象存储方法及装置 | |
CN107239568A (zh) | 分布式索引实现方法及装置 | |
CN107844527A (zh) | 网页地址去重方法、电子设备及计算机可读存储介质 |
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 |