CN117851696B - 一种数据包的检索方法、设备和存储介质 - Google Patents
一种数据包的检索方法、设备和存储介质 Download PDFInfo
- Publication number
- CN117851696B CN117851696B CN202410251618.9A CN202410251618A CN117851696B CN 117851696 B CN117851696 B CN 117851696B CN 202410251618 A CN202410251618 A CN 202410251618A CN 117851696 B CN117851696 B CN 117851696B
- Authority
- CN
- China
- Prior art keywords
- data packet
- data
- file
- packet
- candidate
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012360 testing method Methods 0.000 claims abstract description 47
- 238000013507 mapping Methods 0.000 claims abstract description 37
- 238000010845 search algorithm Methods 0.000 claims abstract description 22
- 238000007781 pre-processing Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 15
- 238000001914 filtration Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims 1
- 238000012216 screening Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 13
- 238000013500 data storage Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000011282 treatment Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000009414 blockwork Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据包的检索方法、设备和存储介质,包括针对通过高速网络所传输的原始数据包进行捕获,并获取扩展数据包;将扩展数据包按照目录结构保存在所对应的数据文件中,并根据数据文件中所保存的指定扩展数据包的时间戳确定文件名称;对文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包;根据检索请求和测试流映射表从候选数据包中检索出目标数据包。通过对抓取的原始数据包进行按照目录结构保存到对应的数据文件中,数据文件是以所包含的指定扩展数据包的时间戳进行命名,检索时根据文件名称进行快速检索获取到候选数据包,基于数据文件中所保存的测试流映射表从候选数据包中快速筛选出目标数据包。
Description
技术领域
本发明涉及到网络运维和流量监控技术领域,尤其涉及一种数据包的检索方法、设备和存储介质。
背景技术
在日常的网络运行运维和流量监控中,需要保留原始的网络数据包,一旦遇到故障就可以检索定位数据包,排查故障原因,制定解决方案。目前在数据监控中主要是从捕获数据包(简称“抓包”)角度解决数据包的实时捕获、通信协议解析、数据传输、数据处理和数据存储等技术问题,缺少从“数据应用”角度解决数据的快速检索方案。并且通常是将所抓取的数据包直接进行存储,并在故障排查时对数据包逐个对比查找。
通常在网速低于千兆1Gbps以下的中低速网络中,数据包的存储方式对数据查询影响不大;但是当网速提高到万兆10Gbps、四万兆40Gbps、十万兆100Gbps以上后,随着数据量扩大10倍以上,采用原有简单的存储方式将会严重影响数据检索的速度。
发明内容
本发明提供了一种数据包的检索方法、设备和存储介质,以实现对数据的快速检索。
根据本发明的一方面,提供了一种数据包的检索方法,包括:针对通过高速网络所传输的原始数据包进行捕获,并对所捕获的原始数据包进行存储结构扩展获取扩展数据包;
将所述扩展数据包按照目录结构保存在所对应的数据文件中,并根据所述数据文件中所保存的指定扩展数据包的时间戳确定文件名称,其中,所述数据文件中存储有测试流映射表;
根据所接收到的检索请求获取目录结构中指定目录下的文件名称列表,并对所述文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包;
从所述候选数据文件中提取出所述测试流映射表,并根据所述检索请求和所述测试流映射表从所述候选数据包中检索出目标数据包。
根据本发明的另一方面,提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器执行本发明任一实施例所述的方法。
根据本发明的另一方面,提供了一种计算机可执行指令的存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的方法。
本发明实施例的技术方案,通过对抓取的原始数据包进行存储结构拓展处理后按照目录结构保存到对应的数据文件中,并且各数据文件是以所包含的指定扩展数据包的时间戳进行命名,提高了数据存储的规律性,从而在检索时可以基于所定位的指定目录下的数据文件,根据文件名称进行快速检索获取到候选数据包,并基于数据文件中所保存的测试流映射表在无需查看数据包内容的情况下从候选数据包中快速筛选出与检索请求匹配的目标数据包。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种数据包的检索方法的流程图;
图2是根据本发明实施例一提供的数据文件存储结构示意图;
图3是根据本发明实施例二提供的一种数据包的检索方法的流程图;
图4是根据本发明实施例三提供的一种数据包的检索装置的结构示意图;
图5是根据本发明实施例四提供的一种计算机设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或终端设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或终端设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供了一种数据包的检索方法的流程图,本实施例可适用于对高速网络场景下所抓取的数据包进行快速检索的情况,该方法可以由一种数据包的检索装置来执行,该数据包的检索装置可以采用硬件和/或软件的形式实现,该数据包的检索装置可集成配置于计算机设备中。如图1所示,该方法包括:
步骤S101,针对通过高速网络所传输的原始数据包进行捕获,并对所捕获的原始数据包进行存储结构扩展获取扩展数据包。
可选的,对所捕获的原始数据包进行存储结构扩展获取扩展数据包之前,还包括:确定从各通道中所捕获的第一个原始数据包,提取原始数据包的时间戳;根据通道和第一个原始数据包的时间戳创建目录结构,其中,目录结构中包括通道号子目录、年份子目录、月份子目录和日期子目录;根据第一个原始数据包创建所匹配的数据文件。
具体的说,本实施方式中针对从高速网络上捕获的原始数据包会以数据文件的形式保存在磁盘阵列中,每当从网络中捕获到一个原始数据包就记录当前时间值称为数据包的时间戳,时间戳的精度为纳秒,每个时间戳由2部分组成:一部分是秒以上整数部分:年、月、日、时、分、秒值;另一部分是秒以下小数部分,以纳秒为单位。从任何一个通道中捕获的第一个原始数据包时间戳中获取年份(YYYY,4位数字)、月份(MM,2位数字)、日期(YYYYMMDD,8位数字)创建目录结构,并创建一个新的匹配的数据文件。本实施方式中所创建的目录结构具体包含四层子目录:第一级子目录名为“通道号”,第二级子目录名为“年份”,第三级子目录名为“月份”,第四级子目录名为“日期”。其中,第一级子目录“通道号”代表捕获数据包的通道,对应于捕获数据包的地点,即故障发生的地点。通常每个数据采集卡或网卡都有1个、2个、4个或更多的通道,每一个通道都会创建一个子目录,适合“查询参数1:地点”;第二级子目录“年份”、第三级子目录名为“月份”和第四级子目录名为“日期”用于确定日期或日期范围。这样查询的数据范围就缩小到一个子目录下,当跨日时也最多涉及2个子目录。设置年份子目录有利于执行跨年长期任务的数据存储,设置月份子目录方便数据按月进行归档。由子目录创建的规则可知同一天创建的所有文件都位于同一个子目录下,不同子目录下的数据文件保存了不同日期的数据包。并且目录结构的创建依据和数据文件的创建依据是第一个数据包的时间戳,与主机的时间无关,即使主机时间出现日期错误或时间误差也不影响数据文件。如果整个流量监控系统采用统一时间,位于不同地点采集捕获的数据包都具有了统一的时间标准,那么后期检索数据包时也具有了同一时间标准,不会因为主机之间的时间误差影响查询结果,保证了故障排除的准确性。
可选的,根据第一个原始数据包创建所匹配的数据文件之后,还包括:在数据文件中添加标准格式的文件头;根据第一个原始数据包和预先设置的测试流映射表生成特殊数据包,并在包含文件头的数据文件中添加特殊数据包;将添加文件头和特殊数据包的数据文件写入到所匹配的子目录下。
可选的,对所捕获的原始数据包进行存储结构扩展获取扩展数据包,包括:根据原始数据包中的时间戳、抓包长度和数据包长度构建包头;根据原始数据包中的存储内容构建数据包内容;通过硬件对原始数据包的预处理功能获取扩展预处理结果结构,其中,扩展预处理结果结构中包括基本参数信息、数据统计信息、数据截取信息、数据过滤信息和流标志ID值;根据包头、数据包内容和扩展预处理结果结构获取扩展数据包。
需要说明的是,本实施方式中针对每个新创建的数据文件中都会添加标准格式的文件头,例如pcap格式文件头,而在pcap格式文件头中可以包括幻数、pcap版本和链路类型等参数,本实施方式中并不对文件头中所包含的具体参数内容进行限定。另外,为了方便后续的检索会根据所接收到的第一个原始数据包创建第一个特殊数据包,具体是获取预先配置的测试流映射表,而在测试流映射表中包含了测试流和流标志ID值的对应关系,如下表1所示为测试流映射表的示例:
表1
其中,由于篇幅限制,表1中仅是以三项为例进行说明,本实施方式中会将测试流映射表伪装成一个模拟数据包,并将模拟数据包中的MAC头和IP头都填充为空白值00,从而包括第三方处理软件在内的数据包处理软件解析得到协议类型为0000,会特殊处理予以跳过,并且会提取第一个原始数据包中的时间戳、抓包长度和数据包长度,并根据时间戳、抓包长度和数据包长度构建包头,从而根据包头和模拟数据包创建数据文件中的第一位置上的特殊数据包,此时则将添加完文件头和特殊数据包的数据文件写入到匹配的子目录下,后续则当每次抓取到原始数据包后,则可以将所抓取的原始数据包保存到所对应的数据文件中,如果没有找到与原始数据包所对应的数据文件,则说明该原始数据包为对应通道下所抓取的第一个原始数据包,此时则针对该原始数据包重新创建一个新的数据文件,数据文件的创建方式与上述方式大致相同,本实施方式中不再进行赘述。由此可以得知,数据文件是随着数据包的抓取而不断创建的。
需要说明的是,本实施方式中在将原始数据包向数据文件中进保存之前,会先通过硬件对原始数据包进行预处理操作获取扩展数据包,每个扩展数据包主要包括包头、数据包内容和扩展预处理结果结构,如下表2所示为扩展预处理结果结构的示例:
表2
其中,表2中的i是大于等于2的,由于篇幅限制只针对第i个扩展数据包的结构进行具体说明,其它扩展数据包的结构与此大致相同,本实施方式中不再进行赘述。扩展数据包主要由3个部分组成:“包头”、“数据包内容”以及“扩展预处理结果结构”。前2个部分符合pcap文件格式,第3个部分是扩展部分。包头包含了“时间戳struct timeval ts”、“抓包长度caplen”和“数据包长度len”,结构长度固定为16字节。数据包内容记录了原始的数据包内容,长度是len个字节。如果只捕获了数据包的一部分,则只存储前caplen个字节。扩展预处理结果结构存储硬件预处理的结果,长度是extlen个字节,修改caplen值,使得caplen=len+extlen。
对于高速网络,现有的主机通过CPU已经无法做到实时处理了,需要借助硬件FPGA进行辅助处理,称为“预处理”。预处理包括以下操作:记录基本参数、简单的数据统计、数据截取、数据过滤、检测指定的测试流以及自动识别测试流等,一旦检测到本数据包匹配了测试流映射表中的某一项,则记录下该项的流标志ID值,表示本数据包属于该项测试流。并且以上预处理操作的结果会以扩展的“预处理结果结构”方式上传到主机中,并附加到“数据包内容”后面。
需要说明的是,FPGA硬件在捕获到一个原始数据包后,创建一个上述所定义的扩展存储结构,一边处理一边填充,然后上传到主机内存中,避免了内存拷贝,最后直接保存到磁盘阵列中,实现了零拷贝。并且FPGA硬件捕获一个原始数据包后进行预处理,处理结果按照数据包的扩展结构依次存储,包括3个部分:第一个部分为包头,16字节;第二个部分为数据包内容,64字节~1514字节;第三个部分为预处理结果结构,以8字节的整数倍补齐,即64比特对齐。其中,第二部分需要根据配置参数决定是保存原始数据包内容,还是截取前128字节作为特征包。第一部分为标准的“包头”结构pcap_pkthdr,其中第1个参数ts时间戳是一个struct timeval结构,由秒值tv_sec和纳秒值tv_usec组成,秒值tv_sec是从1970年1月1日0时0分0秒到当前时间戳的秒数,从时间戳的年、月、日、时、分、秒转换过来的。硬件处理这个秒值tv_sec比较麻烦,可以由主机进行校正,同一秒内的数据包该值是相同的。并且若干个数据包的3部分存储结构累积到4MB后,由FPGA硬件传输到主机内存中。由于FPGA硬件是并行电路处理的,比主机CPU快很多倍。其他需要主机进行二次处理的数量大大降低了,满足了实时处理要求。当主机程序采用多核心多进程多线程处理时,通过算法指定硬件传输地址,硬件DMA操作即直接存储器访问时将数据上传到指定位置,“零拷贝”就能保证按照时间戳的先后次序不乱。
步骤S102,将扩展数据包按照目录结构保存在所对应的数据文件中,并根据数据文件中所保存的指定扩展数据包的时间戳确定文件名称。
可选的,将扩展数据包按照目录结构保存在所对应的数据文件中,包括:确定单个数据文件的存储策略,其中,存储策略包括按照时间戳先后顺序存储、单个数据文件的存储容量不小于指定大小、单个数据文件保存数据包的时间戳跨度不超过指定时长、单个数据文件保存数据包的时间戳不跨日;按照目录结构确定与扩展数据包所对应的数据文件,并基于存储策略将扩展数据包保存在数据文件中。
具体的说,本实施方式中在将扩展数据包向数据文件中进行保存时,具体是按照目录结构确定与扩展数据包所对应的数据文件,之后是按照预先所确定的存储策略向数据文件中存储扩展数据包的。例如,本实施方式中的存储策略包括四项:第一项为将多个数据包按照时间戳的先后次序存储到数据文件中,数据文件被创建在相应的包含“通道号”-“年份”-“月份”-“日期”的子目录下;第二项为尽量扩大单个数据文件的存储容量即“文件长度”,从而减少文件数量。根据网络带宽的实际情况建议文件长度不少于2GB以上,当一个数据文件存满后自动创建下一个新的数据文件继续存储;第三项为单个数据文件保存数据包的时间戳跨度不超过1分钟;第四项为数据文件保存数据包的时间戳不跨日,如图2所示为所获取到的数据文件存储结构示意图。
其中,第一项策略保证了数据包和数据文件的有序性,后续进行检索查询时就不必排序。对于高速网络数据包的处理必然是基于多核心多任务多线程的并行处理,处理过程和处理结果是乱序的,但是数据包的存储需要保证时次序不乱,在内存中重组后才能输出。
第二项策略是基于网络运维和流量监控的业务特点制定的。对于存储同样容量的数据包,单个文件的长度越大,则文件数量就越少;反之长度越小,文件数量越多。网络运维只在排查故障时才需要读取相关的数据文件,其他绝大多数情况下就变成了“死容量”,因此文件数量越少越好。经过反复测试和长时间的实际运行验证,结合操作系统对“大文件”的管理,当网络带宽超过10Gbps后选定文件长度不少于2GB比较适中。目前处理高速网络的主机内存容量至少为16GB以上,可以实现内存零拷贝。相应的,在内存中申请2GB内存,借助操作系统的文件内存映射技术实现快速存储,当一个数据文件存满2GB后就自动创建下一个新的数据文件继续存储。
第三项策略是针对中低速网络而制定的。当捕获数据包达到1分钟后,需要强制将内存中的所有数据包保存到数据文件中,再创建一个新的数据文件。如果按照第二项策略,对于空闲时段或者中低速网络存满2GB会花费相当长的时间,不利于后续检索查询。因此要求每个数据文件最多保存1分钟内捕获的所有数据包,增强了数据存储的规律性,此时对文件长度没有要求。
第四项策略针对数据包时间戳跨日进行特殊处理。当检测到最新数据包的时间戳与前一个数据包不在同一天时,强制关闭当前文件,并创建新的子目录和新的数据文件。
可选的,根据数据文件中所保存的指定扩展数据包的时间戳确定文件名称,包括:获取数据文件中所保存的第一个扩展数据包的第一时间戳以及最后一个扩展数据包的第二时间戳;确定与数据文件的存储格式所对应的扩展名;将第一时间戳和第二时间戳采用指定连接符进行连接获取时间戳组合,并在时间戳组合的结尾添加扩展名获取文件名称。
具体的说,本实施方式在按照上述存储策略向数据文件中进行数据包存储时,会按照一定的规则对数据文件进行命名,并且是从数据检索角度制定文件命名规则,每个数据文件的名称由文件中所保存的第一个扩展数据包的第一时间戳,以及最后一个扩展数据包的第二时间戳构成,用连接符连接起来获取时间戳组合,并且时间戳组合的结尾添加扩展名获取文件名称,其中,扩展名表示数据文件的存储格式。例如,数据文件的命名规则如下:hhmmssnnnnnnnnn-HHMMSSNNNNNNNNN.pcap
其中:hhmmss为文件中第一个扩展数据包的第一时间戳的时、分、秒部分,6位数字;nnnnnnnnn为时间戳的纳秒部分,9位数字。HHMMSS为文件中最后一个扩展数据包的第二时间戳的时、分、秒部分,6位数字;NNNNNNNNN为时间戳的纳秒部分,9位数字;pcap为扩展名,表示数据存储格式为标准的pcap抓包存储格式。
在实际操作中,当创建新数据文件时,用第一个扩展数据包的第一时间戳设置文件名为hhmmssnnnnnnnnn.pcap。当存盘结束、关闭文件后,将最后一个扩展数据包的第二时间戳HHMMSSNNNNNNNNN附加到现有文件名上,执行改名操作,从而变更文件名称为最终格式。
步骤S103,根据所接收到的检索请求获取目录结构中指定目录下的文件名称列表,并对文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包。
具体的说,在本实施方式的检索请求中包括第一类查询参数和第二类查询参数,其中,第一类查询参数中包括查询参数1:地点通道号,查询参数2:日期,第二类查询参数包括查询参数3:时间,查询参数4:组合查询条件。因此在根据所接收到的检索请求获取目录结构中指定目录下的文件名称列表时,具体是根据第一类查询参数进行检索定位到目录结构中的指定目录;查询指定目录获取数据文件,并按照各数据文件的文件名称排序获取文件名称列表。例如,在数据文件已经创建完成,并将数据包保存到数据文件之后,输入“查询参数1:地点通道号”和“查询参数2:日期”,首先利用特殊的目录层次结构“通道号”-“年份”-“月份”-“日期”定位到子目录,并查询该子目录,按照文件名排序获得所有文件名称列表。
可选的,对文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包,包括:根据第二类查询参数中的时间范围按照折半查找算法获取文件左边界和文件右边界;将文件名称列表中处于文件左边界和文件右边界之间的数据文件作为候选数据文件;针对各候选数据文件根据第二类查询参数中的时间范围按照折半查找算法进行检索获取数据包左边界和数据包右边界;将各候选数据文件中处于数据包左边界和数据包右边界之间的扩展数据包作为各候选数据文件所对应的候选数据包。
具体的说,在获取到文件名称列表List之后,会利用折半查找算法判断是否满足“查询参数3:时间”的开始时间StartTime和结束时间EndTime。通过查找文件名称列表List中的文件左边界LBound和文件右边界RBound,而在这之间的数据文件则是满足查询参数3的候选数据文件。首先查找文件左边界LBound,文件名称列表List中小于文件左边界LBound位置的所有文件都不可能有数据包时间戳位于时间范围之内,判断标准是文件中的最后一个数据包时间戳LastTime小于开始时间StartTime。设置初始值low=0,high=LSize(LSize=List的长度),文件左边界LBound=0。每次循环折半mid=INT((low+high)/2+0.5),从文件名称列表List的该位置List[mid]取出文件名,解析得到第一个数据包时间戳FirstTime和最后一个数据包时间戳LastTime。如果LastTime<StartTime,那么搜索区间右移,跳过一半数量,low=mid,low值增大,high值不变,左边界LBound=mid,继续循环;否则,搜索区间左移,跳过一半数量,high=mid,high值减小,low值不变,左边界LBound位置不动,继续循环。由于每次计算mid值都位于low值和high值之间,处理后要么low值增大,要么high值减小,间距越来越小,直到low=high,找到了文件左边界LBound位置。然后查找文件右边界RBound,文件名称列表List中大于文件右边界RBound位置的所有文件都不可能有数据包时间戳位于时间范围之内,判断标准是文件中的第一个数据包时间戳FirstTime大于结束时间EndTime。设置初始值low=0,high=LSize,文件右边界RBound=LSize。每次循环折半mid=INT((low+high)/2+0.5),从列表的该mid位置List[mid]取出文件名,解析得到第一个数据包时间戳FirstTime和最后一个数据包时间戳LastTime。如果FirstTime>EndTime,那么搜索区间左移,跳过一半数量,high=mid,high值减小,low值不变,文件右边界RBound=mid,继续循环;否则,搜索区间右移,跳过一半数量,low=mid,low值增大,high值不变,文件右边界RBound位置不动,继续循环。由于每次计算mid值都位于low值和high之间,处理后要么low值增大,要么high值减小,间距越来越小,直到low=high,找到了文件右边界RBound位置。此时则从列表中拷贝到候选文件清单,拷贝范围是文件左边界LBound至文件右边界RBound,从而得到了满足查询时间范围的所有文件,由于折半查找相当于是2的n次方指数关系,总的折半查找操作步数不超过40次,实现了快速定位文件。
需要说明的是,在通过折半查找算法获取到候选数据文件之后,由于在候选数据文件中可能存在只有一部分数据包是符合查询参数3的,此时则需要对各候选数据文件采用折半查找算法进一步进行检索。首先初步定位范围,设置2个位置初值low=0,high=文件长度。每次循环进行折半定位mid=INT((low+high)/2+0.5),文件指针定位到mid位置读取16KB数据,此时读取的数据很可能位于扩展数据包中间,需要依次滑动定位到完整的数据包结构,得到了新的mid值。利用扩展预处理结果结构的特征:“开始标志”、“结束标志”和“结构体长度”可以定位扩展结构,扩展结构后面是下一个完整的数据包存储结构。从“包头”中解析到时间戳PktTime。如果PktTime<StartTime,则搜索区间右移low=mid,low值增大,high值不变,折半继续查找;否则PktTime≥StartTime,则搜索区间左移high=mid,high值减小,low值不变,折半继续查找。由于每次计算mid值都位于low值和high值之间,处理后要么low值增大,要么high值减小,间距越来越小,直到low≥high,表示找到了数据包左边界PktLBound=high。然后再以此为基准向右折半查找数据包右边界,设置初值low=0,high=文件总长度,每次循环折半定位mid=INT((low+high)/2+0.5),依次滑动定位到完整的数据包结构,得到了新的mid值。从“包头”中解析到时间戳PktTime。如果PktTime<EndTime,则搜索区间右移low=mid,low值增大,high值不变,折半继续查找;否则PktTime≥EndTime,则搜索区间左移high=mid,high值减小,low值不变,折半继续查找。由于每次计算mid值都位于low值和high值之间,处理后要么low值增大,要么high值减小,间距越来越小,直到low≥high,表示找到了数据包右边界PktRBound=high。至此找到了数据包左边界PktLBound和数据包右边界PktRBound,读取两者之间的所有数据包,其时间戳都≥StartTime,且≤EndTime。由于折半查找相当于是2的n次方指数关系,总的折半查找操作步数不超过90次,实现了快速定位。
步骤S104,从候选数据文件中提取出测试流映射表,并根据检索请求和测试流映射表从候选数据包中检索出目标数据包。
可选的,根据检索请求和测试流映射表从候选数据包中检索出目标数据包,包括:判断从测试流映射表中是否找到与第二类查询参数中的组合查询条件所匹配的目标流标志ID值,若是,则将包含目标流标志ID值的候选数据包作为目标数据包;否则,将候选数据包分成若干个数据区块,分别针对每一个数据区块中的每一个扩展数据包的数据包内容与第二类查询参数中的组合查询条件进行逐项比较,全部满足组合查询条件的扩展数据包作为目标数据包。
具体的说,在网络运维排查故障时往往需要浏览测试流的数据包列表,可以借助流标志ID值实现快速提取数据实现简单查询。因此本实施方式中会从上述所获取到的候选数据文件中提取出如上表1所示的测试流映射表,例如,表1中的第1个测试流的参数为:流标志ID值=1001,测试流名称为“100-200测试流”。如果某个查询条件是:源IP地址=192.168.1.100、目的IP地址192.168.1.200、协议=17(UDP)、源端口=1200、目的端口=8080。由于“查询参数4:组合查询条件”只包含了五元组、或四元组、或三元组相关参数,因此可以从测试流量表中确定与查询参数4所匹配的目标测试ID值,例如1001。因为在各个候选数据包中的扩展预处理结果结构中包含流标志ID值,因此将包含目标流标志ID值的候选数据包作为目标数据包。相较于现有技术中通常的查询就是进行多个要素的逻辑与运算和比较运算,如果数据包数量很多,那么运算量较大从而整体运行结果较慢,本申请则只使用了一个流标志ID值1001进行比较,运行速度非常快。需要说明的,扩展预处理结果结构中的流标志ID值是由硬件FPGA实时检测得到的,因此可以认为这样的查询是硬件辅助加速完成的。
需要说明的是,当确定在测试流映射表中没有与查询参数4所匹配的目标流标志ID值时,则再用上述的方式进行查询就行不通了。当需要进行复杂的查询时,首先将“查询参数4:组合查询条件”转化成符合查询语法,例如伯克利包过滤语法的字符串表达式,然后利用函数pcap_compile编译成BPF指令集结构struct bpf_program *fp。函数原型如下:
int pcap_compile(pcap_t *p,struct bpf_program *fp,const char *str,int optimize,bpf_u_int32 netmask);
其中,第1个参数pcap_t *p是pcap_t结构指针;第2个参数struct bpf_program *fp用于存储编译后的BPF指令集结构;第3个参数const char *str是BPF语法格式的字符串表达式,需要将组合查询条件转换成BPF语法格式;
第4个参数int optimize表示编译的指令集是否需要优化,默认需要优化;第5个参数bpf_u_int32 netmask表示针对广播包的掩码。函数编译完成的BPF指令集结构作为下一步的函数参数。然后根据上述所获取的数据包左边界和数据包右边界将候选数据包划分为多个数据区块,分别获取各个数据区块,逐一数据包进行逐项比较,全部满足组合查询条件的就是目标数据包。由于各个数据区块的处理过程是彼此独立的,可以采用多核心、多进程、多线程技术在多核心CPU上并行运算。而每个线程读取一个数据区块,利用如下的函数:
int pcap_offline_filter(const struct bpf_program *fp, const structpcap_pkthdr *h,const u_char *pkt);循环处理每一个数据包。
其中,第1个参数const struct bpf_program *fp是已编译的BPF指令集结构指针,多线程共用;第2个参数const struct pcap_pkthdr *h是读取数据包的包头指针;第3个参数const u_char *pkt是读取数据包的内容指针。如果函数值返回值为零,则表示不满足条件,应当跳过;否则返回值非零,表示满足查询条件,保留并输出该数据包。所有线程运行完毕后,重新按照时间戳先后次序合并数据包得到查询结果文件,从而实现了快速查询。
综上可以得知,实施方式的技术方案针对高速网络数据包的特点显著提高了检索效率,并且快速检索主要体现在如下五个方面:一是快速定位日期子目录。根据第一类查询参数中的通道号(等同于故障发生的地点)和日期(指出了故障发生的日期)快速找到指定日期所在的子目录;二是快速获取候选数据文件。从日期子目录中得到所有文件名称列表,只需解析文件名称采用折半查找算法就能得到满足第二类查询参数中的时间范围(故障发生的大致时间范围)的候选数据文件;三是快速筛选出符合时间范围的候选数据包。根据第二类查询参数中的时间范围(故障发生的大致时间范围)针对每一个候选数据文件采用折半查找算法可以快速获取候选数据包;四是仅仅比较4字节的流标志ID值就能快速得到满足条件的目标数据包。如果从测试流映射表中能够找到与第二类查询参数中的组合查询条件所匹配的目标流标志ID值,那么包含目标流标志ID值的候选数据包就是目标数据包;五是任意组合条件的查询可以借助多核心CPU的并行计算加快查询速度。对候选数据包划分若干个数据区块,可以采用多核心、多进程、多线程技术并行处理,同时获取数据区块,逐一数据包逐项比较,全部满足组合查询条件的就是目标数据包。
本实施方式中通过对抓取的原始数据包进行存储结构拓展处理后按照目录结构保存到对应的数据文件中,并且各数据文件是以所包含的指定扩展数据包的时间戳进行命名,提高了数据存储的规律性,从而在检索时可以基于所定位的指定目录下的数据文件,根据文件名称进行快速检索获取到候选数据包,并基于数据文件中所保存的测试流映射表在无需查看数据包内容的情况下从候选数据包中快速筛选出与检索请求匹配的目标数据包。
实施例二
图3是本发明实施例二提供的一种数据包的检索方法流程图,本实施例以上述实施例为基础,在根据检索请求和测试流映射表从候选数据包中检索出目标数据包之后,还包括对目标数据包进行检测。如图3所示,该方法包括:
步骤S201,针对通过高速网络所传输的原始数据包进行捕获,并对所捕获的原始数据包进行存储结构扩展获取扩展数据包。
可选的,对所捕获的原始数据包进行存储结构扩展获取扩展数据包之前,还包括:确定从各通道中所捕获的第一个原始数据包,提取原始数据包的时间戳;根据通道和第一个原始数据包的时间戳创建目录结构,其中,目录结构中包括通道号子目录、年份子目录、月份子目录和日期子目录;根据第一个原始数据包创建所匹配的数据文件。
可选的,根据第一个原始数据包创建所匹配的数据文件之后,还包括:在数据文件中添加标准格式的文件头;根据第一个原始数据包和预先设置的测试流映射表生成特殊数据包,并在包含文件头的数据文件中添加特殊数据包;将添加文件头和特殊数据包的数据文件写入到所匹配的子目录下。
可选的,对所捕获的原始数据包进行存储结构扩展获取扩展数据包,包括:根据原始数据包中的时间戳、抓包长度和数据包长度构建包头;根据原始数据包中的存储内容构建数据包内容;通过硬件对原始数据包的预处理功能获取扩展预处理结果结构,其中,扩展预处理结果结构中包括基本参数信息、数据统计信息、数据截取信息、数据过滤信息和流标志ID值;根据包头、数据包内容和扩展预处理结果结构获取扩展数据包。
步骤S202,将扩展数据包按照目录结构保存在所对应的数据文件中,并根据数据文件中所保存的指定扩展数据包的时间戳确定文件名称。
可选的,将扩展数据包按照目录结构保存在所对应的数据文件中,包括:确定单个数据文件的存储策略,其中,存储策略包括按照时间戳先后顺序存储、单个数据文件的存储容量不小于指定大小、单个数据文件保存数据包的时间戳跨度不超过指定时长、单个数据文件保存数据包的时间戳不跨日;按照目录结构确定与扩展数据包所对应的数据文件,并基于存储策略将扩展数据包保存在数据文件中。
步骤S203,根据所接收到的检索请求获取目录结构中指定目录下的文件名称列表,并对文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包。
可选的,对文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包,包括:根据第二类查询参数中的时间范围按照折半查找算法获取文件左边界和文件右边界;将文件名称列表中处于文件左边界和文件右边界之间的数据文件作为候选数据文件;针对各候选数据文件根据第二类查询参数中的时间范围按照折半查找算法进行检索获取数据包左边界和数据包右边界;将各候选数据文件中处于数据包左边界和数据包右边界之间的扩展数据包作为各候选数据文件所对应的候选数据包。
步骤S204,从候选数据文件中提取出测试流映射表,并根据检索请求和测试流映射表从候选数据包中检索出目标数据包。
可选的,判断从测试流映射表中是否找到与第二类查询参数中的组合查询条件所匹配的目标流标志ID值,若是,则将包含目标流标志ID值的候选数据包作为目标数据包;否则,将候选数据包分成若干个数据区块,分别针对每一个数据区块中的每一个扩展数据包的数据包内容与第二类查询参数中的组合查询条件进行逐项比较,全部满足组合查询条件的扩展数据包作为目标数据包。
步骤S205,对目标数据包进行检测。
具体的说,本实施方式中在获取到目标数据包之后,会对目标数据包进行检测,具体是检测是否与检索请求匹配,如果一致则确定所检索到的目标数据包是正确的,否则确定所检索到的目标数据包是错误的。例如,检索请求中需要查询来自通道1中的2023年3月14日10:6:37秒123403451纳秒至2023年3月14日10:5:37秒123403451纳秒之间,满足三元组目的IP地址:192.168.3.66,协议:6,目的端口:80的数据包,但经过检测确定存在时间戳为2023年3月14日10:5:38秒123403451纳秒的数据包,显然该数据包是不在检索请求的查询时间范围内,从而可以确定所获取到的目标数据包错误。
需要说明的是,由于所获取到的目标数据包可能是大量的,因此可以从检索结果中随机对指定数量的目标数据包进行检测,当错误率超过预设阈值时则确定本次检索失败,并生成检索失败提示信息,以便于用户及时对软件或硬件设备进行检修,以进一步提高检测的效率和准确性。
本实施方式中通过对抓取的原始数据包进行存储结构拓展处理后按照目录结构保存到对应的数据文件中,并且各数据文件是以所包含的指定扩展数据包的时间戳进行命名,提高了数据存储的规律性,从而在检索时可以基于所定位的指定目录下的数据文件,根据文件名称进行快速检索获取到候选数据包,并基于数据文件中所保存的测试流映射表在无需查看数据包内容的情况下从候选数据包中快速筛选出与检索请求匹配的目标数据包。
实施例三
图4为本发明实施例三提供的一种数据包的检索装置的结构示意图。如图4所示,该装置包括:
数据捕获模块,用于针对通过高速网络所传输的原始数据包进行捕获,并对所捕获的原始数据包进行存储结构扩展获取扩展数据包;
数据保存模块,用于将扩展数据包按照目录结构保存在所对应的数据文件中,并根据数据文件中所保存的指定扩展数据包的时间戳确定文件名称,其中,数据文件中存储有测试流映射表;
候选数据包检索模块,用于根据所接收到的检索请求获取目录结构中指定目录下的文件名称列表,并对文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包;
目标数据包检索模块,用于从候选数据文件中提取出测试流映射表,并根据检索请求和测试流映射表从候选数据包中检索出目标数据包。
可选的,装置还包括数据文件创建模块,用于确定从各通道中所捕获的第一个原始数据包,提取原始数据包的时间戳;
根据通道和第一个原始数据包的时间戳创建目录结构,其中,目录结构中包括通道号子目录、年份子目录、月份子目录和日期子目录;
根据第一个原始数据包创建所匹配的数据文件。
可选的,装置还包括数据文件写入模块,用于在数据文件中添加标准格式的文件头;
根据第一个原始数据包和预先设置的测试流映射表生成特殊数据包,并在包含文件头的数据文件中添加特殊数据包;
将添加文件头和特殊数据包的数据文件写入到所匹配的子目录下。
可选的,数据捕获模块包括数据扩展单元,用于根据原始数据包中的时间戳、抓包长度和数据包长度构建包头;
根据原始数据包中的存储内容构建数据包内容;
通过硬件对原始数据包的预处理功能获取扩展预处理结果结构,其中,扩展预处理结果结构中包括基本参数信息、数据统计信息、数据截取信息、数据过滤信息和流标志ID值;
根据包头、数据包内容和扩展预处理结果结构获取扩展数据包。
可选的,数据保存模块包括数据保存单元,用于确定单个数据文件的存储策略,其中,存储策略包括按照时间戳先后顺序存储、单个数据文件的存储容量不小于指定大小、单个数据文件保存数据包的时间戳跨度不超过指定时长、单个数据文件保存数据包的时间戳不跨日;
按照目录结构确定与扩展数据包所对应的数据文件,并基于存储策略将扩展数据包保存在数据文件中。
可选的,数据保存模块包括数据文件命名单元,用于获取数据文件中所保存的第一个扩展数据包的第一时间戳以及最后一个扩展数据包的第二时间戳;
确定与数据文件的存储格式所对应的扩展名;
将第一时间戳和第二时间戳采用指定连接符进行连接获取时间戳组合,并在时间戳组合的结尾添加扩展名获取文件名称。
可选的,检索请求中包括第一类查询参数和第二类查询参数,其中,第一类查询参数中包括通道号和日期,第二类查询参数中包括时间范围和组合查询条件;
候选数据包检索模块包括文件名称列表获取单元,用于根据第一类查询参数进行检索定位到目录结构中的指定目录;
查询指定目录获取数据文件,并按照各数据文件的文件名称排序获取文件名称列表。
可选的,候选数据包检索模块包括候选数据包检索单元,用于第二类查询参数中的时间范围按照折半查找算法获取文件左边界和文件右边界;
将文件名称列表中处于文件左边界和文件右边界之间的数据文件作为候选数据文件;
针对各候选数据文件根据第二类查询参数中的时间范围按照折半查找算法进行检索获取数据包左边界和数据包右边界;
将各候选数据文件中处于数据包左边界和数据包右边界之间的扩展数据包作为各候选数据文件所对应的候选数据包。
可选的,目标数据包检索模块,用于判断从测试流映射表中是否找到与第二类查询参数中的组合查询条件所匹配的目标流标志ID值,若是,则将包含目标流标志ID值的候选数据包作为目标数据包;否则,将候选数据包分成若干个数据区块,分别针对每一个数据区块中的每一个扩展数据包的数据包内容与第二类查询参数中的组合查询条件进行逐项比较,全部满足组合查询条件的扩展数据包作为目标数据包。
本发明实施例所提供的一种数据包的检索装置可执行本发明任意实施例所提供的一种数据包的检索方法,具备执行方法相应的功能模块和有益效果。
实施例四
图5示出了可以用来实施本发明的实施例的计算机设备10的结构示意图。计算机设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。计算机设备还可以表示各种形式的移动装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,计算机设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储计算机设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
计算机设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许计算机设备10通过诸如因特网的计算机网络和/或各种电信网络与其他服务器交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如数据包的检索方法。
在一些实施例中,数据包的检索方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到计算机设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的数据包的检索方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为数据包的检索方法。
本文中以上描述的装置和技术的各种实施方式可以在数字电子电路装置、集成电路装置、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上装置的装置(SOC)、复杂可编程逻辑终端设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程装置上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储装置、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储装置、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的数据包的检索方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程天车作业报警装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行装置、装置或计算机设备使用或与指令执行装置、装置或计算机设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体装置、装置或计算机设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存终端设备、磁储存终端设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机设备上实施此处描述的装置和技术,该计算机设备具有:用于向用户显示信息的显示装置(例如,触摸屏);以及按键,用户可以通过触摸屏或按键来将输入提供给计算机设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (11)
1.一种数据包的检索方法,其特征在于,包括:
针对通过高速网络所传输的原始数据包进行捕获,并对所捕获的原始数据包进行存储结构扩展获取扩展数据包;
将所述扩展数据包按照目录结构保存在所对应的数据文件中,并根据所述数据文件中所保存的指定扩展数据包的时间戳确定文件名称,其中,所述数据文件中存储有测试流映射表;
根据所接收到的检索请求获取目录结构中指定目录下的文件名称列表,并对所述文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包;
从所述候选数据文件中提取出所述测试流映射表,并根据所述检索请求和所述测试流映射表从所述候选数据包中检索出目标数据包。
2.根据权利要求1所述的方法,其特征在于,所述对所捕获的原始数据包进行存储结构扩展获取扩展数据包之前,还包括:
确定从各通道中所捕获的第一个原始数据包,提取所述原始数据包的时间戳;
根据所述通道和所述第一个原始数据包的时间戳创建目录结构,其中,所述目录结构中包括通道号子目录、年份子目录、月份子目录和日期子目录;
根据所述第一个原始数据包创建所匹配的数据文件。
3.根据权利要求2所述的方法,其特征在于,在所述根据所述第一个原始数据包创建所匹配的数据文件之后,还包括:
在所述数据文件中添加标准格式的文件头;
根据所述第一个原始数据包和预先设置的测试流映射表生成特殊数据包,并在包含文件头的所述数据文件中添加所述特殊数据包;
将添加所述文件头和所述特殊数据包的数据文件写入到所匹配的子目录下。
4.根据权利要求1所述的方法,其特征在于,所述对所捕获的原始数据包进行存储结构扩展获取扩展数据包,包括:
根据所述原始数据包中的时间戳、抓包长度和数据包长度构建包头;
根据所述原始数据包中的存储内容构建数据包内容;
通过硬件对所述原始数据包的预处理功能获取扩展预处理结果结构,其中,所述扩展预处理结果结构中包括基本参数信息、数据统计信息、数据截取信息、数据过滤信息和流标志ID值;
根据所述包头、所述数据包内容和所述扩展预处理结果结构获取所述扩展数据包。
5.根据权利要求1所述的方法,其特征在于,所述将所述扩展数据包按照目录结构保存在所对应的数据文件中,包括:
确定单个数据文件的存储策略,其中,所述存储策略包括按照时间戳先后顺序存储、单个数据文件的存储容量不小于指定大小、单个数据文件保存数据包的时间戳跨度不超过指定时长、单个数据文件保存数据包的时间戳不跨日;
按照所述目录结构确定与所述扩展数据包所对应的数据文件,并基于所述存储策略将所述扩展数据包保存在所述数据文件中。
6.根据权利要求1所述的方法,其特征在于,所述根据所述数据文件中所保存的指定扩展数据包的时间戳确定文件名称,包括:
获取所述数据文件中所保存的第一个扩展数据包的第一时间戳以及最后一个扩展数据包的第二时间戳;
确定与所述数据文件的存储格式所对应的扩展名;
将所述第一时间戳和所述第二时间戳采用指定连接符进行连接获取时间戳组合,并在所述时间戳组合的结尾添加所述扩展名获取所述文件名称。
7.根据权利要求1所述的方法,其特征在于,所述检索请求中包括第一类查询参数和第二类查询参数,其中,所述第一类查询参数中包括通道号和日期,所述第二类查询参数中包括时间范围和组合查询条件;
所述根据所接收到的检索请求获取目录结构中指定目录下的文件名称列表,包括:
根据所述第一类查询参数进行检索定位到目录结构中的所述指定目录;
查询所述指定目录获取数据文件,并按照各数据文件的文件名称排序获取所述文件名称列表。
8.根据权利要求7所述的方法,其特征在于,所述对所述文件名称列表中的数据文件按照折半查找算法进行检索获取候选数据文件以及候选数据包,包括:
根据所述第二类查询参数中的所述时间范围按照折半查找算法获取文件左边界和文件右边界;
将所述文件名称列表中处于所述文件左边界和所述文件右边界之间的数据文件作为所述候选数据文件;
针对各所述候选数据文件根据所述第二类查询参数中的所述时间范围按照折半查找算法进行检索获取数据包左边界和数据包右边界;
将各所述候选数据文件中处于所述数据包左边界和所述数据包右边界之间的扩展数据包作为各所述候选数据文件所对应的候选数据包。
9.根据权利要求7所述的方法,其特征在于,所述根据所述检索请求和所述测试流映射表从所述候选数据包中检索出目标数据包,包括:
判断从所述测试流映射表中是否找到与所述第二类查询参数中的组合查询条件所匹配的目标流标志ID值,若是,则将包含所述目标流标志ID值的候选数据包作为所述目标数据包;
否则,将所述候选数据包分成若干个数据区块,分别针对每一个数据区块中的每一个扩展数据包的所述数据包内容与所述第二类查询参数中的组合查询条件进行逐项比较,全部满足组合查询条件的扩展数据包作为所述目标数据包。
10.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
11.一种计算机可执行指令的存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410251618.9A CN117851696B (zh) | 2024-03-06 | 2024-03-06 | 一种数据包的检索方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410251618.9A CN117851696B (zh) | 2024-03-06 | 2024-03-06 | 一种数据包的检索方法、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117851696A CN117851696A (zh) | 2024-04-09 |
CN117851696B true CN117851696B (zh) | 2024-05-03 |
Family
ID=90542187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410251618.9A Active CN117851696B (zh) | 2024-03-06 | 2024-03-06 | 一种数据包的检索方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117851696B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107241231A (zh) * | 2017-07-26 | 2017-10-10 | 成都科来软件有限公司 | 一种原始网络数据包的快速精准定位方法 |
CN113139100A (zh) * | 2021-04-27 | 2021-07-20 | 中国科学院计算技术研究所 | 一种网络流量实时索引方法及系统 |
CN113672629A (zh) * | 2021-10-25 | 2021-11-19 | 北京金睛云华科技有限公司 | 一种分布式网络流量检索方法和装置 |
CN115145866A (zh) * | 2022-07-25 | 2022-10-04 | 济南浪潮数据技术有限公司 | 一种快照数据检索方法、系统、设备及计算机存储介质 |
US11768834B1 (en) * | 2023-05-03 | 2023-09-26 | Newday Database Technology, Inc. | Storing and querying general data type documents in SQL relational databases |
CN117435912A (zh) * | 2023-10-25 | 2024-01-23 | 江苏省未来网络创新研究院 | 基于网络数据包属性值长短特征的数据包索引与检索方法 |
-
2024
- 2024-03-06 CN CN202410251618.9A patent/CN117851696B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107241231A (zh) * | 2017-07-26 | 2017-10-10 | 成都科来软件有限公司 | 一种原始网络数据包的快速精准定位方法 |
CN113139100A (zh) * | 2021-04-27 | 2021-07-20 | 中国科学院计算技术研究所 | 一种网络流量实时索引方法及系统 |
CN113672629A (zh) * | 2021-10-25 | 2021-11-19 | 北京金睛云华科技有限公司 | 一种分布式网络流量检索方法和装置 |
CN115145866A (zh) * | 2022-07-25 | 2022-10-04 | 济南浪潮数据技术有限公司 | 一种快照数据检索方法、系统、设备及计算机存储介质 |
US11768834B1 (en) * | 2023-05-03 | 2023-09-26 | Newday Database Technology, Inc. | Storing and querying general data type documents in SQL relational databases |
CN117435912A (zh) * | 2023-10-25 | 2024-01-23 | 江苏省未来网络创新研究院 | 基于网络数据包属性值长短特征的数据包索引与检索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117851696A (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11614990B2 (en) | Automatic correlation of dynamic system events within computing devices | |
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
WO2012106378A2 (en) | Real time searching and reporting | |
CN110489317B (zh) | 基于工作流的云系统任务运行故障诊断方法与系统 | |
CN112468365A (zh) | 用于网络镜像流量的数据质量检测方法、系统及介质 | |
CN111083008A (zh) | 一种基于nginx的流量采集分析方法 | |
CN108132986B (zh) | 一种飞行器海量传感器试验数据的快速处理方法 | |
CN113051460A (zh) | 基于Elasticsearch的数据检索方法、系统、电子设备及存储介质 | |
CN112486914A (zh) | 一种数据包存储与快查方法与系统 | |
CN113961573B (zh) | 一种时序数据库查询方法和查询系统 | |
CN111930701B (zh) | 日志结构化处理方法及装置 | |
CN117851696B (zh) | 一种数据包的检索方法、设备和存储介质 | |
US20180240053A1 (en) | System and Method for Associating a Multi-segment Component Transaction | |
CN107330031B (zh) | 一种数据存储的方法、装置及电子设备 | |
CN117112173A (zh) | 一种任务序列的调整方法、装置、设备及存储介质 | |
CN118157970B (zh) | 一种基于编辑距离的suricata规则相似度计算方法 | |
US12124326B2 (en) | Automatic correlation of dynamic system events within computing devices | |
CN115361231B (zh) | 基于访问基线的主机异常流量检测方法、系统及设备 | |
CN112152873B (zh) | 用户识别方法、装置、计算机设备和存储介质 | |
KR101921123B1 (ko) | 메시지의 필드 인덱싱 방법 | |
CN118035511A (zh) | 一种推荐平台、推荐方法、电子设备和存储介质 | |
Parry | Enabling large-scale dataset analysis in resource-constrained environments through application-aware preprocessing | |
CN117271572A (zh) | 数据处理方法、系统、设备和存储介质 | |
WO2024167976A1 (en) | Systems and methods for reducing the cardinality of metrics queries | |
CN110688416A (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 |